From 47f47bf5f1cb9dff2e4e75a2fd72579eb3cd9d46 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Mon, 31 Aug 2026 13:24:49 +0200 Subject: [PATCH 01/25] Inventory and gate the base layer fixed sizes --- packages/devextreme-scss/.gitignore | 1 + .../scss/widgets/base/_htmlEditor.scss | 4 +- .../scss/widgets/base/_multiView.scss | 4 +- .../scss/widgets/base/chat/_index.scss | 13 +- .../layout/chat-messagebubble/_index.scss | 17 +- .../scss/widgets/base/fileManager/_index.scss | 2 +- .../scss/widgets/base/pivotGrid/_common.scss | 2 +- .../scss/widgets/base/scheduler/_common.scss | 2 +- .../base/stepper/layout/step/_index.scss | 2 +- .../base/stepper/layout/step/_mixins.scss | 41 +- .../scss/widgets/fluent-next/chat/_index.scss | 4 + .../widgets/fluent-next/chat/_public.scss | 4 + .../scss/widgets/fluent-next/chat/_sizes.scss | 6 + .../widgets/fluent-next/stepper/_index.scss | 3 + .../widgets/fluent-next/stepper/_public.scss | 3 + .../widgets/fluent-next/stepper/_sizes.scss | 5 + .../tests/base-size-markers.baseline.json | 44 + .../tests/base-size-markers.test.ts | 115 + .../tools/naming/derive-registries.mjs | 9 +- .../tools/naming/registries.json | 7 +- .../tools/review/nested-scopes.json | 1 + .../devextreme-scss/tools/review/px-audit.mjs | 11 +- .../tools/review/size-markers.json | 23 +- .../devextreme-scss/tools/sizes/inventory.mjs | 402 ++ .../tools/sizes/lists/BASE-SIZES.md | 823 +++ .../tools/sizes/lists/base-owned.json | 4097 ++++++++++++ .../tools/sizes/lists/theme-settable.json | 5535 +++++++++++++++++ 27 files changed, 11140 insertions(+), 40 deletions(-) create mode 100644 packages/devextreme-scss/tests/base-size-markers.baseline.json create mode 100644 packages/devextreme-scss/tests/base-size-markers.test.ts create mode 100644 packages/devextreme-scss/tools/sizes/inventory.mjs create mode 100644 packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md create mode 100644 packages/devextreme-scss/tools/sizes/lists/base-owned.json create mode 100644 packages/devextreme-scss/tools/sizes/lists/theme-settable.json diff --git a/packages/devextreme-scss/.gitignore b/packages/devextreme-scss/.gitignore index a140fd7101f4..73eb511bf214 100644 --- a/packages/devextreme-scss/.gitignore +++ b/packages/devextreme-scss/.gitignore @@ -1,2 +1,3 @@ scss/bundles scss/_design-system +.size-runs diff --git a/packages/devextreme-scss/scss/widgets/base/_htmlEditor.scss b/packages/devextreme-scss/scss/widgets/base/_htmlEditor.scss index 880f8954abed..d075309efa5d 100644 --- a/packages/devextreme-scss/scss/widgets/base/_htmlEditor.scss +++ b/packages/devextreme-scss/scss/widgets/base/_htmlEditor.scss @@ -137,8 +137,8 @@ $transparent-border: 1px solid transparent; } .ql-clipboard { // stylelint-disable-line selector-class-pattern - left: -100000px; - height: 1px; + left: -100000px; // dx-structural: parks Quill's clipboard element off-screen + height: 1px; // dx-structural: collapses the off-screen clipboard element, not a designed height overflow-y: hidden; position: absolute; top: 50%; diff --git a/packages/devextreme-scss/scss/widgets/base/_multiView.scss b/packages/devextreme-scss/scss/widgets/base/_multiView.scss index 286801aa0075..9633d2c97644 100644 --- a/packages/devextreme-scss/scss/widgets/base/_multiView.scss +++ b/packages/devextreme-scss/scss/widgets/base/_multiView.scss @@ -36,8 +36,8 @@ } .dx-multiview-item-hidden { - top: -9999px; - left: -9999px; + top: -9999px; // dx-structural: parks the hidden slide off-screen + left: -9999px; // dx-structural: parks the hidden slide off-screen visibility: hidden; .dx-accordion-item-opened .dx-accordion-item-body { diff --git a/packages/devextreme-scss/scss/widgets/base/chat/_index.scss b/packages/devextreme-scss/scss/widgets/base/chat/_index.scss index cfbc479e39d1..0fa5b1a8000c 100644 --- a/packages/devextreme-scss/scss/widgets/base/chat/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/chat/_index.scss @@ -1,6 +1,12 @@ $chat-file-name-font-weight: 600 !default; $chat-editing-preview-caption-font-weight: 500 !default; +// Design sizing values (parametrizable; fluent-next injects tokens) +$chat-messagebubble-padding-image: 4px !default; +$chat-messagebubble-border-radius-image: 8px !default; +$chat-messagebubble-max-width-image: 400px !default; +$chat-messagebubble-max-height-image: 400px !default; + @use "../mixins" as *; @use "layout/chat" as *; @use "layout/chat-avatar" as *; @@ -12,7 +18,12 @@ $chat-editing-preview-caption-font-weight: 500 !default; @use "layout/chat-messagebox-editing-preview" as * with ( $editing-preview-caption-font-weight: $chat-editing-preview-caption-font-weight, ); -@use "layout/chat-messagebubble" as *; +@use "layout/chat-messagebubble" as * with ( + $messagebubble-padding-image: $chat-messagebubble-padding-image, + $messagebubble-border-radius-image: $chat-messagebubble-border-radius-image, + $messagebubble-max-width-image: $chat-messagebubble-max-width-image, + $messagebubble-max-height-image: $chat-messagebubble-max-height-image, +); @use "layout/chat-confirmationpopup" as *; @use "layout/chat-messagegroup" as *; @use "layout/chat-messagelist" as *; diff --git a/packages/devextreme-scss/scss/widgets/base/chat/layout/chat-messagebubble/_index.scss b/packages/devextreme-scss/scss/widgets/base/chat/layout/chat-messagebubble/_index.scss index bfeb9f8d3fd3..32e1b22f1c97 100644 --- a/packages/devextreme-scss/scss/widgets/base/chat/layout/chat-messagebubble/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/chat/layout/chat-messagebubble/_index.scss @@ -1,7 +1,8 @@ -$chat-messagebubble-padding-image: 4px !default; -$chat-messagebubble-border-radius-image: 8px !default; -$chat-messagebubble-max-width-image: 400px !default; -$chat-messagebubble-max-height-image: 400px !default; +// Sized from base/chat, which owns the defaults and forwards a theme's values down (as chat-fileview does). +$messagebubble-padding-image: null !default; +$messagebubble-border-radius-image: null !default; +$messagebubble-max-width-image: null !default; +$messagebubble-max-height-image: null !default; $chat-messagebubble-content-max-width: 82.5% !default; // dx-relative-% .dx-chat-messagegroup-content { @@ -25,7 +26,7 @@ $chat-messagebubble-content-max-width: 82.5% !default; // dx-relative-% } &.dx-has-image { - padding: $chat-messagebubble-padding-image; + padding: $messagebubble-padding-image; } .dx-chat-messagebubble-content:empty { @@ -58,9 +59,9 @@ $chat-messagebubble-content-max-width: 82.5% !default; // dx-relative-% } .dx-chat-messagebubble-image { - border-radius: $chat-messagebubble-border-radius-image; - max-width: $chat-messagebubble-max-width-image; - max-height: $chat-messagebubble-max-height-image; + border-radius: $messagebubble-border-radius-image; + max-width: $messagebubble-max-width-image; + max-height: $messagebubble-max-height-image; width: 100%; display: block; } diff --git a/packages/devextreme-scss/scss/widgets/base/fileManager/_index.scss b/packages/devextreme-scss/scss/widgets/base/fileManager/_index.scss index 7124aeb09bd5..b1ec808babab 100644 --- a/packages/devextreme-scss/scss/widgets/base/fileManager/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/fileManager/_index.scss @@ -81,7 +81,7 @@ $filemanager-drawer-panel-content-width: 30% !default; // dx-relative-% min-width: $filemanager-overlay-content-min-width; max-width: 93vw; - @media (min-width: 431px) { + @media (min-width: 431px) { // dx-literal-required: a media condition, var() is invalid here max-width: $filemanager-overlay-content-max-width; } } diff --git a/packages/devextreme-scss/scss/widgets/base/pivotGrid/_common.scss b/packages/devextreme-scss/scss/widgets/base/pivotGrid/_common.scss index 66800eed5b8e..925384674a81 100644 --- a/packages/devextreme-scss/scss/widgets/base/pivotGrid/_common.scss +++ b/packages/devextreme-scss/scss/widgets/base/pivotGrid/_common.scss @@ -235,7 +235,7 @@ $pivotgrid-common-field-chooser-drag-height: null !default; .dx-pivotgrid-scrollbar-measure-element { position: absolute; - top: -9999px; + top: -9999px; // dx-structural: parks the scrollbar probe off-screen width: $pivotgrid-common-field-chooser-drag-width; height: $pivotgrid-common-field-chooser-drag-height; overflow: scroll; diff --git a/packages/devextreme-scss/scss/widgets/base/scheduler/_common.scss b/packages/devextreme-scss/scss/widgets/base/scheduler/_common.scss index 79c7cda6d069..0e88ceea9c61 100644 --- a/packages/devextreme-scss/scss/widgets/base/scheduler/_common.scss +++ b/packages/devextreme-scss/scss/widgets/base/scheduler/_common.scss @@ -72,7 +72,7 @@ $scheduler-common-collector-size: null !default; } .dx-scheduler-adaptive { - @media (max-width: 450px) { + @media (max-width: 450px) { // dx-literal-required: a media condition, var() is invalid here .dx-scheduler-view-switcher-label { display: none; } diff --git a/packages/devextreme-scss/scss/widgets/base/stepper/layout/step/_index.scss b/packages/devextreme-scss/scss/widgets/base/stepper/layout/step/_index.scss index 954bc2b67f4b..39b3e48ddf4e 100644 --- a/packages/devextreme-scss/scss/widgets/base/stepper/layout/step/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/stepper/layout/step/_index.scss @@ -17,7 +17,7 @@ transition-timing-function: ease-in-out; border-style: solid; border-radius: 999em; - border-width: 1px; + border-width: 1px; // dx-line-width: hairline, the same in every theme } .dx-step-content { diff --git a/packages/devextreme-scss/scss/widgets/base/stepper/layout/step/_mixins.scss b/packages/devextreme-scss/scss/widgets/base/stepper/layout/step/_mixins.scss index f5c4a4aa01a3..8e1ca96e4bc3 100644 --- a/packages/devextreme-scss/scss/widgets/base/stepper/layout/step/_mixins.scss +++ b/packages/devextreme-scss/scss/widgets/base/stepper/layout/step/_mixins.scss @@ -68,11 +68,20 @@ $disabled-text-color, $disabled-bg, $disabled-shadow, + /* + * The indicator is a dot on top of the connector line. Three box-shadow rings shape it, from the + * inside out: the selection ring starts at $indicator-ring-inset and ends at $indicator-ring-size, + * and $indicator-halo-size is the gap the indicator punches in the connector behind it. The + * defaults are the values every theme drew before the sizes were opened. + */ + $indicator-ring-inset: 2px, + $indicator-ring-size: 4px, + $indicator-halo-size: 8px, ) { .dx-step-indicator { background-color: $base-bg; border-color: $base-border-color; - box-shadow: 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-halo-size $shadow-color; color: $base-text-color; } @@ -108,7 +117,7 @@ color: $selected-text-color; border-color: $selected-bg; background-color: $selected-bg; - box-shadow: 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-halo-size $shadow-color; } .dx-step-caption { @@ -119,7 +128,7 @@ .dx-step-indicator { border-color: $selected-invalid-bg; background-color: $selected-invalid-bg; - box-shadow: 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-halo-size $shadow-color; } .dx-step-caption { @@ -138,7 +147,7 @@ color: $selected-text-color; border-color: $selected-bg; background-color: $selected-bg; - box-shadow: 0 0 0 2px $shadow-color, 0 0 0 4px $selected-bg, 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-ring-inset $shadow-color, 0 0 0 $indicator-ring-size $selected-bg, 0 0 0 $indicator-halo-size $shadow-color; } .dx-step-caption { @@ -149,7 +158,7 @@ .dx-step-indicator { border-color: $selected-invalid-bg; background-color: $selected-invalid-bg; - box-shadow: 0 0 0 2px $shadow-color, 0 0 0 4px $selected-invalid-bg, 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-ring-inset $shadow-color, 0 0 0 $indicator-ring-size $selected-invalid-bg, 0 0 0 $indicator-halo-size $shadow-color; } .dx-step-caption { @@ -192,7 +201,7 @@ &.dx-state-focused { .dx-step-indicator { - box-shadow: 0 0 0 2px $shadow-color, 0 0 0 4px $selected-bg, 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-ring-inset $shadow-color, 0 0 0 $indicator-ring-size $selected-bg, 0 0 0 $indicator-halo-size $shadow-color; } &.dx-step-completed { @@ -206,19 +215,19 @@ .dx-step-indicator { border-color: $selected-hover-bg; background-color: $selected-hover-bg; - box-shadow: 0 0 0 2px $shadow-color, 0 0 0 4px $selected-hover-bg, 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-ring-inset $shadow-color, 0 0 0 $indicator-ring-size $selected-hover-bg, 0 0 0 $indicator-halo-size $shadow-color; } } &.dx-state-hover { .dx-step-indicator { - box-shadow: 0 0 0 2px $shadow-color, 0 0 0 4px $selected-hover-bg, 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-ring-inset $shadow-color, 0 0 0 $indicator-ring-size $selected-hover-bg, 0 0 0 $indicator-halo-size $shadow-color; } } &.dx-step-invalid { .dx-step-indicator { - box-shadow: 0 0 0 2px $shadow-color, 0 0 0 4px $selected-invalid-bg, 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-ring-inset $shadow-color, 0 0 0 $indicator-ring-size $selected-invalid-bg, 0 0 0 $indicator-halo-size $shadow-color; } &.dx-step-completed { @@ -232,25 +241,25 @@ .dx-step-indicator { border-color: $selected-invalid-hover-bg; background-color: $selected-invalid-hover-bg; - box-shadow: 0 0 0 2px $shadow-color, 0 0 0 4px $selected-invalid-hover-bg, 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-ring-inset $shadow-color, 0 0 0 $indicator-ring-size $selected-invalid-hover-bg, 0 0 0 $indicator-halo-size $shadow-color; } } &.dx-state-hover { .dx-step-indicator { - box-shadow: 0 0 0 2px $shadow-color, 0 0 0 4px $selected-invalid-hover-bg, 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-ring-inset $shadow-color, 0 0 0 $indicator-ring-size $selected-invalid-hover-bg, 0 0 0 $indicator-halo-size $shadow-color; } } } &.dx-state-disabled { .dx-step-indicator { - box-shadow: 0 0 0 2px $disabled-shadow, 0 0 0 4px $selected-bg, 0 0 0 8px $disabled-shadow; + box-shadow: 0 0 0 $indicator-ring-inset $disabled-shadow, 0 0 0 $indicator-ring-size $selected-bg, 0 0 0 $indicator-halo-size $disabled-shadow; } &.dx-step-invalid { .dx-step-indicator { - box-shadow: 0 0 0 2px $disabled-shadow, 0 0 0 4px $selected-invalid-bg, 0 0 0 8px $disabled-shadow; + box-shadow: 0 0 0 $indicator-ring-inset $disabled-shadow, 0 0 0 $indicator-ring-size $selected-invalid-bg, 0 0 0 $indicator-halo-size $disabled-shadow; } } } @@ -309,17 +318,17 @@ &.dx-state-focused { .dx-step-selected { .dx-step-indicator { - box-shadow: 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-halo-size $shadow-color; } &.dx-state-focused { .dx-step-indicator { - box-shadow: 0 0 0 2px $shadow-color, 0 0 0 4px $selected-hover-bg, 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-ring-inset $shadow-color, 0 0 0 $indicator-ring-size $selected-hover-bg, 0 0 0 $indicator-halo-size $shadow-color; } &.dx-step-invalid { .dx-step-indicator { - box-shadow: 0 0 0 2px $shadow-color, 0 0 0 4px $selected-invalid-hover-bg, 0 0 0 8px $shadow-color; + box-shadow: 0 0 0 $indicator-ring-inset $shadow-color, 0 0 0 $indicator-ring-size $selected-invalid-hover-bg, 0 0 0 $indicator-halo-size $shadow-color; } } } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/chat/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/chat/_index.scss index 87882e79865c..be6bf36b2e79 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/chat/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/chat/_index.scss @@ -3,6 +3,10 @@ @use "../../base/chat" with ( $chat-file-name-font-weight: var(--dx-chat-file-name-font-weight), $chat-editing-preview-caption-font-weight: var(--dx-chat-editing-preview-caption-font-weight), + $chat-messagebubble-padding-image: var(--dx-chat-bubble-image-padding), + $chat-messagebubble-border-radius-image: var(--dx-chat-bubble-image-border-radius), + $chat-messagebubble-max-width-image: var(--dx-chat-bubble-image-max-width), + $chat-messagebubble-max-height-image: var(--dx-chat-bubble-image-max-height), ); @use "../../base/chat/mixins" as *; @use "../common/mixins" as *; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/chat/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/chat/_public.scss index d332fcef5af5..5b50bb7e302d 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/chat/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/chat/_public.scss @@ -18,6 +18,10 @@ --dx-chat-bubble-delete-gap: #{$chat-bubble-delete-gap}; --dx-chat-bubble-delete-icon-size: #{$chat-bubble-delete-icon-size}; --dx-chat-bubble-gap: #{$chat-bubble-gap}; + --dx-chat-bubble-image-border-radius: #{$chat-bubble-image-border-radius}; + --dx-chat-bubble-image-max-height: #{$chat-bubble-image-max-height}; + --dx-chat-bubble-image-max-width: #{$chat-bubble-image-max-width}; + --dx-chat-bubble-image-padding: #{$chat-bubble-image-padding}; --dx-chat-bubble-padding: #{$chat-bubble-padding}; --dx-chat-bubble-primary-bg: #{$chat-bubble-primary-bg}; --dx-chat-bubble-primary-content: #{$chat-bubble-primary-content}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/chat/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/chat/_sizes.scss index fdc52561b24d..3df3e367a648 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/chat/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/chat/_sizes.scss @@ -152,6 +152,12 @@ $chat-bubble-gap: ds.$spacing-80 !default; $chat-file-icon-font-size: ds.$font-size-160 !default; // dx-icon-glyph-size: text roles not applicable } +// Base-layer sizing injected with design tokens (wave B3) +$chat-bubble-image-padding: ds.$spacing-40 !default; +$chat-bubble-image-border-radius: ds.$border-radius-80 !default; +$chat-bubble-image-max-width: 400px !default; // dx-offscale: 400px, the spacing scale stops at 160px +$chat-bubble-image-max-height: 400px !default; // dx-offscale: 400px, the spacing scale stops at 160px + // Base-layer values injected with design tokens (wave B1) $chat-file-name-font-weight: ds.$font-weight-base-strong !default; $chat-editing-preview-caption-font-weight: ds.$font-weight-500 !default; // dx-no-semantic-role: 500 is off the weight-role scale (400/600/700) diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/stepper/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/stepper/_index.scss index f06b79c84f2d..e71d3dd2dfe0 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/stepper/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/stepper/_index.scss @@ -47,4 +47,7 @@ var(--dx-stepper-step-content-disabled), var(--dx-stepper-step-bg-disabled), var(--dx-stepper-step-shadow-disabled), + $indicator-ring-inset: var(--dx-stepper-step-indicator-ring-inset), + $indicator-ring-size: var(--dx-stepper-step-indicator-ring-size), + $indicator-halo-size: var(--dx-stepper-step-indicator-halo-size), ); diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/stepper/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/stepper/_public.scss index 7a974c044a20..d8e26f7ecc5a 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/stepper/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/stepper/_public.scss @@ -25,6 +25,9 @@ --dx-stepper-step-content-selected: #{$stepper-step-content-selected}; --dx-stepper-step-font-weight-selected: #{$stepper-step-font-weight-selected}; --dx-stepper-step-icon-size: #{$stepper-step-icon-size}; + --dx-stepper-step-indicator-halo-size: #{$stepper-step-indicator-halo-size}; + --dx-stepper-step-indicator-ring-inset: #{$stepper-step-indicator-ring-inset}; + --dx-stepper-step-indicator-ring-size: #{$stepper-step-indicator-ring-size}; --dx-stepper-step-indicator-size: #{$stepper-step-indicator-size}; --dx-stepper-step-invalid-bg: var(--dx-stepper-step-base-bg); --dx-stepper-step-invalid-bg-hovered: var(--dx-stepper-step-base-bg-hovered); diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/stepper/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/stepper/_sizes.scss index 40542bf0cca5..24385e77205d 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/stepper/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/stepper/_sizes.scss @@ -30,3 +30,8 @@ $stepper-step-transition-duration: 0.4s !default; } $stepper-connector-thickness: ds.$spacing-20 !default; + +// Base-layer sizing injected with design tokens (wave B3) +$stepper-step-indicator-ring-inset: ds.$spacing-20 !default; +$stepper-step-indicator-ring-size: ds.$spacing-40 !default; +$stepper-step-indicator-halo-size: ds.$spacing-80 !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json new file mode 100644 index 000000000000..3c26e6996e16 --- /dev/null +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -0,0 +1,44 @@ +{ + "openKnobs": 0, + "unclassified": 396, + "unclassifiedByWidget": { + "gridBase": 75, + "colorView": 67, + "scheduler": 54, + "textEditor": 44, + "htmlEditor": 33, + "pivotGrid": 20, + "cardView": 15, + "ui": 8, + "scrollView": 7, + "dataGrid": 5, + "fileManager": 5, + "toolbar": 5, + "sortable": 4, + "calendar": 4, + "diagram": 4, + "treeList": 4, + "pagination": 3, + "recurrenceEditor": 3, + "colorBox": 3, + "switch": 3, + "timeView": 3, + "icon_fonts": 2, + "loadIndicator": 2, + "numberBox": 2, + "resizable": 2, + "slider": 2, + "tagBox": 2, + "chat": 2, + "dropDownMenu": 2, + "filterBuilder": 2, + "treeView": 2, + "fileUploader": 1, + "validation": 1, + "dropDownButton": 1, + "gantt": 1, + "list": 1, + "lookup": 1, + "popover": 1 + } +} diff --git a/packages/devextreme-scss/tests/base-size-markers.test.ts b/packages/devextreme-scss/tests/base-size-markers.test.ts new file mode 100644 index 000000000000..a1cd2235da3b --- /dev/null +++ b/packages/devextreme-scss/tests/base-size-markers.test.ts @@ -0,0 +1,115 @@ +/* + * Every fixed pixel size in the shared layer scss/widgets/base/** must end up in one of two states: + * set from a theme, or classified with a marker saying why it stays. + * + * The layer is compiled once per bundle, so a number written into it reaches generic, material, + * fluent and fluent-next at the same time. That makes it the opposite of the theme, where the bar is + * zero unmarked (tests/fluent-next-size-markers.test.ts): 444 places cannot be classified in one + * commit, and the layer belongs to the base owners, so this is a RATCHET. The counts are compared + * against tests/base-size-markers.baseline.json and must only ever shrink. Regenerate it + * deliberately, as part of a batch, with: + * + * UPDATE_BASE_SIZE_BASELINE=1 pnpm test + * + * The scan is tools/sizes/inventory.mjs, which reads the places from tools/review/px-audit.mjs — the + * same module the theme gate and SCALES.md are built from, so the three cannot disagree about what + * counts as a place. It is driven as a child process because the tool is ESM and jest transforms + * TypeScript only. + */ + +import { execFileSync } from 'child_process'; +import { readdirSync, readFileSync, writeFileSync } from 'fs'; +import { join } from 'path'; + +const packageRoot = process.cwd(); +const baseRoot = join(packageRoot, 'scss', 'widgets', 'base'); +const tool = join(packageRoot, 'tools', 'sizes', 'inventory.mjs'); +const baselinePath = join(__dirname, 'base-size-markers.baseline.json'); +const updatingBaseline = process.env.UPDATE_BASE_SIZE_BASELINE === '1'; + +const vocabulary = JSON.parse( + readFileSync(join(packageRoot, 'tools', 'review', 'size-markers.json'), 'utf8'), +); +const markers: string[] = vocabulary.categories + .map((category: { marker: string | null }) => category.marker) + .filter(Boolean); + +type Summary = { + comments: number; + settable: { + occurrences: number; variables: number; injected: number; open: number; + }; + owned: { + occurrences: number; + unmarked: number; + byCategory: Record; + byWidget: Record; + }; +}; + +const summary: Summary = JSON.parse( + execFileSync(process.execPath, [tool, '--json'], { encoding: 'utf8', cwd: packageRoot }), +); + +const walk = (dir: string): string[] => readdirSync(dir, { withFileTypes: true }) + .flatMap((entry) => { + const full = join(dir, entry.name); + if (entry.isDirectory()) return walk(full); + return entry.name.endsWith('.scss') ? [full] : []; + }); + +test('the inventory accounts for every px literal in the layer', () => { + /* + * An independent count, so a scanner that quietly stops seeing a file cannot pass the ratchet by + * reporting fewer places. Every literal is either in code (settable or base-owned) or in a + * comment; nothing may fall between the buckets. + */ + const raw = walk(baseRoot).reduce( + (total, file) => total + (readFileSync(file, 'utf8').match(/-?\d*\.?\d+px\b/g)?.length ?? 0), + 0, + ); + expect(summary.settable.occurrences + summary.owned.occurrences + summary.comments).toBe(raw); +}); + +test('no marker name is a substring of a custom property name used in the layer', () => { + /* + * Same trap as in the theme: the scan looks for the marker as a substring of the line's comment, so + * a marker that reads like a custom property would match prose about that property. The layer reads + * a handful of --dx-* names (cardView's grid columns, the scheduler animation offset), so it has to + * be checked here too and not only against the theme. + */ + const names = new Set(walk(baseRoot).flatMap((file) => [ + ...readFileSync(file, 'utf8').matchAll(/--(dx[a-z0-9-]*)/g), + ].map(([, name]) => name))); + const collisions = markers.flatMap((marker) => [...names] + .filter((name) => name.includes(marker)) + .map((name) => `marker "${marker}" is contained in --${name}: rename the marker`)); + expect(collisions).toEqual([]); +}); + +// --------------------------------------------------------------------------------------------- +// ratchets +// --------------------------------------------------------------------------------------------- + +const findings = { + // Knobs the layer already offers that no theme turns: theme-side work, base stays untouched. + openKnobs: summary.settable.open, + // Places with no knob and no marker: the backlog this task works through, batch by batch. + unclassified: summary.owned.unmarked, + unclassifiedByWidget: summary.owned.byWidget, +}; + +if (updatingBaseline) { + test('baseline regenerated', () => { + writeFileSync(baselinePath, `${JSON.stringify(findings, null, 2)}\n`); + expect(true).toBe(true); + }); +} else { + const baseline = JSON.parse(readFileSync(baselinePath, 'utf8')); + + Object.keys(findings).forEach((check) => { + test(`${check} does not regress`, () => { + expect(findings[check as keyof typeof findings]).toEqual(baseline[check]); + }); + }); +} diff --git a/packages/devextreme-scss/tools/naming/derive-registries.mjs b/packages/devextreme-scss/tools/naming/derive-registries.mjs index 9fe6a58010c4..06d5f79f8c9b 100644 --- a/packages/devextreme-scss/tools/naming/derive-registries.mjs +++ b/packages/devextreme-scss/tools/naming/derive-registries.mjs @@ -881,7 +881,9 @@ const OVERRIDES = { 'file', 'file-name', 'file-container', 'files-container', 'suggestions', 'editing-preview', 'caption', 'delete-button', 'cancel-button', 'context-menu', 'icon', 'box', 'container', 'alert-list', 'prompt', 'textarea', 'toolbar', 'information', 'author-name', 'timestamp', - 'typing-indicator', 'circle', 'bubble', 'group'], + 'typing-indicator', 'circle', 'bubble', 'group', + // wave B3: .dx-chat-messagebubble-image is a real box inside a bubble + 'image'], 'color-view': ['palette', 'palette-cell', 'hue-scale', 'hue-scale-cell', 'hue-scale-wrapper', 'alpha', 'controls', 'container', 'label', 'handle', 'color-preview', 'preview', 'textbox', 'hex', 'overlay', 'content-box', 'bg-box'], @@ -928,7 +930,10 @@ const OVERRIDES = { stepper: [ // wave H: anatomy the folder needed to enter `migrated` 'content', 'optional-mark','step', 'step-indicator', 'step-label', 'label', 'connector', 'value', 'icon', 'text', - 'item', 'container'], + 'item', 'container', + // wave B3: the two box-shadow rings around the indicator — `ring` is the selection ring, + // `halo` is the gap the indicator punches in the connector behind it + 'ring', 'halo'], 'recurrence-editor': ['switch', 'repeat-end', 'item', 'container', 'label', 'until-date-box', 'count-number-box', 'interval-number-box', 'number-box', 'button-group', 'radio-group'], /* diff --git a/packages/devextreme-scss/tools/naming/registries.json b/packages/devextreme-scss/tools/naming/registries.json index a59397cca05a..56ab88754a9b 100644 --- a/packages/devextreme-scss/tools/naming/registries.json +++ b/packages/devextreme-scss/tools/naming/registries.json @@ -1387,7 +1387,8 @@ "typing-indicator", "circle", "bubble", - "group" + "group", + "image" ], "color-view": [ "palette", @@ -1623,7 +1624,9 @@ "icon", "text", "item", - "container" + "container", + "ring", + "halo" ], "recurrence-editor": [ "switch", diff --git a/packages/devextreme-scss/tools/review/nested-scopes.json b/packages/devextreme-scss/tools/review/nested-scopes.json index a9ce054119cd..e9b612ac8ab0 100644 --- a/packages/devextreme-scss/tools/review/nested-scopes.json +++ b/packages/devextreme-scss/tools/review/nested-scopes.json @@ -75,6 +75,7 @@ "dx-chat-messagebox", "dx-chat-messagebox-textarea-container", "dx-chat-messagebubble", + "dx-chat-messagebubble-image", "dx-chat-messagegroup", "dx-chat-messagegroup-alignment-end", "dx-chat-messagegroup-alignment-start", diff --git a/packages/devextreme-scss/tools/review/px-audit.mjs b/packages/devextreme-scss/tools/review/px-audit.mjs index 9ac20284e5c3..ade44356ac16 100644 --- a/packages/devextreme-scss/tools/review/px-audit.mjs +++ b/packages/devextreme-scss/tools/review/px-audit.mjs @@ -10,8 +10,13 @@ * An unmarked value never reaches SCALES.md, so design never sees it and no decision about it * exists. The marker is the only channel to the scales card, not decoration. * - * Deliberately out of scope: scss/widgets/base/** (the shared layer belongs to the base owners), - * and em/% values — those carry the dx-relative marker but have no gate of their own. + * The shared layer scss/widgets/base/** is scanned by tests/base-size-markers.test.ts, which points + * --root at it and compares against a baseline: 444 places cannot be classified in one commit, and + * the layer belongs to the base owners, so there the count ratchets down instead of having to be + * zero. The default run stays the theme, where the bar is zero unmarked. + * + * Deliberately out of scope: em/% values — those carry the dx-relative marker but have no gate of + * their own. */ import { readFileSync, readdirSync } from 'fs'; @@ -57,6 +62,8 @@ export const scanPxLiterals = (root = themeDir) => { file: relative(packageRoot, file), line: index + 1, literals: [...new Set(literals)], + // distinct values drive the report; the raw count is what an inventory of the layer adds up + occurrences: literals.length, marker, text: line.trim(), }; diff --git a/packages/devextreme-scss/tools/review/size-markers.json b/packages/devextreme-scss/tools/review/size-markers.json index fc5e187e5cdc..5eab230c9cfb 100644 --- a/packages/devextreme-scss/tools/review/size-markers.json +++ b/packages/devextreme-scss/tools/review/size-markers.json @@ -1,9 +1,10 @@ { "comment": [ - "Size-marker vocabulary for the fluent-next theme. One source, two consumers:", + "Size-marker vocabulary. One source, three consumers:", " tools/review/scales.mjs — builds the SCALES.md / SCALES.html report, a section per entry;", " tools/review/px-audit.mjs — the gate: a px literal with no marker does not pass", " (tests/fluent-next-size-markers.test.ts runs it).", + " tests/base-size-markers.test.ts — the same scan over the shared layer scss/widgets/base/**, against a baseline: that layer cannot be marked in one go, so the count only ratchets down.", "The report and the gate cannot drift: this list is the only one.", "", "Fields: id — section anchor; marker — the token in a `// : note` comment;", @@ -118,6 +119,26 @@ "literals": "px", "why": "The number is written where it applies — in a rule, a mixin argument or a derived variable — with no name of its own. Unlike A, a step with that value usually does exist: the step column shows which one.", "scale": "spacing" + }, + { + "id": "shared", + "marker": "dx-base-shared", + "source": "sources", + "title": "J. Sizes owned by the shared layer", + "question": "does the theme get a knob, or does the number stay shared", + "literals": "px", + "why": "A value in scss/widgets/base/** that every theme compiles. The marker is the record of a decision by the base owners: the number is the same for generic, material, fluent and fluent-next, and opening a knob for one theme would buy nothing. Base-layer marker: in the theme itself there is no shared layer to own a value, so a theme literal marked this way is a mistake.", + "scale": "spacing" + }, + { + "id": "structural", + "marker": "dx-structural", + "source": "sources", + "title": "K. Not a designed size", + "question": "no decision needed — the number is a technique, not a size", + "literals": "px", + "why": "An off-screen parking coordinate (top: -9999px), a one-pixel probe, a number chosen to be far outside the viewport rather than to be seen. Nobody designs it and no step can replace it: making it a token would only invite someone to tune it. Unlike H, the value is not frozen by a syntax — it is frozen by having no visual meaning.", + "scale": null } ] } diff --git a/packages/devextreme-scss/tools/sizes/inventory.mjs b/packages/devextreme-scss/tools/sizes/inventory.mjs new file mode 100644 index 000000000000..2782d71814a5 --- /dev/null +++ b/packages/devextreme-scss/tools/sizes/inventory.mjs @@ -0,0 +1,402 @@ +/* + * The inventory of fixed sizes in the SHARED layer scss/widgets/base/**. + * + * node tools/sizes/inventory.mjs # write the lists, print the summary + * node tools/sizes/inventory.mjs --check # read-only; exit 1 if a list on disk is stale + * node tools/sizes/inventory.mjs --json # read-only; the summary, machine-readable (jest uses this) + * + * The layer is compiled once per bundle, so a value written into it reaches generic, material, + * fluent and fluent-next at the same time. That is why the sizes are split in two, and the split is + * not a matter of taste: + * + * theme-settable — the literal is the default of a `$x: … !default` declaration. The knob already + * exists: a theme passes its own value through `@use "…/base/x" with ($x: …)` and + * the other themes keep the default, byte for byte. Nothing in base has to change. + * base-owned — the literal is written where it applies: in a rule, a mixin body, a local + * variable with no `!default`, a calc(), a @media condition. There is no knob, so + * opening one means editing the shared layer, which is the base owners' call. + * + * The scan is tools/review/px-audit.mjs — the same module the gate and SCALES.md are built from, so + * the inventory cannot claim a different set of places than the gate enforces. + */ + +import { readFileSync, readdirSync, writeFileSync } from 'fs'; +import { dirname, join, relative } from 'path'; +import { fileURLToPath } from 'url'; + +import { scanPxLiterals } from '../review/px-audit.mjs'; + +const here = dirname(fileURLToPath(import.meta.url)); +const packageRoot = join(here, '..', '..'); +const baseDir = join(packageRoot, 'scss', 'widgets', 'base'); +const themeDir = join(packageRoot, 'scss', 'widgets', 'fluent-next'); +const listsDir = join(here, 'lists'); + +/* --------------------------------------------------------------- classifying */ + +/* + * A category answers "why is there no knob here", because that decides the cost of making one: + * local-var — a `$x: 25px` with no `!default`; adding `!default` is the whole job. + * mixin-arg — inside a @mixin body or its call; module variables cannot reach it, a parameter can. + * media — a @media/@container condition; var() is invalid there, so no knob can ever exist. + * structural — an off-screen parking coordinate, not a size anyone designs. + * geometry — box-shadow / outline / border / clip-path numbers, judged as a shape, not a step. + * calc — already inside a calc(); a knob has to keep the arithmetic valid for both forms. + * inline — a plain declaration, the ordinary case. + */ +const OFF_SCREEN = /-?(?:9999|99999|10000|100000)px/; +const GEOMETRY = /^(?:box-shadow|outline|outline-offset|outline-width|border|border-\w+|border-\w+-\w+|clip|clip-path)\s*:/; + +const codeOf = (text) => { + const at = text.indexOf('//'); + return (at === -1 ? text : text.slice(0, at)).trim(); +}; + +const categoryOf = (code) => { + if (/^\$[\w-]+\s*:/.test(code)) return 'local-var'; + if (code.includes('@media') || code.includes('@container')) return 'media'; + if (code.startsWith('@include') || code.startsWith('@mixin')) return 'mixin-arg'; + if (OFF_SCREEN.test(code)) return 'structural'; + if (GEOMETRY.test(code)) return 'geometry'; + if (code.includes('calc(')) return 'calc'; + return 'inline'; +}; + +/* + * Lines inside a `@mixin name(…)` parameter list. A literal there is a knob too, even though it is + * not a `$x: … !default` declaration: the theme sets it by passing an argument, and the default is + * what every other theme keeps. An `@include` argument list is the opposite — a call site, not a + * knob — so only `@mixin` opens a signature here. + */ +const signatureCache = new Map(); +const mixinParameterLines = (file) => { + if (signatureCache.has(file)) return signatureCache.get(file); + const inside = new Set(); + let depth = 0; + blankBlockComments(readFileSync(join(packageRoot, file), 'utf8')).split('\n').forEach((line, index) => { + const code = codeOf(line); + const opening = depth === 0 && /@mixin\b/.test(code); + if (!opening && depth === 0) return; + if (depth > 0) inside.add(index + 1); + depth += (code.match(/\(/g)?.length ?? 0) - (code.match(/\)/g)?.length ?? 0); + if (depth < 0) depth = 0; + }); + signatureCache.set(file, inside); + return inside; +}; + +/** The widget a file belongs to: `_toast.scss` -> toast, `scheduler/views/_index.scss` -> scheduler. */ +const widgetOf = (file) => { + const [head, ...rest] = relative('scss/widgets/base', file).split('/'); + return rest.length ? head : head.replace(/^_/, '').replace(/\.scss$/, ''); +}; + +/* ------------------------------------------------- what the theme already sets */ + +const scssFiles = (dir) => readdirSync(dir, { withFileTypes: true }).flatMap((entry) => { + const full = join(dir, entry.name); + if (entry.isDirectory()) return scssFiles(full); + return entry.name.endsWith('.scss') ? [full] : []; +}); + +const blankBlockComments = (content) => content + .replace(/\/\*[\s\S]*?\*\//g, (comment) => comment.replace(/[^\n]/g, ' ')); + +/* + * `@use "…/base/x" with (…)` is the only channel into the layer, and the block spans many lines with + * nested parens (`var(--dx-a, 4px)`), so it is read by balancing brackets. A one-line regex here + * silently under-reports: it finds a few dozen of the 300-odd names that are actually configured. + */ +const splitTopLevel = (body) => { + const parts = []; + let depth = 0; + let current = ''; + [...body].forEach((character) => { + if (character === '(') depth += 1; + if (character === ')') depth -= 1; + if (character === ',' && depth === 0) { + parts.push(current); + current = ''; + return; + } + current += character; + }); + parts.push(current); + return parts; +}; + +const readThemeConfiguration = () => { + const setBy = new Map(); + scssFiles(themeDir).forEach((file) => { + const content = blankBlockComments(readFileSync(file, 'utf8')); + [...content.matchAll(/@use\s+"([^"]*base[^"]*)"[^(\n]*with\s*\(/g)].forEach((match) => { + let depth = 1; + let at = match.index + match[0].length; + while (at < content.length && depth > 0) { + if (content[at] === '(') depth += 1; + if (content[at] === ')') depth -= 1; + at += 1; + } + const body = content.slice(match.index + match[0].length, at - 1).replace(/\/\/[^\n]*/g, ''); + splitTopLevel(body).forEach((part) => { + const name = /^\s*\$([\w-]+)\s*:/.exec(part); + if (!name) return; + const value = part.slice(part.indexOf(':') + 1).trim().replace(/\s+/g, ' '); + setBy.set(name[1], { + file: relative(packageRoot, file), + value, + }); + }); + }); + }); + return setBy; +}; + +/* ------------------------------------------------------------------ the lists */ + +const build = () => { + const { marked, unmarked } = scanPxLiterals(baseDir); + const places = [...marked, ...unmarked] + .sort((a, b) => a.file.localeCompare(b.file) || a.line - b.line); + const setBy = readThemeConfiguration(); + + const settable = []; + const owned = []; + + places.forEach((place) => { + const code = codeOf(place.text); + const declaration = /^\$([\w-]+)\s*:/.exec(code); + const parameter = Boolean(declaration) && mixinParameterLines(place.file).has(place.line); + const isKnob = Boolean(declaration) && (code.includes('!default') || parameter); + const common = { + file: place.file, + line: place.line, + widget: widgetOf(place.file), + literals: place.literals, + occurrences: place.occurrences, + marker: place.marker, + text: place.text, + }; + + if (isKnob) { + const configured = setBy.get(declaration[1]); + settable.push({ + ...common, + variable: declaration[1], + kind: parameter ? 'mixin-parameter' : 'module-variable', + status: parameter ? 'parameter' : (configured ? 'injected' : 'open'), + ...(configured && !parameter ? { setBy: configured.file, setTo: configured.value } : {}), + }); + return; + } + owned.push({ ...common, category: categoryOf(code) }); + }); + + return { settable, owned }; +}; + +const tally = (rows, key) => rows.reduce((totals, row) => { + totals[row[key]] = (totals[row[key]] ?? 0) + row.occurrences; + return totals; +}, {}); + +const descending = (totals) => Object.fromEntries( + Object.entries(totals).sort(([, a], [, b]) => b - a), +); + +const sum = (rows) => rows.reduce((total, row) => total + row.occurrences, 0); + +/* ------------------------------------------------------------------- reports */ + +const GENERATED = 'GENERATED by tools/sizes/inventory.mjs — do not edit by hand. ' + + 'Judgment calls belong in that script, not in this file.'; + +const settableJson = (settable) => ({ + $comment: [ + GENERATED, + 'Sizes the theme can set from outside without touching the shared layer: the literal is the ' + + 'default of a `$x: … !default` declaration, so `@use "…/base/x" with ($x: …)` replaces it for ' + + 'one theme and leaves the default — and every other theme — untouched.', + 'kind "module-variable" — a `$x: … !default` declaration; "mixin-parameter" — a default in a ' + + '`@mixin name(…)` signature, which a theme replaces by passing an argument.', + 'status "injected" — fluent-next already passes a value; "open" — the knob exists and nobody ' + + 'turns it; "parameter" — a mixin parameter, where the signature itself is the channel and there ' + + 'is nothing to cross-check by name. An "open" row is theme-side work only.', + 'The match is by variable name. A name declared in a nested module is only reachable once the ' + + 'parent forwards it (see base/chat/_index.scss), which is why an "open" row can sit next to ' + + 'injected ones from the same widget.', + ], + summary: { + occurrences: sum(settable), + variables: new Set(settable.map((row) => row.variable)).size, + injected: sum(settable.filter((row) => row.status === 'injected')), + open: sum(settable.filter((row) => row.status === 'open')), + parameters: sum(settable.filter((row) => row.status === 'parameter')), + }, + places: settable, +}); + +const ownedJson = (owned) => ({ + $comment: [ + GENERATED, + 'Sizes nailed into the shared layer: no `!default` declaration holds them, so opening one means ' + + 'editing scss/widgets/base/** — which every theme compiles. Each place needs either a knob ' + + '(and proof the other themes did not move) or a marker saying why it stays.', + 'category — why there is no knob today: local-var (a $x with no !default), mixin-arg (inside a ' + + '@mixin body or call), media (a @media condition, where var() is invalid), structural (an ' + + 'off-screen parking coordinate, not a designed size), geometry (box-shadow / outline / border ' + + '/ clip-path numbers), calc (already inside a calc()), inline (a plain declaration).', + 'marker — the classification comment already on the line, from tools/review/size-markers.json.', + ], + summary: { + occurrences: sum(owned), + byCategory: descending(tally(owned, 'category')), + byWidget: descending(tally(owned, 'widget')), + unmarked: sum(owned.filter((row) => !row.marker)), + // The backlog proper: what still has neither a knob nor a marker. `byWidget` above counts the + // classified places too, so the two differ wherever a batch has already been through. + unmarkedByWidget: descending(tally(owned.filter((row) => !row.marker), 'widget')), + }, + places: owned, +}); + +const agenda = (settable, owned, comments) => { + // The agenda is a to-do list: a place that already carries a marker is a decision, not an item. + const backlog = owned.filter((row) => !row.marker); + const byWidget = descending(tally(backlog, 'widget')); + const categories = Object.keys(descending(tally(backlog, 'category'))); + const lines = [ + '# Fixed sizes in the shared layer', + '', + `_${GENERATED}_`, + '', + 'The layer `scss/widgets/base/**` is compiled once per bundle, so a size written into it reaches', + 'generic, material, fluent and fluent-next at the same time. This is the agenda for the base', + 'owners: for every number below, either the theme gets a knob, or the number is agreed to stay', + 'and carries a marker saying why.', + '', + '## Totals', + '', + '| | occurrences |', + '|---|---|', + `| a raw grep of the layer | ${sum(settable) + sum(owned) + comments} |`, + `| …of those, inside comments (commented-out code, prose) | ${comments} |`, + `| **in code** | **${sum(settable) + sum(owned)}** |`, + `| — the theme can already set from outside | ${sum(settable)} |`, + `| — nailed into the shared layer | ${sum(owned)} |`, + '', + '## What the theme can already set', + '', + `${sum(settable)} occurrences in ${new Set(settable.map((row) => row.variable)).size} \`!default\` variables. ` + + `fluent-next already passes ${sum(settable.filter((row) => row.status === 'injected'))}; ` + + `${sum(settable.filter((row) => row.status === 'open'))} are open knobs nobody turns.`, + '', + ...(settable.some((row) => row.status === 'open') ? [ + 'Open knobs — theme-side work, the shared layer stays untouched:', + '', + ...settable.filter((row) => row.status === 'open') + .map((row) => `- \`$${row.variable}\` — ${row.file}:${row.line}`), + '', + ] : []), + '## What is nailed into the layer', + '', + `| widget | ${categories.join(' | ')} | total |`, + `|---|${categories.map(() => '---').join('|')}|---|`, + ...Object.keys(byWidget).map((widget) => { + const rows = backlog.filter((row) => row.widget === widget); + const counts = categories.map((category) => sum(rows.filter((row) => row.category === category)) || ''); + return `| ${widget} | ${counts.join(' | ')} | **${byWidget[widget]}** |`; + }), + '', + '## Places, by widget', + '', + ]; + + Object.keys(byWidget).forEach((widget) => { + lines.push(`### ${widget} — ${byWidget[widget]}`, ''); + backlog.filter((row) => row.widget === widget).forEach((row) => { + lines.push(`- \`${row.file}:${row.line}\` · ${row.category}`, ` \`${row.text}\``); + }); + lines.push(''); + }); + + return `${lines.join('\n')}`; +}; + +/* --------------------------------------------------------------------- output */ + +/* The raw grep counts px inside comments too; the scan does not. Report the gap instead of hiding it. */ +const commentedOccurrences = () => { + const px = /-?\d*\.?\d+px\b/g; + return scssFiles(baseDir).reduce((total, file) => { + const content = readFileSync(file, 'utf8'); + const inCode = blankBlockComments(content).split('\n') + .reduce((count, line) => count + (codeOf(line).match(px)?.length ?? 0), 0); + return total + ((content.match(px)?.length ?? 0) - inCode); + }, 0); +}; + +export const inventory = () => { + const { settable, owned } = build(); + const comments = commentedOccurrences(); + return { + comments, + settable: { + occurrences: sum(settable), + variables: new Set(settable.map((row) => row.variable)).size, + injected: sum(settable.filter((row) => row.status === 'injected')), + open: sum(settable.filter((row) => row.status === 'open')), + parameters: sum(settable.filter((row) => row.status === 'parameter')), + }, + owned: { + occurrences: sum(owned), + unmarked: sum(owned.filter((row) => !row.marker)), + byCategory: descending(tally(owned, 'category')), + byWidget: descending(tally(owned.filter((row) => !row.marker), 'widget')), + }, + artefacts: [ + ['theme-settable.json', `${JSON.stringify(settableJson(settable), null, 2)}\n`], + ['base-owned.json', `${JSON.stringify(ownedJson(owned), null, 2)}\n`], + ['BASE-SIZES.md', agenda(settable, owned, comments)], + ], + }; +}; + +if (process.argv[1] === fileURLToPath(import.meta.url)) { + const { + comments, settable, owned, artefacts, + } = inventory(); + const check = process.argv.includes('--check'); + const json = process.argv.includes('--json'); + + const stale = artefacts.filter(([name, content]) => { + try { + return readFileSync(join(listsDir, name), 'utf8') !== content; + } catch { + return true; + } + }); + // --check and --json are read-only: the gate must not rewrite the tree it is judging. + if (!check && !json) artefacts.forEach(([name, content]) => writeFileSync(join(listsDir, name), content)); + + if (json) { + process.stdout.write(`${JSON.stringify({ comments, settable, owned }, null, 2)}\n`); + } else { + process.stdout.write([ + `raw grep of scss/widgets/base: ${settable.occurrences + owned.occurrences + comments} px ` + + `occurrences (${comments} of them inside comments)`, + `in code: ${settable.occurrences + owned.occurrences}`, + ` theme-settable ${settable.occurrences} (injected ${settable.injected}, open ${settable.open}, ` + + `mixin parameters ${settable.parameters})`, + ` base-owned ${owned.occurrences} ${Object.entries(owned.byCategory) + .map(([category, count]) => `${category} ${count}`).join(', ')}`, + ` of those still unclassified: ${owned.unmarked}`, + '', + ].join('\n')); + } + + if (check && stale.length) { + process.stdout.write(`stale: ${stale.map(([name]) => name).join(', ')} — run node tools/sizes/inventory.mjs\n`); + process.exit(1); + } +} diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md new file mode 100644 index 000000000000..bfd4d9a47c0a --- /dev/null +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -0,0 +1,823 @@ +# Fixed sizes in the shared layer + +_GENERATED by tools/sizes/inventory.mjs — do not edit by hand. Judgment calls belong in that script, not in this file._ + +The layer `scss/widgets/base/**` is compiled once per bundle, so a size written into it reaches +generic, material, fluent and fluent-next at the same time. This is the agenda for the base +owners: for every number below, either the theme gets a knob, or the number is agreed to stay +and carries a marker saying why. + +## Totals + +| | occurrences | +|---|---| +| a raw grep of the layer | 782 | +| …of those, inside comments (commented-out code, prose) | 5 | +| **in code** | **777** | +| — the theme can already set from outside | 373 | +| — nailed into the shared layer | 404 | + +## What the theme can already set + +373 occurrences in 321 `!default` variables. fluent-next already passes 370; 0 are open knobs nobody turns. + +## What is nailed into the layer + +| widget | inline | local-var | geometry | calc | mixin-arg | total | +|---|---|---|---|---|---|---| +| gridBase | 50 | 18 | 7 | | | **75** | +| colorView | 35 | 8 | 24 | | | **67** | +| scheduler | 9 | 41 | 3 | 1 | | **54** | +| textEditor | 20 | | 20 | 4 | | **44** | +| htmlEditor | 22 | 3 | 8 | | | **33** | +| pivotGrid | 6 | 8 | 6 | | | **20** | +| cardView | 9 | 1 | 5 | | | **15** | +| ui | 8 | | | | | **8** | +| scrollView | 5 | 2 | | | | **7** | +| dataGrid | | | 3 | | 2 | **5** | +| fileManager | 5 | | | | | **5** | +| toolbar | 1 | | 4 | | | **5** | +| sortable | | | 4 | | | **4** | +| calendar | 1 | | 3 | | | **4** | +| diagram | | 1 | | 3 | | **4** | +| treeList | | | 1 | | 3 | **4** | +| pagination | 1 | 2 | | | | **3** | +| recurrenceEditor | | 3 | | | | **3** | +| colorBox | 1 | 1 | | 1 | | **3** | +| switch | 2 | | 1 | | | **3** | +| timeView | 2 | 1 | | | | **3** | +| icon_fonts | 2 | | | | | **2** | +| loadIndicator | | 2 | | | | **2** | +| numberBox | | 2 | | | | **2** | +| resizable | | 2 | | | | **2** | +| slider | | 2 | | | | **2** | +| tagBox | 1 | | | 1 | | **2** | +| chat | | | 2 | | | **2** | +| dropDownMenu | | | 2 | | | **2** | +| filterBuilder | 2 | | | | | **2** | +| treeView | 1 | 1 | | | | **2** | +| fileUploader | 1 | | | | | **1** | +| validation | | | 1 | | | **1** | +| dropDownButton | 1 | | | | | **1** | +| gantt | 1 | | | | | **1** | +| list | | 1 | | | | **1** | +| lookup | | | | 1 | | **1** | +| popover | | | | | 1 | **1** | + +## Places, by widget + +### gridBase — 75 + +- `scss/widgets/base/gridBase/_index.scss:25` · geometry + `clip: rect(1px, 1px, 1px, 1px);` +- `scss/widgets/base/gridBase/_index.scss:37` · inline + `margin-right: 5px !important; // stylelint-disable-line declaration-no-important` +- `scss/widgets/base/gridBase/_index.scss:55` · inline + `margin-top: -1px;` +- `scss/widgets/base/gridBase/_index.scss:86` · inline + `padding-top: 1px;` +- `scss/widgets/base/gridBase/_index.scss:91` · inline + `padding: 7px 30px 7px 5px;` +- `scss/widgets/base/gridBase/_index.scss:159` · inline + `font-size: 16px;` +- `scss/widgets/base/gridBase/_index.scss:162` · inline + `font-size: 16px;` +- `scss/widgets/base/gridBase/_index.scss:167` · inline + `padding: 0 20px 20px 20px;` +- `scss/widgets/base/gridBase/_index.scss:171` · inline + `margin-bottom: 10px;` +- `scss/widgets/base/gridBase/_index.scss:196` · inline + `padding-inline-start: 4px;` +- `scss/widgets/base/gridBase/_index.scss:224` · inline + `width: 3px;` +- `scss/widgets/base/gridBase/_index.scss:307` · inline + `max-width: 10px;` +- `scss/widgets/base/gridBase/_index.scss:424` · geometry + `border: 2px solid transparent;` +- `scss/widgets/base/gridBase/_index.scss:426` · inline + `left: 1px;` +- `scss/widgets/base/gridBase/_index.scss:474` · inline + `min-height: 1px;` +- `scss/widgets/base/gridBase/_index.scss:550` · inline + `top: -1px;` +- `scss/widgets/base/gridBase/_index.scss:551` · inline + `bottom: -1px;` +- `scss/widgets/base/gridBase/_index.scss:552` · inline + `left: -1px;` +- `scss/widgets/base/gridBase/_index.scss:553` · inline + `right: -1px;` +- `scss/widgets/base/gridBase/_index.scss:560` · geometry + `border-top: 1px solid transparent;` +- `scss/widgets/base/gridBase/_index.scss:645` · inline + `padding: 5px;` +- `scss/widgets/base/gridBase/_index.scss:646` · inline + `padding-right: 30px;` +- `scss/widgets/base/gridBase/_index.scss:650` · inline + `padding: 8px 5px 7px 5px;` +- `scss/widgets/base/gridBase/_index.scss:654` · inline + `padding: 9px 6px 8px 6px;` +- `scss/widgets/base/gridBase/_index.scss:658` · inline + `padding-left: 6px;` +- `scss/widgets/base/gridBase/_index.scss:680` · inline + `margin-left: 10px;` +- `scss/widgets/base/gridBase/_index.scss:695` · inline + `margin-left: 15px;` +- `scss/widgets/base/gridBase/_index.scss:719` · inline + `height: 100px;` +- `scss/widgets/base/gridBase/_index.scss:820` · inline + `padding: 10px;` +- `scss/widgets/base/gridBase/_index.scss:894` · inline + `padding: 7px 5px 7px 30px;` +- `scss/widgets/base/gridBase/_index.scss:949` · inline + `margin-right: -2px;` +- `scss/widgets/base/gridBase/_index.scss:957` · inline + `padding: 5px;` +- `scss/widgets/base/gridBase/_index.scss:958` · inline + `padding-left: 30px;` +- `scss/widgets/base/gridBase/_index.scss:962` · inline + `padding-right: 6px;` +- `scss/widgets/base/gridBase/_index.scss:976` · inline + `margin-right: 10px;` +- `scss/widgets/base/gridBase/_index.scss:983` · inline + `margin-right: 15px;` +- `scss/widgets/base/gridBase/_index.scss:996` · inline + `padding: 10px;` +- `scss/widgets/base/gridBase/_index.scss:1009` · inline + `padding-right: 10px;` +- `scss/widgets/base/gridBase/_index.scss:1014` · inline + `margin-right: 7px;` +- `scss/widgets/base/gridBase/_variables.scss:1` · local-var + `$grid-cell-padding: 7px;` +- `scss/widgets/base/gridBase/_variables.scss:2` · local-var + `$grid-texteditor-input-padding: 32px;` +- `scss/widgets/base/gridBase/_variables.scss:3` · local-var + `$grid-total-footer-paddings: 7px;` +- `scss/widgets/base/gridBase/_variables.scss:4` · local-var + `$grid-command-select-column-width: 70px;` +- `scss/widgets/base/gridBase/_variables.scss:5` · local-var + `$grid-command-edit-column-width: 100px;` +- `scss/widgets/base/gridBase/_variables.scss:6` · local-var + `$grid-command-edit-column-with-icons-width: 80px;` +- `scss/widgets/base/gridBase/_variables.scss:7` · local-var + `$grid-command-expand-column-width: 30px;` +- `scss/widgets/base/gridBase/_variables.scss:8` · local-var + `$grid-command-adaptive-column-width: 36px;` +- `scss/widgets/base/gridBase/_variables.scss:9` · local-var + `$grid-column-header-indicator-width: 14px;` +- `scss/widgets/base/gridBase/_variables.scss:10` · local-var + `$grid-text-content-margin: 3px;` +- `scss/widgets/base/gridBase/_variables.scss:11` · local-var + `$grid-sort-index-width: 12px;` +- `scss/widgets/base/gridBase/_variables.scss:12` · local-var + `$grid-sort-index-offset: 3px;` +- `scss/widgets/base/gridBase/_variables.scss:13` · local-var + `$grid-ai-assistant-confirm-dialog-button-width: 50px;` +- `scss/widgets/base/gridBase/layout/aiChat/_mixins.scss:47` · geometry + `border-width: 1px;` +- `scss/widgets/base/gridBase/layout/aiChat/_variables.scss:1` · local-var + `$ai-chat-toolbar-item-spacing: 4px;` +- `scss/widgets/base/gridBase/layout/aiChat/_variables.scss:2` · local-var + `$ai-chat-message-gap: 8px;` +- `scss/widgets/base/gridBase/layout/aiChat/_variables.scss:3` · local-var + `$ai-chat-message-content-gap: 4px;` +- `scss/widgets/base/gridBase/layout/aiChat/_variables.scss:4` · local-var + `$ai-chat-message-width: 280px;` +- `scss/widgets/base/gridBase/layout/aiChat/_variables.scss:5` · local-var + `$ai-chat-message-regenerate-button-border-radius: 4px;` + +### colorView — 67 + +- `scss/widgets/base/colorView/_index.scss:3` · local-var + `$color-view-container-width: 450px;` +- `scss/widgets/base/colorView/_index.scss:4` · local-var + `$color-view-palette-width: 288px;` +- `scss/widgets/base/colorView/_index.scss:5` · local-var + `$color-view-palette-height: 299px;` +- `scss/widgets/base/colorView/_index.scss:6` · local-var + `$color-view-alpha-width: 292px;` +- `scss/widgets/base/colorView/_index.scss:7` · local-var + `$color-view-hue-scale-width: 18px;` +- `scss/widgets/base/colorView/_index.scss:10` · local-var + `$colorview-palette-handle-size: 28px;` +- `scss/widgets/base/colorView/_index.scss:13` · local-var + `$colorview-handle-first-side-size: 36px;` +- `scss/widgets/base/colorView/_index.scss:14` · local-var + `$colorview-handle-second-side-size: 17px;` +- `scss/widgets/base/colorView/_index.scss:27` · inline + `margin: 10px 0 0 0;` +- `scss/widgets/base/colorView/_index.scss:31` · inline + `margin-left: 43px;` +- `scss/widgets/base/colorView/_index.scss:32` · inline + `width: 115px;` +- `scss/widgets/base/colorView/_index.scss:36` · inline + `width: 69px;` +- `scss/widgets/base/colorView/_index.scss:38` · inline + `margin: 1px 1px 10px 0;` +- `scss/widgets/base/colorView/_index.scss:47` · inline + `margin-right: 10px;` +- `scss/widgets/base/colorView/_index.scss:60` · inline + `padding: 1px 0;` +- `scss/widgets/base/colorView/_index.scss:67` · inline + `margin-top: 10px;` +- `scss/widgets/base/colorView/_index.scss:96` · inline + `left: -7px;` +- `scss/widgets/base/colorView/_index.scss:102` · inline + `top: -6px;` +- `scss/widgets/base/colorView/_index.scss:120` · inline + `background-size: 16px 16px;` +- `scss/widgets/base/colorView/_index.scss:121` · inline + `background-position: 0 0, 8px 8px;` +- `scss/widgets/base/colorView/_index.scss:125` · inline + `background-position: 0 6px, 8px 14px;` +- `scss/widgets/base/colorView/_index.scss:162` · inline + `height: 20px;` +- `scss/widgets/base/colorView/_index.scss:167` · inline + `margin-left: 19px;` +- `scss/widgets/base/colorView/_index.scss:177` · inline + `width: 90px;` +- `scss/widgets/base/colorView/_index.scss:178` · inline + `margin-left: 27px;` +- `scss/widgets/base/colorView/_index.scss:182` · inline + `width: 86px;` +- `scss/widgets/base/colorView/_index.scss:183` · inline + `height: 40px;` +- `scss/widgets/base/colorView/_index.scss:187` · inline + `margin: 6px 0;` +- `scss/widgets/base/colorView/_index.scss:192` · inline + `width: 90px;` +- `scss/widgets/base/colorView/_index.scss:204` · inline + `margin-right: 19px;` +- `scss/widgets/base/colorView/_index.scss:211` · inline + `margin-right: 41px;` +- `scss/widgets/base/colorView/_index.scss:222` · inline + `margin-right: 25px;` +- `scss/widgets/base/colorView/_mixins.scss:3` · inline + `background: radial-gradient(transparent 5px, $handle-border-color 6px, $handle-color 7px, $handle-color 12px, $handle-border-color 13px);` +- `scss/widgets/base/colorView/_mixins.scss:4` · geometry + `box-shadow: 0 1px 1px 0 $handle-border-color;` +- `scss/widgets/base/colorView/_mixins.scss:8` · geometry + `border: 1px solid;` +- `scss/widgets/base/colorView/_mixins.scss:10` · geometry + `box-shadow: inset -5px 0 0 3px $handle-color, inset 5px 0 0 3px $handle-color, inset -6px 0 1px 4px $handle-border-color, inset 6px 0 1px 4px $handle-border-color;` +- `scss/widgets/base/colorView/_mixins.scss:14` · geometry + `border: 1px solid;` +- `scss/widgets/base/colorView/_mixins.scss:16` · geometry + `box-shadow: inset 0 -5px 0 3px $handle-color, inset 0 5px 0 3px $handle-color, inset 0 -6px 1px 4px $handle-border-color, inset 0 6px 1px 4px $handle-border-color;` + +### scheduler — 54 + +- `scss/widgets/base/scheduler/_common.scss:4` · local-var + `$scheduler-appointment-collector-margin: 3px;` +- `scss/widgets/base/scheduler/_common.scss:5` · local-var + `$scheduler-appointment-collector-height: 22px;` +- `scss/widgets/base/scheduler/_index.scss:82` · local-var + `$scheduler-appointment-min-size: 4px;` +- `scss/widgets/base/scheduler/_index.scss:83` · local-var + `$scheduler-appointment-content-padding: 5px 7px;` +- `scss/widgets/base/scheduler/_index.scss:84` · local-var + `$scheduler-appointment-reduced-content-padding: 40px;` +- `scss/widgets/base/scheduler/_index.scss:86` · local-var + `$scheduler-hovered-appointment-top-shadow-size: 5px;` +- `scss/widgets/base/scheduler/_index.scss:87` · local-var + `$scheduler-focused-cell-shadow: inset 0 0 0 1px $scheduler-appointment-base-color;` +- `scss/widgets/base/scheduler/_index.scss:89` · local-var + `$scheduler-vertical-appointment-resizable-hovering-shadow: inset 0 $scheduler-hovered-appointment-top-shadow-size 0 0 $scheduler-appointment-start-color, inset 0 -2px 0 0 $scheduler-appointment-start-color;` +- `scss/widgets/base/scheduler/_index.scss:91` · local-var + `$scheduler-vertical-appointment-shadow: inset 0 2px 0 0 $scheduler-appointment-start-color;` +- `scss/widgets/base/scheduler/_index.scss:92` · local-var + `$scheduler-vertical-appointment-resizing-shadow: inset 0 -2px 0 0 $scheduler-appointment-start-color, $scheduler-vertical-appointment-shadow;` +- `scss/widgets/base/scheduler/_index.scss:96` · local-var + `$scheduler-horizontal-appointment-resizable-hovering-shadow: inset $scheduler-hovered-appointment-top-shadow-size 0 0 0 $scheduler-appointment-start-color, inset -2px 0 0 0 $scheduler-appointment-start-color;` +- `scss/widgets/base/scheduler/_index.scss:97` · local-var + `$scheduler-horizontal-appointment-resizable-hovering-shadow-rtl: inset (-$scheduler-hovered-appointment-top-shadow-size) 0 0 0 $scheduler-appointment-start-color, inset 2px 0 0 0 $scheduler-appointment-start-color;` +- `scss/widgets/base/scheduler/_index.scss:100` · local-var + `$scheduler-horizontal-appointment-shadow: inset 2px 0 0 0 $scheduler-appointment-start-color;` +- `scss/widgets/base/scheduler/_index.scss:101` · local-var + `$scheduler-horizontal-appointment-shadow-rtl: inset -2px 0 0 0 $scheduler-appointment-start-color;` +- `scss/widgets/base/scheduler/_index.scss:102` · local-var + `$scheduler-horizontal-appointment-resizing-shadow: inset -2px 0 0 0 $scheduler-appointment-start-color, $scheduler-horizontal-appointment-shadow;` +- `scss/widgets/base/scheduler/_index.scss:104` · local-var + `$scheduler-grouped-appointment-month-text-size: 12px;` +- `scss/widgets/base/scheduler/_index.scss:106` · local-var + `$scheduler-base-border: 1px solid;` +- `scss/widgets/base/scheduler/_index.scss:107` · local-var + `$scheduler-transparent-top-border: 1px solid transparent;` +- `scss/widgets/base/scheduler/_index.scss:108` · local-var + `$scheduler-accent-border: 1px solid;` +- `scss/widgets/base/scheduler/_index.scss:110` · local-var + `$scheduler-reduced-icon-offset: 5px;` +- `scss/widgets/base/scheduler/_index.scss:111` · local-var + `$scheduler-recurrence-icon-offset: 20px;` +- `scss/widgets/base/scheduler/_index.scss:113` · local-var + `$scheduler-agenda-appointment-margin: 5px;` +- `scss/widgets/base/scheduler/_index.scss:114` · local-var + `$scheduler-agenda-last-in-date-appointment-margin: 20px;` +- `scss/widgets/base/scheduler/_index.scss:120` · local-var + `$scheduler-time-indicator-font-size: 30px;` +- `scss/widgets/base/scheduler/_index.scss:121` · local-var + `$scheduler-time-indicator-size: 1px;` +- `scss/widgets/base/scheduler/_index.scss:122` · local-var + `$scheduler-time-indicator-top: 14px;` +- `scss/widgets/base/scheduler/_index.scss:123` · local-var + `$scheduler-time-indicator-left: 12px;` +- `scss/widgets/base/scheduler/_index.scss:126` · local-var + `$scheduler-time-indicator-shadow: 0 1px 0 0 $scheduler-time-indicator-shadow-color;` +- `scss/widgets/base/scheduler/_index.scss:127` · local-var + `$scheduler-time-indicator-text-shadow: $scheduler-time-indicator-shadow-color 1px 0 0;` +- `scss/widgets/base/scheduler/_index.scss:452` · inline + `bottom: -1px;` +- `scss/widgets/base/scheduler/appointment/regular/_index.scss:147` · inline + `left: -1px;` +- `scss/widgets/base/scheduler/layout/_header.scss:9` · inline + `margin-bottom: -1px;` +- `scss/widgets/base/scheduler/views/_index.scss:44` · local-var + `$scheduler-timepanel-cell-offset: 20px;` +- `scss/widgets/base/scheduler/views/_index.scss:45` · local-var + `$scheduler-workspace-info-font-size: 20px;` +- `scss/widgets/base/scheduler/views/_index.scss:46` · local-var + `$scheduler-small-font-size: 14px;` +- `scss/widgets/base/scheduler/views/_index.scss:48` · local-var + `$scheduler-current-time-cell-border-size: 2px;` +- `scss/widgets/base/scheduler/views/_index.scss:50` · local-var + `$scheduler-workspace-date-table-cell-height: 50px;` +- `scss/widgets/base/scheduler/views/_index.scss:54` · local-var + `$scheduler-header-panel-table-cell-height: if(meta.type-of($scheduler-workspace-date-table-cell-height) == number, $scheduler-workspace-date-table-cell-height - 10px, calc(#{$scheduler-workspace-date-table-cell-height} - 10px));` +- `scss/widgets/base/scheduler/views/_index.scss:55` · local-var + `$scheduler-group-header-table-cell-height: 30px;` +- `scss/widgets/base/scheduler/views/_index.scss:57` · local-var + `$scheduler-group-header-table-cell-width: 80px;` +- `scss/widgets/base/scheduler/views/_index.scss:59` · local-var + `$scheduler-month-date-text-size: 16px;` +- `scss/widgets/base/scheduler/views/_index.scss:61` · local-var + `$scheduler-month-date-text-padding: 6px;` +- `scss/widgets/base/scheduler/views/_index.scss:121` · calc + `top: if(meta.type-of($scheduler-header-panel-table-cell-height) == number and meta.type-of($scheduler-current-time-cell-border-size) == number, $scheduler-header-panel-table-cell-height - $scheduler-current-time-cell-border-size - 1, calc(#{$scheduler-header-panel-table-cell-height} - #{$scheduler-current-time-cell-border-size} - 1px));` +- `scss/widgets/base/scheduler/views/_index.scss:405` · inline + `padding: 0 5px;` +- `scss/widgets/base/scheduler/views/_index.scss:697` · inline + `margin-top: -13px;` +- `scss/widgets/base/scheduler/views/_index.scss:707` · inline + `bottom: -1px;` +- `scss/widgets/base/scheduler/views/_index.scss:844` · inline + `height: 50px !important; // stylelint-disable-line declaration-no-important` +- `scss/widgets/base/scheduler/views/_index.scss:855` · inline + `height: 50px;` +- `scss/widgets/base/scheduler/views/_index.scss:870` · geometry + `box-shadow: inset 0 -1px 0 $scheduler-base-border-color;` +- `scss/widgets/base/scheduler/views/day/_index.scss:45` · inline + `margin-top: 1px;` +- `scss/widgets/base/scheduler/views/month/_index.scss:73` · geometry + `box-shadow: 0 -2px 0 $scheduler-base-border-color;` +- `scss/widgets/base/scheduler/views/timelines/_index.scss:188` · geometry + `border-bottom: 1px solid;` + +### textEditor — 44 + +- `scss/widgets/base/textEditor/_mixins.scss:53` · inline + `padding: 0 2px;` +- `scss/widgets/base/textEditor/_mixins.scss:167` · inline + `padding: 0 2px;` +- `scss/widgets/base/textEditor/_mixins.scss:174` · inline + `margin-left: -2px;` +- `scss/widgets/base/textEditor/_mixins.scss:175` · inline + `margin-right: -2px;` +- `scss/widgets/base/textEditor/_mixins.scss:176` · geometry + `border-radius: 1px;` +- `scss/widgets/base/textEditor/_mixins.scss:177` · geometry + `clip-path: inset(-$texteditor-label-font-size 1px -1px 1px);` +- `scss/widgets/base/textEditor/_mixins.scss:201` · geometry + `clip-path: inset(-1px 1px -1px -1px);` +- `scss/widgets/base/textEditor/_mixins.scss:216` · geometry + `clip-path: inset(-1px -1px -1px 1px);` +- `scss/widgets/base/textEditor/_mixins.scss:221` · geometry + `clip-path: inset(-1px -1px -1px 1px);` +- `scss/widgets/base/textEditor/_mixins.scss:225` · geometry + `clip-path: inset(-1px 1px -1px -1px);` +- `scss/widgets/base/textEditor/_mixins.scss:239` · inline + `height: 3px;` +- `scss/widgets/base/textEditor/_mixins.scss:241` · inline + `margin-inline-start: -2px;` +- `scss/widgets/base/textEditor/_mixins.scss:303` · inline + `border-start-end-radius: 1px;` +- `scss/widgets/base/textEditor/_mixins.scss:304` · inline + `border-end-end-radius: 1px;` +- `scss/widgets/base/textEditor/_mixins.scss:629` · inline + `margin-top: 1px;` +- `scss/widgets/base/textEditor/_mixins.scss:630` · inline + `margin-bottom: 1px;` +- `scss/widgets/base/textEditor/_mixins.scss:749` · inline + `margin-top: 1px;` +- `scss/widgets/base/textEditor/_mixins.scss:750` · inline + `margin-bottom: 3px;` +- `scss/widgets/base/textEditor/_mixins.scss:757` · calc + `padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px));` +- `scss/widgets/base/textEditor/_mixins.scss:761` · inline + `margin-top: 1px;` +- `scss/widgets/base/textEditor/_mixins.scss:767` · inline + `margin-top: 3px;` +- `scss/widgets/base/textEditor/_mixins.scss:775` · inline + `padding: 2px;` +- `scss/widgets/base/textEditor/_mixins.scss:803` · inline + `margin-top: 1px;` +- `scss/widgets/base/textEditor/_mixins.scss:804` · inline + `margin-bottom: 3px;` +- `scss/widgets/base/textEditor/_mixins.scss:811` · calc + `padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px));` +- `scss/widgets/base/textEditor/_mixins.scss:815` · inline + `margin-top: 1px;` +- `scss/widgets/base/textEditor/_mixins.scss:821` · inline + `margin-top: 3px;` +- `scss/widgets/base/textEditor/_mixins.scss:829` · inline + `padding: 2px;` + +### htmlEditor — 33 + +- `scss/widgets/base/_htmlEditor.scss:14` · local-var + `$resize-handle-size: 11px;` +- `scss/widgets/base/_htmlEditor.scss:15` · local-var + `$touch-resize-handle-size: 15px;` +- `scss/widgets/base/_htmlEditor.scss:19` · local-var + `$transparent-border: 1px solid transparent;` +- `scss/widgets/base/_htmlEditor.scss:133` · inline + `min-height: 1px;` +- `scss/widgets/base/_htmlEditor.scss:158` · inline + `padding: 12px 15px;` +- `scss/widgets/base/_htmlEditor.scss:164` · inline + `padding: 3px 6px;` +- `scss/widgets/base/_htmlEditor.scss:165` · geometry + `border-radius: 8px;` +- `scss/widgets/base/_htmlEditor.scss:205` · geometry + `border: 1px solid #000;` +- `scss/widgets/base/_htmlEditor.scss:206` · inline + `padding: 2px 5px;` +- `scss/widgets/base/_htmlEditor.scss:322` · inline + `left: 15px;` +- `scss/widgets/base/_htmlEditor.scss:325` · inline + `right: 15px;` +- `scss/widgets/base/_htmlEditor.scss:335` · inline + `height: 0.1px;` +- `scss/widgets/base/_htmlEditor.scss:342` · inline + `padding-inline-start: 12px;` +- `scss/widgets/base/_htmlEditor.scss:343` · geometry + `border-inline-start: 4px solid;` +- `scss/widgets/base/_htmlEditor.scss:349` · inline + `min-height: 35px;` +- `scss/widgets/base/_htmlEditor.scss:358` · inline + `min-width: 50px;` +- `scss/widgets/base/_htmlEditor.scss:371` · inline + `min-width: 360px;` +- `scss/widgets/base/_htmlEditor.scss:396` · inline + `gap: 6px;` +- `scss/widgets/base/_htmlEditor.scss:403` · inline + `min-width: 240px;` +- `scss/widgets/base/_htmlEditor.scss:416` · geometry + `border-bottom: 3px solid transparent;` +- `scss/widgets/base/_htmlEditor.scss:436` · geometry + `border: 1px dashed lightslategrey;` +- `scss/widgets/base/_htmlEditor.scss:447` · geometry + `border: 1px solid white;` +- `scss/widgets/base/_htmlEditor.scss:503` · geometry + `border: 1px solid white;` +- `scss/widgets/base/_htmlEditor.scss:568` · inline + `padding: 1px 0;` +- `scss/widgets/base/_htmlEditor.scss:569` · geometry + `border-radius: 2px;` +- `scss/widgets/base/_htmlEditor.scss:577` · inline + `margin: 0 2px;` +- `scss/widgets/base/_htmlEditor.scss:592` · inline + `width: 5px;` +- `scss/widgets/base/_htmlEditor.scss:599` · inline + `width: 3px;` +- `scss/widgets/base/_htmlEditor.scss:605` · inline + `height: 5px;` +- `scss/widgets/base/_htmlEditor.scss:612` · inline + `height: 3px;` + +### pivotGrid — 20 + +- `scss/widgets/base/pivotGrid/_index.scss:56` · local-var + `$pivotgrid-drag-header-border: 1px solid;` +- `scss/widgets/base/pivotGrid/_index.scss:57` · local-var + `$pivotgrid-drag-header-first-shadow: 0 0 1px $pivotgrid-drag-header-first-shadow-color;` +- `scss/widgets/base/pivotGrid/_index.scss:58` · local-var + `$pivotgrid-drag-header-second-shadow: 0 1px 3px $pivotgrid-drag-header-second-shadow-color;` +- `scss/widgets/base/pivotGrid/_index.scss:59` · local-var + `$pivotgrid-border-width: 1px;` +- `scss/widgets/base/pivotGrid/_index.scss:61` · local-var + `$pivotgrid-icon-size: 14px;` +- `scss/widgets/base/pivotGrid/_index.scss:62` · local-var + `$pivotgrid-common-field-padding: 2px;` +- `scss/widgets/base/pivotGrid/_index.scss:64` · local-var + `$pivotgrid-expand-icon-offset: -5px;` +- `scss/widgets/base/pivotGrid/_index.scss:72` · inline + `margin-top: -4px;` +- `scss/widgets/base/pivotGrid/_index.scss:73` · inline + `margin-left: -1px;` +- `scss/widgets/base/pivotGrid/_index.scss:77` · inline + `margin-top: -3px;` +- `scss/widgets/base/pivotGrid/_index.scss:82` · inline + `margin-left: -3px;` +- `scss/widgets/base/pivotGrid/_index.scss:127` · geometry + `outline: 2px solid;` +- `scss/widgets/base/pivotGrid/_index.scss:129` · geometry + `outline-offset: -2px;` +- `scss/widgets/base/pivotGrid/_index.scss:169` · geometry + `outline-offset: -2px;` +- `scss/widgets/base/pivotGrid/_index.scss:176` · geometry + `outline-offset: -2px;` +- `scss/widgets/base/pivotGrid/_index.scss:184` · geometry + `outline: 2px solid;` +- `scss/widgets/base/pivotGrid/_index.scss:186` · geometry + `outline-offset: -2px;` +- `scss/widgets/base/pivotGrid/_index.scss:331` · inline + `margin-top: -1px;` +- `scss/widgets/base/pivotGrid/_index.scss:602` · inline + `margin-left: -3px;` + +### cardView — 15 + +- `scss/widgets/base/cardView/content_view/content/card/_index.scss:22` · geometry + `outline: 2px solid;` +- `scss/widgets/base/cardView/content_view/content/card/_index.scss:24` · geometry + `outline-offset: -2px;` +- `scss/widgets/base/cardView/content_view/content/card/header/_index.scss:10` · inline + `padding: 0 12px;` +- `scss/widgets/base/cardView/content_view/content/card/header/_index.scss:42` · inline + `width: 20px;` +- `scss/widgets/base/cardView/content_view/content/card/header/_index.scss:43` · inline + `height: 20px;` +- `scss/widgets/base/cardView/content_view/no_data/_index.scss:10` · geometry + `border-radius: 999px;` +- `scss/widgets/base/cardView/header_panel/_index.scss:10` · local-var + `$sortable-side-offset: 6px;` +- `scss/widgets/base/cardView/header_panel/_index.scss:50` · inline + `gap: 4px;` +- `scss/widgets/base/cardView/header_panel/item/_index.scss:9` · inline + `gap: 4px;` +- `scss/widgets/base/cardView/header_panel/item/_index.scss:55` · geometry + `outline: 2px solid;` +- `scss/widgets/base/cardView/header_panel/item/_index.scss:57` · geometry + `outline-offset: -2px;` +- `scss/widgets/base/cardView/header_panel/item/_index.scss:87` · inline + `0 1px 3px $cardview-header-panel__item--dragged-box-shadow-color,` +- `scss/widgets/base/cardView/header_panel/item/_index.scss:88` · inline + `0 6px 8px $cardview-header-panel__item--dragged-box-shadow-color;` + +### ui — 8 + +- `scss/widgets/base/_ui.scss:13` · inline + `top: -10px;` +- `scss/widgets/base/_ui.scss:14` · inline + `left: -10px;` +- `scss/widgets/base/_ui.scss:41` · inline + `height: 1px;` +- `scss/widgets/base/_ui.scss:42` · inline + `width: 1px;` +- `scss/widgets/base/_ui.scss:226` · inline + `transform: translate3d(0, 150px, 0);` +- `scss/widgets/base/_ui.scss:348` · inline + `transform: rotate3d(1, 0, 0, 10deg) translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1);` +- `scss/widgets/base/_ui.scss:362` · inline + `transform: translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1);` +- `scss/widgets/base/_ui.scss:376` · inline + `transform: translate3d(0, 10px, 0) scale3d(1.1, 1.1, 1.1);` + +### scrollView — 7 + +- `scss/widgets/base/_scrollView.scss:17` · local-var + `$pulldown-height: 50px;` +- `scss/widgets/base/_scrollView.scss:18` · local-var + `$pulldown-padding: 15px;` +- `scss/widgets/base/_scrollView.scss:43` · inline + `margin-left: -20px;` +- `scss/widgets/base/_scrollView.scss:142` · inline + `margin: -15px 20px 0 15px;` +- `scss/widgets/base/_scrollView.scss:223` · inline + `margin-top: -20px;` + +### dataGrid — 5 + +- `scss/widgets/base/dataGrid/_index.scss:146` · geometry + `outline-offset: -2px;` +- `scss/widgets/base/dataGrid/_index.scss:182` · mixin-arg + `@include dx-icon-sizing(14px);` +- `scss/widgets/base/dataGrid/_index.scss:301` · mixin-arg + `@include dx-icon-sizing(21px);` +- `scss/widgets/base/dataGrid/_index.scss:365` · geometry + `outline-offset: -1px;` +- `scss/widgets/base/dataGrid/layout/cell.scss:283` · geometry + `outline-offset: -2px;` + +### fileManager — 5 + +- `scss/widgets/base/fileManager/_index.scss:213` · inline + `right: 3px; // (dx-splitter-border width - dx-splitter-bar width) / 2` +- `scss/widgets/base/fileManager/_index.scss:299` · inline + `top: -5000px;` +- `scss/widgets/base/fileManager/_index.scss:300` · inline + `left: -5000px;` +- `scss/widgets/base/fileManager/_index.scss:305` · inline + `top: -5000px;` +- `scss/widgets/base/fileManager/_index.scss:306` · inline + `left: -5000px;` + +### toolbar — 5 + +- `scss/widgets/base/toolbar/_index.scss:101` · inline + `margin: 0 -5px;` +- `scss/widgets/base/toolbar/_mixins.scss:7` · geometry + `outline: 2px solid $accent-color;` +- `scss/widgets/base/toolbar/_mixins.scss:8` · geometry + `outline-offset: 1px;` +- `scss/widgets/base/toolbar/_mixins.scss:13` · geometry + `outline: 2px solid $accent-color;` +- `scss/widgets/base/toolbar/_mixins.scss:14` · geometry + `outline-offset: 1px;` + +### sortable — 4 + +- `scss/widgets/base/_sortable.scss:61` · geometry + `box-shadow: 0 1px 3px $sortable-clone-shadow-color-first, 0 6px 8px $sortable-clone-shadow-color-second;` + +### calendar — 4 + +- `scss/widgets/base/calendar/_calendar.scss:15` · geometry + `border: 1px solid transparent;` +- `scss/widgets/base/calendar/_calendar.scss:138` · inline + `padding: 0 10px;` +- `scss/widgets/base/calendar/_mixins.scss:156` · geometry + `border: 2px solid;` +- `scss/widgets/base/calendar/_mixins.scss:183` · geometry + `box-shadow: 0 0 0 2px $cell-contoured-border-color;` + +### diagram — 4 + +- `scss/widgets/base/diagram/_index.scss:18` · local-var + `$transparent-border: 1px solid transparent;` +- `scss/widgets/base/diagram/_index.scss:175` · calc + `width: calc(100% - 2px) !important; // stylelint-disable-line declaration-no-important` +- `scss/widgets/base/diagram/_index.scss:324` · calc + `top: calc(50% - 32px);` +- `scss/widgets/base/diagram/_index.scss:325` · calc + `left: calc(50% - 32px);` + +### treeList — 4 + +- `scss/widgets/base/treeList/_index.scss:168` · mixin-arg + `@include dx-icon-sizing(14px);` +- `scss/widgets/base/treeList/_index.scss:256` · mixin-arg + `@include dx-icon-sizing(16px);` +- `scss/widgets/base/treeList/_index.scss:264` · mixin-arg + `@include dx-icon-sizing(21px);` +- `scss/widgets/base/treeList/layout/cell.scss:229` · geometry + `outline-offset: -2px;` + +### pagination — 3 + +- `scss/widgets/base/_pagination.scss:24` · local-var + `$pagination-paddings: 8px;` +- `scss/widgets/base/_pagination.scss:25` · local-var + `$pagination-info-paddings: 9px;` +- `scss/widgets/base/_pagination.scss:81` · inline + `padding: $pagination-paddings - 1px $pagination-page-horizontal-padding;` + +### recurrenceEditor — 3 + +- `scss/widgets/base/_recurrenceEditor.scss:1` · local-var + `$recurrence-interval-number-box-margin-top: 25px;` +- `scss/widgets/base/_recurrenceEditor.scss:2` · local-var + `$recurrence-radio-group-item-padding: 10px;` +- `scss/widgets/base/_recurrenceEditor.scss:3` · local-var + `$recurrence-button-group-item-padding: 8px;` + +### colorBox — 3 + +- `scss/widgets/base/colorBox/_index.scss:5` · local-var + `$colorbox-input-left-padding: 40px;` +- `scss/widgets/base/colorBox/_index.scss:22` · calc + `max-width: calc(100% - 25px);` +- `scss/widgets/base/colorBox/_index.scss:36` · inline + `margin-top: -7.5px;` + +### switch — 3 + +- `scss/widgets/base/switch/_mixins.scss:45` · geometry + `border-radius: 500px;` +- `scss/widgets/base/switch/_mixins.scss:60` · inline + `padding: 4px 0;` +- `scss/widgets/base/switch/_mixins.scss:74` · inline + `padding-bottom: 10px;` + +### timeView — 3 + +- `scss/widgets/base/timeView/_mixins.scss:16` · local-var + `$clock-size: 182px;` +- `scss/widgets/base/timeView/_mixins.scss:30` · inline + `width: 10px;` +- `scss/widgets/base/timeView/_mixins.scss:31` · inline + `margin-left: -5px;` + +### icon_fonts — 2 + +- `scss/widgets/base/_icon_fonts.scss:307` · inline + `font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes` +- `scss/widgets/base/_icon_fonts.scss:675` · inline + `font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes` + +### loadIndicator — 2 + +- `scss/widgets/base/_loadIndicator.scss:3` · local-var + `$loadindicator-width: 32px;` +- `scss/widgets/base/_loadIndicator.scss:4` · local-var + `$loadindicator-height: 32px;` + +### numberBox — 2 + +- `scss/widgets/base/_numberBox.scss:5` · local-var + `$spin-container-width: 22px;` +- `scss/widgets/base/_numberBox.scss:6` · local-var + `$touch-friendly-spin-container-width: 64px;` + +### resizable — 2 + +- `scss/widgets/base/_resizable.scss:2` · local-var + `$one-side-handle-size: 3px + $handle-offset;` +- `scss/widgets/base/_resizable.scss:3` · local-var + `$two-side-handle-size: 6px + $handle-offset;` + +### slider — 2 + +- `scss/widgets/base/_slider.scss:4` · local-var + `$slider-tooltip-content-height: 28px;` +- `scss/widgets/base/_slider.scss:5` · local-var + `$slider-tooltip-arrow-height: 7px;` + +### tagBox — 2 + +- `scss/widgets/base/_tagBox.scss:15` · inline + `width: 0.1px; // T393423, T437866` +- `scss/widgets/base/_tagBox.scss:43` · calc + `max-width: calc(100% - 1px);` + +### chat — 2 + +- `scss/widgets/base/chat/layout/chat-messagebox/_index.scss:4` · geometry + `border-top-width: 1px;` +- `scss/widgets/base/chat/layout/chat/_mixins.scss:8` · geometry + `border: 1px solid;` + +### dropDownMenu — 2 + +- `scss/widgets/base/dropDownMenu/_mixins.scss:12` · geometry + `outline: 2px solid $accent-color;` +- `scss/widgets/base/dropDownMenu/_mixins.scss:13` · geometry + `outline-offset: 1px;` + +### filterBuilder — 2 + +- `scss/widgets/base/filterBuilder/_common.scss:76` · inline + `margin-top: -7px;` +- `scss/widgets/base/filterBuilder/_common.scss:77` · inline + `margin-bottom: -4px;` + +### treeView — 2 + +- `scss/widgets/base/treeView/_common.scss:6` · local-var + `$treeview-searchbox-margin-bottom: 5px;` +- `scss/widgets/base/treeView/_common.scss:85` · inline + `margin-inline-end: 8px;` + +### fileUploader — 1 + +- `scss/widgets/base/_fileUploader.scss:213` · inline + `margin-top: -6px;` + +### validation — 1 + +- `scss/widgets/base/_validation.scss:85` · geometry + `border-bottom: 1px dashed;` + +### dropDownButton — 1 + +- `scss/widgets/base/dropDownButton/_mixins.scss:22` · inline + `margin-inline-start: 4px;` + +### gantt — 1 + +- `scss/widgets/base/gantt/_index.scss:60` · inline + `margin-top: -1px;` + +### list — 1 + +- `scss/widgets/base/list/_index.scss:6` · local-var + `$list-searchbox-margin-bottom: 5px;` + +### lookup — 1 + +- `scss/widgets/base/lookup/_index.scss:10` · calc + `height: calc(100% - 45px);` + +### popover — 1 + +- `scss/widgets/base/popover/_index.scss:2` · mixin-arg + `@include dx-popover-arrow-size(20px);` diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json new file mode 100644 index 000000000000..2f94b365b3bc --- /dev/null +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -0,0 +1,4097 @@ +{ + "$comment": [ + "GENERATED by tools/sizes/inventory.mjs — do not edit by hand. Judgment calls belong in that script, not in this file.", + "Sizes nailed into the shared layer: no `!default` declaration holds them, so opening one means editing scss/widgets/base/** — which every theme compiles. Each place needs either a knob (and proof the other themes did not move) or a marker saying why it stays.", + "category — why there is no knob today: local-var (a $x with no !default), mixin-arg (inside a @mixin body or call), media (a @media condition, where var() is invalid), structural (an off-screen parking coordinate, not a designed size), geometry (box-shadow / outline / border / clip-path numbers), calc (already inside a calc()), inline (a plain declaration).", + "marker — the classification comment already on the line, from tools/review/size-markers.json." + ], + "summary": { + "occurrences": 404, + "byCategory": { + "inline": 187, + "local-var": 99, + "geometry": 95, + "calc": 11, + "mixin-arg": 6, + "structural": 4, + "media": 2 + }, + "byWidget": { + "gridBase": 75, + "colorView": 67, + "scheduler": 55, + "textEditor": 44, + "htmlEditor": 35, + "pivotGrid": 21, + "cardView": 15, + "ui": 8, + "scrollView": 7, + "fileManager": 6, + "dataGrid": 5, + "toolbar": 5, + "sortable": 4, + "calendar": 4, + "diagram": 4, + "treeList": 4, + "pagination": 3, + "recurrenceEditor": 3, + "colorBox": 3, + "switch": 3, + "timeView": 3, + "icon_fonts": 2, + "loadIndicator": 2, + "multiView": 2, + "numberBox": 2, + "resizable": 2, + "slider": 2, + "tagBox": 2, + "chat": 2, + "dropDownMenu": 2, + "filterBuilder": 2, + "treeView": 2, + "fileUploader": 1, + "validation": 1, + "dropDownButton": 1, + "gantt": 1, + "list": 1, + "lookup": 1, + "popover": 1, + "stepper": 1 + }, + "unmarked": 396, + "unmarkedByWidget": { + "gridBase": 75, + "colorView": 67, + "scheduler": 54, + "textEditor": 44, + "htmlEditor": 33, + "pivotGrid": 20, + "cardView": 15, + "ui": 8, + "scrollView": 7, + "dataGrid": 5, + "fileManager": 5, + "toolbar": 5, + "sortable": 4, + "calendar": 4, + "diagram": 4, + "treeList": 4, + "pagination": 3, + "recurrenceEditor": 3, + "colorBox": 3, + "switch": 3, + "timeView": 3, + "icon_fonts": 2, + "loadIndicator": 2, + "numberBox": 2, + "resizable": 2, + "slider": 2, + "tagBox": 2, + "chat": 2, + "dropDownMenu": 2, + "filterBuilder": 2, + "treeView": 2, + "fileUploader": 1, + "validation": 1, + "dropDownButton": 1, + "gantt": 1, + "list": 1, + "lookup": 1, + "popover": 1 + } + }, + "places": [ + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 213, + "widget": "fileUploader", + "literals": [ + "-6px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: -6px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 14, + "widget": "htmlEditor", + "literals": [ + "11px" + ], + "occurrences": 1, + "marker": null, + "text": "$resize-handle-size: 11px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 15, + "widget": "htmlEditor", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$touch-resize-handle-size: 15px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 19, + "widget": "htmlEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$transparent-border: 1px solid transparent;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 133, + "widget": "htmlEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "min-height: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 140, + "widget": "htmlEditor", + "literals": [ + "-100000px" + ], + "occurrences": 1, + "marker": "dx-structural", + "text": "left: -100000px; // dx-structural: parks Quill's clipboard element off-screen", + "category": "structural" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 141, + "widget": "htmlEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": "dx-structural", + "text": "height: 1px; // dx-structural: collapses the off-screen clipboard element, not a designed height", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 158, + "widget": "htmlEditor", + "literals": [ + "12px", + "15px" + ], + "occurrences": 2, + "marker": null, + "text": "padding: 12px 15px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 164, + "widget": "htmlEditor", + "literals": [ + "3px", + "6px" + ], + "occurrences": 2, + "marker": null, + "text": "padding: 3px 6px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 165, + "widget": "htmlEditor", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "border-radius: 8px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 205, + "widget": "htmlEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border: 1px solid #000;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 206, + "widget": "htmlEditor", + "literals": [ + "2px", + "5px" + ], + "occurrences": 2, + "marker": null, + "text": "padding: 2px 5px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 322, + "widget": "htmlEditor", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "left: 15px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 325, + "widget": "htmlEditor", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "right: 15px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 335, + "widget": "htmlEditor", + "literals": [ + "0.1px" + ], + "occurrences": 1, + "marker": null, + "text": "height: 0.1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 342, + "widget": "htmlEditor", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "padding-inline-start: 12px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 343, + "widget": "htmlEditor", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "border-inline-start: 4px solid;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 349, + "widget": "htmlEditor", + "literals": [ + "35px" + ], + "occurrences": 1, + "marker": null, + "text": "min-height: 35px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 358, + "widget": "htmlEditor", + "literals": [ + "50px" + ], + "occurrences": 1, + "marker": null, + "text": "min-width: 50px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 371, + "widget": "htmlEditor", + "literals": [ + "360px" + ], + "occurrences": 1, + "marker": null, + "text": "min-width: 360px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 396, + "widget": "htmlEditor", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "gap: 6px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 403, + "widget": "htmlEditor", + "literals": [ + "240px" + ], + "occurrences": 1, + "marker": null, + "text": "min-width: 240px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 416, + "widget": "htmlEditor", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "border-bottom: 3px solid transparent;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 436, + "widget": "htmlEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border: 1px dashed lightslategrey;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 447, + "widget": "htmlEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border: 1px solid white;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 503, + "widget": "htmlEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border: 1px solid white;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 568, + "widget": "htmlEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 1px 0;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 569, + "widget": "htmlEditor", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "border-radius: 2px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 577, + "widget": "htmlEditor", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "margin: 0 2px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 592, + "widget": "htmlEditor", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "width: 5px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 599, + "widget": "htmlEditor", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "width: 3px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 605, + "widget": "htmlEditor", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "height: 5px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 612, + "widget": "htmlEditor", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "height: 3px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_icon_fonts.scss", + "line": 307, + "widget": "icon_fonts", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes", + "category": "inline" + }, + { + "file": "scss/widgets/base/_icon_fonts.scss", + "line": 675, + "widget": "icon_fonts", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes", + "category": "inline" + }, + { + "file": "scss/widgets/base/_loadIndicator.scss", + "line": 3, + "widget": "loadIndicator", + "literals": [ + "32px" + ], + "occurrences": 1, + "marker": null, + "text": "$loadindicator-width: 32px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_loadIndicator.scss", + "line": 4, + "widget": "loadIndicator", + "literals": [ + "32px" + ], + "occurrences": 1, + "marker": null, + "text": "$loadindicator-height: 32px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_multiView.scss", + "line": 39, + "widget": "multiView", + "literals": [ + "-9999px" + ], + "occurrences": 1, + "marker": "dx-structural", + "text": "top: -9999px; // dx-structural: parks the hidden slide off-screen", + "category": "structural" + }, + { + "file": "scss/widgets/base/_multiView.scss", + "line": 40, + "widget": "multiView", + "literals": [ + "-9999px" + ], + "occurrences": 1, + "marker": "dx-structural", + "text": "left: -9999px; // dx-structural: parks the hidden slide off-screen", + "category": "structural" + }, + { + "file": "scss/widgets/base/_numberBox.scss", + "line": 5, + "widget": "numberBox", + "literals": [ + "22px" + ], + "occurrences": 1, + "marker": null, + "text": "$spin-container-width: 22px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_numberBox.scss", + "line": 6, + "widget": "numberBox", + "literals": [ + "64px" + ], + "occurrences": 1, + "marker": null, + "text": "$touch-friendly-spin-container-width: 64px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 24, + "widget": "pagination", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-paddings: 8px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 25, + "widget": "pagination", + "literals": [ + "9px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-info-paddings: 9px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 81, + "widget": "pagination", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: $pagination-paddings - 1px $pagination-page-horizontal-padding;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_recurrenceEditor.scss", + "line": 1, + "widget": "recurrenceEditor", + "literals": [ + "25px" + ], + "occurrences": 1, + "marker": null, + "text": "$recurrence-interval-number-box-margin-top: 25px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_recurrenceEditor.scss", + "line": 2, + "widget": "recurrenceEditor", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$recurrence-radio-group-item-padding: 10px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_recurrenceEditor.scss", + "line": 3, + "widget": "recurrenceEditor", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$recurrence-button-group-item-padding: 8px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_resizable.scss", + "line": 2, + "widget": "resizable", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$one-side-handle-size: 3px + $handle-offset;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_resizable.scss", + "line": 3, + "widget": "resizable", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "$two-side-handle-size: 6px + $handle-offset;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 17, + "widget": "scrollView", + "literals": [ + "50px" + ], + "occurrences": 1, + "marker": null, + "text": "$pulldown-height: 50px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 18, + "widget": "scrollView", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$pulldown-padding: 15px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 43, + "widget": "scrollView", + "literals": [ + "-20px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-left: -20px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 142, + "widget": "scrollView", + "literals": [ + "-15px", + "20px", + "15px" + ], + "occurrences": 3, + "marker": null, + "text": "margin: -15px 20px 0 15px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 223, + "widget": "scrollView", + "literals": [ + "-20px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: -20px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_slider.scss", + "line": 4, + "widget": "slider", + "literals": [ + "28px" + ], + "occurrences": 1, + "marker": null, + "text": "$slider-tooltip-content-height: 28px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_slider.scss", + "line": 5, + "widget": "slider", + "literals": [ + "7px" + ], + "occurrences": 1, + "marker": null, + "text": "$slider-tooltip-arrow-height: 7px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/_sortable.scss", + "line": 61, + "widget": "sortable", + "literals": [ + "1px", + "3px", + "6px", + "8px" + ], + "occurrences": 4, + "marker": null, + "text": "box-shadow: 0 1px 3px $sortable-clone-shadow-color-first, 0 6px 8px $sortable-clone-shadow-color-second;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/_tagBox.scss", + "line": 15, + "widget": "tagBox", + "literals": [ + "0.1px" + ], + "occurrences": 1, + "marker": null, + "text": "width: 0.1px; // T393423, T437866", + "category": "inline" + }, + { + "file": "scss/widgets/base/_tagBox.scss", + "line": 43, + "widget": "tagBox", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "max-width: calc(100% - 1px);", + "category": "calc" + }, + { + "file": "scss/widgets/base/_ui.scss", + "line": 13, + "widget": "ui", + "literals": [ + "-10px" + ], + "occurrences": 1, + "marker": null, + "text": "top: -10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_ui.scss", + "line": 14, + "widget": "ui", + "literals": [ + "-10px" + ], + "occurrences": 1, + "marker": null, + "text": "left: -10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_ui.scss", + "line": 41, + "widget": "ui", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "height: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_ui.scss", + "line": 42, + "widget": "ui", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "width: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/_ui.scss", + "line": 226, + "widget": "ui", + "literals": [ + "150px" + ], + "occurrences": 1, + "marker": null, + "text": "transform: translate3d(0, 150px, 0);", + "category": "inline" + }, + { + "file": "scss/widgets/base/_ui.scss", + "line": 348, + "widget": "ui", + "literals": [ + "-10px" + ], + "occurrences": 1, + "marker": null, + "text": "transform: rotate3d(1, 0, 0, 10deg) translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1);", + "category": "inline" + }, + { + "file": "scss/widgets/base/_ui.scss", + "line": 362, + "widget": "ui", + "literals": [ + "-10px" + ], + "occurrences": 1, + "marker": null, + "text": "transform: translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1);", + "category": "inline" + }, + { + "file": "scss/widgets/base/_ui.scss", + "line": 376, + "widget": "ui", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "transform: translate3d(0, 10px, 0) scale3d(1.1, 1.1, 1.1);", + "category": "inline" + }, + { + "file": "scss/widgets/base/_validation.scss", + "line": 85, + "widget": "validation", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border-bottom: 1px dashed;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/calendar/_calendar.scss", + "line": 15, + "widget": "calendar", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border: 1px solid transparent;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/calendar/_calendar.scss", + "line": 138, + "widget": "calendar", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 0 10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/calendar/_mixins.scss", + "line": 156, + "widget": "calendar", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "border: 2px solid;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/calendar/_mixins.scss", + "line": 183, + "widget": "calendar", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "box-shadow: 0 0 0 2px $cell-contoured-border-color;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/cardView/content_view/content/card/_index.scss", + "line": 22, + "widget": "cardView", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline: 2px solid;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/cardView/content_view/content/card/_index.scss", + "line": 24, + "widget": "cardView", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline-offset: -2px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/cardView/content_view/content/card/header/_index.scss", + "line": 10, + "widget": "cardView", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 0 12px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/cardView/content_view/content/card/header/_index.scss", + "line": 42, + "widget": "cardView", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "width: 20px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/cardView/content_view/content/card/header/_index.scss", + "line": 43, + "widget": "cardView", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "height: 20px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/cardView/content_view/no_data/_index.scss", + "line": 10, + "widget": "cardView", + "literals": [ + "999px" + ], + "occurrences": 1, + "marker": null, + "text": "border-radius: 999px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/cardView/header_panel/_index.scss", + "line": 10, + "widget": "cardView", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "$sortable-side-offset: 6px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/cardView/header_panel/_index.scss", + "line": 50, + "widget": "cardView", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "gap: 4px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/cardView/header_panel/item/_index.scss", + "line": 9, + "widget": "cardView", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "gap: 4px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/cardView/header_panel/item/_index.scss", + "line": 55, + "widget": "cardView", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline: 2px solid;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/cardView/header_panel/item/_index.scss", + "line": 57, + "widget": "cardView", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline-offset: -2px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/cardView/header_panel/item/_index.scss", + "line": 87, + "widget": "cardView", + "literals": [ + "1px", + "3px" + ], + "occurrences": 2, + "marker": null, + "text": "0 1px 3px $cardview-header-panel__item--dragged-box-shadow-color,", + "category": "inline" + }, + { + "file": "scss/widgets/base/cardView/header_panel/item/_index.scss", + "line": 88, + "widget": "cardView", + "literals": [ + "6px", + "8px" + ], + "occurrences": 2, + "marker": null, + "text": "0 6px 8px $cardview-header-panel__item--dragged-box-shadow-color;", + "category": "inline" + }, + { + "file": "scss/widgets/base/chat/layout/chat-messagebox/_index.scss", + "line": 4, + "widget": "chat", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border-top-width: 1px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/chat/layout/chat/_mixins.scss", + "line": 8, + "widget": "chat", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border: 1px solid;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/colorBox/_index.scss", + "line": 5, + "widget": "colorBox", + "literals": [ + "40px" + ], + "occurrences": 1, + "marker": null, + "text": "$colorbox-input-left-padding: 40px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/colorBox/_index.scss", + "line": 22, + "widget": "colorBox", + "literals": [ + "25px" + ], + "occurrences": 1, + "marker": null, + "text": "max-width: calc(100% - 25px);", + "category": "calc" + }, + { + "file": "scss/widgets/base/colorBox/_index.scss", + "line": 36, + "widget": "colorBox", + "literals": [ + "-7.5px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: -7.5px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 3, + "widget": "colorView", + "literals": [ + "450px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-container-width: 450px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 4, + "widget": "colorView", + "literals": [ + "288px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-palette-width: 288px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 5, + "widget": "colorView", + "literals": [ + "299px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-palette-height: 299px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 6, + "widget": "colorView", + "literals": [ + "292px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-alpha-width: 292px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 7, + "widget": "colorView", + "literals": [ + "18px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-hue-scale-width: 18px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 10, + "widget": "colorView", + "literals": [ + "28px" + ], + "occurrences": 1, + "marker": null, + "text": "$colorview-palette-handle-size: 28px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 13, + "widget": "colorView", + "literals": [ + "36px" + ], + "occurrences": 1, + "marker": null, + "text": "$colorview-handle-first-side-size: 36px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 14, + "widget": "colorView", + "literals": [ + "17px" + ], + "occurrences": 1, + "marker": null, + "text": "$colorview-handle-second-side-size: 17px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 27, + "widget": "colorView", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "margin: 10px 0 0 0;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 31, + "widget": "colorView", + "literals": [ + "43px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-left: 43px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 32, + "widget": "colorView", + "literals": [ + "115px" + ], + "occurrences": 1, + "marker": null, + "text": "width: 115px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 36, + "widget": "colorView", + "literals": [ + "69px" + ], + "occurrences": 1, + "marker": null, + "text": "width: 69px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 38, + "widget": "colorView", + "literals": [ + "1px", + "10px" + ], + "occurrences": 3, + "marker": null, + "text": "margin: 1px 1px 10px 0;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 47, + "widget": "colorView", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-right: 10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 60, + "widget": "colorView", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 1px 0;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 67, + "widget": "colorView", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: 10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 96, + "widget": "colorView", + "literals": [ + "-7px" + ], + "occurrences": 1, + "marker": null, + "text": "left: -7px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 102, + "widget": "colorView", + "literals": [ + "-6px" + ], + "occurrences": 1, + "marker": null, + "text": "top: -6px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 120, + "widget": "colorView", + "literals": [ + "16px" + ], + "occurrences": 2, + "marker": null, + "text": "background-size: 16px 16px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 121, + "widget": "colorView", + "literals": [ + "8px" + ], + "occurrences": 2, + "marker": null, + "text": "background-position: 0 0, 8px 8px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 125, + "widget": "colorView", + "literals": [ + "6px", + "8px", + "14px" + ], + "occurrences": 3, + "marker": null, + "text": "background-position: 0 6px, 8px 14px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 162, + "widget": "colorView", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "height: 20px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 167, + "widget": "colorView", + "literals": [ + "19px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-left: 19px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 177, + "widget": "colorView", + "literals": [ + "90px" + ], + "occurrences": 1, + "marker": null, + "text": "width: 90px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 178, + "widget": "colorView", + "literals": [ + "27px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-left: 27px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 182, + "widget": "colorView", + "literals": [ + "86px" + ], + "occurrences": 1, + "marker": null, + "text": "width: 86px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 183, + "widget": "colorView", + "literals": [ + "40px" + ], + "occurrences": 1, + "marker": null, + "text": "height: 40px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 187, + "widget": "colorView", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "margin: 6px 0;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 192, + "widget": "colorView", + "literals": [ + "90px" + ], + "occurrences": 1, + "marker": null, + "text": "width: 90px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 204, + "widget": "colorView", + "literals": [ + "19px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-right: 19px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 211, + "widget": "colorView", + "literals": [ + "41px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-right: 41px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 222, + "widget": "colorView", + "literals": [ + "25px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-right: 25px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_mixins.scss", + "line": 3, + "widget": "colorView", + "literals": [ + "5px", + "6px", + "7px", + "12px", + "13px" + ], + "occurrences": 5, + "marker": null, + "text": "background: radial-gradient(transparent 5px, $handle-border-color 6px, $handle-color 7px, $handle-color 12px, $handle-border-color 13px);", + "category": "inline" + }, + { + "file": "scss/widgets/base/colorView/_mixins.scss", + "line": 4, + "widget": "colorView", + "literals": [ + "1px" + ], + "occurrences": 2, + "marker": null, + "text": "box-shadow: 0 1px 1px 0 $handle-border-color;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/colorView/_mixins.scss", + "line": 8, + "widget": "colorView", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border: 1px solid;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/colorView/_mixins.scss", + "line": 10, + "widget": "colorView", + "literals": [ + "-5px", + "3px", + "5px", + "-6px", + "1px", + "4px", + "6px" + ], + "occurrences": 10, + "marker": null, + "text": "box-shadow: inset -5px 0 0 3px $handle-color, inset 5px 0 0 3px $handle-color, inset -6px 0 1px 4px $handle-border-color, inset 6px 0 1px 4px $handle-border-color;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/colorView/_mixins.scss", + "line": 14, + "widget": "colorView", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border: 1px solid;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/colorView/_mixins.scss", + "line": 16, + "widget": "colorView", + "literals": [ + "-5px", + "3px", + "5px", + "-6px", + "1px", + "4px", + "6px" + ], + "occurrences": 10, + "marker": null, + "text": "box-shadow: inset 0 -5px 0 3px $handle-color, inset 0 5px 0 3px $handle-color, inset 0 -6px 1px 4px $handle-border-color, inset 0 6px 1px 4px $handle-border-color;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 146, + "widget": "dataGrid", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline-offset: -2px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 182, + "widget": "dataGrid", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "@include dx-icon-sizing(14px);", + "category": "mixin-arg" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 301, + "widget": "dataGrid", + "literals": [ + "21px" + ], + "occurrences": 1, + "marker": null, + "text": "@include dx-icon-sizing(21px);", + "category": "mixin-arg" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 365, + "widget": "dataGrid", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "outline-offset: -1px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/dataGrid/layout/cell.scss", + "line": 283, + "widget": "dataGrid", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline-offset: -2px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 18, + "widget": "diagram", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$transparent-border: 1px solid transparent;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 175, + "widget": "diagram", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "width: calc(100% - 2px) !important; // stylelint-disable-line declaration-no-important", + "category": "calc" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 324, + "widget": "diagram", + "literals": [ + "32px" + ], + "occurrences": 1, + "marker": null, + "text": "top: calc(50% - 32px);", + "category": "calc" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 325, + "widget": "diagram", + "literals": [ + "32px" + ], + "occurrences": 1, + "marker": null, + "text": "left: calc(50% - 32px);", + "category": "calc" + }, + { + "file": "scss/widgets/base/dropDownButton/_mixins.scss", + "line": 22, + "widget": "dropDownButton", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-inline-start: 4px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/dropDownMenu/_mixins.scss", + "line": 12, + "widget": "dropDownMenu", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline: 2px solid $accent-color;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/dropDownMenu/_mixins.scss", + "line": 13, + "widget": "dropDownMenu", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "outline-offset: 1px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 84, + "widget": "fileManager", + "literals": [ + "431px" + ], + "occurrences": 1, + "marker": "dx-literal-required", + "text": "@media (min-width: 431px) { // dx-literal-required: a media condition, var() is invalid here", + "category": "media" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 213, + "widget": "fileManager", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "right: 3px; // (dx-splitter-border width - dx-splitter-bar width) / 2", + "category": "inline" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 299, + "widget": "fileManager", + "literals": [ + "-5000px" + ], + "occurrences": 1, + "marker": null, + "text": "top: -5000px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 300, + "widget": "fileManager", + "literals": [ + "-5000px" + ], + "occurrences": 1, + "marker": null, + "text": "left: -5000px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 305, + "widget": "fileManager", + "literals": [ + "-5000px" + ], + "occurrences": 1, + "marker": null, + "text": "top: -5000px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 306, + "widget": "fileManager", + "literals": [ + "-5000px" + ], + "occurrences": 1, + "marker": null, + "text": "left: -5000px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/filterBuilder/_common.scss", + "line": 76, + "widget": "filterBuilder", + "literals": [ + "-7px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: -7px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/filterBuilder/_common.scss", + "line": 77, + "widget": "filterBuilder", + "literals": [ + "-4px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-bottom: -4px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gantt/_index.scss", + "line": 60, + "widget": "gantt", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: -1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 25, + "widget": "gridBase", + "literals": [ + "1px" + ], + "occurrences": 4, + "marker": null, + "text": "clip: rect(1px, 1px, 1px, 1px);", + "category": "geometry" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 37, + "widget": "gridBase", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-right: 5px !important; // stylelint-disable-line declaration-no-important", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 55, + "widget": "gridBase", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: -1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 86, + "widget": "gridBase", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "padding-top: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 91, + "widget": "gridBase", + "literals": [ + "7px", + "30px", + "5px" + ], + "occurrences": 4, + "marker": null, + "text": "padding: 7px 30px 7px 5px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 159, + "widget": "gridBase", + "literals": [ + "16px" + ], + "occurrences": 1, + "marker": null, + "text": "font-size: 16px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 162, + "widget": "gridBase", + "literals": [ + "16px" + ], + "occurrences": 1, + "marker": null, + "text": "font-size: 16px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 167, + "widget": "gridBase", + "literals": [ + "20px" + ], + "occurrences": 3, + "marker": null, + "text": "padding: 0 20px 20px 20px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 171, + "widget": "gridBase", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-bottom: 10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 196, + "widget": "gridBase", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "padding-inline-start: 4px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 224, + "widget": "gridBase", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "width: 3px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 307, + "widget": "gridBase", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "max-width: 10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 424, + "widget": "gridBase", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "border: 2px solid transparent;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 426, + "widget": "gridBase", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "left: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 474, + "widget": "gridBase", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "min-height: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 550, + "widget": "gridBase", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "top: -1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 551, + "widget": "gridBase", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "bottom: -1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 552, + "widget": "gridBase", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "left: -1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 553, + "widget": "gridBase", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "right: -1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 560, + "widget": "gridBase", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border-top: 1px solid transparent;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 645, + "widget": "gridBase", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 5px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 646, + "widget": "gridBase", + "literals": [ + "30px" + ], + "occurrences": 1, + "marker": null, + "text": "padding-right: 30px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 650, + "widget": "gridBase", + "literals": [ + "8px", + "5px", + "7px" + ], + "occurrences": 4, + "marker": null, + "text": "padding: 8px 5px 7px 5px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 654, + "widget": "gridBase", + "literals": [ + "9px", + "6px", + "8px" + ], + "occurrences": 4, + "marker": null, + "text": "padding: 9px 6px 8px 6px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 658, + "widget": "gridBase", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "padding-left: 6px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 680, + "widget": "gridBase", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-left: 10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 695, + "widget": "gridBase", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-left: 15px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 719, + "widget": "gridBase", + "literals": [ + "100px" + ], + "occurrences": 1, + "marker": null, + "text": "height: 100px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 820, + "widget": "gridBase", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 894, + "widget": "gridBase", + "literals": [ + "7px", + "5px", + "30px" + ], + "occurrences": 4, + "marker": null, + "text": "padding: 7px 5px 7px 30px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 949, + "widget": "gridBase", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-right: -2px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 957, + "widget": "gridBase", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 5px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 958, + "widget": "gridBase", + "literals": [ + "30px" + ], + "occurrences": 1, + "marker": null, + "text": "padding-left: 30px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 962, + "widget": "gridBase", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "padding-right: 6px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 976, + "widget": "gridBase", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-right: 10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 983, + "widget": "gridBase", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-right: 15px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 996, + "widget": "gridBase", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 1009, + "widget": "gridBase", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "padding-right: 10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_index.scss", + "line": 1014, + "widget": "gridBase", + "literals": [ + "7px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-right: 7px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 1, + "widget": "gridBase", + "literals": [ + "7px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-cell-padding: 7px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 2, + "widget": "gridBase", + "literals": [ + "32px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-texteditor-input-padding: 32px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 3, + "widget": "gridBase", + "literals": [ + "7px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-total-footer-paddings: 7px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 4, + "widget": "gridBase", + "literals": [ + "70px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-command-select-column-width: 70px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 5, + "widget": "gridBase", + "literals": [ + "100px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-command-edit-column-width: 100px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 6, + "widget": "gridBase", + "literals": [ + "80px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-command-edit-column-with-icons-width: 80px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 7, + "widget": "gridBase", + "literals": [ + "30px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-command-expand-column-width: 30px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 8, + "widget": "gridBase", + "literals": [ + "36px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-command-adaptive-column-width: 36px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 9, + "widget": "gridBase", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-column-header-indicator-width: 14px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 10, + "widget": "gridBase", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-text-content-margin: 3px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 11, + "widget": "gridBase", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-sort-index-width: 12px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 12, + "widget": "gridBase", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-sort-index-offset: 3px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 13, + "widget": "gridBase", + "literals": [ + "50px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-ai-assistant-confirm-dialog-button-width: 50px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/layout/aiChat/_mixins.scss", + "line": 47, + "widget": "gridBase", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border-width: 1px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", + "line": 1, + "widget": "gridBase", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$ai-chat-toolbar-item-spacing: 4px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", + "line": 2, + "widget": "gridBase", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$ai-chat-message-gap: 8px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", + "line": 3, + "widget": "gridBase", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$ai-chat-message-content-gap: 4px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", + "line": 4, + "widget": "gridBase", + "literals": [ + "280px" + ], + "occurrences": 1, + "marker": null, + "text": "$ai-chat-message-width: 280px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", + "line": 5, + "widget": "gridBase", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$ai-chat-message-regenerate-button-border-radius: 4px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/list/_index.scss", + "line": 6, + "widget": "list", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$list-searchbox-margin-bottom: 5px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/lookup/_index.scss", + "line": 10, + "widget": "lookup", + "literals": [ + "45px" + ], + "occurrences": 1, + "marker": null, + "text": "height: calc(100% - 45px);", + "category": "calc" + }, + { + "file": "scss/widgets/base/pivotGrid/_common.scss", + "line": 238, + "widget": "pivotGrid", + "literals": [ + "-9999px" + ], + "occurrences": 1, + "marker": "dx-structural", + "text": "top: -9999px; // dx-structural: parks the scrollbar probe off-screen", + "category": "structural" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 56, + "widget": "pivotGrid", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-drag-header-border: 1px solid;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 57, + "widget": "pivotGrid", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-drag-header-first-shadow: 0 0 1px $pivotgrid-drag-header-first-shadow-color;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 58, + "widget": "pivotGrid", + "literals": [ + "1px", + "3px" + ], + "occurrences": 2, + "marker": null, + "text": "$pivotgrid-drag-header-second-shadow: 0 1px 3px $pivotgrid-drag-header-second-shadow-color;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 59, + "widget": "pivotGrid", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-border-width: 1px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 61, + "widget": "pivotGrid", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-icon-size: 14px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 62, + "widget": "pivotGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-common-field-padding: 2px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 64, + "widget": "pivotGrid", + "literals": [ + "-5px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-expand-icon-offset: -5px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 72, + "widget": "pivotGrid", + "literals": [ + "-4px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: -4px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 73, + "widget": "pivotGrid", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-left: -1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 77, + "widget": "pivotGrid", + "literals": [ + "-3px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: -3px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 82, + "widget": "pivotGrid", + "literals": [ + "-3px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-left: -3px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 127, + "widget": "pivotGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline: 2px solid;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 129, + "widget": "pivotGrid", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline-offset: -2px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 169, + "widget": "pivotGrid", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline-offset: -2px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 176, + "widget": "pivotGrid", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline-offset: -2px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 184, + "widget": "pivotGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline: 2px solid;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 186, + "widget": "pivotGrid", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline-offset: -2px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 331, + "widget": "pivotGrid", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: -1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 602, + "widget": "pivotGrid", + "literals": [ + "-3px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-left: -3px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/popover/_index.scss", + "line": 2, + "widget": "popover", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "@include dx-popover-arrow-size(20px);", + "category": "mixin-arg" + }, + { + "file": "scss/widgets/base/scheduler/_common.scss", + "line": 4, + "widget": "scheduler", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-collector-margin: 3px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_common.scss", + "line": 5, + "widget": "scheduler", + "literals": [ + "22px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-collector-height: 22px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_common.scss", + "line": 75, + "widget": "scheduler", + "literals": [ + "450px" + ], + "occurrences": 1, + "marker": "dx-literal-required", + "text": "@media (max-width: 450px) { // dx-literal-required: a media condition, var() is invalid here", + "category": "media" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 82, + "widget": "scheduler", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-min-size: 4px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 83, + "widget": "scheduler", + "literals": [ + "5px", + "7px" + ], + "occurrences": 2, + "marker": null, + "text": "$scheduler-appointment-content-padding: 5px 7px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 84, + "widget": "scheduler", + "literals": [ + "40px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-reduced-content-padding: 40px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 86, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-hovered-appointment-top-shadow-size: 5px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 87, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-focused-cell-shadow: inset 0 0 0 1px $scheduler-appointment-base-color;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 89, + "widget": "scheduler", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-vertical-appointment-resizable-hovering-shadow: inset 0 $scheduler-hovered-appointment-top-shadow-size 0 0 $scheduler-appointment-start-color, inset 0 -2px 0 0 $scheduler-appointment-start-color;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 91, + "widget": "scheduler", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-vertical-appointment-shadow: inset 0 2px 0 0 $scheduler-appointment-start-color;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 92, + "widget": "scheduler", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-vertical-appointment-resizing-shadow: inset 0 -2px 0 0 $scheduler-appointment-start-color, $scheduler-vertical-appointment-shadow;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 96, + "widget": "scheduler", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-horizontal-appointment-resizable-hovering-shadow: inset $scheduler-hovered-appointment-top-shadow-size 0 0 0 $scheduler-appointment-start-color, inset -2px 0 0 0 $scheduler-appointment-start-color;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 97, + "widget": "scheduler", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-horizontal-appointment-resizable-hovering-shadow-rtl: inset (-$scheduler-hovered-appointment-top-shadow-size) 0 0 0 $scheduler-appointment-start-color, inset 2px 0 0 0 $scheduler-appointment-start-color;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 100, + "widget": "scheduler", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-horizontal-appointment-shadow: inset 2px 0 0 0 $scheduler-appointment-start-color;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 101, + "widget": "scheduler", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-horizontal-appointment-shadow-rtl: inset -2px 0 0 0 $scheduler-appointment-start-color;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 102, + "widget": "scheduler", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-horizontal-appointment-resizing-shadow: inset -2px 0 0 0 $scheduler-appointment-start-color, $scheduler-horizontal-appointment-shadow;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 104, + "widget": "scheduler", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-grouped-appointment-month-text-size: 12px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 106, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-base-border: 1px solid;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 107, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-transparent-top-border: 1px solid transparent;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 108, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-accent-border: 1px solid;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 110, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-reduced-icon-offset: 5px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 111, + "widget": "scheduler", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-recurrence-icon-offset: 20px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 113, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-agenda-appointment-margin: 5px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 114, + "widget": "scheduler", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-agenda-last-in-date-appointment-margin: 20px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 120, + "widget": "scheduler", + "literals": [ + "30px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-time-indicator-font-size: 30px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 121, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-time-indicator-size: 1px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 122, + "widget": "scheduler", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-time-indicator-top: 14px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 123, + "widget": "scheduler", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-time-indicator-left: 12px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 126, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-time-indicator-shadow: 0 1px 0 0 $scheduler-time-indicator-shadow-color;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 127, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-time-indicator-text-shadow: $scheduler-time-indicator-shadow-color 1px 0 0;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 452, + "widget": "scheduler", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "bottom: -1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/scheduler/appointment/regular/_index.scss", + "line": 147, + "widget": "scheduler", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "left: -1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/scheduler/layout/_header.scss", + "line": 9, + "widget": "scheduler", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-bottom: -1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 44, + "widget": "scheduler", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-timepanel-cell-offset: 20px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 45, + "widget": "scheduler", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-workspace-info-font-size: 20px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 46, + "widget": "scheduler", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-small-font-size: 14px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 48, + "widget": "scheduler", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-current-time-cell-border-size: 2px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 50, + "widget": "scheduler", + "literals": [ + "50px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-workspace-date-table-cell-height: 50px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 54, + "widget": "scheduler", + "literals": [ + "10px" + ], + "occurrences": 2, + "marker": null, + "text": "$scheduler-header-panel-table-cell-height: if(meta.type-of($scheduler-workspace-date-table-cell-height) == number, $scheduler-workspace-date-table-cell-height - 10px, calc(#{$scheduler-workspace-date-table-cell-height} - 10px));", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 55, + "widget": "scheduler", + "literals": [ + "30px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-group-header-table-cell-height: 30px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 57, + "widget": "scheduler", + "literals": [ + "80px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-group-header-table-cell-width: 80px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 59, + "widget": "scheduler", + "literals": [ + "16px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-month-date-text-size: 16px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 61, + "widget": "scheduler", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-month-date-text-padding: 6px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 121, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "top: if(meta.type-of($scheduler-header-panel-table-cell-height) == number and meta.type-of($scheduler-current-time-cell-border-size) == number, $scheduler-header-panel-table-cell-height - $scheduler-current-time-cell-border-size - 1, calc(#{$scheduler-header-panel-table-cell-height} - #{$scheduler-current-time-cell-border-size} - 1px));", + "category": "calc" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 405, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 0 5px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 697, + "widget": "scheduler", + "literals": [ + "-13px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: -13px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 707, + "widget": "scheduler", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "bottom: -1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 844, + "widget": "scheduler", + "literals": [ + "50px" + ], + "occurrences": 1, + "marker": null, + "text": "height: 50px !important; // stylelint-disable-line declaration-no-important", + "category": "inline" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 855, + "widget": "scheduler", + "literals": [ + "50px" + ], + "occurrences": 1, + "marker": null, + "text": "height: 50px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 870, + "widget": "scheduler", + "literals": [ + "-1px" + ], + "occurrences": 1, + "marker": null, + "text": "box-shadow: inset 0 -1px 0 $scheduler-base-border-color;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/scheduler/views/day/_index.scss", + "line": 45, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/scheduler/views/month/_index.scss", + "line": 73, + "widget": "scheduler", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "box-shadow: 0 -2px 0 $scheduler-base-border-color;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/scheduler/views/timelines/_index.scss", + "line": 188, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border-bottom: 1px solid;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/stepper/layout/step/_index.scss", + "line": 20, + "widget": "stepper", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": "dx-line-width", + "text": "border-width: 1px; // dx-line-width: hairline, the same in every theme", + "category": "geometry" + }, + { + "file": "scss/widgets/base/switch/_mixins.scss", + "line": 45, + "widget": "switch", + "literals": [ + "500px" + ], + "occurrences": 1, + "marker": null, + "text": "border-radius: 500px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/switch/_mixins.scss", + "line": 60, + "widget": "switch", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 4px 0;", + "category": "inline" + }, + { + "file": "scss/widgets/base/switch/_mixins.scss", + "line": 74, + "widget": "switch", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "padding-bottom: 10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 53, + "widget": "textEditor", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 0 2px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 167, + "widget": "textEditor", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 0 2px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 174, + "widget": "textEditor", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-left: -2px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 175, + "widget": "textEditor", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-right: -2px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 176, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border-radius: 1px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 177, + "widget": "textEditor", + "literals": [ + "1px", + "-1px" + ], + "occurrences": 3, + "marker": null, + "text": "clip-path: inset(-$texteditor-label-font-size 1px -1px 1px);", + "category": "geometry" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 201, + "widget": "textEditor", + "literals": [ + "-1px", + "1px" + ], + "occurrences": 4, + "marker": null, + "text": "clip-path: inset(-1px 1px -1px -1px);", + "category": "geometry" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 216, + "widget": "textEditor", + "literals": [ + "-1px", + "1px" + ], + "occurrences": 4, + "marker": null, + "text": "clip-path: inset(-1px -1px -1px 1px);", + "category": "geometry" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 221, + "widget": "textEditor", + "literals": [ + "-1px", + "1px" + ], + "occurrences": 4, + "marker": null, + "text": "clip-path: inset(-1px -1px -1px 1px);", + "category": "geometry" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 225, + "widget": "textEditor", + "literals": [ + "-1px", + "1px" + ], + "occurrences": 4, + "marker": null, + "text": "clip-path: inset(-1px 1px -1px -1px);", + "category": "geometry" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 239, + "widget": "textEditor", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "height: 3px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 241, + "widget": "textEditor", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-inline-start: -2px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 303, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border-start-end-radius: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 304, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "border-end-end-radius: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 629, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 630, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-bottom: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 749, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 750, + "widget": "textEditor", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-bottom: 3px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 757, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 2, + "marker": null, + "text": "padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px));", + "category": "calc" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 761, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 767, + "widget": "textEditor", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: 3px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 775, + "widget": "textEditor", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 2px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 803, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 804, + "widget": "textEditor", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-bottom: 3px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 811, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 2, + "marker": null, + "text": "padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px));", + "category": "calc" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 815, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: 1px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 821, + "widget": "textEditor", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-top: 3px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 829, + "widget": "textEditor", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "padding: 2px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/timeView/_mixins.scss", + "line": 16, + "widget": "timeView", + "literals": [ + "182px" + ], + "occurrences": 1, + "marker": null, + "text": "$clock-size: 182px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/timeView/_mixins.scss", + "line": 30, + "widget": "timeView", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "width: 10px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/timeView/_mixins.scss", + "line": 31, + "widget": "timeView", + "literals": [ + "-5px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-left: -5px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/toolbar/_index.scss", + "line": 101, + "widget": "toolbar", + "literals": [ + "-5px" + ], + "occurrences": 1, + "marker": null, + "text": "margin: 0 -5px;", + "category": "inline" + }, + { + "file": "scss/widgets/base/toolbar/_mixins.scss", + "line": 7, + "widget": "toolbar", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline: 2px solid $accent-color;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/toolbar/_mixins.scss", + "line": 8, + "widget": "toolbar", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "outline-offset: 1px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/toolbar/_mixins.scss", + "line": 13, + "widget": "toolbar", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline: 2px solid $accent-color;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/toolbar/_mixins.scss", + "line": 14, + "widget": "toolbar", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "outline-offset: 1px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/treeList/_index.scss", + "line": 168, + "widget": "treeList", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "@include dx-icon-sizing(14px);", + "category": "mixin-arg" + }, + { + "file": "scss/widgets/base/treeList/_index.scss", + "line": 256, + "widget": "treeList", + "literals": [ + "16px" + ], + "occurrences": 1, + "marker": null, + "text": "@include dx-icon-sizing(16px);", + "category": "mixin-arg" + }, + { + "file": "scss/widgets/base/treeList/_index.scss", + "line": 264, + "widget": "treeList", + "literals": [ + "21px" + ], + "occurrences": 1, + "marker": null, + "text": "@include dx-icon-sizing(21px);", + "category": "mixin-arg" + }, + { + "file": "scss/widgets/base/treeList/layout/cell.scss", + "line": 229, + "widget": "treeList", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "outline-offset: -2px;", + "category": "geometry" + }, + { + "file": "scss/widgets/base/treeView/_common.scss", + "line": 6, + "widget": "treeView", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$treeview-searchbox-margin-bottom: 5px;", + "category": "local-var" + }, + { + "file": "scss/widgets/base/treeView/_common.scss", + "line": 85, + "widget": "treeView", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "margin-inline-end: 8px;", + "category": "inline" + } + ] +} diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json new file mode 100644 index 000000000000..340ea589174c --- /dev/null +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -0,0 +1,5535 @@ +{ + "$comment": [ + "GENERATED by tools/sizes/inventory.mjs — do not edit by hand. Judgment calls belong in that script, not in this file.", + "Sizes the theme can set from outside without touching the shared layer: the literal is the default of a `$x: … !default` declaration, so `@use \"…/base/x\" with ($x: …)` replaces it for one theme and leaves the default — and every other theme — untouched.", + "kind \"module-variable\" — a `$x: … !default` declaration; \"mixin-parameter\" — a default in a `@mixin name(…)` signature, which a theme replaces by passing an argument.", + "status \"injected\" — fluent-next already passes a value; \"open\" — the knob exists and nobody turns it; \"parameter\" — a mixin parameter, where the signature itself is the channel and there is nothing to cross-check by name. An \"open\" row is theme-side work only.", + "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." + ], + "summary": { + "occurrences": 373, + "variables": 321, + "injected": 370, + "open": 0, + "parameters": 3 + }, + "places": [ + { + "file": "scss/widgets/base/_box.scss", + "line": 1, + "widget": "box", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$box-item-content-font-size: 14px !default;", + "variable": "box-item-content-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/box/_index.scss", + "setTo": "var(--dx-box-item-content-font-size)" + }, + { + "file": "scss/widgets/base/_contextMenu.scss", + "line": 2, + "widget": "contextMenu", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$contextmenu-menu-items-container-padding: 1px !default;", + "variable": "contextmenu-menu-items-container-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/contextMenu/_index.scss", + "setTo": "null" + }, + { + "file": "scss/widgets/base/_contextMenu.scss", + "line": 3, + "widget": "contextMenu", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$contextmenu-menu-separator-height: 1px !default;", + "variable": "contextmenu-menu-separator-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/contextMenu/_index.scss", + "setTo": "var(--dx-context-menu-separator-height)" + }, + { + "file": "scss/widgets/base/_contextMenu.scss", + "line": 4, + "widget": "contextMenu", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$contextmenu-menu-separator-margin: 5px 0 !default;", + "variable": "contextmenu-menu-separator-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/contextMenu/_index.scss", + "setTo": "var(--dx-context-menu-separator-margin)" + }, + { + "file": "scss/widgets/base/_dateBox.scss", + "line": 4, + "widget": "dateBox", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$datebox-texteditor-height: 20px !default;", + "variable": "datebox-texteditor-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dateBox/_index.scss", + "setTo": "var(--dx-date-box-input-height)" + }, + { + "file": "scss/widgets/base/_dateBox.scss", + "line": 5, + "widget": "dateBox", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$datebox-popup-content-padding-top: 20px !default;", + "variable": "datebox-popup-content-padding-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dateBox/_index.scss", + "setTo": "var(--dx-date-box-popup-content-padding-block-start)" + }, + { + "file": "scss/widgets/base/_dateBox.scss", + "line": 6, + "widget": "dateBox", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$datebox-popup-content-padding-bottom: 20px !default;", + "variable": "datebox-popup-content-padding-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dateBox/_index.scss", + "setTo": "var(--dx-date-box-popup-content-padding-block-end)" + }, + { + "file": "scss/widgets/base/_dateBox.scss", + "line": 7, + "widget": "dateBox", + "literals": [ + "90px" + ], + "occurrences": 1, + "marker": null, + "text": "$datebox-button-min-width: 90px !default;", + "variable": "datebox-button-min-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dateBox/_index.scss", + "setTo": "var(--dx-date-box-button-min-width)" + }, + { + "file": "scss/widgets/base/_dateBox.scss", + "line": 8, + "widget": "dateBox", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$datebox-apply-button-margin-right: 10px !default;", + "variable": "datebox-apply-button-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dateBox/_index.scss", + "setTo": "var(--dx-date-box-apply-button-margin-inline-end)" + }, + { + "file": "scss/widgets/base/_dropDownList.scss", + "line": 2, + "widget": "dropDownList", + "literals": [ + "35px" + ], + "occurrences": 1, + "marker": null, + "text": "$dropdownlist-list-min-height: 35px !default;", + "variable": "dropdownlist-list-min-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dropDownList/_index.scss", + "setTo": "var(--dx-drop-down-list-min-height)" + }, + { + "file": "scss/widgets/base/_fieldset.scss", + "line": 4, + "widget": "fieldset", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$fieldset-root-margin-bottom: 20px !default;", + "variable": "fieldset-root-margin-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fieldset/_index.scss", + "setTo": "var(--dx-fieldset-margin-block-end)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 4, + "widget": "fileUploader", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-button-margin-left: 12px !default;", + "variable": "fileuploader-button-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-button-margin-inline-start)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 5, + "widget": "fileUploader", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-upload-button-margin-top: 10px !default;", + "variable": "fileuploader-upload-button-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-upload-button-margin-block-start)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 6, + "widget": "fileUploader", + "literals": [ + "22px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-show-file-list-padding-top: 22px !default;", + "variable": "fileuploader-show-file-list-padding-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-show-file-list-padding-block-start)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 7, + "widget": "fileUploader", + "literals": [ + "4px" + ], + "occurrences": 2, + "marker": null, + "text": "$fileuploader-file-container-padding: 4px 0 4px !default;", + "variable": "fileuploader-file-container-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "null" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 8, + "widget": "fileUploader", + "literals": [ + "28px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-button-width: 28px !default;", + "variable": "fileuploader-button-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-button-width)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 9, + "widget": "fileUploader", + "literals": [ + "28px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-button-height: 28px !default;", + "variable": "fileuploader-button-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-button-height)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 10, + "widget": "fileUploader", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-button-margin-right: 10px !default;", + "variable": "fileuploader-button-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-button-margin-inline-end)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 11, + "widget": "fileUploader", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-cancel-button-position-end-margin-left: 4px !default;", + "variable": "fileuploader-cancel-button-position-end-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-cancel-button-position-end-margin-inline-start)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 12, + "widget": "fileUploader", + "literals": [ + "16px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-file-status-message-height: 16px !default;", + "variable": "fileuploader-file-status-message-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-file-status-message-height)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 13, + "widget": "fileUploader", + "literals": [ + "22px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-progressbar-height: 22px !default;", + "variable": "fileuploader-progressbar-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-progress-bar-height)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 14, + "widget": "fileUploader", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-file-size-padding-left: 4px !default;", + "variable": "fileuploader-file-size-padding-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-file-size-padding-inline-start)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 15, + "widget": "fileUploader", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-file-icon-padding-right: 6px !default;", + "variable": "fileuploader-file-icon-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-file-icon-padding-inline-end)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 16, + "widget": "fileUploader", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-file-container-button-margin-left: 10px !default;", + "variable": "fileuploader-file-container-button-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-file-container-button-rtl-margin-inline-end)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 17, + "widget": "fileUploader", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-cancel-button-position-end-margin-right: 4px !default;", + "variable": "fileuploader-cancel-button-position-end-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-cancel-button-position-end-margin-inline-end)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 18, + "widget": "fileUploader", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-file-size-padding-right: 4px !default;", + "variable": "fileuploader-file-size-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-file-size-padding-inline-end)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 19, + "widget": "fileUploader", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-file-status-message-line-margin-bottom: 2px !default;", + "variable": "fileuploader-file-status-message-line-margin-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-file-status-message-line-margin-block-end)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 20, + "widget": "fileUploader", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-cancel-button-margin-top: 5px !default;", + "variable": "fileuploader-cancel-button-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-cancel-button-margin-block-start)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 22, + "widget": "fileUploader", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-status-message-font-size: 12px !default;", + "variable": "fileuploader-status-message-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-status-message-font-size)" + }, + { + "file": "scss/widgets/base/_fileUploader.scss", + "line": 23, + "widget": "fileUploader", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$fileuploader-file-size-font-size: 10px !default;", + "variable": "fileuploader-file-size-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", + "setTo": "var(--dx-file-uploader-file-size-font-size)" + }, + { + "file": "scss/widgets/base/_form.scss", + "line": 2, + "widget": "form", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$form-first-row-padding-top: 10px !default;", + "variable": "form-first-row-padding-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/form/_index.scss", + "setTo": "var(--dx-form-first-row-padding-block-start)" + }, + { + "file": "scss/widgets/base/_form.scss", + "line": 3, + "widget": "form", + "literals": [ + "7px" + ], + "occurrences": 1, + "marker": null, + "text": "$form-switch-margin-top: 7px !default;", + "variable": "form-switch-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/form/_index.scss", + "setTo": "var(--dx-form-switch-margin-block-start)" + }, + { + "file": "scss/widgets/base/_form.scss", + "line": 4, + "widget": "form", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$form-switch-margin-bottom: 4px !default;", + "variable": "form-switch-margin-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/form/_index.scss", + "setTo": "var(--dx-form-switch-margin-block-end)" + }, + { + "file": "scss/widgets/base/_form.scss", + "line": 5, + "widget": "form", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$form-multiview-item-content-padding: 20px !default;", + "variable": "form-multiview-item-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/form/_index.scss", + "setTo": "var(--dx-form-multiview-item-content-padding)" + }, + { + "file": "scss/widgets/base/_form.scss", + "line": 6, + "widget": "form", + "literals": [ + "19px" + ], + "occurrences": 1, + "marker": null, + "text": "$form-group-content-padding-top: 19px !default;", + "variable": "form-group-content-padding-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/form/_index.scss", + "setTo": "var(--dx-form-group-content-padding-block-start)" + }, + { + "file": "scss/widgets/base/_form.scss", + "line": 7, + "widget": "form", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$form-group-content-padding-bottom: 20px !default;", + "variable": "form-group-content-padding-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/form/_index.scss", + "setTo": "var(--dx-form-group-content-padding-block-end)" + }, + { + "file": "scss/widgets/base/_form.scss", + "line": 8, + "widget": "form", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "$form-group-content-margin-top: 6px !default;", + "variable": "form-group-content-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/form/_index.scss", + "setTo": "var(--dx-form-group-content-margin-block-start)" + }, + { + "file": "scss/widgets/base/_form.scss", + "line": 9, + "widget": "form", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$form-field-item-label-location-left-padding-inline-end: 10px !default;", + "variable": "form-field-item-label-location-left-padding-inline-end", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/form/_index.scss", + "setTo": "var(--dx-form-field-item-label-location-left-padding-inline-end)" + }, + { + "file": "scss/widgets/base/_form.scss", + "line": 10, + "widget": "form", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$form-field-item-label-location-right-padding-inline-start: 10px !default;", + "variable": "form-field-item-label-location-right-padding-inline-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/form/_index.scss", + "setTo": "var(--dx-form-field-item-label-location-right-padding-inline-start)" + }, + { + "file": "scss/widgets/base/_gallery.scss", + "line": 4, + "widget": "gallery", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$gallery-root-border-width: 1px !default;", + "variable": "gallery-root-border-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gallery/_index.scss", + "setTo": "var(--dx-gallery-border-width)" + }, + { + "file": "scss/widgets/base/_gallery.scss", + "line": 5, + "widget": "gallery", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$gallery-indicator-bottom: 10px !default;", + "variable": "gallery-indicator-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gallery/_index.scss", + "setTo": "var(--dx-gallery-indicator-inset-block-end)" + }, + { + "file": "scss/widgets/base/_gallery.scss", + "line": 6, + "widget": "gallery", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$gallery-indicator-height: 10px !default;", + "variable": "gallery-indicator-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gallery/_index.scss", + "setTo": "var(--dx-gallery-indicator-height)" + }, + { + "file": "scss/widgets/base/_gallery.scss", + "line": 7, + "widget": "gallery", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$gallery-indicator-item-margin: 0 2px !default;", + "variable": "gallery-indicator-item-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gallery/_index.scss", + "setTo": "var(--dx-gallery-indicator-item-margin)" + }, + { + "file": "scss/widgets/base/_loadPanel.scss", + "line": 4, + "widget": "loadPanel", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$loadpanel-content-padding: 10px !default;", + "variable": "loadpanel-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/loadPanel/_index.scss", + "setTo": "var(--dx-load-panel-content-padding)" + }, + { + "file": "scss/widgets/base/_loadPanel.scss", + "line": 5, + "widget": "loadPanel", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$loadpanel-content-border: 1px solid #ccc !default;", + "variable": "loadpanel-content-border", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/loadPanel/_index.scss", + "setTo": "var(--dx-load-panel-content-border)" + }, + { + "file": "scss/widgets/base/_loadPanel.scss", + "line": 6, + "widget": "loadPanel", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$loadpanel-content-border-radius: 5px !default;", + "variable": "loadpanel-content-border-radius", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/loadPanel/_index.scss", + "setTo": "var(--dx-load-panel-content-border-radius)" + }, + { + "file": "scss/widgets/base/_map.scss", + "line": 2, + "widget": "map", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$map-marker-tooltip-margin: 10px !default;", + "variable": "map-marker-tooltip-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/map/_index.scss", + "setTo": "mapSizes.$map-marker-tooltip-margin" + }, + { + "file": "scss/widgets/base/_menu.scss", + "line": 4, + "widget": "menu", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$menu-separator-margin-inline-end: 15px !default;", + "variable": "menu-separator-margin-inline-end", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/menu/_index.scss", + "setTo": "var(--dx-menu-separator-margin-inline-end)" + }, + { + "file": "scss/widgets/base/_menu.scss", + "line": 5, + "widget": "menu", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$menu-separator-margin-bottom: 15px !default;", + "variable": "menu-separator-margin-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/menu/_index.scss", + "setTo": "var(--dx-menu-separator-margin-block-end)" + }, + { + "file": "scss/widgets/base/_menu.scss", + "line": 6, + "widget": "menu", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$menu-treeview-node-padding: 1px !default;", + "variable": "menu-treeview-node-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/menu/_index.scss", + "setTo": "var(--dx-menu-tree-view-node-padding)" + }, + { + "file": "scss/widgets/base/_menu.scss", + "line": 7, + "widget": "menu", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$menu-item-content-padding-inline-start: 15px !default;", + "variable": "menu-item-content-padding-inline-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/menu/_index.scss", + "setTo": "var(--dx-menu-item-content-padding-inline-start)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 4, + "widget": "pagination", + "literals": [ + "7px", + "8px" + ], + "occurrences": 3, + "marker": null, + "text": "$pagination-page-padding-fallback: 7px 8px 8px !default;", + "variable": "pagination-page-padding-fallback", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "null" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 5, + "widget": "pagination", + "literals": [ + "13px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-page-horizontal-padding: 13px !default;", + "variable": "pagination-page-horizontal-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-page-padding-inline)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 6, + "widget": "pagination", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-page-margin-left: 5px !default;", + "variable": "pagination-page-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-page-margin-inline-start)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 7, + "widget": "pagination", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-page-margin-right: 1px !default;", + "variable": "pagination-page-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-page-margin-inline-end)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 8, + "widget": "pagination", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-separator-padding-left: 8px !default;", + "variable": "pagination-separator-padding-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-separator-padding-inline-start)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 9, + "widget": "pagination", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-separator-padding-right: 8px !default;", + "variable": "pagination-separator-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-separator-padding-inline-end)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 10, + "widget": "pagination", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-navigate-button-width-fallback: 10px !default;", + "variable": "pagination-navigate-button-width-fallback", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "null" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 11, + "widget": "pagination", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-navigate-button-height: 20px !default;", + "variable": "pagination-navigate-button-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-navigate-button-height)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 12, + "widget": "pagination", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-first-child-margin-left: 1px !default;", + "variable": "pagination-first-child-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-first-child-margin-inline-start)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 13, + "widget": "pagination", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-first-child-padding-left: 10px !default;", + "variable": "pagination-first-child-padding-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-first-child-padding-inline-start)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 14, + "widget": "pagination", + "literals": [ + "9px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-first-child-padding-right: 9px !default;", + "variable": "pagination-first-child-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-first-child-padding-inline-end)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 15, + "widget": "pagination", + "literals": [ + "7px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-first-child-padding-top: 7px !default;", + "variable": "pagination-first-child-padding-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-first-child-padding-block-start)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 16, + "widget": "pagination", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-first-child-padding-bottom: 8px !default;", + "variable": "pagination-first-child-padding-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-first-child-padding-block-end)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 17, + "widget": "pagination", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-page-size-margin-left: 4px !default;", + "variable": "pagination-page-size-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-page-size-margin-inline-start)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 18, + "widget": "pagination", + "literals": [ + "40px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-page-index-width: 40px !default;", + "variable": "pagination-page-index-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-page-index-width)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 19, + "widget": "pagination", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-pages-count-padding-left: 6px !default;", + "variable": "pagination-pages-count-padding-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-pages-count-padding-inline-start)" + }, + { + "file": "scss/widgets/base/_popup.scss", + "line": 7, + "widget": "popup", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$popup-title-padding: 10px !default;", + "variable": "popup-title-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/popup/_index.scss", + "setTo": "var(--dx-popup-title-padding)" + }, + { + "file": "scss/widgets/base/_popup.scss", + "line": 8, + "widget": "popup", + "literals": [ + "19px" + ], + "occurrences": 1, + "marker": null, + "text": "$popup-title-min-height-fallback: 19px !default;", + "variable": "popup-title-min-height-fallback", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/popup/_index.scss", + "setTo": "null" + }, + { + "file": "scss/widgets/base/_popup.scss", + "line": 9, + "widget": "popup", + "literals": [ + "10px", + "5px" + ], + "occurrences": 4, + "marker": null, + "text": "$popup-dialog-message-padding: 10px 10px 5px 10px !default;", + "variable": "popup-dialog-message-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/popup/_index.scss", + "setTo": "var(--dx-popup-dialog-message-padding)" + }, + { + "file": "scss/widgets/base/_progressBar.scss", + "line": 3, + "widget": "progressBar", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "$progressbar-status-font-size: 12px !default;", + "variable": "progressbar-status-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/progressBar/_index.scss", + "setTo": "var(--dx-progress-bar-status-font-size)" + }, + { + "file": "scss/widgets/base/_progressBar.scss", + "line": 6, + "widget": "progressBar", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$progressbar-status-padding-right: 8px !default;", + "variable": "progressbar-status-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/progressBar/_index.scss", + "setTo": "var(--dx-progress-bar-status-padding-inline-end)" + }, + { + "file": "scss/widgets/base/_progressBar.scss", + "line": 7, + "widget": "progressBar", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$progressbar-status-padding-left: 8px !default;", + "variable": "progressbar-status-padding-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/progressBar/_index.scss", + "setTo": "var(--dx-progress-bar-status-padding-inline-start)" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 4, + "widget": "scrollView", + "literals": [ + "40px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollview-top-pocket-width: 40px !default;", + "variable": "scrollview-top-pocket-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", + "setTo": "var(--dx-scroll-view-top-pocket-width)" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 5, + "widget": "scrollView", + "literals": [ + "40px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollview-top-pocket-height: 40px !default;", + "variable": "scrollview-top-pocket-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", + "setTo": "var(--dx-scroll-view-top-pocket-height)" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 6, + "widget": "scrollView", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollview-pull-down-indicator-padding: 4px !default;", + "variable": "scrollview-pull-down-indicator-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", + "setTo": "var(--dx-scroll-view-pull-down-indicator-padding)" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 7, + "widget": "scrollView", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollview-icon-pulldown-padding: 8px !default;", + "variable": "scrollview-icon-pulldown-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", + "setTo": "var(--dx-scroll-view-icon-pull-down-padding)" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 8, + "widget": "scrollView", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollview-pull-down-indicator-width: 20px !default;", + "variable": "scrollview-pull-down-indicator-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", + "setTo": "var(--dx-scroll-view-pull-down-indicator-width)" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 9, + "widget": "scrollView", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollview-pull-down-image-margin: 0 20px !default;", + "variable": "scrollview-pull-down-image-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", + "setTo": "var(--dx-scroll-view-pull-down-image-margin)" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 10, + "widget": "scrollView", + "literals": [ + "50px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollview-pull-down-image-height: 50px !default;", + "variable": "scrollview-pull-down-image-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", + "setTo": "var(--dx-scroll-view-pull-down-image-height)" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 11, + "widget": "scrollView", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollview-scrollbottom-padding: 10px 0 !default;", + "variable": "scrollview-scrollbottom-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", + "setTo": "var(--dx-scroll-view-scroll-bottom-padding)" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 12, + "widget": "scrollView", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollview-scrollbottom-indicator-margin: 0 10px 0 0 !default;", + "variable": "scrollview-scrollbottom-indicator-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", + "setTo": "var(--dx-scroll-view-scroll-bottom-indicator-margin)" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 13, + "widget": "scrollView", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollview-scrollbottom-indicator-margin-rtl: 0 0 0 10px !default;", + "variable": "scrollview-scrollbottom-indicator-margin-rtl", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", + "setTo": "var(--dx-scroll-view-scroll-bottom-indicator-rtl-margin)" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 15, + "widget": "scrollView", + "literals": [ + "24px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollview-pulldown-icon-font-size: 24px !default;", + "variable": "scrollview-pulldown-icon-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", + "setTo": "var(--dx-scroll-view-pull-down-icon-font-size)" + }, + { + "file": "scss/widgets/base/_slider.scss", + "line": 8, + "widget": "slider", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$slider-label-position-bottom-padding-bottom: 14px !default;", + "variable": "slider-label-position-bottom-padding-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/slider/_index.scss", + "setTo": "var(--dx-slider-label-bottom-padding-block-end)" + }, + { + "file": "scss/widgets/base/_slider.scss", + "line": 9, + "widget": "slider", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$slider-label-position-top-padding-top: 14px !default;", + "variable": "slider-label-position-top-padding-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/slider/_index.scss", + "setTo": "var(--dx-slider-label-top-padding-block-start)" + }, + { + "file": "scss/widgets/base/_sortable.scss", + "line": 13, + "widget": "sortable", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$sortable-placeholder-border: 1px solid !default;", + "variable": "sortable-placeholder-border", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/sortable/_index.scss", + "setTo": "var(--dx-sortable-placeholder-border-width) solid" + }, + { + "file": "scss/widgets/base/_sortable.scss", + "line": 14, + "widget": "sortable", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$sortable-placeholder-inside-border-width: 2px !default;", + "variable": "sortable-placeholder-inside-border-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/sortable/_index.scss", + "setTo": "var(--dx-sortable-placeholder-inside-border-width)" + }, + { + "file": "scss/widgets/base/_speedDialAction.scss", + "line": 6, + "widget": "speedDialAction", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$speeddialaction-fa-button-label-border-radius: 4px !default;", + "variable": "speeddialaction-fa-button-label-border-radius", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/speedDialAction/_index.scss", + "setTo": "var(--dx-speed-dial-action-fa-button-label-border-radius)" + }, + { + "file": "scss/widgets/base/_splitterBar.scss", + "line": 4, + "widget": "splitterBar", + "literals": [ + "7px" + ], + "occurrences": 1, + "marker": null, + "text": "$splitterbar-splitter-border-width: 7px !default;", + "variable": "splitterbar-splitter-border-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/splitterBar/_index.scss", + "setTo": "var(--dx-splitter-bar-border-width)" + }, + { + "file": "scss/widgets/base/_splitterBar.scss", + "line": 5, + "widget": "splitterBar", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$splitterbar-splitter-bar-width: 1px !default;", + "variable": "splitterbar-splitter-bar-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/splitterBar/_index.scss", + "setTo": "var(--dx-splitter-bar-width)" + }, + { + "file": "scss/widgets/base/_tileView.scss", + "line": 2, + "widget": "tileView", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$tileview-wrapper-height: 1px !default;", + "variable": "tileview-wrapper-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/tileView/_index.scss", + "setTo": "var(--dx-tile-view-wrapper-height)" + }, + { + "file": "scss/widgets/base/_toast.scss", + "line": 2, + "widget": "toast", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$toast-content-padding: 10px !default;", + "variable": "toast-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/toast/_index.scss", + "setTo": "var(--dx-toast-content-padding)" + }, + { + "file": "scss/widgets/base/_toast.scss", + "line": 3, + "widget": "toast", + "literals": [ + "35px" + ], + "occurrences": 1, + "marker": null, + "text": "$toast-icon-width: 35px !default;", + "variable": "toast-icon-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/toast/_index.scss", + "setTo": "var(--dx-toast-icon-width)" + }, + { + "file": "scss/widgets/base/_toast.scss", + "line": 4, + "widget": "toast", + "literals": [ + "35px" + ], + "occurrences": 1, + "marker": null, + "text": "$toast-icon-height: 35px !default;", + "variable": "toast-icon-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/toast/_index.scss", + "setTo": "var(--dx-toast-icon-height)" + }, + { + "file": "scss/widgets/base/_toast.scss", + "line": 5, + "widget": "toast", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$toast-icon-margin-right: 10px !default;", + "variable": "toast-icon-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/toast/_index.scss", + "setTo": "var(--dx-toast-icon-margin-inline-end)" + }, + { + "file": "scss/widgets/base/_toast.scss", + "line": 6, + "widget": "toast", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$toast-icon-margin-left: 10px !default;", + "variable": "toast-icon-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/toast/_index.scss", + "setTo": "var(--dx-toast-icon-rtl-margin-inline-end)" + }, + { + "file": "scss/widgets/base/_toast.scss", + "line": 7, + "widget": "toast", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$toast-stack-gap: 3px !default;", + "variable": "toast-stack-gap", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/toast/_index.scss", + "setTo": "var(--dx-toast-stack-gap)" + }, + { + "file": "scss/widgets/base/_tooltip.scss", + "line": 2, + "widget": "tooltip", + "literals": [ + "34px" + ], + "occurrences": 1, + "marker": null, + "text": "$tooltip-overlay-content-min-width: 34px !default;", + "variable": "tooltip-overlay-content-min-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/tooltip/_index.scss", + "setTo": "var(--dx-tooltip-overlay-content-min-width)" + }, + { + "file": "scss/widgets/base/_tooltip.scss", + "line": 3, + "widget": "tooltip", + "literals": [ + "26px" + ], + "occurrences": 1, + "marker": null, + "text": "$tooltip-overlay-content-min-height: 26px !default;", + "variable": "tooltip-overlay-content-min-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/tooltip/_index.scss", + "setTo": "var(--dx-tooltip-overlay-content-min-height)" + }, + { + "file": "scss/widgets/base/_tooltip.scss", + "line": 4, + "widget": "tooltip", + "literals": [ + "12px", + "17px" + ], + "occurrences": 2, + "marker": null, + "text": "$tooltip-popup-content-padding: 12px 17px !default;", + "variable": "tooltip-popup-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/tooltip/_index.scss", + "setTo": "var(--dx-tooltip-popup-content-padding)" + }, + { + "file": "scss/widgets/base/_validation.scss", + "line": 2, + "widget": "validation", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$validation-summary-margin-top: 20px !default;", + "variable": "validation-summary-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/common/_mixins.scss", + "setTo": "validationSizes.$validation-summary-margin-block-start" + }, + { + "file": "scss/widgets/base/_validation.scss", + "line": 3, + "widget": "validation", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$validation-message-content-padding: 10px !default;", + "variable": "validation-message-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/common/_mixins.scss", + "setTo": "validationSizes.$validation-message-content-padding" + }, + { + "file": "scss/widgets/base/buttonGroup/_index.scss", + "line": 4, + "widget": "buttonGroup", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$buttongroup-mode-text-column-gap: 1px !default;", + "variable": "buttongroup-mode-text-column-gap", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/buttonGroup/_index.scss", + "setTo": "var(--dx-button-group-text-column-gap)" + }, + { + "file": "scss/widgets/base/calendar/_calendar.scss", + "line": 3, + "widget": "calendar", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$calendar-week-day-header-font-size: 10px !default;", + "variable": "calendar-week-day-header-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/calendar/_index.scss", + "setTo": "var(--dx-calendar-week-day-header-font-size)" + }, + { + "file": "scss/widgets/base/chat/_index.scss", + "line": 5, + "widget": "chat", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$chat-messagebubble-padding-image: 4px !default;", + "variable": "chat-messagebubble-padding-image", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/chat/_index.scss", + "setTo": "var(--dx-chat-bubble-image-padding)" + }, + { + "file": "scss/widgets/base/chat/_index.scss", + "line": 6, + "widget": "chat", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$chat-messagebubble-border-radius-image: 8px !default;", + "variable": "chat-messagebubble-border-radius-image", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/chat/_index.scss", + "setTo": "var(--dx-chat-bubble-image-border-radius)" + }, + { + "file": "scss/widgets/base/chat/_index.scss", + "line": 7, + "widget": "chat", + "literals": [ + "400px" + ], + "occurrences": 1, + "marker": null, + "text": "$chat-messagebubble-max-width-image: 400px !default;", + "variable": "chat-messagebubble-max-width-image", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/chat/_index.scss", + "setTo": "var(--dx-chat-bubble-image-max-width)" + }, + { + "file": "scss/widgets/base/chat/_index.scss", + "line": 8, + "widget": "chat", + "literals": [ + "400px" + ], + "occurrences": 1, + "marker": null, + "text": "$chat-messagebubble-max-height-image: 400px !default;", + "variable": "chat-messagebubble-max-height-image", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/chat/_index.scss", + "setTo": "var(--dx-chat-bubble-image-max-height)" + }, + { + "file": "scss/widgets/base/checkBox/_index.scss", + "line": 5, + "widget": "checkBox", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$checkbox-text-padding-inline-start: 5px !default;", + "variable": "checkbox-text-padding-inline-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/checkBox/_index.scss", + "setTo": "null" + }, + { + "file": "scss/widgets/base/colorBox/_index.scss", + "line": 8, + "widget": "colorBox", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$colorbox-texteditor-input-container-width: 15px !default;", + "variable": "colorbox-texteditor-input-container-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorBox/_index.scss", + "setTo": "var(--dx-color-box-input-container-width)" + }, + { + "file": "scss/widgets/base/colorBox/_index.scss", + "line": 9, + "widget": "colorBox", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$colorbox-texteditor-input-container-height: 15px !default;", + "variable": "colorbox-texteditor-input-container-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorBox/_index.scss", + "setTo": "var(--dx-color-box-input-container-height)" + }, + { + "file": "scss/widgets/base/colorBox/_index.scss", + "line": 10, + "widget": "colorBox", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$colorbox-texteditor-input-container-inset-inline-start: 14px !default;", + "variable": "colorbox-texteditor-input-container-inset-inline-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorBox/_index.scss", + "setTo": "var(--dx-color-box-input-container-inset-inline-start)" + }, + { + "file": "scss/widgets/base/colorBox/_index.scss", + "line": 11, + "widget": "colorBox", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$colorbox-overlay-padding: 20px !default;", + "variable": "colorbox-overlay-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorBox/_index.scss", + "setTo": "var(--dx-color-box-overlay-padding)" + }, + { + "file": "scss/widgets/base/colorBox/_index.scss", + "line": 12, + "widget": "colorBox", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$colorbox-toolbar-item-padding-right: 10px !default;", + "variable": "colorbox-toolbar-item-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorBox/_index.scss", + "setTo": "var(--dx-color-box-toolbar-item-padding-inline-end)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 13, + "widget": "dataGrid", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-group-row-border: 1px solid !default;", + "variable": "datagrid-group-row-border", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-group-row-border)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 14, + "widget": "dataGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-sticky-column-border: 2px solid !default;", + "variable": "datagrid-sticky-column-border", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-sticky-column-border)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 15, + "widget": "dataGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-cell-focus-outline: 2px solid !default;", + "variable": "datagrid-cell-focus-outline", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-cell-outline-focused)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 21, + "widget": "dataGrid", + "literals": [ + "30px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-common-group-min-width: 30px !default;", + "variable": "datagrid-common-group-min-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-group-panel-item-min-width)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 22, + "widget": "dataGrid", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-common-addrow-margin-right: 10px !default;", + "variable": "datagrid-common-addrow-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-group-panel-item-margin-inline-end)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 23, + "widget": "dataGrid", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-common-addrow-margin-left: 6px !default;", + "variable": "datagrid-common-addrow-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-group-panel-item-sort-margin-inline-start)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 24, + "widget": "dataGrid", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-common-form-buttons-border-radius: 3px !default;", + "variable": "datagrid-common-form-buttons-border-radius", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-block-separator-border-radius)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 25, + "widget": "dataGrid", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-common-form-buttons-margin-left: 10px !default;", + "variable": "datagrid-common-form-buttons-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-group-panel-item-rtl-margin-inline-end)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 26, + "widget": "dataGrid", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-common-form-buttons-margin-right: 6px !default;", + "variable": "datagrid-common-form-buttons-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-group-panel-item-sort-rtl-margin-inline-start)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 49, + "widget": "dataGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-header-filter-outline: 2px solid !default;", + "variable": "datagrid-header-filter-outline", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-grid-outline-focused)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 50, + "widget": "dataGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-header-filter-outline-offset: 2px !default;", + "variable": "datagrid-header-filter-outline-offset", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-outline-offset-focused)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 51, + "widget": "dataGrid", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-filter-panel-clear-filter-outline-offset: 3px !default;", + "variable": "datagrid-filter-panel-clear-filter-outline-offset", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-filter-panel-outline-offset-focused)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 52, + "widget": "dataGrid", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-button-margin-left: 10px !default;", + "variable": "datagrid-button-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-form-buttons-margin-inline-start)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 53, + "widget": "dataGrid", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-button-margin-top: 10px !default;", + "variable": "datagrid-button-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-form-buttons-margin-block-start)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 54, + "widget": "dataGrid", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-error-message-margin-bottom: 20px !default;", + "variable": "datagrid-error-message-margin-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-error-message-margin-block-end)" + }, + { + "file": "scss/widgets/base/dataGrid/_index.scss", + "line": 55, + "widget": "dataGrid", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$datagrid-button-margin-right: 10px !default;", + "variable": "datagrid-button-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dataGrid/_index.scss", + "setTo": "var(--dx-data-grid-form-buttons-rtl-margin-inline-start)" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 4, + "widget": "diagram", + "literals": [ + "600px" + ], + "occurrences": 1, + "marker": null, + "text": "$diagram-root-height: 600px !default;", + "variable": "diagram-root-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/diagram/_index.scss", + "setTo": "var(--dx-diagram-height)" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 5, + "widget": "diagram", + "literals": [ + "350px" + ], + "occurrences": 1, + "marker": null, + "text": "$diagram-root-min-height: 350px !default;", + "variable": "diagram-root-min-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/diagram/_index.scss", + "setTo": "var(--dx-diagram-min-height)" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 6, + "widget": "diagram", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$diagram-toolbar-wrapper-padding: 5px !default;", + "variable": "diagram-toolbar-wrapper-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/diagram/_index.scss", + "setTo": "var(--dx-diagram-toolbar-wrapper-padding)" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 7, + "widget": "diagram", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$diagram-button-min-height: 14px !default;", + "variable": "diagram-button-min-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/diagram/_index.scss", + "setTo": "var(--dx-diagram-toolbox-input-button-min-height)" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 8, + "widget": "diagram", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$diagram-popup-content-padding: 8px !default;", + "variable": "diagram-popup-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/diagram/_index.scss", + "setTo": "var(--dx-diagram-popup-content-padding)" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 9, + "widget": "diagram", + "literals": [ + "300px" + ], + "occurrences": 1, + "marker": null, + "text": "$diagram-colorview-palette-min-width: 300px !default;", + "variable": "diagram-colorview-palette-min-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/diagram/_index.scss", + "setTo": "var(--dx-diagram-color-view-palette-min-width)" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 10, + "widget": "diagram", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "$diagram-colorview-hue-scale-cell-margin-left: 12px !default;", + "variable": "diagram-colorview-hue-scale-cell-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/diagram/_index.scss", + "setTo": "var(--dx-diagram-color-view-hue-scale-cell-margin-inline-start)" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 11, + "widget": "diagram", + "literals": [ + "64px" + ], + "occurrences": 1, + "marker": null, + "text": "$diagram-loading-indicator-width: 64px !default;", + "variable": "diagram-loading-indicator-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/diagram/_index.scss", + "setTo": "var(--dx-diagram-loading-indicator-width)" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 12, + "widget": "diagram", + "literals": [ + "64px" + ], + "occurrences": 1, + "marker": null, + "text": "$diagram-loading-indicator-height: 64px !default;", + "variable": "diagram-loading-indicator-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/diagram/_index.scss", + "setTo": "var(--dx-diagram-loading-indicator-height)" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 13, + "widget": "diagram", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$diagram-context-toolbox-target-width: 1px !default;", + "variable": "diagram-context-toolbox-target-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/diagram/_index.scss", + "setTo": "var(--dx-diagram-context-toolbox-target-width)" + }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 14, + "widget": "diagram", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$diagram-context-toolbox-target-height: 1px !default;", + "variable": "diagram-context-toolbox-target-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/diagram/_index.scss", + "setTo": "var(--dx-diagram-context-toolbox-target-height)" + }, + { + "file": "scss/widgets/base/dropDownMenu/_index.scss", + "line": 2, + "widget": "dropDownMenu", + "literals": [ + "100px" + ], + "occurrences": 1, + "marker": null, + "text": "$dropdownmenu-list-min-width: 100px !default;", + "variable": "dropdownmenu-list-min-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dropDownMenu/_index.scss", + "setTo": "var(--dx-drop-down-menu-list-min-width)" + }, + { + "file": "scss/widgets/base/dropDownMenu/_index.scss", + "line": 3, + "widget": "dropDownMenu", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$dropdownmenu-list-border-radius: 8px !default;", + "variable": "dropdownmenu-list-border-radius", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dropDownMenu/_index.scss", + "setTo": "var(--dx-drop-down-menu-list-border-radius)" + }, + { + "file": "scss/widgets/base/dropDownMenu/_index.scss", + "line": 4, + "widget": "dropDownMenu", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$dropdownmenu-popup-content-padding: 1px !default;", + "variable": "dropdownmenu-popup-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/dropDownMenu/_index.scss", + "setTo": "var(--dx-drop-down-menu-popup-content-padding)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 4, + "widget": "fileManager", + "literals": [ + "500px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-root-height: 500px !default;", + "variable": "filemanager-root-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-height)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 5, + "widget": "fileManager", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-root-border: 1px solid !default;", + "variable": "filemanager-root-border", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-border-width) solid" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 6, + "widget": "fileManager", + "literals": [ + "240px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-overlay-content-min-width: 240px !default;", + "variable": "filemanager-overlay-content-min-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-overlay-content-min-width)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 7, + "widget": "fileManager", + "literals": [ + "400px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-overlay-content-max-width: 400px !default;", + "variable": "filemanager-overlay-content-max-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-overlay-content-max-width)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 8, + "widget": "fileManager", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-popup-content-padding: 15px !default;", + "variable": "filemanager-popup-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-popup-content-padding)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 9, + "widget": "fileManager", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progress-box-padding: 5px 0 0 !default;", + "variable": "filemanager-progress-box-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-box-padding)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 10, + "widget": "fileManager", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-notification-common-padding-bottom: 10px !default;", + "variable": "filemanager-notification-common-padding-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-notification-padding-block-end)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 11, + "widget": "fileManager", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-notification-common-border-bottom-width: 1px !default;", + "variable": "filemanager-notification-common-border-bottom-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-notification-border-block-end-width)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 12, + "widget": "fileManager", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progress-panel-border-left-width: 1px !default;", + "variable": "filemanager-progress-panel-border-left-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-panel-border-inline-start-width)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 13, + "widget": "fileManager", + "literals": [ + "340px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progress-panel-width: 340px !default;", + "variable": "filemanager-progress-panel-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-panel-width)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 14, + "widget": "fileManager", + "literals": [ + "10px", + "20px" + ], + "occurrences": 4, + "marker": null, + "text": "$filemanager-progress-panel-container-padding: 10px 20px 20px 20px !default;", + "variable": "filemanager-progress-panel-container-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-panel-container-padding)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 15, + "widget": "fileManager", + "literals": [ + "5px", + "10px" + ], + "occurrences": 2, + "marker": null, + "text": "$filemanager-progress-panel-title-padding: 0 0 5px 10px !default;", + "variable": "filemanager-progress-panel-title-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-panel-title-padding)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 16, + "widget": "fileManager", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progress-panel-separator-height: 20px !default;", + "variable": "filemanager-progress-panel-separator-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-panel-separator-height)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 17, + "widget": "fileManager", + "literals": [ + "16px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-i-cancel-width: 16px !default;", + "variable": "filemanager-i-cancel-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-i-cancel-width)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 18, + "widget": "fileManager", + "literals": [ + "16px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-i-cancel-height: 16px !default;", + "variable": "filemanager-i-cancel-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-i-cancel-height)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 19, + "widget": "fileManager", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progress-box-margin-bottom: 8px !default;", + "variable": "filemanager-progress-box-margin-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-box-margin-block-end)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 20, + "widget": "fileManager", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progress-box-border-radius: 2px !default;", + "variable": "filemanager-progress-box-border-radius", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-box-border-radius)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 21, + "widget": "fileManager", + "literals": [ + "10px" + ], + "occurrences": 3, + "marker": null, + "text": "$filemanager-progress-panel-box-padding: 10px 0 10px 10px !default;", + "variable": "filemanager-progress-panel-box-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-panel-box-padding)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 22, + "widget": "fileManager", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progress-box-without-close-button-padding-right: 10px !default;", + "variable": "filemanager-progress-box-without-close-button-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-box-without-close-button-padding-inline-end)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 23, + "widget": "fileManager", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progress-box-image-margin-right: 10px !default;", + "variable": "filemanager-progress-box-image-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-box-image-margin-inline-end)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 24, + "widget": "fileManager", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progress-box-common-padding: 5px 0 !default;", + "variable": "filemanager-progress-box-common-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-box-content-padding)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 25, + "widget": "fileManager", + "literals": [ + "9px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progress-box-close-button-margin-top: 9px !default;", + "variable": "filemanager-progress-box-close-button-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-box-close-button-margin-block-start)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 26, + "widget": "fileManager", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progress-box-close-button-margin-left: 5px !default;", + "variable": "filemanager-progress-box-close-button-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-box-close-button-margin-inline-start)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 27, + "widget": "fileManager", + "literals": [ + "2px", + "8px", + "3px" + ], + "occurrences": 3, + "marker": null, + "text": "$filemanager-progress-box-error-padding: 2px 8px 3px !default;", + "variable": "filemanager-progress-box-error-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-box-error-padding)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 28, + "widget": "fileManager", + "literals": [ + "150px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progress-box-error-max-height: 150px !default;", + "variable": "filemanager-progress-box-error-max-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-box-error-max-height)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 29, + "widget": "fileManager", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-toolbar-separator-item-width: 1px !default;", + "variable": "filemanager-toolbar-separator-item-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-toolbar-separator-item-width)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 30, + "widget": "fileManager", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-toolbar-separator-item-margin-right: 5px !default;", + "variable": "filemanager-toolbar-separator-item-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-toolbar-separator-item-margin-inline-end)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 31, + "widget": "fileManager", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-container-border-top: 1px solid !default;", + "variable": "filemanager-container-border-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-container-border-block-start)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 32, + "widget": "fileManager", + "literals": [ + "5px", + "10px" + ], + "occurrences": 2, + "marker": null, + "text": "$filemanager-dirs-panel-padding: 5px 10px !default;", + "variable": "filemanager-dirs-panel-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-dirs-panel-padding)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 33, + "widget": "fileManager", + "literals": [ + "250px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-drawer-panel-content-initial-min-width: 250px !default;", + "variable": "filemanager-drawer-panel-content-initial-min-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-drawer-panel-content-initial-min-width)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 34, + "widget": "fileManager", + "literals": [ + "300px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-drawer-panel-content-initial-max-width: 300px !default;", + "variable": "filemanager-drawer-panel-content-initial-max-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-drawer-panel-content-initial-max-width)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 35, + "widget": "fileManager", + "literals": [ + "2px", + "11px" + ], + "occurrences": 2, + "marker": null, + "text": "$filemanager-breadcrumbs-padding: 2px 11px !default;", + "variable": "filemanager-breadcrumbs-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-breadcrumbs-padding)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 36, + "widget": "fileManager", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-breadcrumbs-border-bottom: 1px solid !default;", + "variable": "filemanager-breadcrumbs-border-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-breadcrumbs-border-block-end)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 37, + "widget": "fileManager", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-menu-item-content-padding-left: 2px !default;", + "variable": "filemanager-menu-item-content-padding-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-menu-item-content-padding-inline-start)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 38, + "widget": "fileManager", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-menu-item-content-padding-right: 2px !default;", + "variable": "filemanager-menu-item-content-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-menu-item-content-padding-inline-end)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 39, + "widget": "fileManager", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-menu-item-content-margin: 0 10px !default;", + "variable": "filemanager-menu-item-content-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-menu-item-content-margin)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 40, + "widget": "fileManager", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-breadcrumbs-path-separator-padding-left: 1px !default;", + "variable": "filemanager-breadcrumbs-path-separator-padding-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-breadcrumbs-path-separator-padding-inline-start)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 41, + "widget": "fileManager", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-breadcrumbs-path-separator-padding-right: 1px !default;", + "variable": "filemanager-breadcrumbs-path-separator-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-breadcrumbs-path-separator-padding-inline-end)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 42, + "widget": "fileManager", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-thumbnails-view-port-padding: 5px !default;", + "variable": "filemanager-thumbnails-view-port-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-thumbnails-view-port-padding)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 43, + "widget": "fileManager", + "literals": [ + "100px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-thumbnails-item-width: 100px !default;", + "variable": "filemanager-thumbnails-item-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-thumbnails-item-width)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 44, + "widget": "fileManager", + "literals": [ + "100px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-thumbnails-item-height: 100px !default;", + "variable": "filemanager-thumbnails-item-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-thumbnails-item-height)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 45, + "widget": "fileManager", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-thumbnails-item-border: 1px dashed transparent !default;", + "variable": "filemanager-thumbnails-item-border", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-thumbnails-item-border)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 46, + "widget": "fileManager", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-thumbnails-item-margin: 5px !default;", + "variable": "filemanager-thumbnails-item-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-thumbnails-item-margin)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 47, + "widget": "fileManager", + "literals": [ + "13px", + "10px" + ], + "occurrences": 2, + "marker": null, + "text": "$filemanager-thumbnails-item-content-padding: 13px 0 10px !default;", + "variable": "filemanager-thumbnails-item-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-thumbnails-item-content-padding)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 48, + "widget": "fileManager", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-thumbnails-item-spacer-height: 10px !default;", + "variable": "filemanager-thumbnails-item-spacer-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-thumbnails-item-spacer-height)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 49, + "widget": "fileManager", + "literals": [ + "10px", + "11px" + ], + "occurrences": 2, + "marker": null, + "text": "$filemanager-button-content-padding: 10px 11px !default;", + "variable": "filemanager-button-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-view-mode-button-content-padding)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 50, + "widget": "fileManager", + "literals": [ + "300px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-dialog-min-width: 300px !default;", + "variable": "filemanager-dialog-min-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-dialog-min-width)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 51, + "widget": "fileManager", + "literals": [ + "300px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-overlay-content-min-height: 300px !default;", + "variable": "filemanager-overlay-content-min-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-overlay-content-min-height)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 52, + "widget": "fileManager", + "literals": [ + "400px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-overlay-content-max-height: 400px !default;", + "variable": "filemanager-overlay-content-max-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-overlay-content-max-height)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 53, + "widget": "fileManager", + "literals": [ + "340px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-dialog-name-editor-max-width: 340px !default;", + "variable": "filemanager-dialog-name-editor-max-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-dialog-name-editor-max-width)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 54, + "widget": "fileManager", + "literals": [ + "180px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-dialog-name-editor-min-height: 180px !default;", + "variable": "filemanager-dialog-name-editor-min-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-dialog-name-editor-min-height)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 55, + "widget": "fileManager", + "literals": [ + "180px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-dialog-name-editor-max-height: 180px !default;", + "variable": "filemanager-dialog-name-editor-max-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-dialog-name-editor-max-height)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 56, + "widget": "fileManager", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progressbox-cancel-button-margin-top: 5px !default;", + "variable": "filemanager-progressbox-cancel-button-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-box-cancel-button-margin-block-start)" + }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 58, + "widget": "fileManager", + "literals": [ + "18px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-progress-title-font-size: 18px !default;", + "variable": "filemanager-progress-title-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-progress-title-font-size)" + }, + { + "file": "scss/widgets/base/filterBuilder/_index.scss", + "line": 27, + "widget": "filterBuilder", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$filterbuilder-action-icon-margin-left: 5px !default;", + "variable": "filterbuilder-action-icon-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/filterBuilder/_index.scss", + "setTo": "var(--dx-filter-builder-action-icon-margin-inline-start)" + }, + { + "file": "scss/widgets/base/filterBuilder/_index.scss", + "line": 28, + "widget": "filterBuilder", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$filterbuilder-action-icon-margin-right: 5px !default;", + "variable": "filterbuilder-action-icon-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/filterBuilder/_index.scss", + "setTo": "var(--dx-filter-builder-action-icon-margin-inline-end)" + }, + { + "file": "scss/widgets/base/filterBuilder/_index.scss", + "line": 29, + "widget": "filterBuilder", + "literals": [ + "26px" + ], + "occurrences": 1, + "marker": null, + "text": "$filterbuilder-group-content-padding-right: 26px !default;", + "variable": "filterbuilder-group-content-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/filterBuilder/_index.scss", + "setTo": "var(--dx-filter-builder-group-content-padding-inline-end)" + }, + { + "file": "scss/widgets/base/filterBuilder/_index.scss", + "line": 30, + "widget": "filterBuilder", + "literals": [ + "7px" + ], + "occurrences": 1, + "marker": null, + "text": "$filterbuilder-range-separator-margin: 0 7px !default;", + "variable": "filterbuilder-range-separator-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/filterBuilder/_index.scss", + "setTo": "var(--dx-filter-builder-range-separator-margin)" + }, + { + "file": "scss/widgets/base/filterBuilder/_index.scss", + "line": 31, + "widget": "filterBuilder", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$filterbuilder-item-value-text-min-width: 20px !default;", + "variable": "filterbuilder-item-value-text-min-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/filterBuilder/_index.scss", + "setTo": "var(--dx-filter-builder-item-value-text-min-width)" + }, + { + "file": "scss/widgets/base/filterBuilder/_index.scss", + "line": 32, + "widget": "filterBuilder", + "literals": [ + "2px", + "7px", + "3px" + ], + "occurrences": 4, + "marker": null, + "text": "$filterbuilder-item-value-text-padding: 2px 7px 3px 7px !default;", + "variable": "filterbuilder-item-value-text-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/filterBuilder/_index.scss", + "setTo": "var(--dx-filter-builder-item-value-text-padding)" + }, + { + "file": "scss/widgets/base/filterBuilder/_index.scss", + "line": 33, + "widget": "filterBuilder", + "literals": [ + "5px", + "8px" + ], + "occurrences": 2, + "marker": null, + "text": "$filterbuilder-action-icon-padding: 5px 8px !default;", + "variable": "filterbuilder-action-icon-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/filterBuilder/_index.scss", + "setTo": "var(--dx-filter-builder-action-icon-padding)" + }, + { + "file": "scss/widgets/base/filterBuilder/_index.scss", + "line": 34, + "widget": "filterBuilder", + "literals": [ + "26px" + ], + "occurrences": 1, + "marker": null, + "text": "$filterbuilder-group-content-padding-left: 26px !default;", + "variable": "filterbuilder-group-content-padding-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/filterBuilder/_index.scss", + "setTo": "var(--dx-filter-builder-group-content-padding-inline-start)" + }, + { + "file": "scss/widgets/base/filterBuilder/_index.scss", + "line": 35, + "widget": "filterBuilder", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$filterbuilder-treeview-item-padding-left: 5px !default;", + "variable": "filterbuilder-treeview-item-padding-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/filterBuilder/_index.scss", + "setTo": "var(--dx-filter-builder-tree-view-item-padding-inline-start)" + }, + { + "file": "scss/widgets/base/filterBuilder/_index.scss", + "line": 36, + "widget": "filterBuilder", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$filterbuilder-treeview-item-padding-right: 5px !default;", + "variable": "filterbuilder-treeview-item-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/filterBuilder/_index.scss", + "setTo": "var(--dx-filter-builder-tree-view-item-padding-inline-end)" + }, + { + "file": "scss/widgets/base/filterBuilder/_index.scss", + "line": 37, + "widget": "filterBuilder", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$filterbuilder-treeview-node-margin-left: 15px !default;", + "variable": "filterbuilder-treeview-node-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/filterBuilder/_index.scss", + "setTo": "var(--dx-filter-builder-tree-view-node-margin-inline-start)" + }, + { + "file": "scss/widgets/base/filterBuilder/_index.scss", + "line": 38, + "widget": "filterBuilder", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$filterbuilder-treeview-node-margin-right: 15px !default;", + "variable": "filterbuilder-treeview-node-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/filterBuilder/_index.scss", + "setTo": "var(--dx-filter-builder-tree-view-node-margin-inline-end)" + }, + { + "file": "scss/widgets/base/filterBuilder/_index.scss", + "line": 39, + "widget": "filterBuilder", + "literals": [ + "360px" + ], + "occurrences": 1, + "marker": null, + "text": "$filterbuilder-scrollable-max-height: 360px !default;", + "variable": "filterbuilder-scrollable-max-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/filterBuilder/_index.scss", + "setTo": "var(--dx-filter-builder-scrollable-max-height)" + }, + { + "file": "scss/widgets/base/gantt/_index.scss", + "line": 2, + "widget": "gantt", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$gantt-toolbar-separator-border-left: 1px solid transparent !default;", + "variable": "gantt-toolbar-separator-border-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gantt/_index.scss", + "setTo": "var(--dx-gantt-toolbar-separator-border-inline-start)" + }, + { + "file": "scss/widgets/base/gantt/_index.scss", + "line": 3, + "widget": "gantt", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$gantt-splitter-bar-width: 2px !default;", + "variable": "gantt-splitter-bar-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gantt/_index.scss", + "setTo": "var(--dx-gantt-splitter-bar-width)" + }, + { + "file": "scss/widgets/base/gantt/_index.scss", + "line": 4, + "widget": "gantt", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$gantt-view-min-width: 1px !default;", + "variable": "gantt-view-min-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gantt/_index.scss", + "setTo": "var(--dx-gantt-view-min-width)" + }, + { + "file": "scss/widgets/base/list/_index.scss", + "line": 9, + "widget": "list", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$list-item-badge-container-width: 20px !default;", + "variable": "list-item-badge-container-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/list/_index.scss", + "setTo": "var(--dx-list-item-badge-container-width)" + }, + { + "file": "scss/widgets/base/list/_index.scss", + "line": 10, + "widget": "list", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$list-slide-menu-button-padding: 0 10px !default;", + "variable": "list-slide-menu-button-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/list/_index.scss", + "setTo": "var(--dx-list-slide-menu-button-padding)" + }, + { + "file": "scss/widgets/base/list/_index.scss", + "line": 11, + "widget": "list", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$list-static-delete-button-padding: 0 5px !default;", + "variable": "list-static-delete-button-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/list/_index.scss", + "setTo": "var(--dx-list-delete-button-static-padding)" + }, + { + "file": "scss/widgets/base/list/_index.scss", + "line": 12, + "widget": "list", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$list-next-button-padding: 5px !default;", + "variable": "list-next-button-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/list/_index.scss", + "setTo": "var(--dx-list-next-button-padding)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 2, + "widget": "pivotGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-position-indicator-vertical-height: 2px !default;", + "variable": "pivotgrid-position-indicator-vertical-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-position-indicator-vertical-height)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 3, + "widget": "pivotGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-position-indicator-horizontal-width: 2px !default;", + "variable": "pivotgrid-position-indicator-horizontal-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-position-indicator-horizontal-width)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 4, + "widget": "pivotGrid", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-position-indicator-last-margin-left: 3px !default;", + "variable": "pivotgrid-position-indicator-last-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-position-indicator-last-margin-inline-start)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 5, + "widget": "pivotGrid", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-area-box-margin-bottom: 4px !default;", + "variable": "pivotgrid-area-box-margin-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-area-box-margin-block-end)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 6, + "widget": "pivotGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-expand-icon-container-outline: 2px solid !default;", + "variable": "pivotgrid-expand-icon-container-outline", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-expand-icon-container-outline)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 7, + "widget": "pivotGrid", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-toolbar-margin-right: 10px !default;", + "variable": "pivotgrid-toolbar-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-toolbar-margin-inline-end)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 8, + "widget": "pivotGrid", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-field-chooser-button-margin-right: 4px !default;", + "variable": "pivotgrid-field-chooser-button-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-field-chooser-button-margin-inline-end)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 9, + "widget": "pivotGrid", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-button-margin: 1px !default;", + "variable": "pivotgrid-button-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-button-margin)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 10, + "widget": "pivotGrid", + "literals": [ + "50px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-last-cell-min-width: 50px !default;", + "variable": "pivotgrid-last-cell-min-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-last-cell-min-width)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 11, + "widget": "pivotGrid", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-icon-sorted-margin-left: 5px !default;", + "variable": "pivotgrid-icon-sorted-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-icon-sorted-margin-inline-start)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 12, + "widget": "pivotGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-fields-area-head-padding: 0 2px !default;", + "variable": "pivotgrid-fields-area-head-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-fields-area-head-padding)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 13, + "widget": "pivotGrid", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-treeview-search-margin: 5px !default;", + "variable": "pivotgrid-treeview-search-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-tree-view-search-margin)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 14, + "widget": "pivotGrid", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-area-padding: 5px !default;", + "variable": "pivotgrid-area-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-area-padding)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 15, + "widget": "pivotGrid", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-area-fields-margin-top: 3px !default;", + "variable": "pivotgrid-area-fields-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-area-fields-margin-block-start)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 16, + "widget": "pivotGrid", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-position-indicator-last-margin-left-rtl: 1px !default;", + "variable": "pivotgrid-position-indicator-last-margin-left-rtl", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-position-indicator-last-rtl-margin-inline-start)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 17, + "widget": "pivotGrid", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-toolbar-margin-left: 10px !default;", + "variable": "pivotgrid-toolbar-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-toolbar-margin-inline-start)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 18, + "widget": "pivotGrid", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-field-chooser-button-margin-left: 4px !default;", + "variable": "pivotgrid-field-chooser-button-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-field-chooser-button-margin-inline-start)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 19, + "widget": "pivotGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-fields-area-head-padding-left: 2px !default;", + "variable": "pivotgrid-fields-area-head-padding-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-fields-area-head-padding-inline-start)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 20, + "widget": "pivotGrid", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-icon-sorted-margin-right: 5px !default;", + "variable": "pivotgrid-icon-sorted-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-icon-sorted-margin-inline-end)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 21, + "widget": "pivotGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-header-cell-side-padding: 2px !default;", + "variable": "pivotgrid-header-cell-side-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-header-cell-padding-inline)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 22, + "widget": "pivotGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-fields-area-head-cell-side-padding: 2px !default;", + "variable": "pivotgrid-fields-area-head-cell-side-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-fields-area-head-cell-padding-inline)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 47, + "widget": "pivotGrid", + "literals": [ + "100px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-common-field-chooser-drag-width: 100px !default;", + "variable": "pivotgrid-common-field-chooser-drag-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-field-chooser-drag-width)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 48, + "widget": "pivotGrid", + "literals": [ + "100px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-common-field-chooser-drag-height: 100px !default;", + "variable": "pivotgrid-common-field-chooser-drag-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-field-chooser-drag-height)" + }, + { + "file": "scss/widgets/base/radioGroup/_index.scss", + "line": 4, + "widget": "radioGroup", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$radiogroup-radio-value-container-padding-inline-end: 10px !default;", + "variable": "radiogroup-radio-value-container-padding-inline-end", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/radioGroup/_index.scss", + "setTo": "var(--dx-radio-button-value-container-padding-inline-end)" + }, + { + "file": "scss/widgets/base/radioGroup/_index.scss", + "line": 5, + "widget": "radioGroup", + "literals": [ + "17px" + ], + "occurrences": 1, + "marker": null, + "text": "$radiogroup-collection-column-gap: 17px !default;", + "variable": "radiogroup-collection-column-gap", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/radioGroup/_index.scss", + "setTo": "var(--dx-radio-group-collection-horizontal-column-gap)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 47, + "widget": "scheduler", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-common-collector-margin: 0 3px !default;", + "variable": "scheduler-common-collector-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-common-collector-margin)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 48, + "widget": "scheduler", + "literals": [ + "28px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-common-collector-size: 28px !default;", + "variable": "scheduler-common-collector-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-common-collector-size)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 54, + "widget": "scheduler", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-tooltip-shadow: 0 0 15px 0 rgba(0, 0, 0, 0.15) !default;", + "variable": "scheduler-tooltip-shadow", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-tooltip-shadow)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 56, + "widget": "scheduler", + "literals": [ + "360px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-tooltip-width: 360px !default;", + "variable": "scheduler-tooltip-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-tooltip-width)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 57, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-tooltip-content-padding: 5px !default;", + "variable": "scheduler-tooltip-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-tooltip-content-padding)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 58, + "widget": "scheduler", + "literals": [ + "7px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-tooltip-title-margin-top: 7px !default;", + "variable": "scheduler-tooltip-title-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-tooltip-title-margin-block-start)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 59, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-tooltip-title-margin-left: 5px !default;", + "variable": "scheduler-tooltip-title-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-tooltip-title-margin-inline-start)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 60, + "widget": "scheduler", + "literals": [ + "5px", + "10px" + ], + "occurrences": 2, + "marker": null, + "text": "$scheduler-tooltip-date-margin: 5px 10px !default;", + "variable": "scheduler-tooltip-date-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-tooltip-date-margin)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 61, + "widget": "scheduler", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-tooltip-remove-margin-top: 10px !default;", + "variable": "scheduler-tooltip-remove-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-tooltip-remove-margin-block-start)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 62, + "widget": "scheduler", + "literals": [ + "16px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-tooltip-subject-font-size: 16px !default;", + "variable": "scheduler-tooltip-subject-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-tooltip-subject-font-size)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 63, + "widget": "scheduler", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-tooltip-date-font-size: 12px !default;", + "variable": "scheduler-tooltip-date-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-tooltip-date-font-size)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 64, + "widget": "scheduler", + "literals": [ + "11px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-content-details-font-size: 11px !default;", + "variable": "scheduler-appointment-content-details-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-content-details-font-size)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 94, + "widget": "scheduler", + "literals": [ + "7px", + "15px" + ], + "occurrences": 3, + "marker": null, + "text": "$scheduler-appointment-dragging-shadow: 7px 7px 15px 0 rgba(50, 50, 50, 0.2) !default;", + "variable": "scheduler-appointment-dragging-shadow", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-dragging-shadow)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 129, + "widget": "scheduler", + "literals": [ + "18px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-icon-font-size: 18px !default;", + "variable": "scheduler-appointment-icon-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-icon-font-size)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 135, + "widget": "scheduler", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-details-font-size: 12px !default;", + "variable": "agenda-appointment-details-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-details-font-size)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 138, + "widget": "scheduler", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-reduced-icon-top: 3px !default;", + "variable": "scheduler-appointment-reduced-icon-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-reduced-icon-inset-block-start)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 139, + "widget": "scheduler", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-active-marker-border-radius: 4px !default;", + "variable": "scheduler-appointment-active-marker-border-radius", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-marker-border-radius-active)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 140, + "widget": "scheduler", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-content-details-margin-top: 2px !default;", + "variable": "scheduler-appointment-content-details-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-content-details-margin-block-start)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 141, + "widget": "scheduler", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-reduced-icon-rtl-left: 3px !default;", + "variable": "scheduler-appointment-reduced-icon-rtl-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-reduced-icon-rtl-inset-inline-start)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 142, + "widget": "scheduler", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-item-padding: 10px !default;", + "variable": "agenda-appointment-item-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-item-padding)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 143, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-item-border-radius: 5px !default;", + "variable": "agenda-appointment-item-border-radius", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-item-border-radius)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 144, + "widget": "scheduler", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-right-layout-margin-left: 10px !default;", + "variable": "agenda-appointment-right-layout-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-right-layout-margin-inline-start)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 145, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-allday-padding-right: 5px !default;", + "variable": "agenda-appointment-allday-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-allday-padding-inline-end)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 146, + "widget": "scheduler", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-resource-item-margin-left: 15px !default;", + "variable": "agenda-appointment-resource-item-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-resource-item-margin-inline-start)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 147, + "widget": "scheduler", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-resource-value-margin-left: 3px !default;", + "variable": "agenda-appointment-resource-value-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-resource-value-margin-inline-start)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 148, + "widget": "scheduler", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-rtl-margin-right: 10px !default;", + "variable": "agenda-appointment-rtl-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-rtl-margin-inline-end)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 192, + "widget": "scheduler", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-views-header-border: 2px solid !default;", + "variable": "scheduler-views-header-border", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-views-header-border)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 193, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-views-empty-cell-border-bottom: 1px solid !default;", + "variable": "scheduler-views-empty-cell-border-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-views-empty-cell-border-block-end)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 194, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-views-empty-cell-border-right: 1px solid !default;", + "variable": "scheduler-views-empty-cell-border-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-views-empty-cell-border-inline-end)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 195, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-views-empty-cell-border-left: 1px solid !default;", + "variable": "scheduler-views-empty-cell-border-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-views-empty-cell-border-inline-start)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 196, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-views-first-child-border-left: 1px solid transparent !default;", + "variable": "scheduler-views-first-child-border-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-views-first-child-border-inline-start)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 197, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-views-time-panel-border-bottom: 1px solid transparent !default;", + "variable": "scheduler-views-time-panel-border-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-views-time-panel-border-block-end)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 198, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-views-group-header-padding: 0 5px !default;", + "variable": "scheduler-views-group-header-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-views-group-header-padding)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 199, + "widget": "scheduler", + "literals": [ + "5px", + "10px" + ], + "occurrences": 2, + "marker": null, + "text": "$scheduler-views-group-header-padding-alt: 0 5px 0 10px !default;", + "variable": "scheduler-views-group-header-padding-alt", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-views-sidebar-group-header-padding)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 200, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-views-time-indicator-height: 1px !default;", + "variable": "scheduler-views-time-indicator-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-views-time-indicator-height)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 201, + "widget": "scheduler", + "literals": [ + "40px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-views-group-header-content-height: 40px !default;", + "variable": "scheduler-views-group-header-content-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-views-group-header-content-height)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 202, + "widget": "scheduler", + "literals": [ + "100px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-views-vertical-group-min-height: 100px !default;", + "variable": "scheduler-views-vertical-group-min-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-views-vertical-group-min-height)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 204, + "widget": "scheduler", + "literals": [ + "100px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-timeline-min-height: 100px !default;", + "variable": "scheduler-timeline-min-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-timeline-min-height)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 205, + "widget": "scheduler", + "literals": [ + "160px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-timeline-group-two-empty-cell-width: 160px !default;", + "variable": "scheduler-timeline-group-two-empty-cell-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-timeline-group-two-empty-cell-width)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 206, + "widget": "scheduler", + "literals": [ + "80px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-timeline-group-header-width: 80px !default;", + "variable": "scheduler-timeline-group-header-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-timeline-group-header-width)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 207, + "widget": "scheduler", + "literals": [ + "240px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-timeline-group-three-empty-cell-width: 240px !default;", + "variable": "scheduler-timeline-group-three-empty-cell-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-timeline-group-three-empty-cell-width)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 208, + "widget": "scheduler", + "literals": [ + "200px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-timeline-cell-width: 200px !default;", + "variable": "scheduler-timeline-cell-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-timeline-cell-width)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 209, + "widget": "scheduler", + "literals": [ + "70px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-agenda-left-column-width: 70px !default;", + "variable": "scheduler-agenda-left-column-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-left-column-width)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 210, + "widget": "scheduler", + "literals": [ + "18px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-group-header-agenda-font-size: 18px !default;", + "variable": "scheduler-group-header-agenda-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-group-header-agenda-font-size)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 211, + "widget": "scheduler", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-agenda-date-table-padding-top: 10px !default;", + "variable": "scheduler-agenda-date-table-padding-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-date-table-padding-block-start)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 212, + "widget": "scheduler", + "literals": [ + "50px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-renovation-virtual-row-height: 50px !default;", + "variable": "scheduler-renovation-virtual-row-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-virtual-row-height)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 268, + "widget": "scheduler", + "literals": [ + "7px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-content-horizontal-padding: 0 7px !default;", + "variable": "scheduler-appointment-content-horizontal-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-all-day-appointment-content-padding)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 269, + "widget": "scheduler", + "literals": [ + "9px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-recurrence-icon-top: 9px !default;", + "variable": "scheduler-appointment-recurrence-icon-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-recurrence-icon-inset-block-start)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 270, + "widget": "scheduler", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-header-panel-current-time-cell-height: 2px !default;", + "variable": "scheduler-header-panel-current-time-cell-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-header-panel-current-time-cell-height)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 271, + "widget": "scheduler", + "literals": [ + "25px", + "7px" + ], + "occurrences": 2, + "marker": null, + "text": "$scheduler-appointment-content-recurrence-padding: 0 25px 0 7px !default;", + "variable": "scheduler-appointment-content-recurrence-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-recurrence-appointment-content-padding)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 272, + "widget": "scheduler", + "literals": [ + "7px", + "25px" + ], + "occurrences": 2, + "marker": null, + "text": "$scheduler-rtl-padding: 0 7px 0 25px !default;", + "variable": "scheduler-rtl-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-rtl-padding)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 273, + "widget": "scheduler", + "literals": [ + "24px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-collector-width: 24px !default;", + "variable": "scheduler-appointment-collector-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-collector-width)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 274, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-content-padding-right: 5px !default;", + "variable": "scheduler-appointment-content-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-content-padding-inline-end)" + }, + { + "file": "scss/widgets/base/scheduler/appointment/_index.scss", + "line": 31, + "widget": "scheduler", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-reduced-icon-top: 3px !default;", + "variable": "scheduler-appointment-reduced-icon-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-reduced-icon-inset-block-start)" + }, + { + "file": "scss/widgets/base/scheduler/appointment/_index.scss", + "line": 32, + "widget": "scheduler", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-active-marker-border-radius: 4px !default;", + "variable": "scheduler-appointment-active-marker-border-radius", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-marker-border-radius-active)" + }, + { + "file": "scss/widgets/base/scheduler/appointment/_index.scss", + "line": 33, + "widget": "scheduler", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-content-details-margin-top: 2px !default;", + "variable": "scheduler-appointment-content-details-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-content-details-margin-block-start)" + }, + { + "file": "scss/widgets/base/scheduler/appointment/_index.scss", + "line": 34, + "widget": "scheduler", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-reduced-icon-rtl-left: 3px !default;", + "variable": "scheduler-appointment-reduced-icon-rtl-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-reduced-icon-rtl-inset-inline-start)" + }, + { + "file": "scss/widgets/base/scheduler/appointment/_index.scss", + "line": 62, + "widget": "scheduler", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-item-padding: 10px !default;", + "variable": "agenda-appointment-item-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-item-padding)" + }, + { + "file": "scss/widgets/base/scheduler/appointment/_index.scss", + "line": 63, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-item-border-radius: 5px !default;", + "variable": "agenda-appointment-item-border-radius", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-item-border-radius)" + }, + { + "file": "scss/widgets/base/scheduler/appointment/_index.scss", + "line": 64, + "widget": "scheduler", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-right-layout-margin-left: 10px !default;", + "variable": "agenda-appointment-right-layout-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-right-layout-margin-inline-start)" + }, + { + "file": "scss/widgets/base/scheduler/appointment/_index.scss", + "line": 65, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-allday-padding-right: 5px !default;", + "variable": "agenda-appointment-allday-padding-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-allday-padding-inline-end)" + }, + { + "file": "scss/widgets/base/scheduler/appointment/_index.scss", + "line": 66, + "widget": "scheduler", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-resource-item-margin-left: 15px !default;", + "variable": "agenda-appointment-resource-item-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-resource-item-margin-inline-start)" + }, + { + "file": "scss/widgets/base/scheduler/appointment/_index.scss", + "line": 67, + "widget": "scheduler", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-resource-value-margin-left: 3px !default;", + "variable": "agenda-appointment-resource-value-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-resource-value-margin-inline-start)" + }, + { + "file": "scss/widgets/base/scheduler/appointment/_index.scss", + "line": 68, + "widget": "scheduler", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$agenda-appointment-rtl-margin-right: 10px !default;", + "variable": "agenda-appointment-rtl-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-rtl-margin-inline-end)" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 77, + "widget": "scheduler", + "literals": [ + "100px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-timeline-min-height: 100px !default;", + "variable": "scheduler-timeline-min-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-timeline-min-height)" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 78, + "widget": "scheduler", + "literals": [ + "160px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-timeline-group-two-empty-cell-width: 160px !default;", + "variable": "scheduler-timeline-group-two-empty-cell-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-timeline-group-two-empty-cell-width)" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 79, + "widget": "scheduler", + "literals": [ + "80px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-timeline-group-header-width: 80px !default;", + "variable": "scheduler-timeline-group-header-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-timeline-group-header-width)" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 80, + "widget": "scheduler", + "literals": [ + "240px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-timeline-group-three-empty-cell-width: 240px !default;", + "variable": "scheduler-timeline-group-three-empty-cell-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-timeline-group-three-empty-cell-width)" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 81, + "widget": "scheduler", + "literals": [ + "200px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-timeline-cell-width: 200px !default;", + "variable": "scheduler-timeline-cell-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-timeline-cell-width)" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 95, + "widget": "scheduler", + "literals": [ + "70px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-agenda-left-column-width: 70px !default;", + "variable": "scheduler-agenda-left-column-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-left-column-width)" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 96, + "widget": "scheduler", + "literals": [ + "18px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-group-header-agenda-font-size: 18px !default;", + "variable": "scheduler-group-header-agenda-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-group-header-agenda-font-size)" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 97, + "widget": "scheduler", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-agenda-date-table-padding-top: 10px !default;", + "variable": "scheduler-agenda-date-table-padding-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-date-table-padding-block-start)" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 109, + "widget": "scheduler", + "literals": [ + "50px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-renovation-virtual-row-height: 50px !default;", + "variable": "scheduler-renovation-virtual-row-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-virtual-row-height)" + }, + { + "file": "scss/widgets/base/scheduler/views/agenda/_index.scss", + "line": 7, + "widget": "scheduler", + "literals": [ + "70px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-agenda-left-column-width: 70px !default;", + "variable": "scheduler-agenda-left-column-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-left-column-width)" + }, + { + "file": "scss/widgets/base/scheduler/views/agenda/_index.scss", + "line": 8, + "widget": "scheduler", + "literals": [ + "18px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-group-header-agenda-font-size: 18px !default;", + "variable": "scheduler-group-header-agenda-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-group-header-agenda-font-size)" + }, + { + "file": "scss/widgets/base/scheduler/views/timelines/_index.scss", + "line": 9, + "widget": "scheduler", + "literals": [ + "100px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-timeline-min-height: 100px !default;", + "variable": "scheduler-timeline-min-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-timeline-min-height)" + }, + { + "file": "scss/widgets/base/scrollable/_index.scss", + "line": 5, + "widget": "scrollable", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollable-scroll-width: 5px !default;", + "variable": "scrollable-scroll-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollable/_index.scss", + "setTo": "var(--dx-scrollable-scroll-width)" + }, + { + "file": "scss/widgets/base/scrollable/_index.scss", + "line": 6, + "widget": "scrollable", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollable-scroll-height: 5px !default;", + "variable": "scrollable-scroll-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollable/_index.scss", + "setTo": "var(--dx-scrollable-scroll-height)" + }, + { + "file": "scss/widgets/base/scrollable/_index.scss", + "line": 7, + "widget": "scrollable", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$scrollable-scroll-padding: 2px !default;", + "variable": "scrollable-scroll-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollable/_index.scss", + "setTo": "var(--dx-scrollable-scroll-padding)" + }, + { + "file": "scss/widgets/base/splitter/_index.scss", + "line": 2, + "widget": "splitter", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$splitter-resize-handle-gap: 8px !default;", + "variable": "splitter-resize-handle-gap", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/splitter/_index.scss", + "setTo": "var(--dx-splitter-resize-handle-gap)" + }, + { + "file": "scss/widgets/base/stepper/layout/step/_mixins.scss", + "line": 77, + "widget": "stepper", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$indicator-ring-inset: 2px,", + "variable": "indicator-ring-inset", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/stepper/layout/step/_mixins.scss", + "line": 78, + "widget": "stepper", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$indicator-ring-size: 4px,", + "variable": "indicator-ring-size", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/stepper/layout/step/_mixins.scss", + "line": 79, + "widget": "stepper", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$indicator-halo-size: 8px,", + "variable": "indicator-halo-size", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/textEditor/_index.scss", + "line": 6, + "widget": "textEditor", + "literals": [ + "34px" + ], + "occurrences": 1, + "marker": null, + "text": "$texteditor-clear-button-area-width: 34px !default;", + "variable": "texteditor-clear-button-area-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/textEditor/_index.scss", + "setTo": "var(--dx-text-editor-clear-button-width)" + }, + { + "file": "scss/widgets/base/timeView/_index.scss", + "line": 4, + "widget": "timeView", + "literals": [ + "70px" + ], + "occurrences": 1, + "marker": null, + "text": "$timeview-numberbox-width: 70px !default;", + "variable": "timeview-numberbox-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/timeView/_index.scss", + "setTo": "var(--dx-time-view-field-number-box-width)" + }, + { + "file": "scss/widgets/base/timeView/_index.scss", + "line": 5, + "widget": "timeView", + "literals": [ + "110px" + ], + "occurrences": 1, + "marker": null, + "text": "$timeview-numberbox-spin-touch-friendly-width: 110px !default;", + "variable": "timeview-numberbox-spin-touch-friendly-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/timeView/_index.scss", + "setTo": "var(--dx-time-view-field-number-box-spin-touch-friendly-width)" + }, + { + "file": "scss/widgets/base/toolbar/_index.scss", + "line": 4, + "widget": "toolbar", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$toolbar-item-padding: 0 5px !default;", + "variable": "toolbar-item-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/toolbar/_index.scss", + "setTo": "var(--dx-toolbar-item-padding)" + }, + { + "file": "scss/widgets/base/toolbar/_index.scss", + "line": 5, + "widget": "toolbar", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$toolbar-group-margin: 0 10px !default;", + "variable": "toolbar-group-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/toolbar/_index.scss", + "setTo": "var(--dx-toolbar-group-margin)" + }, + { + "file": "scss/widgets/base/toolbar/_index.scss", + "line": 6, + "widget": "toolbar", + "literals": [ + "150px" + ], + "occurrences": 1, + "marker": null, + "text": "$toolbar-texteditor-width: 150px !default;", + "variable": "toolbar-texteditor-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/toolbar/_index.scss", + "setTo": "var(--dx-toolbar-text-editor-width)" + }, + { + "file": "scss/widgets/base/treeList/_index.scss", + "line": 19, + "widget": "treeList", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$treelist-expandable-node-line-height: 1px !default;", + "variable": "treelist-expandable-node-line-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/treeList/_index.scss", + "setTo": "var(--dx-tree-list-empty-space-height)" + }, + { + "file": "scss/widgets/base/treeList/_index.scss", + "line": 24, + "widget": "treeList", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$treelist-sticky-column-border: 2px solid !default;", + "variable": "treelist-sticky-column-border", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/treeList/_index.scss", + "setTo": "var(--dx-tree-list-sticky-column-border)" + }, + { + "file": "scss/widgets/base/treeList/_index.scss", + "line": 25, + "widget": "treeList", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$treelist-cell-focus-outline: 2px solid !default;", + "variable": "treelist-cell-focus-outline", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/treeList/_index.scss", + "setTo": "var(--dx-tree-list-cell-outline-focused)" + }, + { + "file": "scss/widgets/base/treeList/_index.scss", + "line": 48, + "widget": "treeList", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$treelist-header-filter-outline: 2px solid !default;", + "variable": "treelist-header-filter-outline", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/treeList/_index.scss", + "setTo": "var(--dx-grid-outline-focused)" + }, + { + "file": "scss/widgets/base/treeList/_index.scss", + "line": 49, + "widget": "treeList", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$treelist-header-filter-outline-offset: 2px !default;", + "variable": "treelist-header-filter-outline-offset", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/treeList/_index.scss", + "setTo": "var(--dx-tree-list-outline-offset-focused)" + }, + { + "file": "scss/widgets/base/treeList/_index.scss", + "line": 50, + "widget": "treeList", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$treelist-button-margin-left: 10px !default;", + "variable": "treelist-button-margin-left", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/treeList/_index.scss", + "setTo": "var(--dx-tree-list-form-buttons-margin-inline-start)" + }, + { + "file": "scss/widgets/base/treeList/_index.scss", + "line": 51, + "widget": "treeList", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$treelist-button-margin-top: 10px !default;", + "variable": "treelist-button-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/treeList/_index.scss", + "setTo": "var(--dx-tree-list-form-buttons-margin-block-start)" + }, + { + "file": "scss/widgets/base/treeList/_index.scss", + "line": 52, + "widget": "treeList", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$treelist-error-message-margin-bottom: 20px !default;", + "variable": "treelist-error-message-margin-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/treeList/_index.scss", + "setTo": "var(--dx-tree-list-error-message-margin-block-end)" + }, + { + "file": "scss/widgets/base/treeList/_index.scss", + "line": 53, + "widget": "treeList", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$treelist-button-margin-right: 10px !default;", + "variable": "treelist-button-margin-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/treeList/_index.scss", + "setTo": "var(--dx-tree-list-form-buttons-rtl-margin-inline-start)" + }, + { + "file": "scss/widgets/base/treeView/_index.scss", + "line": 11, + "widget": "treeView", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$treeview-select-all-item-border-bottom: 1px solid !default;", + "variable": "treeview-select-all-item-border-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/treeView/_index.scss", + "setTo": "var(--dx-tree-view-select-all-item-border-block-end)" + }, + { + "file": "scss/widgets/base/treeView/_index.scss", + "line": 12, + "widget": "treeView", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$treeview-border-visible-border: 1px solid !default;", + "variable": "treeview-border-visible-border", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/treeView/_index.scss", + "setTo": "var(--dx-tree-view-border-visible-border)" + } + ] +} From 31e8c92f3ea9946d5b5ae11bd06272f2bdb78f2a Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Mon, 31 Aug 2026 14:13:36 +0200 Subject: [PATCH 02/25] Tokenize recurrenceEditor --- .../scss/widgets/base/_recurrenceEditor.scss | 7 +-- .../fluent-next/recurrenceEditor/_index.scss | 11 ++-- .../fluent-next/recurrenceEditor/_public.scss | 1 + .../fluent-next/recurrenceEditor/_sizes.scss | 3 ++ .../tests/base-size-markers.baseline.json | 3 +- .../tools/sizes/lists/BASE-SIZES.md | 16 ++---- .../tools/sizes/lists/base-owned.json | 44 ++------------- .../tools/sizes/lists/theme-settable.json | 54 +++++++++++++++++-- 8 files changed, 71 insertions(+), 68 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/_recurrenceEditor.scss b/packages/devextreme-scss/scss/widgets/base/_recurrenceEditor.scss index 28f826acb54d..7868303a93c2 100644 --- a/packages/devextreme-scss/scss/widgets/base/_recurrenceEditor.scss +++ b/packages/devextreme-scss/scss/widgets/base/_recurrenceEditor.scss @@ -1,6 +1,7 @@ -$recurrence-interval-number-box-margin-top: 25px; -$recurrence-radio-group-item-padding: 10px; -$recurrence-button-group-item-padding: 8px; +// Design sizing values (parametrizable; fluent-next injects tokens) +$recurrence-interval-number-box-margin-top: 25px !default; +$recurrence-radio-group-item-padding: 10px !default; +$recurrence-button-group-item-padding: 8px !default; .dx-recurrence-repeat-on, .dx-recurrence-numberbox-interval-wrapper { diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/recurrenceEditor/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/recurrenceEditor/_index.scss index 0172d2cdaac8..71ea134a6df0 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/recurrenceEditor/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/recurrenceEditor/_index.scss @@ -1,7 +1,11 @@ @use "colors" as *; @use "sizes" as *; @use "../sizes" as *; -@use "../../base/recurrenceEditor" ; +@use "../../base/recurrenceEditor" with ( + $recurrence-interval-number-box-margin-top: var(--dx-recurrence-editor-interval-number-box-margin-block-start), + $recurrence-radio-group-item-padding: var(--dx-recurrence-editor-radio-group-item-padding-block-end), + $recurrence-button-group-item-padding: var(--dx-recurrence-editor-button-group-padding), +); .dx-recurrence-numberbox-interval { margin-right: var(--dx-recurrence-editor-number-box-margin); @@ -9,14 +13,9 @@ .dx-recurrence-numberbox-interval-label { font-size: $global-font-size; - margin-top: var(--dx-recurrence-editor-interval-number-box-margin-block-start); } .dx-recurrence-button-group { - .dx-button-content { - padding: var(--dx-recurrence-editor-button-group-padding); - } - .dx-buttongroup-wrapper > div { min-width: 0; } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/recurrenceEditor/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/recurrenceEditor/_public.scss index c635ec8e14c2..7a22688ed3ed 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/recurrenceEditor/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/recurrenceEditor/_public.scss @@ -5,6 +5,7 @@ --dx-recurrence-editor-count-number-box-margin-block-start: #{$recurrence-editor-count-number-box-margin-block-start}; --dx-recurrence-editor-interval-number-box-margin-block-start: #{$recurrence-editor-interval-number-box-margin-block-start}; --dx-recurrence-editor-number-box-margin: #{$recurrence-editor-number-box-margin}; + --dx-recurrence-editor-radio-group-item-padding-block-end: #{$recurrence-editor-radio-group-item-padding-block-end}; --dx-recurrence-editor-radio-group-margin: #{$recurrence-editor-radio-group-margin}; --dx-recurrence-editor-until-date-box-margin-block-start: #{$recurrence-editor-until-date-box-margin-block-start}; } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/recurrenceEditor/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/recurrenceEditor/_sizes.scss index 1d24d8437abb..e3492f94ed7f 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/recurrenceEditor/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/recurrenceEditor/_sizes.scss @@ -17,6 +17,9 @@ $recurrence-editor-interval-number-box-margin-block-start: null !default; $recurrence-editor-interval-number-box-margin-block-start: ds.$spacing-220 !default; } +// Base-layer sizing injected with design tokens (wave B4) +$recurrence-editor-radio-group-item-padding-block-end: ds.$spacing-100 !default; + // Values hoisted from style-file literals (tokenized) $recurrence-editor-number-box-margin: ds.$spacing-110 !default; $recurrence-editor-button-group-padding: ds.$spacing-60 !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 3c26e6996e16..c451bc171af9 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,6 +1,6 @@ { "openKnobs": 0, - "unclassified": 396, + "unclassified": 393, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, @@ -19,7 +19,6 @@ "diagram": 4, "treeList": 4, "pagination": 3, - "recurrenceEditor": 3, "colorBox": 3, "switch": 3, "timeView": 3, diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index bfd4d9a47c0a..d9f86c8f15e5 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -14,12 +14,12 @@ and carries a marker saying why. | a raw grep of the layer | 782 | | …of those, inside comments (commented-out code, prose) | 5 | | **in code** | **777** | -| — the theme can already set from outside | 373 | -| — nailed into the shared layer | 404 | +| — the theme can already set from outside | 376 | +| — nailed into the shared layer | 401 | ## What the theme can already set -373 occurrences in 321 `!default` variables. fluent-next already passes 370; 0 are open knobs nobody turns. +376 occurrences in 324 `!default` variables. fluent-next already passes 373; 0 are open knobs nobody turns. ## What is nailed into the layer @@ -42,7 +42,6 @@ and carries a marker saying why. | diagram | | 1 | | 3 | | **4** | | treeList | | | 1 | | 3 | **4** | | pagination | 1 | 2 | | | | **3** | -| recurrenceEditor | | 3 | | | | **3** | | colorBox | 1 | 1 | | 1 | | **3** | | switch | 2 | | 1 | | | **3** | | timeView | 2 | 1 | | | | **3** | @@ -681,15 +680,6 @@ and carries a marker saying why. - `scss/widgets/base/_pagination.scss:81` · inline `padding: $pagination-paddings - 1px $pagination-page-horizontal-padding;` -### recurrenceEditor — 3 - -- `scss/widgets/base/_recurrenceEditor.scss:1` · local-var - `$recurrence-interval-number-box-margin-top: 25px;` -- `scss/widgets/base/_recurrenceEditor.scss:2` · local-var - `$recurrence-radio-group-item-padding: 10px;` -- `scss/widgets/base/_recurrenceEditor.scss:3` · local-var - `$recurrence-button-group-item-padding: 8px;` - ### colorBox — 3 - `scss/widgets/base/colorBox/_index.scss:5` · local-var diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 2f94b365b3bc..663d5c883964 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,10 +6,10 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 404, + "occurrences": 401, "byCategory": { "inline": 187, - "local-var": 99, + "local-var": 96, "geometry": 95, "calc": 11, "mixin-arg": 6, @@ -34,7 +34,6 @@ "diagram": 4, "treeList": 4, "pagination": 3, - "recurrenceEditor": 3, "colorBox": 3, "switch": 3, "timeView": 3, @@ -58,7 +57,7 @@ "popover": 1, "stepper": 1 }, - "unmarked": 396, + "unmarked": 393, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, @@ -77,7 +76,6 @@ "diagram": 4, "treeList": 4, "pagination": 3, - "recurrenceEditor": 3, "colorBox": 3, "switch": 3, "timeView": 3, @@ -632,42 +630,6 @@ "text": "padding: $pagination-paddings - 1px $pagination-page-horizontal-padding;", "category": "inline" }, - { - "file": "scss/widgets/base/_recurrenceEditor.scss", - "line": 1, - "widget": "recurrenceEditor", - "literals": [ - "25px" - ], - "occurrences": 1, - "marker": null, - "text": "$recurrence-interval-number-box-margin-top: 25px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/_recurrenceEditor.scss", - "line": 2, - "widget": "recurrenceEditor", - "literals": [ - "10px" - ], - "occurrences": 1, - "marker": null, - "text": "$recurrence-radio-group-item-padding: 10px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/_recurrenceEditor.scss", - "line": 3, - "widget": "recurrenceEditor", - "literals": [ - "8px" - ], - "occurrences": 1, - "marker": null, - "text": "$recurrence-button-group-item-padding: 8px;", - "category": "local-var" - }, { "file": "scss/widgets/base/_resizable.scss", "line": 2, diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 340ea589174c..2b5e57c01115 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 373, - "variables": 321, - "injected": 370, + "occurrences": 376, + "variables": 324, + "injected": 373, "open": 0, "parameters": 3 }, @@ -1184,6 +1184,54 @@ "setBy": "scss/widgets/fluent-next/progressBar/_index.scss", "setTo": "var(--dx-progress-bar-status-padding-inline-start)" }, + { + "file": "scss/widgets/base/_recurrenceEditor.scss", + "line": 2, + "widget": "recurrenceEditor", + "literals": [ + "25px" + ], + "occurrences": 1, + "marker": null, + "text": "$recurrence-interval-number-box-margin-top: 25px !default;", + "variable": "recurrence-interval-number-box-margin-top", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/recurrenceEditor/_index.scss", + "setTo": "var(--dx-recurrence-editor-interval-number-box-margin-block-start)" + }, + { + "file": "scss/widgets/base/_recurrenceEditor.scss", + "line": 3, + "widget": "recurrenceEditor", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$recurrence-radio-group-item-padding: 10px !default;", + "variable": "recurrence-radio-group-item-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/recurrenceEditor/_index.scss", + "setTo": "var(--dx-recurrence-editor-radio-group-item-padding-block-end)" + }, + { + "file": "scss/widgets/base/_recurrenceEditor.scss", + "line": 4, + "widget": "recurrenceEditor", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$recurrence-button-group-item-padding: 8px !default;", + "variable": "recurrence-button-group-item-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/recurrenceEditor/_index.scss", + "setTo": "var(--dx-recurrence-editor-button-group-padding)" + }, { "file": "scss/widgets/base/_scrollView.scss", "line": 4, From 8ee225121d0cde0e9083f6d3c6bfed8ac7852ad3 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 09:04:28 +0200 Subject: [PATCH 03/25] Tokenize loadindicator --- .../scss/widgets/base/_loadIndicator.scss | 33 ++++++++++++---- .../fluent-next/loadIndicator/_index.scss | 7 +++- .../fluent-next/loadIndicator/_public.scss | 2 + .../fluent-next/loadIndicator/_sizes.scss | 11 ++++++ .../tests/base-size-markers.baseline.json | 3 +- .../devextreme-scss/tests/calc-budget.json | 8 ++-- .../tools/review/nested-scopes.json | 3 +- .../tools/sizes/lists/BASE-SIZES.md | 14 ++----- .../tools/sizes/lists/base-owned.json | 32 ++-------------- .../tools/sizes/lists/theme-settable.json | 38 +++++++++++++++++-- 10 files changed, 93 insertions(+), 58 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/_loadIndicator.scss b/packages/devextreme-scss/scss/widgets/base/_loadIndicator.scss index ac6f0ec94503..5ddb76f321cc 100644 --- a/packages/devextreme-scss/scss/widgets/base/_loadIndicator.scss +++ b/packages/devextreme-scss/scss/widgets/base/_loadIndicator.scss @@ -1,7 +1,26 @@ @use "sass:math"; - -$loadindicator-width: 32px; -$loadindicator-height: 32px; +@use "sass:meta"; + +// Design sizing values (parametrizable; fluent-next injects tokens) +$loadindicator-width: 32px !default; +$loadindicator-height: 32px !default; + +/* + * The container centres the indicator by pulling it back half its own size. A theme that feeds a + * var() into the sizes above leaves Sass nothing to halve, so the halves are knobs of their own: the + * theme passes one derived token instead of four calc() expressions reaching the browser. The + * defaults compute at build time and keep every other theme byte-identical. + */ +$loadindicator-offset-top: if( + meta.type-of($loadindicator-height) == number, + math.div(-$loadindicator-height, 2), + calc(#{$loadindicator-height} / -2) +) !default; +$loadindicator-offset-left: if( + meta.type-of($loadindicator-width) == number, + math.div(-$loadindicator-width, 2), + calc(#{$loadindicator-width} / -2) +) !default; .dx-loadindicator { width: $loadindicator-width; @@ -49,12 +68,12 @@ $loadindicator-height: 32px; top: 50%; left: 50%; position: absolute; - margin-top: math.div(-1 * $loadindicator-height, 2); - margin-left: math.div(-1 * $loadindicator-width, 2); + margin-top: $loadindicator-offset-top; + margin-left: $loadindicator-offset-left; &.dx-loadindicator { - margin-top: math.div(-1 * $loadindicator-height, 2); - margin-left: math.div(-1 * $loadindicator-width, 2); + margin-top: $loadindicator-offset-top; + margin-left: $loadindicator-offset-left; } } } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/loadIndicator/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/loadIndicator/_index.scss index bea6c9e80933..7e165526c4d6 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/loadIndicator/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/loadIndicator/_index.scss @@ -1,6 +1,11 @@ @use "colors" as *; @use "sizes" as *; -@use "../../base/loadIndicator" as baseLoadIndicator; +@use "../../base/loadIndicator" as baseLoadIndicator with ( + $loadindicator-width: var(--dx-load-indicator-size), + $loadindicator-height: var(--dx-load-indicator-size), + $loadindicator-offset-top: var(--dx-load-indicator-offset), + $loadindicator-offset-left: var(--dx-load-indicator-offset), +); .dx-loadindicator { line-height: 100%; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/loadIndicator/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/loadIndicator/_public.scss index f5477c62d129..ac400afe6ea7 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/loadIndicator/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/loadIndicator/_public.scss @@ -2,9 +2,11 @@ @use "sizes" as *; @mixin publish { + --dx-load-indicator-offset: #{$load-indicator-offset}; --dx-load-indicator-segment-border: #{$load-indicator-segment-border}; --dx-load-indicator-segment-border-width: #{$load-indicator-segment-border-width}; --dx-load-indicator-segment-inner-border: #{$load-indicator-segment-inner-border}; + --dx-load-indicator-size: #{$load-indicator-size}; --dx-load-indicator-sparkle-stop-1-bg: #{$load-indicator-sparkle-stop-1-bg}; --dx-load-indicator-sparkle-stop-2-bg: #{$load-indicator-sparkle-stop-2-bg}; --dx-load-indicator-sparkle-stop-3-bg: #{$load-indicator-sparkle-stop-3-bg}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/loadIndicator/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/loadIndicator/_sizes.scss index c29eb0bbf777..a04376bc8660 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/loadIndicator/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/loadIndicator/_sizes.scss @@ -1,2 +1,13 @@ +@use "../../../_design-system/variables/ds" as ds; + // Values hoisted from style-file literals (tokenized) $load-indicator-segment-border-width: 0.12em !default; // dx-relative: scales with the parent font-size + +// Base-layer sizing injected with design tokens (wave B5) +$load-indicator-size: ds.$spacing-320 !default; + +/* + * Derived once and published, so the four centring declarations in the base layer read a var() + * instead of each shipping its own calc() (see the tier-published derived sizes of #34927). + */ +$load-indicator-offset: calc(#{$load-indicator-size} / -2) !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index c451bc171af9..09f07f1ee913 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,6 +1,6 @@ { "openKnobs": 0, - "unclassified": 393, + "unclassified": 391, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, @@ -23,7 +23,6 @@ "switch": 3, "timeView": 3, "icon_fonts": 2, - "loadIndicator": 2, "numberBox": 2, "resizable": 2, "slider": 2, diff --git a/packages/devextreme-scss/tests/calc-budget.json b/packages/devextreme-scss/tests/calc-budget.json index 7cc4d7803a33..49f8cba54a1e 100644 --- a/packages/devextreme-scss/tests/calc-budget.json +++ b/packages/devextreme-scss/tests/calc-budget.json @@ -1,18 +1,18 @@ { "dx.fluent-next.blue.dark.compact.css": { - "calcOccurrences": 348, + "calcOccurrences": 349, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.dark.css": { - "calcOccurrences": 348, + "calcOccurrences": 349, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.compact.css": { - "calcOccurrences": 348, + "calcOccurrences": 349, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.css": { - "calcOccurrences": 348, + "calcOccurrences": 349, "declarationsWithDeepCalc": 5 } } diff --git a/packages/devextreme-scss/tools/review/nested-scopes.json b/packages/devextreme-scss/tools/review/nested-scopes.json index e9b612ac8ab0..5d4a6099bfaf 100644 --- a/packages/devextreme-scss/tools/review/nested-scopes.json +++ b/packages/devextreme-scss/tools/review/nested-scopes.json @@ -337,7 +337,8 @@ "load-indicator": [ "dx-loadindicator-content-circle", "dx-loadindicator-content-sparkle", - "dx-loadindicator-segment-inner" + "dx-loadindicator-segment-inner", + "dx-loadindicator-wrapper" ], "lookup": [ "dx-dropdowneditor-active", diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index d9f86c8f15e5..e8e4d4219f71 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -14,12 +14,12 @@ and carries a marker saying why. | a raw grep of the layer | 782 | | …of those, inside comments (commented-out code, prose) | 5 | | **in code** | **777** | -| — the theme can already set from outside | 376 | -| — nailed into the shared layer | 401 | +| — the theme can already set from outside | 378 | +| — nailed into the shared layer | 399 | ## What the theme can already set -376 occurrences in 324 `!default` variables. fluent-next already passes 373; 0 are open knobs nobody turns. +378 occurrences in 326 `!default` variables. fluent-next already passes 375; 0 are open knobs nobody turns. ## What is nailed into the layer @@ -46,7 +46,6 @@ and carries a marker saying why. | switch | 2 | | 1 | | | **3** | | timeView | 2 | 1 | | | | **3** | | icon_fonts | 2 | | | | | **2** | -| loadIndicator | | 2 | | | | **2** | | numberBox | | 2 | | | | **2** | | resizable | | 2 | | | | **2** | | slider | | 2 | | | | **2** | @@ -714,13 +713,6 @@ and carries a marker saying why. - `scss/widgets/base/_icon_fonts.scss:675` · inline `font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes` -### loadIndicator — 2 - -- `scss/widgets/base/_loadIndicator.scss:3` · local-var - `$loadindicator-width: 32px;` -- `scss/widgets/base/_loadIndicator.scss:4` · local-var - `$loadindicator-height: 32px;` - ### numberBox — 2 - `scss/widgets/base/_numberBox.scss:5` · local-var diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 663d5c883964..365b0c7ba6da 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,11 +6,11 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 401, + "occurrences": 399, "byCategory": { "inline": 187, - "local-var": 96, "geometry": 95, + "local-var": 94, "calc": 11, "mixin-arg": 6, "structural": 4, @@ -38,7 +38,6 @@ "switch": 3, "timeView": 3, "icon_fonts": 2, - "loadIndicator": 2, "multiView": 2, "numberBox": 2, "resizable": 2, @@ -57,7 +56,7 @@ "popover": 1, "stepper": 1 }, - "unmarked": 393, + "unmarked": 391, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, @@ -80,7 +79,6 @@ "switch": 3, "timeView": 3, "icon_fonts": 2, - "loadIndicator": 2, "numberBox": 2, "resizable": 2, "slider": 2, @@ -522,30 +520,6 @@ "text": "font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes", "category": "inline" }, - { - "file": "scss/widgets/base/_loadIndicator.scss", - "line": 3, - "widget": "loadIndicator", - "literals": [ - "32px" - ], - "occurrences": 1, - "marker": null, - "text": "$loadindicator-width: 32px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/_loadIndicator.scss", - "line": 4, - "widget": "loadIndicator", - "literals": [ - "32px" - ], - "occurrences": 1, - "marker": null, - "text": "$loadindicator-height: 32px;", - "category": "local-var" - }, { "file": "scss/widgets/base/_multiView.scss", "line": 39, diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 2b5e57c01115..7dedb50c7ece 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 376, - "variables": 324, - "injected": 373, + "occurrences": 378, + "variables": 326, + "injected": 375, "open": 0, "parameters": 3 }, @@ -702,6 +702,38 @@ "setBy": "scss/widgets/fluent-next/gallery/_index.scss", "setTo": "var(--dx-gallery-indicator-item-margin)" }, + { + "file": "scss/widgets/base/_loadIndicator.scss", + "line": 5, + "widget": "loadIndicator", + "literals": [ + "32px" + ], + "occurrences": 1, + "marker": null, + "text": "$loadindicator-width: 32px !default;", + "variable": "loadindicator-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/loadIndicator/_index.scss", + "setTo": "var(--dx-load-indicator-size)" + }, + { + "file": "scss/widgets/base/_loadIndicator.scss", + "line": 6, + "widget": "loadIndicator", + "literals": [ + "32px" + ], + "occurrences": 1, + "marker": null, + "text": "$loadindicator-height: 32px !default;", + "variable": "loadindicator-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/loadIndicator/_index.scss", + "setTo": "var(--dx-load-indicator-size)" + }, { "file": "scss/widgets/base/_loadPanel.scss", "line": 4, From 90beb003856c40e554da998495c5d1ba4930ec44 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 09:26:52 +0200 Subject: [PATCH 04/25] Tokenize filemanager --- .../scss/widgets/base/fileManager/_index.scss | 14 +++-- .../fluent-next/fileManager/_index.scss | 1 + .../fluent-next/fileManager/_public.scss | 1 + .../fluent-next/fileManager/_sizes.scss | 8 +++ .../tests/base-size-markers.baseline.json | 3 +- .../devextreme-scss/tests/calc-budget.json | 8 +-- .../tools/naming/derive-registries.mjs | 6 +- .../tools/naming/registries.json | 4 +- .../devextreme-scss/tools/sizes/inventory.mjs | 7 ++- .../tools/sizes/lists/BASE-SIZES.md | 20 +------ .../tools/sizes/lists/base-owned.json | 57 +++++++------------ .../tools/sizes/lists/theme-settable.json | 22 ++++++- 12 files changed, 81 insertions(+), 70 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/fileManager/_index.scss b/packages/devextreme-scss/scss/widgets/base/fileManager/_index.scss index b1ec808babab..6ebe15605fb6 100644 --- a/packages/devextreme-scss/scss/widgets/base/fileManager/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/fileManager/_index.scss @@ -61,6 +61,10 @@ $filemanager-progress-bold-font-weight: 600 !default; $filemanager-error-message-font-size: 0.85em !default; // dx-relative $filemanager-drawer-panel-content-width: 30% !default; // dx-relative-% + +// Half the difference between the splitter border and bar, centring the wrapper on the bar. +$filemanager-splitter-wrapper-right: 3px !default; + .dx-filemanager { height: $filemanager-root-height; border: $filemanager-root-border; @@ -210,7 +214,7 @@ $filemanager-drawer-panel-content-width: 30% !default; // dx-relative-% .dx-splitter-wrapper.dx-splitter-initial, .dx-splitter-wrapper.dx-splitter-inactive { - right: 3px; // (dx-splitter-border width - dx-splitter-bar width) / 2 + right: $filemanager-splitter-wrapper-right; } .dx-filemanager-container { @@ -296,14 +300,14 @@ $filemanager-drawer-panel-content-width: 30% !default; // dx-relative-% .dx-filemanager-notification-container { position: absolute; - top: -5000px; - left: -5000px; + top: -5000px; // dx-structural: parks the container off-screen until it is positioned + left: -5000px; // dx-structural: parks the container off-screen until it is positioned } .dx-filemanager-editing-container { position: absolute; - top: -5000px; - left: -5000px; + top: -5000px; // dx-structural: parks the container off-screen until it is positioned + left: -5000px; // dx-structural: parks the container off-screen until it is positioned } .dx-row { diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/fileManager/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/fileManager/_index.scss index 8788ef113577..77e31a5621bf 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/fileManager/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/fileManager/_index.scss @@ -3,6 +3,7 @@ @use "../sizes" as *; @use "../../base/fileManager" with ( $filemanager-root-height: var(--dx-file-manager-height), + $filemanager-splitter-wrapper-right: var(--dx-file-manager-splitter-wrapper-inset-inline-end), $filemanager-root-border: var(--dx-file-manager-border-width) solid, $filemanager-overlay-content-min-width: var(--dx-file-manager-overlay-content-min-width), $filemanager-overlay-content-max-width: var(--dx-file-manager-overlay-content-max-width), diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/fileManager/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/fileManager/_public.scss index a8516dc131d7..a98b9ac51842 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/fileManager/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/fileManager/_public.scss @@ -79,6 +79,7 @@ --dx-file-manager-progress-panel-width: #{$file-manager-progress-panel-width}; --dx-file-manager-progress-title-font-size: #{$file-manager-progress-title-font-size}; --dx-file-manager-progress-title-font-weight: #{$file-manager-progress-title-font-weight}; + --dx-file-manager-splitter-wrapper-inset-inline-end: #{$file-manager-splitter-wrapper-inset-inline-end}; --dx-file-manager-thumbnails-item-border: #{$file-manager-thumbnails-item-border}; --dx-file-manager-thumbnails-item-content-padding: #{$file-manager-thumbnails-item-content-padding}; --dx-file-manager-thumbnails-item-height: #{$file-manager-thumbnails-item-height}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/fileManager/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/fileManager/_sizes.scss index 68f430c8e5f5..0ce0205a7662 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/fileManager/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/fileManager/_sizes.scss @@ -1,6 +1,7 @@ @use "../sizes" as *; @use "../toolbar/sizes" as toolbarSizes; @use "../../../_design-system/variables/ds" as ds; +@use "../splitterBar/sizes" as splitterBarSizes; $file-manager-toolbar-separator-height: null !default; $file-manager-toolbar-viewmode-width: null !default; @@ -121,3 +122,10 @@ $file-manager-dialog-name-editor-max-width: 340px !default; // dx-offscale: 340p $file-manager-dialog-name-editor-min-height: 180px !default; // dx-offscale: 180px $file-manager-dialog-name-editor-max-height: 180px !default; // dx-offscale: 180px $file-manager-progress-box-cancel-button-margin-block-start: ds.$spacing-50 !default; + +/* + * Base centres the splitter wrapper on the bar with half the difference between the border and + * the bar. Both are tokens here, so the relationship is derived instead of frozen at 3px: move + * either token and this follows. + */ +$file-manager-splitter-wrapper-inset-inline-end: calc((#{splitterBarSizes.$splitter-bar-border-width} - #{splitterBarSizes.$splitter-bar-width}) / 2) !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 09f07f1ee913..000a38dadd22 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,6 +1,6 @@ { "openKnobs": 0, - "unclassified": 391, + "unclassified": 386, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, @@ -12,7 +12,6 @@ "ui": 8, "scrollView": 7, "dataGrid": 5, - "fileManager": 5, "toolbar": 5, "sortable": 4, "calendar": 4, diff --git a/packages/devextreme-scss/tests/calc-budget.json b/packages/devextreme-scss/tests/calc-budget.json index 49f8cba54a1e..aa483bf48e3b 100644 --- a/packages/devextreme-scss/tests/calc-budget.json +++ b/packages/devextreme-scss/tests/calc-budget.json @@ -1,18 +1,18 @@ { "dx.fluent-next.blue.dark.compact.css": { - "calcOccurrences": 349, + "calcOccurrences": 350, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.dark.css": { - "calcOccurrences": 349, + "calcOccurrences": 350, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.compact.css": { - "calcOccurrences": 349, + "calcOccurrences": 350, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.css": { - "calcOccurrences": 349, + "calcOccurrences": 350, "declarationsWithDeepCalc": 5 } } diff --git a/packages/devextreme-scss/tools/naming/derive-registries.mjs b/packages/devextreme-scss/tools/naming/derive-registries.mjs index 06d5f79f8c9b..e3e2ef682a27 100644 --- a/packages/devextreme-scss/tools/naming/derive-registries.mjs +++ b/packages/devextreme-scss/tools/naming/derive-registries.mjs @@ -172,7 +172,9 @@ const OVERRIDES = { validation: ['text-editor'], filterBuilder: ['text-editor'], // the file manager's toolbar is a Toolbar - fileManager: ['toolbar'], + // …and it splits the dirs panel from the items view with a real Splitter, centring the + // wrapper on the bar from that widget's own border and bar widths + fileManager: ['toolbar', 'splitter-bar'], // the editor's spin buttons are real Buttons textEditor: ['button'], }, @@ -983,6 +985,8 @@ const OVERRIDES = { 'thumbnails', 'thumbnails-item', 'thumbnails-view-port', 'custom-thumbnail', 'spacer', 'progress-panel', 'progress-box', 'progress-title', 'progress-bar', 'close-button', 'large-icon', 'view-mode-button', 'tree-view-item', 'drop-zone-placeholder', + // wave B5: .dx-splitter-wrapper is a splitter box the file manager positions itself + 'splitter-wrapper', 'cancel-button', 'notification', 'container', 'separator', 'content', 'item', 'menu-item', 'popup', 'overlay', 'editor', 'button', 'icon', 'text', 'title', 'image', 'placeholder', 'drop-zone', diff --git a/packages/devextreme-scss/tools/naming/registries.json b/packages/devextreme-scss/tools/naming/registries.json index 56ab88754a9b..376aaf81f6e3 100644 --- a/packages/devextreme-scss/tools/naming/registries.json +++ b/packages/devextreme-scss/tools/naming/registries.json @@ -933,7 +933,8 @@ "text-editor" ], "fileManager": [ - "toolbar" + "toolbar", + "splitter-bar" ], "textEditor": [ "button" @@ -1794,6 +1795,7 @@ "view-mode-button", "tree-view-item", "drop-zone-placeholder", + "splitter-wrapper", "cancel-button", "notification", "container", diff --git a/packages/devextreme-scss/tools/sizes/inventory.mjs b/packages/devextreme-scss/tools/sizes/inventory.mjs index 2782d71814a5..79836eac3b85 100644 --- a/packages/devextreme-scss/tools/sizes/inventory.mjs +++ b/packages/devextreme-scss/tools/sizes/inventory.mjs @@ -44,7 +44,10 @@ const listsDir = join(here, 'lists'); * calc — already inside a calc(); a knob has to keep the arithmetic valid for both forms. * inline — a plain declaration, the ordinary case. */ -const OFF_SCREEN = /-?(?:9999|99999|10000|100000)px/; +/* A parking coordinate, not a size: nothing anyone designs is a thousand pixels across. */ +const OFF_SCREEN_PX = 1000; +const isOffScreen = (code) => (code.match(/-?\d*\.?\d+px\b/g) ?? []) + .some((literal) => Math.abs(parseFloat(literal)) >= OFF_SCREEN_PX); const GEOMETRY = /^(?:box-shadow|outline|outline-offset|outline-width|border|border-\w+|border-\w+-\w+|clip|clip-path)\s*:/; const codeOf = (text) => { @@ -56,7 +59,7 @@ const categoryOf = (code) => { if (/^\$[\w-]+\s*:/.test(code)) return 'local-var'; if (code.includes('@media') || code.includes('@container')) return 'media'; if (code.startsWith('@include') || code.startsWith('@mixin')) return 'mixin-arg'; - if (OFF_SCREEN.test(code)) return 'structural'; + if (isOffScreen(code)) return 'structural'; if (GEOMETRY.test(code)) return 'geometry'; if (code.includes('calc(')) return 'calc'; return 'inline'; diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index e8e4d4219f71..484273e4a938 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -14,12 +14,12 @@ and carries a marker saying why. | a raw grep of the layer | 782 | | …of those, inside comments (commented-out code, prose) | 5 | | **in code** | **777** | -| — the theme can already set from outside | 378 | -| — nailed into the shared layer | 399 | +| — the theme can already set from outside | 379 | +| — nailed into the shared layer | 398 | ## What the theme can already set -378 occurrences in 326 `!default` variables. fluent-next already passes 375; 0 are open knobs nobody turns. +379 occurrences in 327 `!default` variables. fluent-next already passes 376; 0 are open knobs nobody turns. ## What is nailed into the layer @@ -35,7 +35,6 @@ and carries a marker saying why. | ui | 8 | | | | | **8** | | scrollView | 5 | 2 | | | | **7** | | dataGrid | | | 3 | | 2 | **5** | -| fileManager | 5 | | | | | **5** | | toolbar | 1 | | 4 | | | **5** | | sortable | | | 4 | | | **4** | | calendar | 1 | | 3 | | | **4** | @@ -606,19 +605,6 @@ and carries a marker saying why. - `scss/widgets/base/dataGrid/layout/cell.scss:283` · geometry `outline-offset: -2px;` -### fileManager — 5 - -- `scss/widgets/base/fileManager/_index.scss:213` · inline - `right: 3px; // (dx-splitter-border width - dx-splitter-bar width) / 2` -- `scss/widgets/base/fileManager/_index.scss:299` · inline - `top: -5000px;` -- `scss/widgets/base/fileManager/_index.scss:300` · inline - `left: -5000px;` -- `scss/widgets/base/fileManager/_index.scss:305` · inline - `top: -5000px;` -- `scss/widgets/base/fileManager/_index.scss:306` · inline - `left: -5000px;` - ### toolbar — 5 - `scss/widgets/base/toolbar/_index.scss:101` · inline diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 365b0c7ba6da..0fcc03994943 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,14 +6,14 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 399, + "occurrences": 398, "byCategory": { - "inline": 187, + "inline": 182, "geometry": 95, "local-var": 94, "calc": 11, + "structural": 8, "mixin-arg": 6, - "structural": 4, "media": 2 }, "byWidget": { @@ -26,8 +26,8 @@ "cardView": 15, "ui": 8, "scrollView": 7, - "fileManager": 6, "dataGrid": 5, + "fileManager": 5, "toolbar": 5, "sortable": 4, "calendar": 4, @@ -56,7 +56,7 @@ "popover": 1, "stepper": 1 }, - "unmarked": 391, + "unmarked": 386, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, @@ -68,7 +68,6 @@ "ui": 8, "scrollView": 7, "dataGrid": 5, - "fileManager": 5, "toolbar": 5, "sortable": 4, "calendar": 4, @@ -1748,7 +1747,7 @@ }, { "file": "scss/widgets/base/fileManager/_index.scss", - "line": 84, + "line": 88, "widget": "fileManager", "literals": [ "431px" @@ -1760,63 +1759,51 @@ }, { "file": "scss/widgets/base/fileManager/_index.scss", - "line": 213, - "widget": "fileManager", - "literals": [ - "3px" - ], - "occurrences": 1, - "marker": null, - "text": "right: 3px; // (dx-splitter-border width - dx-splitter-bar width) / 2", - "category": "inline" - }, - { - "file": "scss/widgets/base/fileManager/_index.scss", - "line": 299, + "line": 303, "widget": "fileManager", "literals": [ "-5000px" ], "occurrences": 1, - "marker": null, - "text": "top: -5000px;", - "category": "inline" + "marker": "dx-structural", + "text": "top: -5000px; // dx-structural: parks the container off-screen until it is positioned", + "category": "structural" }, { "file": "scss/widgets/base/fileManager/_index.scss", - "line": 300, + "line": 304, "widget": "fileManager", "literals": [ "-5000px" ], "occurrences": 1, - "marker": null, - "text": "left: -5000px;", - "category": "inline" + "marker": "dx-structural", + "text": "left: -5000px; // dx-structural: parks the container off-screen until it is positioned", + "category": "structural" }, { "file": "scss/widgets/base/fileManager/_index.scss", - "line": 305, + "line": 309, "widget": "fileManager", "literals": [ "-5000px" ], "occurrences": 1, - "marker": null, - "text": "top: -5000px;", - "category": "inline" + "marker": "dx-structural", + "text": "top: -5000px; // dx-structural: parks the container off-screen until it is positioned", + "category": "structural" }, { "file": "scss/widgets/base/fileManager/_index.scss", - "line": 306, + "line": 310, "widget": "fileManager", "literals": [ "-5000px" ], "occurrences": 1, - "marker": null, - "text": "left: -5000px;", - "category": "inline" + "marker": "dx-structural", + "text": "left: -5000px; // dx-structural: parks the container off-screen until it is positioned", + "category": "structural" }, { "file": "scss/widgets/base/filterBuilder/_common.scss", diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 7dedb50c7ece..1a2bfb3efc62 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 378, - "variables": 326, - "injected": 375, + "occurrences": 379, + "variables": 327, + "injected": 376, "open": 0, "parameters": 3 }, @@ -3289,6 +3289,22 @@ "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", "setTo": "var(--dx-file-manager-progress-title-font-size)" }, + { + "file": "scss/widgets/base/fileManager/_index.scss", + "line": 66, + "widget": "fileManager", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$filemanager-splitter-wrapper-right: 3px !default;", + "variable": "filemanager-splitter-wrapper-right", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/fileManager/_index.scss", + "setTo": "var(--dx-file-manager-splitter-wrapper-inset-inline-end)" + }, { "file": "scss/widgets/base/filterBuilder/_index.scss", "line": 27, From 52176cfa2abd47d3dc032ccf9a646693e56fc818 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 09:51:24 +0200 Subject: [PATCH 05/25] Tokenize scrollView --- .../scss/widgets/base/_scrollView.scss | 19 +++-- .../fluent-next/scrollView/_index.scss | 5 +- .../fluent-next/scrollView/_public.scss | 3 + .../fluent-next/scrollView/_sizes.scss | 10 +++ .../tests/base-size-markers.baseline.json | 4 +- .../devextreme-scss/tests/calc-budget.json | 8 +-- .../tools/review/nested-scopes.json | 1 + .../tools/sizes/lists/BASE-SIZES.md | 72 +++++++++---------- .../tools/sizes/lists/base-owned.json | 40 +++-------- .../tools/sizes/lists/theme-settable.json | 60 ++++++++++++---- 10 files changed, 127 insertions(+), 95 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/_scrollView.scss b/packages/devextreme-scss/scss/widgets/base/_scrollView.scss index be797dd14148..979b771002f2 100644 --- a/packages/devextreme-scss/scss/widgets/base/_scrollView.scss +++ b/packages/devextreme-scss/scss/widgets/base/_scrollView.scss @@ -1,3 +1,4 @@ +@use "sass:meta"; @use "./mixins" as *; // Design sizing values (parametrizable; fluent-next injects tokens) @@ -13,9 +14,19 @@ $scrollview-scrollbottom-indicator-margin: 0 10px 0 0 !default; $scrollview-scrollbottom-indicator-margin-rtl: 0 0 0 10px !default; $scrollview-pulldown-icon-font-size: 24px !default; - -$pulldown-height: 50px; -$pulldown-padding: 15px; +$pulldown-height: 50px !default; +$pulldown-padding: 15px !default; + +/* + * The pull-down area is parked directly above the viewport, so the offset is its own height plus + * both paddings, negated. A theme that feeds var() into either leaves Sass nothing to add up, so the + * offset is a knob of its own: the theme derives it once instead of the browser recomputing it here. + */ +$pulldown-top-offset: if( + meta.type-of($pulldown-height) == number and meta.type-of($pulldown-padding) == number, + -($pulldown-height + $pulldown-padding * 2), + calc(-1 * (#{$pulldown-height} + #{$pulldown-padding} * 2)) +) !default; .dx-scrollable-native { &.dx-scrollable-native-generic { @@ -120,7 +131,7 @@ $pulldown-padding: 15px; width: 100%; height: $pulldown-height; padding: $pulldown-padding 0; - top: -($pulldown-height + $pulldown-padding * 2); + top: $pulldown-top-offset; overflow: hidden; transform: translate(0, 0); -webkit-user-drag: none; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/scrollView/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/scrollView/_index.scss index 7cfa24048aaa..974fccc2bd50 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/scrollView/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/scrollView/_index.scss @@ -16,12 +16,15 @@ $scrollview-scrollbottom-indicator-margin: var(--dx-scroll-view-scroll-bottom-indicator-margin), $scrollview-scrollbottom-indicator-margin-rtl: var(--dx-scroll-view-scroll-bottom-indicator-rtl-margin), $scrollview-pulldown-icon-font-size: var(--dx-scroll-view-pull-down-icon-font-size), + $pulldown-height: var(--dx-scroll-view-pull-down-height), + $pulldown-padding: var(--dx-scroll-view-pull-down-padding), + $pulldown-top-offset: var(--dx-scroll-view-pull-down-top-offset), ); .dx-scrollview-scrollbottom-text, .dx-scrollview-pull-down-text { margin-left: var(--dx-scroll-view-pull-down-text-margin-inline-start); - top: calc((50px - #{$global-font-size}) / 2); // dx-fixed-size: 50px pull-down area height + top: calc((var(--dx-scroll-view-pull-down-height) - #{$global-font-size}) / 2); display: inline-block; .dx-rtl & { diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/scrollView/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/scrollView/_public.scss index f92a2ee5b14e..7e78fd1f520a 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/scrollView/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/scrollView/_public.scss @@ -5,12 +5,15 @@ --dx-scroll-view-icon-pull-down-padding: #{$scroll-view-icon-pull-down-padding}; --dx-scroll-view-load-indicator-font-size: #{$scroll-view-load-indicator-font-size}; --dx-scroll-view-load-indicator-size: #{$scroll-view-load-indicator-size}; + --dx-scroll-view-pull-down-height: #{$scroll-view-pull-down-height}; --dx-scroll-view-pull-down-icon-font-size: #{$scroll-view-pull-down-icon-font-size}; --dx-scroll-view-pull-down-image-height: #{$scroll-view-pull-down-image-height}; --dx-scroll-view-pull-down-image-margin: #{$scroll-view-pull-down-image-margin}; --dx-scroll-view-pull-down-indicator-padding: #{$scroll-view-pull-down-indicator-padding}; --dx-scroll-view-pull-down-indicator-width: #{$scroll-view-pull-down-indicator-width}; + --dx-scroll-view-pull-down-padding: #{$scroll-view-pull-down-padding}; --dx-scroll-view-pull-down-text-margin-inline-start: #{$scroll-view-pull-down-text-margin-inline-start}; + --dx-scroll-view-pull-down-top-offset: #{$scroll-view-pull-down-top-offset}; --dx-scroll-view-rtl-margin-inline-end: #{$scroll-view-rtl-margin-inline-end}; --dx-scroll-view-scroll-bottom-image-height: #{$scroll-view-scroll-bottom-image-height}; --dx-scroll-view-scroll-bottom-image-width: #{$scroll-view-scroll-bottom-image-width}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/scrollView/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/scrollView/_sizes.scss index a5a608b0410b..ae0e332c3a68 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/scrollView/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/scrollView/_sizes.scss @@ -22,3 +22,13 @@ $scroll-view-pull-down-image-height: 50px !default; // dx-offscale: 50px $scroll-view-scroll-bottom-padding: ds.$spacing-100 0 !default; $scroll-view-scroll-bottom-indicator-margin: 0 ds.$spacing-100 0 0 !default; $scroll-view-scroll-bottom-indicator-rtl-margin: 0 0 0 ds.$spacing-100 !default; + +// Base-layer sizing injected with design tokens (wave B6) +$scroll-view-pull-down-height: 50px !default; // dx-offscale: 50px, the spacing scale has no 50px step +$scroll-view-pull-down-padding: ds.$spacing-150 !default; + +/* + * Derived once and published: base parks the pull-down area above the viewport by its own height + * plus both paddings. Deriving keeps the three in step instead of freezing -80px. + */ +$scroll-view-pull-down-top-offset: calc(-1 * (#{$scroll-view-pull-down-height} + #{$scroll-view-pull-down-padding} * 2)) !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 000a38dadd22..dc8c5718ae96 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,6 +1,6 @@ { "openKnobs": 0, - "unclassified": 386, + "unclassified": 384, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, @@ -10,7 +10,7 @@ "pivotGrid": 20, "cardView": 15, "ui": 8, - "scrollView": 7, + "scrollView": 5, "dataGrid": 5, "toolbar": 5, "sortable": 4, diff --git a/packages/devextreme-scss/tests/calc-budget.json b/packages/devextreme-scss/tests/calc-budget.json index aa483bf48e3b..86c709781ff5 100644 --- a/packages/devextreme-scss/tests/calc-budget.json +++ b/packages/devextreme-scss/tests/calc-budget.json @@ -1,18 +1,18 @@ { "dx.fluent-next.blue.dark.compact.css": { - "calcOccurrences": 350, + "calcOccurrences": 351, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.dark.css": { - "calcOccurrences": 350, + "calcOccurrences": 351, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.compact.css": { - "calcOccurrences": 350, + "calcOccurrences": 351, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.css": { - "calcOccurrences": 350, + "calcOccurrences": 351, "declarationsWithDeepCalc": 5 } } diff --git a/packages/devextreme-scss/tools/review/nested-scopes.json b/packages/devextreme-scss/tools/review/nested-scopes.json index 5d4a6099bfaf..fa55a98c7c29 100644 --- a/packages/devextreme-scss/tools/review/nested-scopes.json +++ b/packages/devextreme-scss/tools/review/nested-scopes.json @@ -447,6 +447,7 @@ ], "scroll-view": [ "dx-scrollable-native", + "dx-scrollview-pull-down", "dx-scrollview-pull-down-image", "dx-scrollview-pull-down-indicator", "dx-scrollview-pull-down-text", diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 484273e4a938..387e4722a1d2 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -14,50 +14,50 @@ and carries a marker saying why. | a raw grep of the layer | 782 | | …of those, inside comments (commented-out code, prose) | 5 | | **in code** | **777** | -| — the theme can already set from outside | 379 | -| — nailed into the shared layer | 398 | +| — the theme can already set from outside | 381 | +| — nailed into the shared layer | 396 | ## What the theme can already set -379 occurrences in 327 `!default` variables. fluent-next already passes 376; 0 are open knobs nobody turns. +381 occurrences in 329 `!default` variables. fluent-next already passes 378; 0 are open knobs nobody turns. ## What is nailed into the layer -| widget | inline | local-var | geometry | calc | mixin-arg | total | +| widget | inline | geometry | local-var | calc | mixin-arg | total | |---|---|---|---|---|---|---| -| gridBase | 50 | 18 | 7 | | | **75** | -| colorView | 35 | 8 | 24 | | | **67** | -| scheduler | 9 | 41 | 3 | 1 | | **54** | -| textEditor | 20 | | 20 | 4 | | **44** | -| htmlEditor | 22 | 3 | 8 | | | **33** | -| pivotGrid | 6 | 8 | 6 | | | **20** | -| cardView | 9 | 1 | 5 | | | **15** | +| gridBase | 50 | 7 | 18 | | | **75** | +| colorView | 35 | 24 | 8 | | | **67** | +| scheduler | 9 | 3 | 41 | 1 | | **54** | +| textEditor | 20 | 20 | | 4 | | **44** | +| htmlEditor | 22 | 8 | 3 | | | **33** | +| pivotGrid | 6 | 6 | 8 | | | **20** | +| cardView | 9 | 5 | 1 | | | **15** | | ui | 8 | | | | | **8** | -| scrollView | 5 | 2 | | | | **7** | -| dataGrid | | | 3 | | 2 | **5** | -| toolbar | 1 | | 4 | | | **5** | -| sortable | | | 4 | | | **4** | -| calendar | 1 | | 3 | | | **4** | -| diagram | | 1 | | 3 | | **4** | -| treeList | | | 1 | | 3 | **4** | -| pagination | 1 | 2 | | | | **3** | -| colorBox | 1 | 1 | | 1 | | **3** | -| switch | 2 | | 1 | | | **3** | -| timeView | 2 | 1 | | | | **3** | +| scrollView | 5 | | | | | **5** | +| dataGrid | | 3 | | | 2 | **5** | +| toolbar | 1 | 4 | | | | **5** | +| sortable | | 4 | | | | **4** | +| calendar | 1 | 3 | | | | **4** | +| diagram | | | 1 | 3 | | **4** | +| treeList | | 1 | | | 3 | **4** | +| pagination | 1 | | 2 | | | **3** | +| colorBox | 1 | | 1 | 1 | | **3** | +| switch | 2 | 1 | | | | **3** | +| timeView | 2 | | 1 | | | **3** | | icon_fonts | 2 | | | | | **2** | -| numberBox | | 2 | | | | **2** | -| resizable | | 2 | | | | **2** | -| slider | | 2 | | | | **2** | +| numberBox | | | 2 | | | **2** | +| resizable | | | 2 | | | **2** | +| slider | | | 2 | | | **2** | | tagBox | 1 | | | 1 | | **2** | -| chat | | | 2 | | | **2** | -| dropDownMenu | | | 2 | | | **2** | +| chat | | 2 | | | | **2** | +| dropDownMenu | | 2 | | | | **2** | | filterBuilder | 2 | | | | | **2** | -| treeView | 1 | 1 | | | | **2** | +| treeView | 1 | | 1 | | | **2** | | fileUploader | 1 | | | | | **1** | -| validation | | | 1 | | | **1** | +| validation | | 1 | | | | **1** | | dropDownButton | 1 | | | | | **1** | | gantt | 1 | | | | | **1** | -| list | | 1 | | | | **1** | +| list | | | 1 | | | **1** | | lookup | | | | 1 | | **1** | | popover | | | | | 1 | **1** | @@ -579,17 +579,13 @@ and carries a marker saying why. - `scss/widgets/base/_ui.scss:376` · inline `transform: translate3d(0, 10px, 0) scale3d(1.1, 1.1, 1.1);` -### scrollView — 7 +### scrollView — 5 -- `scss/widgets/base/_scrollView.scss:17` · local-var - `$pulldown-height: 50px;` -- `scss/widgets/base/_scrollView.scss:18` · local-var - `$pulldown-padding: 15px;` -- `scss/widgets/base/_scrollView.scss:43` · inline +- `scss/widgets/base/_scrollView.scss:54` · inline `margin-left: -20px;` -- `scss/widgets/base/_scrollView.scss:142` · inline +- `scss/widgets/base/_scrollView.scss:153` · inline `margin: -15px 20px 0 15px;` -- `scss/widgets/base/_scrollView.scss:223` · inline +- `scss/widgets/base/_scrollView.scss:234` · inline `margin-top: -20px;` ### dataGrid — 5 diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 0fcc03994943..43f0bae93c3a 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,11 +6,11 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 398, + "occurrences": 396, "byCategory": { "inline": 182, "geometry": 95, - "local-var": 94, + "local-var": 92, "calc": 11, "structural": 8, "mixin-arg": 6, @@ -25,7 +25,7 @@ "pivotGrid": 21, "cardView": 15, "ui": 8, - "scrollView": 7, + "scrollView": 5, "dataGrid": 5, "fileManager": 5, "toolbar": 5, @@ -56,7 +56,7 @@ "popover": 1, "stepper": 1 }, - "unmarked": 386, + "unmarked": 384, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, @@ -66,7 +66,7 @@ "pivotGrid": 20, "cardView": 15, "ui": 8, - "scrollView": 7, + "scrollView": 5, "dataGrid": 5, "toolbar": 5, "sortable": 4, @@ -629,31 +629,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 17, - "widget": "scrollView", - "literals": [ - "50px" - ], - "occurrences": 1, - "marker": null, - "text": "$pulldown-height: 50px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/_scrollView.scss", - "line": 18, - "widget": "scrollView", - "literals": [ - "15px" - ], - "occurrences": 1, - "marker": null, - "text": "$pulldown-padding: 15px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/_scrollView.scss", - "line": 43, + "line": 54, "widget": "scrollView", "literals": [ "-20px" @@ -665,7 +641,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 142, + "line": 153, "widget": "scrollView", "literals": [ "-15px", @@ -679,7 +655,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 223, + "line": 234, "widget": "scrollView", "literals": [ "-20px" diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 1a2bfb3efc62..9e585dbfa8e6 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 379, - "variables": 327, - "injected": 376, + "occurrences": 381, + "variables": 329, + "injected": 378, "open": 0, "parameters": 3 }, @@ -1266,7 +1266,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 4, + "line": 5, "widget": "scrollView", "literals": [ "40px" @@ -1282,7 +1282,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 5, + "line": 6, "widget": "scrollView", "literals": [ "40px" @@ -1298,7 +1298,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 6, + "line": 7, "widget": "scrollView", "literals": [ "4px" @@ -1314,7 +1314,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 7, + "line": 8, "widget": "scrollView", "literals": [ "8px" @@ -1330,7 +1330,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 8, + "line": 9, "widget": "scrollView", "literals": [ "20px" @@ -1346,7 +1346,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 9, + "line": 10, "widget": "scrollView", "literals": [ "20px" @@ -1362,7 +1362,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 10, + "line": 11, "widget": "scrollView", "literals": [ "50px" @@ -1378,7 +1378,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 11, + "line": 12, "widget": "scrollView", "literals": [ "10px" @@ -1394,7 +1394,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 12, + "line": 13, "widget": "scrollView", "literals": [ "10px" @@ -1410,7 +1410,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 13, + "line": 14, "widget": "scrollView", "literals": [ "10px" @@ -1426,7 +1426,7 @@ }, { "file": "scss/widgets/base/_scrollView.scss", - "line": 15, + "line": 16, "widget": "scrollView", "literals": [ "24px" @@ -1440,6 +1440,38 @@ "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", "setTo": "var(--dx-scroll-view-pull-down-icon-font-size)" }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 17, + "widget": "scrollView", + "literals": [ + "50px" + ], + "occurrences": 1, + "marker": null, + "text": "$pulldown-height: 50px !default;", + "variable": "pulldown-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", + "setTo": "var(--dx-scroll-view-pull-down-height)" + }, + { + "file": "scss/widgets/base/_scrollView.scss", + "line": 18, + "widget": "scrollView", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$pulldown-padding: 15px !default;", + "variable": "pulldown-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", + "setTo": "var(--dx-scroll-view-pull-down-padding)" + }, { "file": "scss/widgets/base/_slider.scss", "line": 8, From ff63d5f420d4f13ba3bb94bf6ac962937cca29b8 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 10:01:24 +0200 Subject: [PATCH 06/25] Tokenize switch --- .../scss/widgets/base/switch/_mixins.scss | 11 +++-- .../widgets/fluent-next/switch/_index.scss | 3 ++ .../widgets/fluent-next/switch/_public.scss | 3 ++ .../widgets/fluent-next/switch/_sizes.scss | 5 ++ .../tests/base-size-markers.baseline.json | 3 +- .../tools/naming/derive-registries.mjs | 3 +- .../tools/naming/registries.json | 3 +- .../tools/sizes/lists/BASE-SIZES.md | 16 ++----- .../tools/sizes/lists/base-owned.json | 46 ++---------------- .../tools/sizes/lists/theme-settable.json | 48 +++++++++++++++++-- 10 files changed, 76 insertions(+), 65 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/switch/_mixins.scss b/packages/devextreme-scss/scss/widgets/base/switch/_mixins.scss index 9dd9ac763250..0a9ccd127f47 100644 --- a/packages/devextreme-scss/scss/widgets/base/switch/_mixins.scss +++ b/packages/devextreme-scss/scss/widgets/base/switch/_mixins.scss @@ -12,6 +12,11 @@ $switch-handle-margin, $switch-handle-border-radius, $switch-transition, + // A pill: any radius past half the track height draws the same shape, so the default is a number + // large enough to be one at every size the themes use. + $switch-container-border-radius: 500px, + $switch-label-padding: 4px 0, + $switch-off-padding-bottom: 10px, ) { .dx-switch { width: $switch-width; @@ -42,7 +47,7 @@ content: ""; width: 100%; height: $switch-container-height; - border-radius: 500px; + border-radius: $switch-container-border-radius; margin: $switch-container-vertical-margin 0; transition: $switch-transition; } @@ -57,7 +62,7 @@ .dx-switch-off { flex-shrink: 0; float: left; - padding: 4px 0; + padding: $switch-label-padding; width: 50%; height: $switch-height; color: transparent; @@ -71,7 +76,7 @@ .dx-switch-off { display: none; - padding-bottom: 10px; + padding-bottom: $switch-off-padding-bottom; background-color: transparent; } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/switch/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/switch/_index.scss index 1565e4cf0358..1c940122ed6b 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/switch/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/switch/_index.scss @@ -14,6 +14,9 @@ var(--dx-switch-handle-margin), var(--dx-switch-handle-border-radius), var(--dx-switch-transition), + $switch-container-border-radius: var(--dx-switch-container-border-radius), + $switch-label-padding: var(--dx-switch-label-padding), + $switch-off-padding-bottom: var(--dx-switch-off-padding-block-end), ); @include dx-switch-states-fluent( var(--dx-switch-on-bg-disabled), diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/switch/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/switch/_public.scss index 3e338f4c28d3..66544a68ea8b 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/switch/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/switch/_public.scss @@ -5,6 +5,7 @@ --dx-switch-bg: #{$switch-bg}; --dx-switch-border-disabled: #{$switch-border-disabled}; --dx-switch-box-shadow: #{$switch-box-shadow}; + --dx-switch-container-border-radius: #{$switch-container-border-radius}; --dx-switch-container-height: var(--dx-switch-height); --dx-switch-container-margin-block: #{$switch-container-margin-block}; --dx-switch-container-padding-inline: var(--dx-switch-handle-margin); @@ -22,9 +23,11 @@ --dx-switch-invalid-border-focused: #{$switch-invalid-border-focused}; --dx-switch-invalid-border-hovered: #{$switch-invalid-border-hovered}; --dx-switch-invalid-border: #{$switch-invalid-border}; + --dx-switch-label-padding: #{$switch-label-padding}; --dx-switch-off-border-active: #{$switch-off-border-active}; --dx-switch-off-border-hovered: #{$switch-off-border-hovered}; --dx-switch-off-border: #{$switch-off-border}; + --dx-switch-off-padding-block-end: #{$switch-off-padding-block-end}; --dx-switch-on-bg-disabled: #{$switch-on-bg-disabled}; --dx-switch-on-bg: #{$switch-on-bg}; --dx-switch-on-border-focused: #{$switch-on-border-focused}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/switch/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/switch/_sizes.scss index 8de499ab0562..3d4bdc307a4e 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/switch/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/switch/_sizes.scss @@ -40,3 +40,8 @@ $switch-container-rtl-offset: ds.$spacing-60 !default; $switch-container-margin-block: 0 !default; $switch-height: ds.$spacing-160 !default; } + +// Base-layer sizing injected with design tokens (wave B7) +$switch-container-border-radius: ds.$border-radius-full !default; +$switch-label-padding: ds.$spacing-40 0 !default; +$switch-off-padding-block-end: ds.$spacing-100 !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index dc8c5718ae96..1ce2358fd483 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,6 +1,6 @@ { "openKnobs": 0, - "unclassified": 384, + "unclassified": 381, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, @@ -19,7 +19,6 @@ "treeList": 4, "pagination": 3, "colorBox": 3, - "switch": 3, "timeView": 3, "icon_fonts": 2, "numberBox": 2, diff --git a/packages/devextreme-scss/tools/naming/derive-registries.mjs b/packages/devextreme-scss/tools/naming/derive-registries.mjs index e3e2ef682a27..c9b02c9b98d2 100644 --- a/packages/devextreme-scss/tools/naming/derive-registries.mjs +++ b/packages/devextreme-scss/tools/naming/derive-registries.mjs @@ -823,7 +823,8 @@ const OVERRIDES = { * on. Compounds (`group-header`, `nav-button`, `pull-down`) are one anatomy level, not two. */ 'check-box': ['icon', 'mark', 'arrow', 'arrow-icon', 'container'], - switch: ['handle', 'container', 'inner'], + // wave B7: .dx-switch-on and .dx-switch-off are the two labels the track slides between + switch: ['handle', 'container', 'inner', 'label'], /* * `menu-items-container` sits next to `items-container` on purpose: base/_contextMenu.scss draws * `.dx-context-menu .dx-menu-items-container` with its own parameter, and contextMenu/_index.scss diff --git a/packages/devextreme-scss/tools/naming/registries.json b/packages/devextreme-scss/tools/naming/registries.json index 376aaf81f6e3..acc7fd9cc3e5 100644 --- a/packages/devextreme-scss/tools/naming/registries.json +++ b/packages/devextreme-scss/tools/naming/registries.json @@ -1153,7 +1153,8 @@ "switch": [ "handle", "container", - "inner" + "inner", + "label" ], "context-menu": [ "item", diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 387e4722a1d2..801ce499f817 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -14,12 +14,12 @@ and carries a marker saying why. | a raw grep of the layer | 782 | | …of those, inside comments (commented-out code, prose) | 5 | | **in code** | **777** | -| — the theme can already set from outside | 381 | -| — nailed into the shared layer | 396 | +| — the theme can already set from outside | 384 | +| — nailed into the shared layer | 393 | ## What the theme can already set -381 occurrences in 329 `!default` variables. fluent-next already passes 378; 0 are open knobs nobody turns. +384 occurrences in 332 `!default` variables. fluent-next already passes 378; 0 are open knobs nobody turns. ## What is nailed into the layer @@ -42,7 +42,6 @@ and carries a marker saying why. | treeList | | 1 | | | 3 | **4** | | pagination | 1 | | 2 | | | **3** | | colorBox | 1 | | 1 | 1 | | **3** | -| switch | 2 | 1 | | | | **3** | | timeView | 2 | | 1 | | | **3** | | icon_fonts | 2 | | | | | **2** | | numberBox | | | 2 | | | **2** | @@ -670,15 +669,6 @@ and carries a marker saying why. - `scss/widgets/base/colorBox/_index.scss:36` · inline `margin-top: -7.5px;` -### switch — 3 - -- `scss/widgets/base/switch/_mixins.scss:45` · geometry - `border-radius: 500px;` -- `scss/widgets/base/switch/_mixins.scss:60` · inline - `padding: 4px 0;` -- `scss/widgets/base/switch/_mixins.scss:74` · inline - `padding-bottom: 10px;` - ### timeView — 3 - `scss/widgets/base/timeView/_mixins.scss:16` · local-var diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 43f0bae93c3a..3ed82b819bb1 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,10 +6,10 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 396, + "occurrences": 393, "byCategory": { - "inline": 182, - "geometry": 95, + "inline": 180, + "geometry": 94, "local-var": 92, "calc": 11, "structural": 8, @@ -35,7 +35,6 @@ "treeList": 4, "pagination": 3, "colorBox": 3, - "switch": 3, "timeView": 3, "icon_fonts": 2, "multiView": 2, @@ -56,7 +55,7 @@ "popover": 1, "stepper": 1 }, - "unmarked": 384, + "unmarked": 381, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, @@ -75,7 +74,6 @@ "treeList": 4, "pagination": 3, "colorBox": 3, - "switch": 3, "timeView": 3, "icon_fonts": 2, "numberBox": 2, @@ -3447,42 +3445,6 @@ "text": "border-width: 1px; // dx-line-width: hairline, the same in every theme", "category": "geometry" }, - { - "file": "scss/widgets/base/switch/_mixins.scss", - "line": 45, - "widget": "switch", - "literals": [ - "500px" - ], - "occurrences": 1, - "marker": null, - "text": "border-radius: 500px;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/switch/_mixins.scss", - "line": 60, - "widget": "switch", - "literals": [ - "4px" - ], - "occurrences": 1, - "marker": null, - "text": "padding: 4px 0;", - "category": "inline" - }, - { - "file": "scss/widgets/base/switch/_mixins.scss", - "line": 74, - "widget": "switch", - "literals": [ - "10px" - ], - "occurrences": 1, - "marker": null, - "text": "padding-bottom: 10px;", - "category": "inline" - }, { "file": "scss/widgets/base/textEditor/_mixins.scss", "line": 53, diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 9e585dbfa8e6..ac769d172e3d 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,11 +7,11 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 381, - "variables": 329, + "occurrences": 384, + "variables": 332, "injected": 378, "open": 0, - "parameters": 3 + "parameters": 6 }, "places": [ { @@ -5387,6 +5387,48 @@ "kind": "mixin-parameter", "status": "parameter" }, + { + "file": "scss/widgets/base/switch/_mixins.scss", + "line": 17, + "widget": "switch", + "literals": [ + "500px" + ], + "occurrences": 1, + "marker": null, + "text": "$switch-container-border-radius: 500px,", + "variable": "switch-container-border-radius", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/switch/_mixins.scss", + "line": 18, + "widget": "switch", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$switch-label-padding: 4px 0,", + "variable": "switch-label-padding", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/switch/_mixins.scss", + "line": 19, + "widget": "switch", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$switch-off-padding-bottom: 10px,", + "variable": "switch-off-padding-bottom", + "kind": "mixin-parameter", + "status": "parameter" + }, { "file": "scss/widgets/base/textEditor/_index.scss", "line": 6, From 99ceeafca197cf168d194ab23fba588fc4c3a189 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 10:31:23 +0200 Subject: [PATCH 07/25] Tokenize timeView --- .../scss/widgets/base/timeView/_mixins.scss | 23 ++++++++-- .../widgets/fluent-next/timeView/_index.scss | 9 +++- .../widgets/fluent-next/timeView/_public.scss | 3 ++ .../widgets/fluent-next/timeView/_sizes.scss | 7 +++ .../tests/base-size-markers.baseline.json | 3 +- .../devextreme-scss/tests/calc-budget.json | 8 ++-- .../tools/naming/derive-registries.mjs | 4 +- .../tools/naming/registries.json | 3 +- .../tools/review/nested-scopes.json | 2 + .../tools/sizes/lists/BASE-SIZES.md | 20 ++------ .../tools/sizes/lists/base-owned.json | 46 ++----------------- .../tools/sizes/lists/theme-settable.json | 34 ++++++++++++-- 12 files changed, 88 insertions(+), 74 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/timeView/_mixins.scss b/packages/devextreme-scss/scss/widgets/base/timeView/_mixins.scss index 3f220dee2ca5..5312c83fe28d 100644 --- a/packages/devextreme-scss/scss/widgets/base/timeView/_mixins.scss +++ b/packages/devextreme-scss/scss/widgets/base/timeView/_mixins.scss @@ -1,3 +1,5 @@ +@use "sass:math"; +@use "sass:meta"; @use "sass:string"; @use "../string" as *; @@ -9,12 +11,23 @@ background-image: string.unquote($uri); } -@mixin clock-action-icons-mixin($accent-color, $background-color, $digit-color) { +@mixin clock-action-icons-mixin( + $accent-color, + $background-color, + $digit-color, + // The clock face is the SVG behind it, so its size scales the whole dial; the arrows are centred + // on the dial with half their own width, which is why the offset is a knob of its own. + $clock-size: 182px, + $arrow-width: 10px, + $arrow-offset: if( + meta.type-of($arrow-width) == number, + math.div(-$arrow-width, 2), + calc(#{$arrow-width} / -2) + ), +) { .dx-timeview-clock { @include clock-colored-image(data-uri("image/svg+xml;charset=UTF-8", "images/widgets/common/timeView/clock-bg.svg"), $accent-color, $background-color, $digit-color); - $clock-size: 182px; - min-width: $clock-size; min-height: $clock-size; max-height: $clock-size; @@ -27,8 +40,8 @@ .dx-timeview-minutearrow { position: absolute; left: 50%; - width: 10px; - margin-left: -5px; + width: $arrow-width; + margin-left: $arrow-offset; height: 50%; background-position: bottom; background-repeat: no-repeat; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/timeView/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/timeView/_index.scss index b3147f8dd5e7..42c8aca68556 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/timeView/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/timeView/_index.scss @@ -6,7 +6,14 @@ $timeview-numberbox-width: var(--dx-time-view-field-number-box-width), $timeview-numberbox-spin-touch-friendly-width: var(--dx-time-view-field-number-box-spin-touch-friendly-width), ); -@include clock-action-icons-mixin($time-view-clock-accent-bg, $time-view-clock-bg, $time-view-clock-digits-content); +@include clock-action-icons-mixin( + $time-view-clock-accent-bg, + $time-view-clock-bg, + $time-view-clock-digits-content, + $clock-size: var(--dx-time-view-clock-size), + $arrow-width: var(--dx-time-view-clock-arrow-width), + $arrow-offset: var(--dx-time-view-clock-arrow-offset), +); .dx-timeview { height: auto; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/timeView/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/timeView/_public.scss index 077d95e9f375..f96b81c3ef38 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/timeView/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/timeView/_public.scss @@ -1,7 +1,10 @@ @use "sizes" as *; @mixin publish { + --dx-time-view-clock-arrow-offset: #{$time-view-clock-arrow-offset}; + --dx-time-view-clock-arrow-width: #{$time-view-clock-arrow-width}; --dx-time-view-clock-margin-block-end: #{$time-view-clock-margin-block-end}; + --dx-time-view-clock-size: #{$time-view-clock-size}; --dx-time-view-field-min-height: #{$time-view-field-min-height}; --dx-time-view-field-number-box-spin-touch-friendly-width: #{$time-view-field-number-box-spin-touch-friendly-width}; --dx-time-view-field-number-box-width: #{$time-view-field-number-box-width}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/timeView/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/timeView/_sizes.scss index d1a2758e8ea8..a07229be01b3 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/timeView/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/timeView/_sizes.scss @@ -12,3 +12,10 @@ $time-view-number-box-spin-touch-friendly-width: 110px !default; // dx-offscale: // Base-layer sizing injected with design tokens (wave B2) $time-view-field-number-box-width: 70px !default; // dx-offscale: 70px $time-view-field-number-box-spin-touch-friendly-width: 110px !default; // dx-offscale: 110px + +// Base-layer sizing injected with design tokens (wave B8) +$time-view-clock-size: 182px !default; // dx-offscale: 182px, the size of the dial SVG behind it +$time-view-clock-arrow-width: ds.$spacing-100 !default; + +// Derived once and published: the arrows are centred on the dial with half their own width. +$time-view-clock-arrow-offset: calc(#{$time-view-clock-arrow-width} / -2) !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 1ce2358fd483..bbd193a5dd78 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,6 +1,6 @@ { "openKnobs": 0, - "unclassified": 381, + "unclassified": 378, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, @@ -19,7 +19,6 @@ "treeList": 4, "pagination": 3, "colorBox": 3, - "timeView": 3, "icon_fonts": 2, "numberBox": 2, "resizable": 2, diff --git a/packages/devextreme-scss/tests/calc-budget.json b/packages/devextreme-scss/tests/calc-budget.json index 86c709781ff5..5d90afb850a0 100644 --- a/packages/devextreme-scss/tests/calc-budget.json +++ b/packages/devextreme-scss/tests/calc-budget.json @@ -1,18 +1,18 @@ { "dx.fluent-next.blue.dark.compact.css": { - "calcOccurrences": 351, + "calcOccurrences": 352, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.dark.css": { - "calcOccurrences": 351, + "calcOccurrences": 352, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.compact.css": { - "calcOccurrences": 351, + "calcOccurrences": 352, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.css": { - "calcOccurrences": 351, + "calcOccurrences": 352, "declarationsWithDeepCalc": 5 } } diff --git a/packages/devextreme-scss/tools/naming/derive-registries.mjs b/packages/devextreme-scss/tools/naming/derive-registries.mjs index c9b02c9b98d2..4e839721195b 100644 --- a/packages/devextreme-scss/tools/naming/derive-registries.mjs +++ b/packages/devextreme-scss/tools/naming/derive-registries.mjs @@ -836,7 +836,9 @@ const OVERRIDES = { 'drop-down-menu': ['section', 'list', 'popup', 'content'], 'date-view': ['roller', 'item', 'year', 'month', 'hours-colon'], 'time-view': ['clock', 'digits', 'field', 'number-box', 'input', 'time-separator', 'spin', - 'format12'], + 'format12', + // wave B8: the hour and minute hands are boxes the clock positions on the dial + 'arrow'], fieldset: ['field', 'label', 'value', 'header', 'attention-icon', 'radio-group'], 'radio-group': ['radio-button', 'collection', 'value-container'], 'progress-bar': ['status', 'range', 'container', 'label'], diff --git a/packages/devextreme-scss/tools/naming/registries.json b/packages/devextreme-scss/tools/naming/registries.json index acc7fd9cc3e5..618944c569b5 100644 --- a/packages/devextreme-scss/tools/naming/registries.json +++ b/packages/devextreme-scss/tools/naming/registries.json @@ -1185,7 +1185,8 @@ "input", "time-separator", "spin", - "format12" + "format12", + "arrow" ], "fieldset": [ "field", diff --git a/packages/devextreme-scss/tools/review/nested-scopes.json b/packages/devextreme-scss/tools/review/nested-scopes.json index fa55a98c7c29..e460d5ae9c44 100644 --- a/packages/devextreme-scss/tools/review/nested-scopes.json +++ b/packages/devextreme-scss/tools/review/nested-scopes.json @@ -544,6 +544,8 @@ "dx-timeview-clock", "dx-timeview-field", "dx-timeview-format12", + "dx-timeview-hourarrow", + "dx-timeview-minutearrow", "dx-timeview-time-separator" ], "toast": [ diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 801ce499f817..626b6c62223d 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -11,15 +11,15 @@ and carries a marker saying why. | | occurrences | |---|---| -| a raw grep of the layer | 782 | +| a raw grep of the layer | 781 | | …of those, inside comments (commented-out code, prose) | 5 | -| **in code** | **777** | -| — the theme can already set from outside | 384 | -| — nailed into the shared layer | 393 | +| **in code** | **776** | +| — the theme can already set from outside | 386 | +| — nailed into the shared layer | 390 | ## What the theme can already set -384 occurrences in 332 `!default` variables. fluent-next already passes 378; 0 are open knobs nobody turns. +386 occurrences in 334 `!default` variables. fluent-next already passes 378; 0 are open knobs nobody turns. ## What is nailed into the layer @@ -42,7 +42,6 @@ and carries a marker saying why. | treeList | | 1 | | | 3 | **4** | | pagination | 1 | | 2 | | | **3** | | colorBox | 1 | | 1 | 1 | | **3** | -| timeView | 2 | | 1 | | | **3** | | icon_fonts | 2 | | | | | **2** | | numberBox | | | 2 | | | **2** | | resizable | | | 2 | | | **2** | @@ -669,15 +668,6 @@ and carries a marker saying why. - `scss/widgets/base/colorBox/_index.scss:36` · inline `margin-top: -7.5px;` -### timeView — 3 - -- `scss/widgets/base/timeView/_mixins.scss:16` · local-var - `$clock-size: 182px;` -- `scss/widgets/base/timeView/_mixins.scss:30` · inline - `width: 10px;` -- `scss/widgets/base/timeView/_mixins.scss:31` · inline - `margin-left: -5px;` - ### icon_fonts — 2 - `scss/widgets/base/_icon_fonts.scss:307` · inline diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 3ed82b819bb1..c77ee35cea74 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,11 +6,11 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 393, + "occurrences": 390, "byCategory": { - "inline": 180, + "inline": 178, "geometry": 94, - "local-var": 92, + "local-var": 91, "calc": 11, "structural": 8, "mixin-arg": 6, @@ -35,7 +35,6 @@ "treeList": 4, "pagination": 3, "colorBox": 3, - "timeView": 3, "icon_fonts": 2, "multiView": 2, "numberBox": 2, @@ -55,7 +54,7 @@ "popover": 1, "stepper": 1 }, - "unmarked": 381, + "unmarked": 378, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, @@ -74,7 +73,6 @@ "treeList": 4, "pagination": 3, "colorBox": 3, - "timeView": 3, "icon_fonts": 2, "numberBox": 2, "resizable": 2, @@ -3786,42 +3784,6 @@ "text": "padding: 2px;", "category": "inline" }, - { - "file": "scss/widgets/base/timeView/_mixins.scss", - "line": 16, - "widget": "timeView", - "literals": [ - "182px" - ], - "occurrences": 1, - "marker": null, - "text": "$clock-size: 182px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/timeView/_mixins.scss", - "line": 30, - "widget": "timeView", - "literals": [ - "10px" - ], - "occurrences": 1, - "marker": null, - "text": "width: 10px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/timeView/_mixins.scss", - "line": 31, - "widget": "timeView", - "literals": [ - "-5px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-left: -5px;", - "category": "inline" - }, { "file": "scss/widgets/base/toolbar/_index.scss", "line": 101, diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index ac769d172e3d..98e283b35995 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,11 +7,11 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 384, - "variables": 332, + "occurrences": 386, + "variables": 334, "injected": 378, "open": 0, - "parameters": 6 + "parameters": 8 }, "places": [ { @@ -5477,6 +5477,34 @@ "setBy": "scss/widgets/fluent-next/timeView/_index.scss", "setTo": "var(--dx-time-view-field-number-box-spin-touch-friendly-width)" }, + { + "file": "scss/widgets/base/timeView/_mixins.scss", + "line": 20, + "widget": "timeView", + "literals": [ + "182px" + ], + "occurrences": 1, + "marker": null, + "text": "$clock-size: 182px,", + "variable": "clock-size", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/timeView/_mixins.scss", + "line": 21, + "widget": "timeView", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$arrow-width: 10px,", + "variable": "arrow-width", + "kind": "mixin-parameter", + "status": "parameter" + }, { "file": "scss/widgets/base/toolbar/_index.scss", "line": 4, From cce3a28719b6d9728d05e1ccff1496cf8488c00f Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 10:47:13 +0200 Subject: [PATCH 08/25] Tokenize pagination and change null to false in expressions --- .../scss/widgets/base/_contextMenu.scss | 2 +- .../scss/widgets/base/_fileUploader.scss | 2 +- .../scss/widgets/base/_pagination.scss | 27 +++++++--- .../scss/widgets/base/_popup.scss | 2 +- .../scss/widgets/base/checkBox/_index.scss | 2 +- .../widgets/fluent-next/checkBox/_index.scss | 2 +- .../fluent-next/contextMenu/_index.scss | 2 +- .../fluent-next/fileUploader/_index.scss | 2 +- .../fluent-next/pagination/_index.scss | 7 ++- .../fluent-next/pagination/_public.scss | 1 + .../fluent-next/pagination/_sizes.scss | 3 ++ .../widgets/fluent-next/popup/_index.scss | 2 +- .../tests/base-size-markers.baseline.json | 4 +- .../tools/sizes/lists/BASE-SIZES.md | 22 ++++---- .../tools/sizes/lists/base-owned.json | 38 +++----------- .../tools/sizes/lists/theme-settable.json | 50 +++++++++++++++---- 16 files changed, 97 insertions(+), 71 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/_contextMenu.scss b/packages/devextreme-scss/scss/widgets/base/_contextMenu.scss index 6e90ce1e806c..933d4e096950 100644 --- a/packages/devextreme-scss/scss/widgets/base/_contextMenu.scss +++ b/packages/devextreme-scss/scss/widgets/base/_contextMenu.scss @@ -11,7 +11,7 @@ $contextmenu-menu-separator-margin: 5px 0 !default; .dx-menu-items-container { - // fluent-next passes null: its own rule paints this box, the base copy would be dead weight + // fluent-next passes false (not null: !default would treat that as unset): its own rule paints this @if $contextmenu-menu-items-container-padding { padding: $contextmenu-menu-items-container-padding; } diff --git a/packages/devextreme-scss/scss/widgets/base/_fileUploader.scss b/packages/devextreme-scss/scss/widgets/base/_fileUploader.scss index ac5f3675f426..08278e39351c 100644 --- a/packages/devextreme-scss/scss/widgets/base/_fileUploader.scss +++ b/packages/devextreme-scss/scss/widgets/base/_fileUploader.scss @@ -124,7 +124,7 @@ $fileuploader-input-wrapper-vertical-padding: 1em !default; // dx-relative align-items: center; width: 100%; - // fluent-next passes null: its own rule paints this box, the base copy would be dead weight + // fluent-next passes false (not null: !default would treat that as unset): its own rule paints this @if $fileuploader-file-container-padding { padding: $fileuploader-file-container-padding; } diff --git a/packages/devextreme-scss/scss/widgets/base/_pagination.scss b/packages/devextreme-scss/scss/widgets/base/_pagination.scss index b96aa7f70684..8635aa1b39fd 100644 --- a/packages/devextreme-scss/scss/widgets/base/_pagination.scss +++ b/packages/devextreme-scss/scss/widgets/base/_pagination.scss @@ -21,15 +21,25 @@ $pagination-pages-count-padding-left: 6px !default; $pagination-info-opacity: 0.7 !default; $pagination-nav-disabled-opacity: 0.3 !default; +// Not a knob itself: the shared source of the two fallbacks below, which are. $pagination-paddings: 8px; -$pagination-info-paddings: 9px; +$pagination-info-paddings: 9px !default; + +// The pager's own padding and the nav button's, as fallbacks fluent-next switches off with false. +$pagination-padding-block-fallback: $pagination-paddings !default; +$pagination-navigate-button-padding-block-fallback: $pagination-paddings - 1px !default; .dx-pager, .dx-pagination { overflow: hidden; width: 100%; - padding-top: $pagination-paddings; - padding-bottom: $pagination-paddings; + + // fluent-next passes false (not null: !default would treat that as unset): its own rule paints this + @if $pagination-padding-block-fallback { + padding-top: $pagination-padding-block-fallback; + padding-bottom: $pagination-padding-block-fallback; + } + line-height: normal; @include user-select(none); @@ -46,7 +56,7 @@ $pagination-info-paddings: 9px; display: inline-block; cursor: pointer; - // fluent-next passes null: its own rule paints this box, the base copy would be dead weight + // fluent-next passes false (not null: !default would treat that as unset): its own rule paints this @if $pagination-page-padding-fallback { padding: $pagination-page-padding-fallback; } @@ -69,7 +79,7 @@ $pagination-info-paddings: 9px; .dx-navigate-button { - // fluent-next passes null: its own rule paints this box, the base copy would be dead weight + // fluent-next passes false (not null: !default would treat that as unset): its own rule paints this @if $pagination-navigate-button-width-fallback { width: $pagination-navigate-button-width-fallback; } @@ -78,7 +88,12 @@ $pagination-info-paddings: 9px; cursor: pointer; display: inline-block; vertical-align: top; - padding: $pagination-paddings - 1px $pagination-page-horizontal-padding; + + // fluent-next passes false (not null: !default would treat that as unset): its own rule paints this + @if $pagination-navigate-button-padding-block-fallback { + padding: $pagination-navigate-button-padding-block-fallback $pagination-page-horizontal-padding; + } + box-sizing: content-box; &.dx-button-disable { diff --git a/packages/devextreme-scss/scss/widgets/base/_popup.scss b/packages/devextreme-scss/scss/widgets/base/_popup.scss index baf23ed61243..0ef8ecef341e 100644 --- a/packages/devextreme-scss/scss/widgets/base/_popup.scss +++ b/packages/devextreme-scss/scss/widgets/base/_popup.scss @@ -11,7 +11,7 @@ $popup-dialog-message-padding: 10px 10px 5px 10px !default; .dx-popup-title { padding: $popup-title-padding; - // fluent-next passes null: its own rule paints this box, the base copy would be dead weight + // fluent-next passes false (not null: !default would treat that as unset): its own rule paints this @if $popup-title-min-height-fallback { min-height: $popup-title-min-height-fallback; } diff --git a/packages/devextreme-scss/scss/widgets/base/checkBox/_index.scss b/packages/devextreme-scss/scss/widgets/base/checkBox/_index.scss index 6808925d2000..571a29024142 100644 --- a/packages/devextreme-scss/scss/widgets/base/checkBox/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/checkBox/_index.scss @@ -42,7 +42,7 @@ $checkbox-text-padding-inline-start: 5px !default; word-wrap: break-word; line-height: normal; - // fluent-next passes null: its own rule paints this box, the base copy would be dead weight + // fluent-next passes false (not null: !default would treat that as unset): its own rule paints this @if $checkbox-text-padding-inline-start { padding-inline-start: $checkbox-text-padding-inline-start; } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/checkBox/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/checkBox/_index.scss index 9eef41976ded..59df69ebc871 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/checkBox/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/checkBox/_index.scss @@ -3,7 +3,7 @@ @use "sizes" as *; @use "../../base/icon_fonts" as *; @use "../../base/checkBox" with ( - $checkbox-text-padding-inline-start: null, + $checkbox-text-padding-inline-start: false, ); @use "../../base/checkBox/mixins" as *; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/contextMenu/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/contextMenu/_index.scss index cfd8a55dc11e..207d2b26b263 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/contextMenu/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/contextMenu/_index.scss @@ -6,7 +6,7 @@ @use "../menu/colors" as menuColors; @use "../button/sizes" as buttonSizes; @use "../../base/contextMenu" with ( - $contextmenu-menu-items-container-padding: null, + $contextmenu-menu-items-container-padding: false, $contextmenu-menu-separator-height: var(--dx-context-menu-separator-height), $contextmenu-menu-separator-margin: var(--dx-context-menu-separator-margin), ); diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/fileUploader/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/fileUploader/_index.scss index 7f7198ad4132..5d491537d92f 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/fileUploader/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/fileUploader/_index.scss @@ -4,7 +4,7 @@ @use "../sizes" as *; @use "../../base/mixins" as *; @use "../../base/fileUploader" with ( - $fileuploader-file-container-padding: null, + $fileuploader-file-container-padding: false, $fileuploader-button-margin-left: var(--dx-file-uploader-button-margin-inline-start), $fileuploader-upload-button-margin-top: var(--dx-file-uploader-upload-button-margin-block-start), $fileuploader-show-file-list-padding-top: var(--dx-file-uploader-show-file-list-padding-block-start), diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/pagination/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/pagination/_index.scss index 1a436d00b711..91cfe121bcf8 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/pagination/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/pagination/_index.scss @@ -2,8 +2,11 @@ @use "sizes" as *; @use "../../base/icon_fonts" as *; @use "../../base/pagination" with ( - $pagination-page-padding-fallback: null, - $pagination-navigate-button-width-fallback: null, + $pagination-page-padding-fallback: false, + $pagination-navigate-button-width-fallback: false, + $pagination-padding-block-fallback: false, + $pagination-navigate-button-padding-block-fallback: false, + $pagination-info-paddings: var(--dx-pagination-info-margin-inline), $pagination-page-margin-left: var(--dx-pagination-page-margin-inline-start), $pagination-page-margin-right: var(--dx-pagination-page-margin-inline-end), $pagination-separator-padding-left: var(--dx-pagination-separator-padding-inline-start), diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/pagination/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/pagination/_public.scss index c281fa39ed3d..98f84d82e9f9 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/pagination/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/pagination/_public.scss @@ -8,6 +8,7 @@ --dx-pagination-first-child-padding-inline-end: #{$pagination-first-child-padding-inline-end}; --dx-pagination-first-child-padding-inline-start: #{$pagination-first-child-padding-inline-start}; --dx-pagination-font-weight-selected: #{$pagination-font-weight-selected}; + --dx-pagination-info-margin-inline: #{$pagination-info-margin-inline}; --dx-pagination-info-opacity: #{$pagination-info-opacity}; --dx-pagination-nav-button-height: #{$pagination-nav-button-height}; --dx-pagination-nav-button-icon-size: #{$pagination-nav-button-icon-size}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/pagination/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/pagination/_sizes.scss index 4b3f6759216f..52964a2add6c 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/pagination/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/pagination/_sizes.scss @@ -49,3 +49,6 @@ $pagination-pages-count-padding-inline-start: ds.$spacing-60 !default; // B2 tail: pagination page horizontal padding $pagination-page-padding-inline: ds.$spacing-130 !default; + +// Base-layer sizing injected with design tokens (wave B9) +$pagination-info-margin-inline: ds.$spacing-90 !default; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/popup/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/popup/_index.scss index da5b38496f34..d03ada398496 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/popup/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/popup/_index.scss @@ -3,7 +3,7 @@ @use "../../base/icon_fonts" as *; @use "../toolbar/mixins" as *; @use "../../base/popup" with ( - $popup-title-min-height-fallback: null, + $popup-title-min-height-fallback: false, $popup-title-padding: var(--dx-popup-title-padding), $popup-dialog-message-padding: var(--dx-popup-dialog-message-padding), $popup-dialog-shader-color: var(--dx-popup-dialog-backdrop), diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index bbd193a5dd78..232ef7bc6f3b 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,6 +1,6 @@ { "openKnobs": 0, - "unclassified": 378, + "unclassified": 376, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, @@ -17,7 +17,6 @@ "calendar": 4, "diagram": 4, "treeList": 4, - "pagination": 3, "colorBox": 3, "icon_fonts": 2, "numberBox": 2, @@ -29,6 +28,7 @@ "filterBuilder": 2, "treeView": 2, "fileUploader": 1, + "pagination": 1, "validation": 1, "dropDownButton": 1, "gantt": 1, diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 626b6c62223d..60c8d3351704 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -14,12 +14,12 @@ and carries a marker saying why. | a raw grep of the layer | 781 | | …of those, inside comments (commented-out code, prose) | 5 | | **in code** | **776** | -| — the theme can already set from outside | 386 | -| — nailed into the shared layer | 390 | +| — the theme can already set from outside | 388 | +| — nailed into the shared layer | 388 | ## What the theme can already set -386 occurrences in 334 `!default` variables. fluent-next already passes 378; 0 are open knobs nobody turns. +388 occurrences in 336 `!default` variables. fluent-next already passes 380; 0 are open knobs nobody turns. ## What is nailed into the layer @@ -40,7 +40,6 @@ and carries a marker saying why. | calendar | 1 | 3 | | | | **4** | | diagram | | | 1 | 3 | | **4** | | treeList | | 1 | | | 3 | **4** | -| pagination | 1 | | 2 | | | **3** | | colorBox | 1 | | 1 | 1 | | **3** | | icon_fonts | 2 | | | | | **2** | | numberBox | | | 2 | | | **2** | @@ -52,6 +51,7 @@ and carries a marker saying why. | filterBuilder | 2 | | | | | **2** | | treeView | 1 | | 1 | | | **2** | | fileUploader | 1 | | | | | **1** | +| pagination | | | 1 | | | **1** | | validation | | 1 | | | | **1** | | dropDownButton | 1 | | | | | **1** | | gantt | 1 | | | | | **1** | @@ -650,15 +650,6 @@ and carries a marker saying why. - `scss/widgets/base/treeList/layout/cell.scss:229` · geometry `outline-offset: -2px;` -### pagination — 3 - -- `scss/widgets/base/_pagination.scss:24` · local-var - `$pagination-paddings: 8px;` -- `scss/widgets/base/_pagination.scss:25` · local-var - `$pagination-info-paddings: 9px;` -- `scss/widgets/base/_pagination.scss:81` · inline - `padding: $pagination-paddings - 1px $pagination-page-horizontal-padding;` - ### colorBox — 3 - `scss/widgets/base/colorBox/_index.scss:5` · local-var @@ -736,6 +727,11 @@ and carries a marker saying why. - `scss/widgets/base/_fileUploader.scss:213` · inline `margin-top: -6px;` +### pagination — 1 + +- `scss/widgets/base/_pagination.scss:25` · local-var + `$pagination-paddings: 8px;` + ### validation — 1 - `scss/widgets/base/_validation.scss:85` · geometry diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index c77ee35cea74..3d7889e4f398 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,11 +6,11 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 390, + "occurrences": 388, "byCategory": { - "inline": 178, + "inline": 177, "geometry": 94, - "local-var": 91, + "local-var": 90, "calc": 11, "structural": 8, "mixin-arg": 6, @@ -33,7 +33,6 @@ "calendar": 4, "diagram": 4, "treeList": 4, - "pagination": 3, "colorBox": 3, "icon_fonts": 2, "multiView": 2, @@ -46,6 +45,7 @@ "filterBuilder": 2, "treeView": 2, "fileUploader": 1, + "pagination": 1, "validation": 1, "dropDownButton": 1, "gantt": 1, @@ -54,7 +54,7 @@ "popover": 1, "stepper": 1 }, - "unmarked": 378, + "unmarked": 376, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, @@ -71,7 +71,6 @@ "calendar": 4, "diagram": 4, "treeList": 4, - "pagination": 3, "colorBox": 3, "icon_fonts": 2, "numberBox": 2, @@ -83,6 +82,7 @@ "filterBuilder": 2, "treeView": 2, "fileUploader": 1, + "pagination": 1, "validation": 1, "dropDownButton": 1, "gantt": 1, @@ -565,7 +565,7 @@ }, { "file": "scss/widgets/base/_pagination.scss", - "line": 24, + "line": 25, "widget": "pagination", "literals": [ "8px" @@ -575,30 +575,6 @@ "text": "$pagination-paddings: 8px;", "category": "local-var" }, - { - "file": "scss/widgets/base/_pagination.scss", - "line": 25, - "widget": "pagination", - "literals": [ - "9px" - ], - "occurrences": 1, - "marker": null, - "text": "$pagination-info-paddings: 9px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/_pagination.scss", - "line": 81, - "widget": "pagination", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "padding: $pagination-paddings - 1px $pagination-page-horizontal-padding;", - "category": "inline" - }, { "file": "scss/widgets/base/_resizable.scss", "line": 2, diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 98e283b35995..0fd32eff7466 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 386, - "variables": 334, - "injected": 378, + "occurrences": 388, + "variables": 336, + "injected": 380, "open": 0, "parameters": 8 }, @@ -44,7 +44,7 @@ "kind": "module-variable", "status": "injected", "setBy": "scss/widgets/fluent-next/contextMenu/_index.scss", - "setTo": "null" + "setTo": "false" }, { "file": "scss/widgets/base/_contextMenu.scss", @@ -252,7 +252,7 @@ "kind": "module-variable", "status": "injected", "setBy": "scss/widgets/fluent-next/fileUploader/_index.scss", - "setTo": "null" + "setTo": "false" }, { "file": "scss/widgets/base/_fileUploader.scss", @@ -877,7 +877,7 @@ "kind": "module-variable", "status": "injected", "setBy": "scss/widgets/fluent-next/pagination/_index.scss", - "setTo": "null" + "setTo": "false" }, { "file": "scss/widgets/base/_pagination.scss", @@ -973,7 +973,7 @@ "kind": "module-variable", "status": "injected", "setBy": "scss/widgets/fluent-next/pagination/_index.scss", - "setTo": "null" + "setTo": "false" }, { "file": "scss/widgets/base/_pagination.scss", @@ -1119,6 +1119,38 @@ "setBy": "scss/widgets/fluent-next/pagination/_index.scss", "setTo": "var(--dx-pagination-pages-count-padding-inline-start)" }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 26, + "widget": "pagination", + "literals": [ + "9px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-info-paddings: 9px !default;", + "variable": "pagination-info-paddings", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "var(--dx-pagination-info-margin-inline)" + }, + { + "file": "scss/widgets/base/_pagination.scss", + "line": 30, + "widget": "pagination", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$pagination-navigate-button-padding-block-fallback: $pagination-paddings - 1px !default;", + "variable": "pagination-navigate-button-padding-block-fallback", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pagination/_index.scss", + "setTo": "false" + }, { "file": "scss/widgets/base/_popup.scss", "line": 7, @@ -1149,7 +1181,7 @@ "kind": "module-variable", "status": "injected", "setBy": "scss/widgets/fluent-next/popup/_index.scss", - "setTo": "null" + "setTo": "false" }, { "file": "scss/widgets/base/_popup.scss", @@ -1887,7 +1919,7 @@ "kind": "module-variable", "status": "injected", "setBy": "scss/widgets/fluent-next/checkBox/_index.scss", - "setTo": "null" + "setTo": "false" }, { "file": "scss/widgets/base/colorBox/_index.scss", From 795580a81de2d1600c84f1a36e6bb6988a8d7c82 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 10:56:26 +0200 Subject: [PATCH 09/25] Tokenize calendar --- .../scss/widgets/base/calendar/_calendar.scss | 8 ++- .../scss/widgets/base/calendar/_mixins.scss | 8 ++- .../widgets/fluent-next/calendar/_index.scss | 4 ++ .../widgets/fluent-next/calendar/_public.scss | 4 ++ .../widgets/fluent-next/calendar/_sizes.scss | 6 ++ .../tests/base-size-markers.baseline.json | 3 +- .../tools/naming/derive-registries.mjs | 3 + .../tools/naming/registries.json | 2 + .../tools/review/nested-scopes.json | 1 + .../tools/sizes/lists/BASE-SIZES.md | 64 +++++++---------- .../tools/sizes/lists/base-owned.json | 58 ++------------- .../tools/sizes/lists/theme-settable.json | 70 +++++++++++++++++-- 12 files changed, 128 insertions(+), 103 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/calendar/_calendar.scss b/packages/devextreme-scss/scss/widgets/base/calendar/_calendar.scss index df11e6b2bfc8..22da41bc377b 100644 --- a/packages/devextreme-scss/scss/widgets/base/calendar/_calendar.scss +++ b/packages/devextreme-scss/scss/widgets/base/calendar/_calendar.scss @@ -1,5 +1,9 @@ @use "../mixins" as *; +// Design sizing values (parametrizable; fluent-next injects tokens) +$calendar-border-width: 1px !default; +$calendar-multiview-table-padding: 0 10px !default; + $calendar-week-day-header-font-size: 10px !default; $calendar-week-day-header-font-weight: 500 !default; @@ -12,7 +16,7 @@ $calendar-week-number-cell-width: 2em !default; // dx-relative direction: ltr; flex-direction: column; justify-content: space-between; - border: 1px solid transparent; + border: $calendar-border-width solid transparent; &.dx-rtl { direction: rtl; @@ -135,7 +139,7 @@ $calendar-week-number-cell-width: 2em !default; // dx-relative } table { - padding: 0 10px; + padding: $calendar-multiview-table-padding; } } } diff --git a/packages/devextreme-scss/scss/widgets/base/calendar/_mixins.scss b/packages/devextreme-scss/scss/widgets/base/calendar/_mixins.scss index faf34cf756f9..a66e4c58f459 100644 --- a/packages/devextreme-scss/scss/widgets/base/calendar/_mixins.scss +++ b/packages/devextreme-scss/scss/widgets/base/calendar/_mixins.scss @@ -129,6 +129,10 @@ $calendar-cell-other-hover-color, $calendar-cell-hover-border-color, $calendar-cell-range-border-radius, + // Today is outlined and the contoured (keyboard-focused) date carries a ring; both are drawn at + // the same thickness, but they are separate decisions, so they are separate knobs. + $cell-today-border-width: 2px, + $cell-contoured-ring-width: 2px, ) { .dx-calendar-cell { color: $cell-text-color; @@ -153,7 +157,7 @@ &.dx-calendar-today { span { - border: 2px solid; + border: $cell-today-border-width solid; border-color: $base-accent; } } @@ -180,7 +184,7 @@ &.dx-calendar-contoured-date { span { - box-shadow: 0 0 0 2px $cell-contoured-border-color; + box-shadow: 0 0 0 $cell-contoured-ring-width $cell-contoured-border-color; } } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/calendar/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/calendar/_index.scss index af6cbb426b57..2307d6aee8c8 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/calendar/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/calendar/_index.scss @@ -6,6 +6,8 @@ @use "../../base/calendar/calendar" with ( $calendar-week-day-header-font-size: var(--dx-calendar-week-day-header-font-size), $calendar-week-day-header-font-weight: var(--dx-calendar-week-day-header-font-weight), + $calendar-border-width: var(--dx-calendar-border-width), + $calendar-multiview-table-padding: 0 var(--dx-calendar-view-multiview-padding-inline), ); @use "../../base/calendar/mixins" as *; @include dx-calendar-mixin( @@ -48,6 +50,8 @@ var(--dx-calendar-cell-other-content-hovered), var(--dx-calendar-cell-border-hovered), 999em, + $cell-today-border-width: var(--dx-calendar-cell-today-border-width), + $cell-contoured-ring-width: var(--dx-calendar-cell-contoured-outline-width), ); @include dx-calendar-cell-in-range-mixin( "::before", diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/calendar/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/calendar/_public.scss index 1b627fdef5f4..67e1cc252202 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/calendar/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/calendar/_public.scss @@ -4,6 +4,7 @@ @mixin publish { --dx-calendar-bg: #{$calendar-bg}; --dx-calendar-bg-hovered: #{$calendar-bg-hovered}; + --dx-calendar-border-width: #{$calendar-border-width}; --dx-calendar-cell-bg-active: #{$calendar-cell-bg-active}; --dx-calendar-cell-bg-selected: #{$calendar-cell-bg-selected}; --dx-calendar-cell-border-hovered: var(--dx-calendar-bg-hovered); @@ -11,9 +12,11 @@ --dx-calendar-cell-content-selected: #{$calendar-cell-content-selected}; --dx-calendar-cell-contoured-border: var(--dx-calendar-cell-bg-active); --dx-calendar-cell-contoured-border-radius: #{$calendar-cell-contoured-border-radius}; + --dx-calendar-cell-contoured-outline-width: #{$calendar-cell-contoured-outline-width}; --dx-calendar-cell-font-size: #{$calendar-cell-font-size}; --dx-calendar-cell-other-content: #{$calendar-cell-other-content}; --dx-calendar-cell-other-content-hovered: var(--dx-calendar-cell-other-content); + --dx-calendar-cell-today-border-width: #{$calendar-cell-today-border-width}; --dx-calendar-content: #{$calendar-content}; --dx-calendar-element-padding: #{$calendar-element-padding}; --dx-calendar-footer-button-height: #{$calendar-footer-button-height}; @@ -22,6 +25,7 @@ --dx-calendar-invalid-border-focused: #{$calendar-invalid-border-focused}; --dx-calendar-legacy-height: #{$calendar-legacy-height}; --dx-calendar-legacy-width: #{$calendar-legacy-width}; + --dx-calendar-view-multiview-padding-inline: #{$calendar-view-multiview-padding-inline}; --dx-calendar-navigator-content: #{$calendar-navigator-content}; --dx-calendar-week-day-header-font-size: #{$calendar-week-day-header-font-size}; --dx-calendar-week-day-header-font-weight: #{$calendar-week-day-header-font-weight}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/calendar/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/calendar/_sizes.scss index 1c3ee67ec03e..0580184fce6c 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/calendar/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/calendar/_sizes.scss @@ -33,3 +33,9 @@ $calendar-element-padding: ds.$spacing-80 !default; // Base-layer values injected with design tokens (wave B1) $calendar-week-day-header-font-size: ds.$font-size-caption-sm !default; $calendar-week-day-header-font-weight: ds.$font-weight-500 !default; // dx-no-semantic-role: 500 is off the weight-role scale (400/600/700) + +// Base-layer sizing injected with design tokens (wave B10) +$calendar-border-width: ds.$border-width-10 !default; +$calendar-view-multiview-padding-inline: ds.$spacing-100 !default; +$calendar-cell-today-border-width: ds.$border-width-20 !default; +$calendar-cell-contoured-outline-width: ds.$border-width-20 !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 232ef7bc6f3b..9bbbd258ddd9 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,6 +1,6 @@ { "openKnobs": 0, - "unclassified": 376, + "unclassified": 372, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, @@ -14,7 +14,6 @@ "dataGrid": 5, "toolbar": 5, "sortable": 4, - "calendar": 4, "diagram": 4, "treeList": 4, "colorBox": 3, diff --git a/packages/devextreme-scss/tools/naming/derive-registries.mjs b/packages/devextreme-scss/tools/naming/derive-registries.mjs index 4e839721195b..8f48f2280b96 100644 --- a/packages/devextreme-scss/tools/naming/derive-registries.mjs +++ b/packages/devextreme-scss/tools/naming/derive-registries.mjs @@ -497,6 +497,9 @@ const OVERRIDES = { 'small', 'dragging', 'inverted', 'first-month', 'first-of-month', 'other-month', // calendar cell states drawn as classes, and the two htmlEditor overlay variants 'contoured', 'faded', 'noimage', 'highlighted', 'dragged', 'legacy', + // .dx-calendar-today marks the current date's cell; .dx-calendar-multiview sits on the + // widget root when it shows more than one month at a time + 'today', 'multiview', // `.dx-calendar-other-view` — a cell belonging to the neighbouring month 'other', // the two step appearances Stepper draws, and the two treeView border variants diff --git a/packages/devextreme-scss/tools/naming/registries.json b/packages/devextreme-scss/tools/naming/registries.json index 618944c569b5..c46622b22b35 100644 --- a/packages/devextreme-scss/tools/naming/registries.json +++ b/packages/devextreme-scss/tools/naming/registries.json @@ -659,6 +659,8 @@ "highlighted", "dragged", "legacy", + "today", + "multiview", "other", "base", "accent", diff --git a/packages/devextreme-scss/tools/review/nested-scopes.json b/packages/devextreme-scss/tools/review/nested-scopes.json index e460d5ae9c44..9cfb632cd8e4 100644 --- a/packages/devextreme-scss/tools/review/nested-scopes.json +++ b/packages/devextreme-scss/tools/review/nested-scopes.json @@ -31,6 +31,7 @@ "dx-calendar-cell", "dx-calendar-cell-in-range", "dx-calendar-cell-range-hover", + "dx-calendar-multiview", "dx-calendar-navigator", "dx-calendar-week-number-cell" ], diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 60c8d3351704..968f93036683 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -14,48 +14,47 @@ and carries a marker saying why. | a raw grep of the layer | 781 | | …of those, inside comments (commented-out code, prose) | 5 | | **in code** | **776** | -| — the theme can already set from outside | 388 | -| — nailed into the shared layer | 388 | +| — the theme can already set from outside | 392 | +| — nailed into the shared layer | 384 | ## What the theme can already set -388 occurrences in 336 `!default` variables. fluent-next already passes 380; 0 are open knobs nobody turns. +392 occurrences in 340 `!default` variables. fluent-next already passes 382; 0 are open knobs nobody turns. ## What is nailed into the layer -| widget | inline | geometry | local-var | calc | mixin-arg | total | +| widget | inline | local-var | geometry | calc | mixin-arg | total | |---|---|---|---|---|---|---| -| gridBase | 50 | 7 | 18 | | | **75** | -| colorView | 35 | 24 | 8 | | | **67** | -| scheduler | 9 | 3 | 41 | 1 | | **54** | -| textEditor | 20 | 20 | | 4 | | **44** | -| htmlEditor | 22 | 8 | 3 | | | **33** | -| pivotGrid | 6 | 6 | 8 | | | **20** | -| cardView | 9 | 5 | 1 | | | **15** | +| gridBase | 50 | 18 | 7 | | | **75** | +| colorView | 35 | 8 | 24 | | | **67** | +| scheduler | 9 | 41 | 3 | 1 | | **54** | +| textEditor | 20 | | 20 | 4 | | **44** | +| htmlEditor | 22 | 3 | 8 | | | **33** | +| pivotGrid | 6 | 8 | 6 | | | **20** | +| cardView | 9 | 1 | 5 | | | **15** | | ui | 8 | | | | | **8** | | scrollView | 5 | | | | | **5** | -| dataGrid | | 3 | | | 2 | **5** | -| toolbar | 1 | 4 | | | | **5** | -| sortable | | 4 | | | | **4** | -| calendar | 1 | 3 | | | | **4** | -| diagram | | | 1 | 3 | | **4** | -| treeList | | 1 | | | 3 | **4** | -| colorBox | 1 | | 1 | 1 | | **3** | +| dataGrid | | | 3 | | 2 | **5** | +| toolbar | 1 | | 4 | | | **5** | +| sortable | | | 4 | | | **4** | +| diagram | | 1 | | 3 | | **4** | +| treeList | | | 1 | | 3 | **4** | +| colorBox | 1 | 1 | | 1 | | **3** | | icon_fonts | 2 | | | | | **2** | -| numberBox | | | 2 | | | **2** | -| resizable | | | 2 | | | **2** | -| slider | | | 2 | | | **2** | +| numberBox | | 2 | | | | **2** | +| resizable | | 2 | | | | **2** | +| slider | | 2 | | | | **2** | | tagBox | 1 | | | 1 | | **2** | -| chat | | 2 | | | | **2** | -| dropDownMenu | | 2 | | | | **2** | +| chat | | | 2 | | | **2** | +| dropDownMenu | | | 2 | | | **2** | | filterBuilder | 2 | | | | | **2** | -| treeView | 1 | | 1 | | | **2** | +| treeView | 1 | 1 | | | | **2** | | fileUploader | 1 | | | | | **1** | -| pagination | | | 1 | | | **1** | -| validation | | 1 | | | | **1** | +| pagination | | 1 | | | | **1** | +| validation | | | 1 | | | **1** | | dropDownButton | 1 | | | | | **1** | | gantt | 1 | | | | | **1** | -| list | | | 1 | | | **1** | +| list | | 1 | | | | **1** | | lookup | | | | 1 | | **1** | | popover | | | | | 1 | **1** | @@ -617,17 +616,6 @@ and carries a marker saying why. - `scss/widgets/base/_sortable.scss:61` · geometry `box-shadow: 0 1px 3px $sortable-clone-shadow-color-first, 0 6px 8px $sortable-clone-shadow-color-second;` -### calendar — 4 - -- `scss/widgets/base/calendar/_calendar.scss:15` · geometry - `border: 1px solid transparent;` -- `scss/widgets/base/calendar/_calendar.scss:138` · inline - `padding: 0 10px;` -- `scss/widgets/base/calendar/_mixins.scss:156` · geometry - `border: 2px solid;` -- `scss/widgets/base/calendar/_mixins.scss:183` · geometry - `box-shadow: 0 0 0 2px $cell-contoured-border-color;` - ### diagram — 4 - `scss/widgets/base/diagram/_index.scss:18` · local-var diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 3d7889e4f398..4f04c6190e92 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,10 +6,10 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 388, + "occurrences": 384, "byCategory": { - "inline": 177, - "geometry": 94, + "inline": 176, + "geometry": 91, "local-var": 90, "calc": 11, "structural": 8, @@ -30,7 +30,6 @@ "fileManager": 5, "toolbar": 5, "sortable": 4, - "calendar": 4, "diagram": 4, "treeList": 4, "colorBox": 3, @@ -54,7 +53,7 @@ "popover": 1, "stepper": 1 }, - "unmarked": 376, + "unmarked": 372, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, @@ -68,7 +67,6 @@ "dataGrid": 5, "toolbar": 5, "sortable": 4, - "calendar": 4, "diagram": 4, "treeList": 4, "colorBox": 3, @@ -808,54 +806,6 @@ "text": "border-bottom: 1px dashed;", "category": "geometry" }, - { - "file": "scss/widgets/base/calendar/_calendar.scss", - "line": 15, - "widget": "calendar", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "border: 1px solid transparent;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/calendar/_calendar.scss", - "line": 138, - "widget": "calendar", - "literals": [ - "10px" - ], - "occurrences": 1, - "marker": null, - "text": "padding: 0 10px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/calendar/_mixins.scss", - "line": 156, - "widget": "calendar", - "literals": [ - "2px" - ], - "occurrences": 1, - "marker": null, - "text": "border: 2px solid;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/calendar/_mixins.scss", - "line": 183, - "widget": "calendar", - "literals": [ - "2px" - ], - "occurrences": 1, - "marker": null, - "text": "box-shadow: 0 0 0 2px $cell-contoured-border-color;", - "category": "geometry" - }, { "file": "scss/widgets/base/cardView/content_view/content/card/_index.scss", "line": 22, diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 0fd32eff7466..d4f6096356a4 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,11 +7,11 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 388, - "variables": 336, - "injected": 380, + "occurrences": 392, + "variables": 340, + "injected": 382, "open": 0, - "parameters": 8 + "parameters": 10 }, "places": [ { @@ -1827,7 +1827,39 @@ }, { "file": "scss/widgets/base/calendar/_calendar.scss", - "line": 3, + "line": 4, + "widget": "calendar", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$calendar-border-width: 1px !default;", + "variable": "calendar-border-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/calendar/_index.scss", + "setTo": "var(--dx-calendar-border-width)" + }, + { + "file": "scss/widgets/base/calendar/_calendar.scss", + "line": 5, + "widget": "calendar", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$calendar-multiview-table-padding: 0 10px !default;", + "variable": "calendar-multiview-table-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/calendar/_index.scss", + "setTo": "0 var(--dx-calendar-view-multiview-padding-inline)" + }, + { + "file": "scss/widgets/base/calendar/_calendar.scss", + "line": 7, "widget": "calendar", "literals": [ "10px" @@ -1841,6 +1873,34 @@ "setBy": "scss/widgets/fluent-next/calendar/_index.scss", "setTo": "var(--dx-calendar-week-day-header-font-size)" }, + { + "file": "scss/widgets/base/calendar/_mixins.scss", + "line": 134, + "widget": "calendar", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$cell-today-border-width: 2px,", + "variable": "cell-today-border-width", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/calendar/_mixins.scss", + "line": 135, + "widget": "calendar", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$cell-contoured-ring-width: 2px,", + "variable": "cell-contoured-ring-width", + "kind": "mixin-parameter", + "status": "parameter" + }, { "file": "scss/widgets/base/chat/_index.scss", "line": 5, From 945760a65e788e4e0db8737e75c8f77b175dac1f Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 11:03:57 +0200 Subject: [PATCH 10/25] Tokenize diagram --- .../scss/widgets/base/diagram/_index.scss | 19 ++++-- .../widgets/fluent-next/diagram/_index.scss | 1 + .../widgets/fluent-next/diagram/_public.scss | 1 + .../widgets/fluent-next/diagram/_sizes.scss | 3 + .../tests/base-size-markers.baseline.json | 3 +- .../tools/sizes/lists/BASE-SIZES.md | 68 ++++++++----------- .../tools/sizes/lists/base-owned.json | 53 +++------------ .../tools/sizes/lists/theme-settable.json | 44 ++++++++---- 8 files changed, 87 insertions(+), 105 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/diagram/_index.scss b/packages/devextreme-scss/scss/widgets/base/diagram/_index.scss index 4342141c37d4..0e5130a81f5a 100644 --- a/packages/devextreme-scss/scss/widgets/base/diagram/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/diagram/_index.scss @@ -1,3 +1,5 @@ +@use "sass:math"; +@use "sass:meta"; @use "../mixins" as *; // Design sizing values (parametrizable; fluent-next injects tokens) @@ -15,7 +17,8 @@ $diagram-context-toolbox-target-height: 1px !default; $diagram-popup-title-toolbar-bg: rgba(0, 0, 0, 0.05) !default; -$transparent-border: 1px solid transparent; +$diagram-border-width: 1px !default; +$transparent-border: $diagram-border-width solid transparent; $diagram-toolbox-input-font-size: 0.9em !default; // dx-relative .dx-diagram { @@ -172,7 +175,7 @@ $diagram-toolbox-input-font-size: 0.9em !default; // dx-relative } &.dx-diagram-mobile-popup { - width: calc(100% - 2px) !important; // stylelint-disable-line declaration-no-important + width: calc(100% - 2px) !important; // stylelint-disable-line declaration-no-important -- dx-px-nudge: 2px shaved off a full-width popup .dx-popup-title { border: 0; @@ -321,8 +324,16 @@ $diagram-toolbox-input-font-size: 0.9em !default; // dx-relative .dx-diagram-loading-indicator { position: absolute; - top: calc(50% - 32px); - left: calc(50% - 32px); + top: if( + meta.type-of($diagram-loading-indicator-height) == number, + calc(50% - #{math.div($diagram-loading-indicator-height, 2)}), + calc(50% - #{$diagram-loading-indicator-height} / 2) + ); + left: if( + meta.type-of($diagram-loading-indicator-width) == number, + calc(50% - #{math.div($diagram-loading-indicator-width, 2)}), + calc(50% - #{$diagram-loading-indicator-width} / 2) + ); width: $diagram-loading-indicator-width; height: $diagram-loading-indicator-height; } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/diagram/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/diagram/_index.scss index 97ab54c09143..4db1a5da438c 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/diagram/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/diagram/_index.scss @@ -9,6 +9,7 @@ $diagram-popup-content-padding: var(--dx-diagram-popup-content-padding), $diagram-colorview-palette-min-width: var(--dx-diagram-color-view-palette-min-width), $diagram-colorview-hue-scale-cell-margin-left: var(--dx-diagram-color-view-hue-scale-cell-margin-inline-start), + $diagram-border-width: var(--dx-diagram-border-width), $diagram-loading-indicator-width: var(--dx-diagram-loading-indicator-width), $diagram-loading-indicator-height: var(--dx-diagram-loading-indicator-height), $diagram-context-toolbox-target-width: var(--dx-diagram-context-toolbox-target-width), diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/diagram/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/diagram/_public.scss index 7870dfa80538..175025acad26 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/diagram/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/diagram/_public.scss @@ -5,6 +5,7 @@ --dx-diagram-accordion-item-border-block-end: #{$diagram-accordion-item-border-block-end}; --dx-diagram-accordion-item-title-min-height: #{$diagram-accordion-item-title-min-height}; --dx-diagram-bg: #{$diagram-bg}; + --dx-diagram-border-width: #{$diagram-border-width}; --dx-diagram-border: #{$diagram-border}; --dx-diagram-button-margin: #{$diagram-button-margin}; --dx-diagram-button-min-height: #{$diagram-button-min-height}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/diagram/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/diagram/_sizes.scss index 2949389913a2..fb39b0253f2c 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/diagram/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/diagram/_sizes.scss @@ -134,3 +134,6 @@ $diagram-context-toolbox-target-height: ds.$spacing-10 !default; * variables (NAMING.md, O7). */ $diagram-toolbar-icon-size: $global-icon-size; + +// Base-layer sizing injected with design tokens (wave B11) +$diagram-border-width: ds.$border-width-10 !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 9bbbd258ddd9..3c238072baf1 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,6 +1,6 @@ { "openKnobs": 0, - "unclassified": 372, + "unclassified": 368, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, @@ -14,7 +14,6 @@ "dataGrid": 5, "toolbar": 5, "sortable": 4, - "diagram": 4, "treeList": 4, "colorBox": 3, "icon_fonts": 2, diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 968f93036683..6f4c298bac75 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -11,50 +11,49 @@ and carries a marker saying why. | | occurrences | |---|---| -| a raw grep of the layer | 781 | -| …of those, inside comments (commented-out code, prose) | 5 | -| **in code** | **776** | -| — the theme can already set from outside | 392 | -| — nailed into the shared layer | 384 | +| a raw grep of the layer | 780 | +| …of those, inside comments (commented-out code, prose) | 6 | +| **in code** | **774** | +| — the theme can already set from outside | 393 | +| — nailed into the shared layer | 381 | ## What the theme can already set -392 occurrences in 340 `!default` variables. fluent-next already passes 382; 0 are open knobs nobody turns. +393 occurrences in 341 `!default` variables. fluent-next already passes 383; 0 are open knobs nobody turns. ## What is nailed into the layer -| widget | inline | local-var | geometry | calc | mixin-arg | total | +| widget | inline | geometry | local-var | calc | mixin-arg | total | |---|---|---|---|---|---|---| -| gridBase | 50 | 18 | 7 | | | **75** | -| colorView | 35 | 8 | 24 | | | **67** | -| scheduler | 9 | 41 | 3 | 1 | | **54** | -| textEditor | 20 | | 20 | 4 | | **44** | -| htmlEditor | 22 | 3 | 8 | | | **33** | -| pivotGrid | 6 | 8 | 6 | | | **20** | -| cardView | 9 | 1 | 5 | | | **15** | +| gridBase | 50 | 7 | 18 | | | **75** | +| colorView | 35 | 24 | 8 | | | **67** | +| scheduler | 9 | 3 | 41 | 1 | | **54** | +| textEditor | 20 | 20 | | 4 | | **44** | +| htmlEditor | 22 | 8 | 3 | | | **33** | +| pivotGrid | 6 | 6 | 8 | | | **20** | +| cardView | 9 | 5 | 1 | | | **15** | | ui | 8 | | | | | **8** | | scrollView | 5 | | | | | **5** | -| dataGrid | | | 3 | | 2 | **5** | -| toolbar | 1 | | 4 | | | **5** | -| sortable | | | 4 | | | **4** | -| diagram | | 1 | | 3 | | **4** | -| treeList | | | 1 | | 3 | **4** | -| colorBox | 1 | 1 | | 1 | | **3** | +| dataGrid | | 3 | | | 2 | **5** | +| toolbar | 1 | 4 | | | | **5** | +| sortable | | 4 | | | | **4** | +| treeList | | 1 | | | 3 | **4** | +| colorBox | 1 | | 1 | 1 | | **3** | | icon_fonts | 2 | | | | | **2** | -| numberBox | | 2 | | | | **2** | -| resizable | | 2 | | | | **2** | -| slider | | 2 | | | | **2** | +| numberBox | | | 2 | | | **2** | +| resizable | | | 2 | | | **2** | +| slider | | | 2 | | | **2** | | tagBox | 1 | | | 1 | | **2** | -| chat | | | 2 | | | **2** | -| dropDownMenu | | | 2 | | | **2** | +| chat | | 2 | | | | **2** | +| dropDownMenu | | 2 | | | | **2** | | filterBuilder | 2 | | | | | **2** | -| treeView | 1 | 1 | | | | **2** | +| treeView | 1 | | 1 | | | **2** | | fileUploader | 1 | | | | | **1** | -| pagination | | 1 | | | | **1** | -| validation | | | 1 | | | **1** | +| pagination | | | 1 | | | **1** | +| validation | | 1 | | | | **1** | | dropDownButton | 1 | | | | | **1** | | gantt | 1 | | | | | **1** | -| list | | 1 | | | | **1** | +| list | | | 1 | | | **1** | | lookup | | | | 1 | | **1** | | popover | | | | | 1 | **1** | @@ -616,17 +615,6 @@ and carries a marker saying why. - `scss/widgets/base/_sortable.scss:61` · geometry `box-shadow: 0 1px 3px $sortable-clone-shadow-color-first, 0 6px 8px $sortable-clone-shadow-color-second;` -### diagram — 4 - -- `scss/widgets/base/diagram/_index.scss:18` · local-var - `$transparent-border: 1px solid transparent;` -- `scss/widgets/base/diagram/_index.scss:175` · calc - `width: calc(100% - 2px) !important; // stylelint-disable-line declaration-no-important` -- `scss/widgets/base/diagram/_index.scss:324` · calc - `top: calc(50% - 32px);` -- `scss/widgets/base/diagram/_index.scss:325` · calc - `left: calc(50% - 32px);` - ### treeList — 4 - `scss/widgets/base/treeList/_index.scss:168` · mixin-arg diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 4f04c6190e92..d1ad6c2ee912 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,12 +6,12 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 384, + "occurrences": 381, "byCategory": { "inline": 176, "geometry": 91, - "local-var": 90, - "calc": 11, + "local-var": 89, + "calc": 9, "structural": 8, "mixin-arg": 6, "media": 2 @@ -30,7 +30,6 @@ "fileManager": 5, "toolbar": 5, "sortable": 4, - "diagram": 4, "treeList": 4, "colorBox": 3, "icon_fonts": 2, @@ -46,6 +45,7 @@ "fileUploader": 1, "pagination": 1, "validation": 1, + "diagram": 1, "dropDownButton": 1, "gantt": 1, "list": 1, @@ -53,7 +53,7 @@ "popover": 1, "stepper": 1 }, - "unmarked": 372, + "unmarked": 368, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, @@ -67,7 +67,6 @@ "dataGrid": 5, "toolbar": 5, "sortable": 4, - "diagram": 4, "treeList": 4, "colorBox": 3, "icon_fonts": 2, @@ -1561,50 +1560,14 @@ }, { "file": "scss/widgets/base/diagram/_index.scss", - "line": 18, - "widget": "diagram", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "$transparent-border: 1px solid transparent;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/diagram/_index.scss", - "line": 175, + "line": 178, "widget": "diagram", "literals": [ "2px" ], "occurrences": 1, - "marker": null, - "text": "width: calc(100% - 2px) !important; // stylelint-disable-line declaration-no-important", - "category": "calc" - }, - { - "file": "scss/widgets/base/diagram/_index.scss", - "line": 324, - "widget": "diagram", - "literals": [ - "32px" - ], - "occurrences": 1, - "marker": null, - "text": "top: calc(50% - 32px);", - "category": "calc" - }, - { - "file": "scss/widgets/base/diagram/_index.scss", - "line": 325, - "widget": "diagram", - "literals": [ - "32px" - ], - "occurrences": 1, - "marker": null, - "text": "left: calc(50% - 32px);", + "marker": "dx-px-nudge", + "text": "width: calc(100% - 2px) !important; // stylelint-disable-line declaration-no-important -- dx-px-nudge: 2px shaved off a full-width popup", "category": "calc" }, { diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index d4f6096356a4..905816e02c40 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 392, - "variables": 340, - "injected": 382, + "occurrences": 393, + "variables": 341, + "injected": 383, "open": 0, "parameters": 10 }, @@ -2319,7 +2319,7 @@ }, { "file": "scss/widgets/base/diagram/_index.scss", - "line": 4, + "line": 6, "widget": "diagram", "literals": [ "600px" @@ -2335,7 +2335,7 @@ }, { "file": "scss/widgets/base/diagram/_index.scss", - "line": 5, + "line": 7, "widget": "diagram", "literals": [ "350px" @@ -2351,7 +2351,7 @@ }, { "file": "scss/widgets/base/diagram/_index.scss", - "line": 6, + "line": 8, "widget": "diagram", "literals": [ "5px" @@ -2367,7 +2367,7 @@ }, { "file": "scss/widgets/base/diagram/_index.scss", - "line": 7, + "line": 9, "widget": "diagram", "literals": [ "14px" @@ -2383,7 +2383,7 @@ }, { "file": "scss/widgets/base/diagram/_index.scss", - "line": 8, + "line": 10, "widget": "diagram", "literals": [ "8px" @@ -2399,7 +2399,7 @@ }, { "file": "scss/widgets/base/diagram/_index.scss", - "line": 9, + "line": 11, "widget": "diagram", "literals": [ "300px" @@ -2415,7 +2415,7 @@ }, { "file": "scss/widgets/base/diagram/_index.scss", - "line": 10, + "line": 12, "widget": "diagram", "literals": [ "12px" @@ -2431,7 +2431,7 @@ }, { "file": "scss/widgets/base/diagram/_index.scss", - "line": 11, + "line": 13, "widget": "diagram", "literals": [ "64px" @@ -2447,7 +2447,7 @@ }, { "file": "scss/widgets/base/diagram/_index.scss", - "line": 12, + "line": 14, "widget": "diagram", "literals": [ "64px" @@ -2463,7 +2463,7 @@ }, { "file": "scss/widgets/base/diagram/_index.scss", - "line": 13, + "line": 15, "widget": "diagram", "literals": [ "1px" @@ -2479,7 +2479,7 @@ }, { "file": "scss/widgets/base/diagram/_index.scss", - "line": 14, + "line": 16, "widget": "diagram", "literals": [ "1px" @@ -2493,6 +2493,22 @@ "setBy": "scss/widgets/fluent-next/diagram/_index.scss", "setTo": "var(--dx-diagram-context-toolbox-target-height)" }, + { + "file": "scss/widgets/base/diagram/_index.scss", + "line": 20, + "widget": "diagram", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$diagram-border-width: 1px !default;", + "variable": "diagram-border-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/diagram/_index.scss", + "setTo": "var(--dx-diagram-border-width)" + }, { "file": "scss/widgets/base/dropDownMenu/_index.scss", "line": 2, From 54bbd4361b6f5a6ad077a7a1e48389afbdf70f30 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 11:32:09 +0200 Subject: [PATCH 11/25] Tokenize components --- .../scss/widgets/base/_fileUploader.scss | 2 +- .../scss/widgets/base/_icon_fonts.scss | 4 +- .../scss/widgets/base/_pagination.scss | 2 +- .../scss/widgets/base/_resizable.scss | 4 +- .../scss/widgets/base/_scrollView.scss | 6 +- .../scss/widgets/base/_slider.scss | 4 +- .../scss/widgets/base/_sortable.scss | 2 +- .../scss/widgets/base/_ui.scss | 16 +- .../scss/widgets/base/_validation.scss | 3 +- .../scss/widgets/base/chat/_index.scss | 5 +- .../chat/layout/chat-messagebox/_index.scss | 5 +- .../base/chat/layout/chat/_mixins.scss | 5 +- .../widgets/base/dropDownButton/_mixins.scss | 3 +- .../widgets/base/dropDownMenu/_mixins.scss | 7 +- .../widgets/base/filterBuilder/_common.scss | 4 +- .../scss/widgets/base/gantt/_index.scss | 2 +- .../scss/widgets/base/popover/_index.scss | 2 +- .../scss/widgets/base/toolbar/_index.scss | 2 +- .../scss/widgets/base/toolbar/_mixins.scss | 11 +- .../scss/widgets/base/treeView/_common.scss | 6 +- .../scss/widgets/base/treeView/_index.scss | 4 + .../scss/widgets/fluent-next/chat/_index.scss | 2 + .../widgets/fluent-next/chat/_public.scss | 2 + .../scss/widgets/fluent-next/chat/_sizes.scss | 4 + .../widgets/fluent-next/common/_mixins.scss | 1 + .../widgets/fluent-next/common/_public.scss | 2 + .../widgets/fluent-next/common/_sizes.scss | 2 + .../fluent-next/dropDownButton/_index.scss | 1 + .../fluent-next/dropDownButton/_public.scss | 1 + .../fluent-next/dropDownButton/_sizes.scss | 3 + .../fluent-next/dropDownMenu/_index.scss | 8 +- .../widgets/fluent-next/slider/_index.scss | 1 + .../widgets/fluent-next/slider/_public.scss | 1 + .../widgets/fluent-next/slider/_sizes.scss | 3 + .../widgets/fluent-next/toolbar/_index.scss | 7 +- .../widgets/fluent-next/treeView/_index.scss | 2 + .../widgets/fluent-next/treeView/_public.scss | 1 + .../widgets/fluent-next/treeView/_sizes.scss | 3 + .../fluent-next/validation/_public.scss | 1 + .../fluent-next/validation/_sizes.scss | 3 + .../tests/base-size-markers.baseline.json | 21 +- .../tools/naming/derive-registries.mjs | 2 + .../tools/naming/registries.json | 3 +- .../tools/review/nested-scopes.json | 3 +- .../tools/sizes/lists/BASE-SIZES.md | 178 ++--------- .../tools/sizes/lists/base-owned.json | 292 ++++-------------- .../tools/sizes/lists/theme-settable.json | 182 ++++++++++- 47 files changed, 362 insertions(+), 466 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/_fileUploader.scss b/packages/devextreme-scss/scss/widgets/base/_fileUploader.scss index 08278e39351c..1d98db9224bf 100644 --- a/packages/devextreme-scss/scss/widgets/base/_fileUploader.scss +++ b/packages/devextreme-scss/scss/widgets/base/_fileUploader.scss @@ -210,7 +210,7 @@ $fileuploader-input-wrapper-vertical-padding: 1em !default; // dx-relative float: left; width: 100%; height: $fileuploader-progressbar-height; - margin-top: -6px; + margin-top: -6px; // dx-fixed-size: pulls the status text onto the progress line } .dx-fileuploader-file-name { diff --git a/packages/devextreme-scss/scss/widgets/base/_icon_fonts.scss b/packages/devextreme-scss/scss/widgets/base/_icon_fonts.scss index e6771ff34fcc..4414faee776f 100644 --- a/packages/devextreme-scss/scss/widgets/base/_icon_fonts.scss +++ b/packages/devextreme-scss/scss/widgets/base/_icon_fonts.scss @@ -304,7 +304,7 @@ } @mixin dx-font-icon($glyph) { - font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes + font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes -- dx-icon-glyph-size: the icon font's own size, no icon scale in the package &::before { content: $glyph; @@ -672,7 +672,7 @@ $icons: ( } %icon-font { - font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes + font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes -- dx-icon-glyph-size: the icon font's own size, no icon scale in the package } @each $key, $glyph in $icons { diff --git a/packages/devextreme-scss/scss/widgets/base/_pagination.scss b/packages/devextreme-scss/scss/widgets/base/_pagination.scss index 8635aa1b39fd..6e21325afdc1 100644 --- a/packages/devextreme-scss/scss/widgets/base/_pagination.scss +++ b/packages/devextreme-scss/scss/widgets/base/_pagination.scss @@ -22,7 +22,7 @@ $pagination-info-opacity: 0.7 !default; $pagination-nav-disabled-opacity: 0.3 !default; // Not a knob itself: the shared source of the two fallbacks below, which are. -$pagination-paddings: 8px; +$pagination-paddings: 8px; // dx-fixed-size: the shared source of the two fallbacks below $pagination-info-paddings: 9px !default; // The pager's own padding and the nav button's, as fallbacks fluent-next switches off with false. diff --git a/packages/devextreme-scss/scss/widgets/base/_resizable.scss b/packages/devextreme-scss/scss/widgets/base/_resizable.scss index 8068ae0a863a..d1ac354a127d 100644 --- a/packages/devextreme-scss/scss/widgets/base/_resizable.scss +++ b/packages/devextreme-scss/scss/widgets/base/_resizable.scss @@ -1,6 +1,6 @@ $handle-offset: 0; -$one-side-handle-size: 3px + $handle-offset; -$two-side-handle-size: 6px + $handle-offset; +$one-side-handle-size: 3px + $handle-offset; // dx-fixed-size: handle thickness ($handle-offset is 0) +$two-side-handle-size: 6px + $handle-offset; // dx-fixed-size: handle thickness ($handle-offset is 0) .dx-resizable { display: block; diff --git a/packages/devextreme-scss/scss/widgets/base/_scrollView.scss b/packages/devextreme-scss/scss/widgets/base/_scrollView.scss index 979b771002f2..7995ecfe4968 100644 --- a/packages/devextreme-scss/scss/widgets/base/_scrollView.scss +++ b/packages/devextreme-scss/scss/widgets/base/_scrollView.scss @@ -51,7 +51,7 @@ $pulldown-top-offset: if( height: 100%; width: 100%; left: -50%; - margin-left: -20px; + margin-left: -20px; // dx-fixed-size: centres the android pull-down on the pocket padding: 0; border-radius: 50%; @@ -150,7 +150,7 @@ $pulldown-top-offset: if( left: 0; top: 50%; display: inline-block; - margin: -15px 20px 0 15px; + margin: -15px 20px 0 15px; // dx-fixed-size: centres the indicator on its own half-height width: $scrollview-pull-down-indicator-width; -webkit-user-drag: none; } @@ -231,7 +231,7 @@ $pulldown-top-offset: if( .dx-scrollview-scrollbottom-text { display: inline-block; - margin-top: -20px; + margin-top: -20px; // dx-fixed-size: pulls the text onto the indicator's line vertical-align: middle; -webkit-user-drag: none; } diff --git a/packages/devextreme-scss/scss/widgets/base/_slider.scss b/packages/devextreme-scss/scss/widgets/base/_slider.scss index 77a05e3c70c9..1c5a76524df9 100644 --- a/packages/devextreme-scss/scss/widgets/base/_slider.scss +++ b/packages/devextreme-scss/scss/widgets/base/_slider.scss @@ -1,8 +1,8 @@ @use "./mixins" as *; @use "./popover/mixins" as *; -$slider-tooltip-content-height: 28px; -$slider-tooltip-arrow-height: 7px; +$slider-tooltip-content-height: 28px !default; +$slider-tooltip-arrow-height: 7px; // dx-fixed-size: feeds dx-popover-arrow-size, which divides by sqrt(2) // Design sizing values (parametrizable; fluent-next injects tokens) $slider-label-position-bottom-padding-bottom: 14px !default; diff --git a/packages/devextreme-scss/scss/widgets/base/_sortable.scss b/packages/devextreme-scss/scss/widgets/base/_sortable.scss index f6ac60912163..79a7cb64b80f 100644 --- a/packages/devextreme-scss/scss/widgets/base/_sortable.scss +++ b/packages/devextreme-scss/scss/widgets/base/_sortable.scss @@ -58,5 +58,5 @@ $sortable-placeholder-inside-border-width: 2px !default; .dx-sortable-dragging > * { border-color: if(meta.type-of($base-accent) == color, color.change($base-accent, $alpha: 0.5), rgb(from #{$base-accent} r g b / 0.5)); - box-shadow: 0 1px 3px $sortable-clone-shadow-color-first, 0 6px 8px $sortable-clone-shadow-color-second; + box-shadow: 0 1px 3px $sortable-clone-shadow-color-first, 0 6px 8px $sortable-clone-shadow-color-second; // dx-shadow-geometry: the theme already takes both colours from roles; whether a whole shadow role replaces this two-layer geometry is design's call } diff --git a/packages/devextreme-scss/scss/widgets/base/_ui.scss b/packages/devextreme-scss/scss/widgets/base/_ui.scss index 01861bbd9f96..79113adfd114 100644 --- a/packages/devextreme-scss/scss/widgets/base/_ui.scss +++ b/packages/devextreme-scss/scss/widgets/base/_ui.scss @@ -10,8 +10,8 @@ .dx-hidden-input { position: fixed; - top: -10px; - left: -10px; + top: -10px; // dx-structural: parks the hidden input off-screen + left: -10px; // dx-structural: parks the hidden input off-screen width: 0; height: 0; } @@ -38,8 +38,8 @@ .dx-screen-reader-only { position: absolute; - height: 1px; - width: 1px; + height: 1px; // dx-structural: the screen-reader-only clipping box, not a designed size + width: 1px; // dx-structural: the screen-reader-only clipping box, not a designed size overflow: hidden; white-space: nowrap; clip: rect(0 0 0 0); @@ -223,7 +223,7 @@ .dx-android-pop-animation { &.dx-enter.dx-forward, &.dx-leave.dx-leave-active.dx-backward { - transform: translate3d(0, 150px, 0); + transform: translate3d(0, 150px, 0); // dx-fixed-size: how far the android pop animation travels opacity: 0; } @@ -345,7 +345,7 @@ .dx-3d-drop-animation { &.dx-enter, &.dx-leave.dx-leave-active { - transform: rotate3d(1, 0, 0, 10deg) translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1); + transform: rotate3d(1, 0, 0, 10deg) translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1); // dx-fixed-size: how far the 3d drop animation travels opacity: 0; } @@ -359,7 +359,7 @@ .dx-fade-drop-animation { &.dx-enter, &.dx-leave.dx-leave-active { - transform: translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1); + transform: translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1); // dx-fixed-size: how far the fade drop animation travels opacity: 0; } @@ -373,7 +373,7 @@ .dx-fade-rise-animation { &.dx-enter, &.dx-leave.dx-leave-active { - transform: translate3d(0, 10px, 0) scale3d(1.1, 1.1, 1.1); + transform: translate3d(0, 10px, 0) scale3d(1.1, 1.1, 1.1); // dx-fixed-size: how far the fade rise animation travels opacity: 0; } diff --git a/packages/devextreme-scss/scss/widgets/base/_validation.scss b/packages/devextreme-scss/scss/widgets/base/_validation.scss index ce0f2117ff5b..abaaa03d78e8 100644 --- a/packages/devextreme-scss/scss/widgets/base/_validation.scss +++ b/packages/devextreme-scss/scss/widgets/base/_validation.scss @@ -3,6 +3,7 @@ $validation-summary-margin-top: 20px !default; $validation-message-content-padding: 10px !default; $validation-message-font-size: 0.85em !default; // dx-relative +$validation-summary-item-border-bottom-width: 1px !default; @mixin dx-base-validation($summary-color, $message-color, $message-bg-color, $border-radius) { .dx-validationsummary-item { @@ -82,7 +83,7 @@ $validation-message-font-size: 0.85em !default; // dx-relative } .dx-validationsummary-item-content { - border-bottom: 1px dashed; + border-bottom: $validation-summary-item-border-bottom-width dashed; display: inline-block; line-height: normal; } diff --git a/packages/devextreme-scss/scss/widgets/base/chat/_index.scss b/packages/devextreme-scss/scss/widgets/base/chat/_index.scss index 0fa5b1a8000c..5a92198ea57c 100644 --- a/packages/devextreme-scss/scss/widgets/base/chat/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/chat/_index.scss @@ -2,6 +2,7 @@ $chat-file-name-font-weight: 600 !default; $chat-editing-preview-caption-font-weight: 500 !default; // Design sizing values (parametrizable; fluent-next injects tokens) +$chat-messagebox-border-block-start-width: 1px !default; $chat-messagebubble-padding-image: 4px !default; $chat-messagebubble-border-radius-image: 8px !default; $chat-messagebubble-max-width-image: 400px !default; @@ -14,7 +15,9 @@ $chat-messagebubble-max-height-image: 400px !default; $file-name-font-weight: $chat-file-name-font-weight, ); @use "layout/chat-alertlist" as *; -@use "layout/chat-messagebox" as *; +@use "layout/chat-messagebox" as * with ( + $messagebox-border-block-start-width: $chat-messagebox-border-block-start-width, +); @use "layout/chat-messagebox-editing-preview" as * with ( $editing-preview-caption-font-weight: $chat-editing-preview-caption-font-weight, ); diff --git a/packages/devextreme-scss/scss/widgets/base/chat/layout/chat-messagebox/_index.scss b/packages/devextreme-scss/scss/widgets/base/chat/layout/chat-messagebox/_index.scss index 020268c74563..405555977963 100644 --- a/packages/devextreme-scss/scss/widgets/base/chat/layout/chat-messagebox/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/chat/layout/chat-messagebox/_index.scss @@ -1,7 +1,10 @@ +// Sized from base/chat, which owns the default and forwards a theme's value down (as chat-fileview does). +$messagebox-border-block-start-width: null !default; + .dx-chat-messagebox { display: flex; flex-direction: column; - border-top-width: 1px; + border-top-width: $messagebox-border-block-start-width; border-top-style: solid; } diff --git a/packages/devextreme-scss/scss/widgets/base/chat/layout/chat/_mixins.scss b/packages/devextreme-scss/scss/widgets/base/chat/layout/chat/_mixins.scss index bc3fc147187e..0120d523ae63 100644 --- a/packages/devextreme-scss/scss/widgets/base/chat/layout/chat/_mixins.scss +++ b/packages/devextreme-scss/scss/widgets/base/chat/layout/chat/_mixins.scss @@ -1,11 +1,12 @@ @mixin chat( $background-color, $border-color, - $border-radius + $border-radius, + $border-width: 1px, ) { .dx-chat { background-color: $background-color; - border: 1px solid; + border: $border-width solid; border-color: $border-color; border-radius: $border-radius; } diff --git a/packages/devextreme-scss/scss/widgets/base/dropDownButton/_mixins.scss b/packages/devextreme-scss/scss/widgets/base/dropDownButton/_mixins.scss index c5386d732acb..846174c0330a 100644 --- a/packages/devextreme-scss/scss/widgets/base/dropDownButton/_mixins.scss +++ b/packages/devextreme-scss/scss/widgets/base/dropDownButton/_mixins.scss @@ -1,6 +1,7 @@ @mixin dx-dropdownbutton( $dropdownbutton-icon-spindown-size, $dropdownbutton-action-horizontal-padding, + $dropdownbutton-icon-right-margin-inline-start: 4px, ) { .dx-dropdownbutton-toggle { .dx-icon-spindown { @@ -19,7 +20,7 @@ &.dx-button-has-icon, &.dx-button-has-text { .dx-icon.dx-icon-right { - margin-inline-start: 4px; + margin-inline-start: $dropdownbutton-icon-right-margin-inline-start; margin-inline-end: 0; } } diff --git a/packages/devextreme-scss/scss/widgets/base/dropDownMenu/_mixins.scss b/packages/devextreme-scss/scss/widgets/base/dropDownMenu/_mixins.scss index 129adac34b1d..f6ff37723dd8 100644 --- a/packages/devextreme-scss/scss/widgets/base/dropDownMenu/_mixins.scss +++ b/packages/devextreme-scss/scss/widgets/base/dropDownMenu/_mixins.scss @@ -2,6 +2,9 @@ $accent-color, $border-radius, $section-horizontal-margin, + // The focus ring's geometry, on the same role as its colour and radius. + $outline-width: 2px, + $outline-offset: 1px, ) { .dx-dropdownmenu-popup-wrapper.dx-dropdownmenu-list-focus-mode { .dx-dropdownmenu-list { @@ -9,8 +12,8 @@ .dx-list-item[tabindex="0"]:focus-visible { position: relative; z-index: 1; - outline: 2px solid $accent-color; - outline-offset: 1px; + outline: $outline-width solid $accent-color; + outline-offset: $outline-offset; border-radius: $border-radius; } } diff --git a/packages/devextreme-scss/scss/widgets/base/filterBuilder/_common.scss b/packages/devextreme-scss/scss/widgets/base/filterBuilder/_common.scss index a95bc7402c90..8580de332cf9 100644 --- a/packages/devextreme-scss/scss/widgets/base/filterBuilder/_common.scss +++ b/packages/devextreme-scss/scss/widgets/base/filterBuilder/_common.scss @@ -73,8 +73,8 @@ $filterbuilder-scrollable-max-height: null !default; .dx-texteditor { vertical-align: middle; - margin-top: -7px; - margin-bottom: -4px; + margin-top: -7px; // dx-fixed-size: pulls the row onto the group line + margin-bottom: -4px; // dx-fixed-size: pulls the row onto the group line display: inline-block; } } diff --git a/packages/devextreme-scss/scss/widgets/base/gantt/_index.scss b/packages/devextreme-scss/scss/widgets/base/gantt/_index.scss index dc4a3516af60..389a09123dbf 100644 --- a/packages/devextreme-scss/scss/widgets/base/gantt/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/gantt/_index.scss @@ -57,7 +57,7 @@ $gantt-view-min-width: 1px !default; min-width: $gantt-view-min-width; .dx-gantt-tac-hb { - margin-top: -1px; + margin-top: -1px; // dx-px-nudge: a one-pixel correction on top of the row height } .dx-scrollable-scrollbar { diff --git a/packages/devextreme-scss/scss/widgets/base/popover/_index.scss b/packages/devextreme-scss/scss/widgets/base/popover/_index.scss index d9a22934371f..04e6119f6a7d 100644 --- a/packages/devextreme-scss/scss/widgets/base/popover/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/popover/_index.scss @@ -1,5 +1,5 @@ @use "./mixins" as *; -@include dx-popover-arrow-size(20px); +@include dx-popover-arrow-size(20px); // dx-fixed-size: the arrow width; the mixin divides it by sqrt(2), so a var() cannot pass .dx-popover-arrow { position: absolute; diff --git a/packages/devextreme-scss/scss/widgets/base/toolbar/_index.scss b/packages/devextreme-scss/scss/widgets/base/toolbar/_index.scss index 01361ba736ea..e216ebb33083 100644 --- a/packages/devextreme-scss/scss/widgets/base/toolbar/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/toolbar/_index.scss @@ -98,7 +98,7 @@ $toolbar-texteditor-width: 150px !default; @include dx-overflow(); // NOTE: Prevent croping of italic text in label (T126187) - margin: 0 -5px; + margin: 0 -5px; // dx-fixed-size: pulls the items flush with the toolbar edge padding: $toolbar-item-padding; } diff --git a/packages/devextreme-scss/scss/widgets/base/toolbar/_mixins.scss b/packages/devextreme-scss/scss/widgets/base/toolbar/_mixins.scss index e76f9e4da44e..4627f47ac1ec 100644 --- a/packages/devextreme-scss/scss/widgets/base/toolbar/_mixins.scss +++ b/packages/devextreme-scss/scss/widgets/base/toolbar/_mixins.scss @@ -1,17 +1,20 @@ @mixin dx-toolbar-focus-outline( $accent-color, $border-radius, + // The focus ring's geometry, on the same role as its colour and radius. + $outline-width: 2px, + $outline-offset: 1px, ) { .dx-toolbar.dx-toolbar-focus-mode { [tabindex="0"]:focus-visible:not(.dx-toolbar-item) { - outline: 2px solid $accent-color; - outline-offset: 1px; + outline: $outline-width solid $accent-color; + outline-offset: $outline-offset; border-radius: $border-radius; } .dx-toolbar-item[tabindex="0"]:focus-visible .dx-menu { - outline: 2px solid $accent-color; - outline-offset: 1px; + outline: $outline-width solid $accent-color; + outline-offset: $outline-offset; border-radius: $border-radius; } } diff --git a/packages/devextreme-scss/scss/widgets/base/treeView/_common.scss b/packages/devextreme-scss/scss/widgets/base/treeView/_common.scss index 795a3385c598..4fff2105c4d1 100644 --- a/packages/devextreme-scss/scss/widgets/base/treeView/_common.scss +++ b/packages/devextreme-scss/scss/widgets/base/treeView/_common.scss @@ -3,7 +3,9 @@ $treeview-disabled-opacity: null !default; @use "../mixins" as *; @use "../../base/icon_fonts" as *; -$treeview-searchbox-margin-bottom: 5px; +// Sized from base/treeView, which owns the defaults and forwards a theme's values down. +$treeview-searchbox-margin-bottom: null !default; +$treeview-item-icon-margin-inline-end: null !default; .dx-treeview-loadindicator-wrapper { text-align: center; @@ -82,7 +84,7 @@ $treeview-searchbox-margin-bottom: 5px; order: 2; .dx-icon { - margin-inline-end: 8px; + margin-inline-end: $treeview-item-icon-margin-inline-end; } .dx-button-has-icon { diff --git a/packages/devextreme-scss/scss/widgets/base/treeView/_index.scss b/packages/devextreme-scss/scss/widgets/base/treeView/_index.scss index ac0535f0ad9a..72eee3318f1b 100644 --- a/packages/devextreme-scss/scss/widgets/base/treeView/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/treeView/_index.scss @@ -1,9 +1,13 @@ $treeview-disabled-opacity: 0.5 !default; +$treeview-searchbox-margin-bottom: 5px !default; +$treeview-item-icon-margin-inline-end: 8px !default; @use "sass:math"; @use "sass:meta"; @use "./common" with ( $treeview-disabled-opacity: $treeview-disabled-opacity, + $treeview-searchbox-margin-bottom: $treeview-searchbox-margin-bottom, + $treeview-item-icon-margin-inline-end: $treeview-item-icon-margin-inline-end, ); @use "../../base/icon_fonts" as *; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/chat/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/chat/_index.scss index be6bf36b2e79..b685979772a9 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/chat/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/chat/_index.scss @@ -3,6 +3,7 @@ @use "../../base/chat" with ( $chat-file-name-font-weight: var(--dx-chat-file-name-font-weight), $chat-editing-preview-caption-font-weight: var(--dx-chat-editing-preview-caption-font-weight), + $chat-messagebox-border-block-start-width: var(--dx-chat-message-box-border-block-start-width), $chat-messagebubble-padding-image: var(--dx-chat-bubble-image-padding), $chat-messagebubble-border-radius-image: var(--dx-chat-bubble-image-border-radius), $chat-messagebubble-max-width-image: var(--dx-chat-bubble-image-max-width), @@ -14,6 +15,7 @@ var(--dx-chat-bg), var(--dx-chat-border), var(--dx-chat-border-radius), + $border-width: var(--dx-chat-border-width), ); @include chat-avatar( var(--dx-chat-avatar-size), diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/chat/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/chat/_public.scss index 5b50bb7e302d..95e003af0ca6 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/chat/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/chat/_public.scss @@ -11,6 +11,7 @@ --dx-chat-avatar-content: #{$chat-avatar-content}; --dx-chat-avatar-size: #{$chat-avatar-size}; --dx-chat-bg: #{$chat-bg}; + --dx-chat-border-width: #{$chat-border-width}; --dx-chat-border: #{$chat-border}; --dx-chat-border-radius: #{$chat-border-radius}; --dx-chat-bubble-border-radius: #{$chat-bubble-border-radius}; @@ -51,6 +52,7 @@ --dx-chat-information-gap: #{$chat-information-gap}; --dx-chat-information-icon-size: #{$chat-information-icon-size}; --dx-chat-information-timestamp-content: #{$chat-information-timestamp-content}; + --dx-chat-message-box-border-block-start-width: #{$chat-message-box-border-block-start-width}; --dx-chat-message-box-border: var(--dx-chat-border); --dx-chat-message-box-file-bg: #{$chat-message-box-file-bg}; --dx-chat-message-box-file-cancel-button-secondary-content: #{$chat-message-box-file-cancel-button-secondary-content}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/chat/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/chat/_sizes.scss index 3df3e367a648..5cbbf05774a8 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/chat/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/chat/_sizes.scss @@ -161,3 +161,7 @@ $chat-bubble-image-max-height: 400px !default; // dx-offscale: 400px, the spacin // Base-layer values injected with design tokens (wave B1) $chat-file-name-font-weight: ds.$font-weight-base-strong !default; $chat-editing-preview-caption-font-weight: ds.$font-weight-500 !default; // dx-no-semantic-role: 500 is off the weight-role scale (400/600/700) + +// Base-layer sizing injected with design tokens (wave B12) +$chat-border-width: ds.$border-width-10 !default; +$chat-message-box-border-block-start-width: ds.$border-width-10 !default; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/common/_mixins.scss b/packages/devextreme-scss/scss/widgets/fluent-next/common/_mixins.scss index 4a4ddbf19b18..7706c1e1d497 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/common/_mixins.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/common/_mixins.scss @@ -5,6 +5,7 @@ @use "../../base/validation" as baseValidation with ( $validation-summary-margin-top: validationSizes.$validation-summary-margin-block-start, $validation-message-content-padding: validationSizes.$validation-message-content-padding, + $validation-summary-item-border-bottom-width: var(--dx-validation-summary-item-border-block-end-width), ); @use "../list/sizes" as listSizes; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/common/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/common/_public.scss index 7d066d7b913d..810dbc0a21e9 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/common/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/common/_public.scss @@ -5,6 +5,8 @@ --dx-backdrop-bg: #{$backdrop-bg}; --dx-focus-rect-border-radius: #{$focus-rect-border-radius}; --dx-focus-rect-outline: #{$focus-rect-outline}; + --dx-focus-rect-outline-offset: #{$focus-rect-outline-offset}; + --dx-focus-rect-outline-width: #{$focus-rect-outline-width}; --dx-global-bg: #{$global-bg}; --dx-global-content: #{$global-content}; --dx-global-disabled-opacity: #{$global-disabled-opacity}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/common/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/common/_sizes.scss index f04518c00778..be0f86ff67c7 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/common/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/common/_sizes.scss @@ -11,6 +11,8 @@ $global-line-height: null !default; $global-inline-widget-inner-height: calc(#{$global-inline-widget-height} - #{$global-border-width} * 2) !default; $focus-rect-border-radius: $global-border-radius !default; +$focus-rect-outline-width: ds.$border-width-20 !default; +$focus-rect-outline-offset: ds.$spacing-10 !default; $invalid-badge-size: calc(#{$global-icon-size} - #{ds.$spacing-20}) !default; $invalid-badge-padding-inline: calc((#{$global-inline-widget-inner-height} - #{$invalid-badge-size}) / 2) !default; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/dropDownButton/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/dropDownButton/_index.scss index 58bef39448a4..0adc093bab91 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/dropDownButton/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/dropDownButton/_index.scss @@ -8,6 +8,7 @@ @include dx-dropdownbutton( var(--dx-drop-down-button-toggle-spindown-icon-size), var(--dx-drop-down-button-action-padding-inline), + $dropdownbutton-icon-right-margin-inline-start: var(--dx-drop-down-button-icon-right-margin-inline-start), ); .dx-dropdownbutton-popup-wrapper { diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/dropDownButton/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/dropDownButton/_public.scss index 5ed5a1f9e764..052826b20b48 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/dropDownButton/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/dropDownButton/_public.scss @@ -4,5 +4,6 @@ @mixin publish { --dx-drop-down-button-action-padding-inline: #{$drop-down-button-action-padding-inline}; --dx-drop-down-button-action-spindown-icon-size: #{$drop-down-button-action-spindown-icon-size}; + --dx-drop-down-button-icon-right-margin-inline-start: #{$drop-down-button-icon-right-margin-inline-start}; --dx-drop-down-button-toggle-spindown-icon-size: #{$drop-down-button-toggle-spindown-icon-size}; } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/dropDownButton/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/dropDownButton/_sizes.scss index b8e1363e6d9b..973548eb8261 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/dropDownButton/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/dropDownButton/_sizes.scss @@ -16,3 +16,6 @@ $drop-down-button-action-spindown-icon-size: null !default; $drop-down-button-toggle-spindown-icon-size: ds.$spacing-180; $drop-down-button-action-spindown-icon-size: ds.$spacing-120 !default; } + +// Base-layer sizing injected with design tokens (wave B12) +$drop-down-button-icon-right-margin-inline-start: ds.$spacing-40 !default; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/dropDownMenu/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/dropDownMenu/_index.scss index d773cf6a48e1..0e3adf2c7e8e 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/dropDownMenu/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/dropDownMenu/_index.scss @@ -19,4 +19,10 @@ } } -@include dx-dropdownmenu-focus-outline(var(--dx-focus-rect-outline), var(--dx-focus-rect-border-radius), var(--dx-drop-down-menu-section-margin-inline)); +@include dx-dropdownmenu-focus-outline( + var(--dx-focus-rect-outline), + var(--dx-focus-rect-border-radius), + var(--dx-drop-down-menu-section-margin-inline), + $outline-width: var(--dx-focus-rect-outline-width), + $outline-offset: var(--dx-focus-rect-outline-offset), +); diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/slider/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/slider/_index.scss index 596d254c8cec..693e3e82de79 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/slider/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/slider/_index.scss @@ -2,6 +2,7 @@ @use "colors" as *; @use "sizes" as *; @use "../../base/slider" with ( + $slider-tooltip-content-height: var(--dx-slider-tooltip-height), $slider-label-position-bottom-padding-bottom: var(--dx-slider-label-bottom-padding-block-end), $slider-label-position-top-padding-top: var(--dx-slider-label-top-padding-block-start), ); diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/slider/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/slider/_public.scss index c5193b391c51..1f15885ce739 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/slider/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/slider/_public.scss @@ -23,6 +23,7 @@ --dx-slider-label-bottom-padding-block-end: #{$slider-label-bottom-padding-block-end}; --dx-slider-label-top-inset-block-start: #{$slider-label-top-inset-block-start}; --dx-slider-label-top-padding-block-start: #{$slider-label-top-padding-block-start}; + --dx-slider-tooltip-height: #{$slider-tooltip-height}; --dx-slider-tooltip-content: #{$slider-tooltip-content}; --dx-slider-tooltip-top-padding-block-start: #{$slider-tooltip-top-padding-block-start}; --dx-slider-tooltip-width: #{$slider-tooltip-width}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/slider/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/slider/_sizes.scss index 134aeb6472a5..af6d6d7b145b 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/slider/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/slider/_sizes.scss @@ -34,3 +34,6 @@ $slider-label-top-inset-block-start: -15px !default; // dx-offscale: -15px // Base-layer sizing injected with design tokens (wave B2) $slider-label-bottom-padding-block-end: ds.$spacing-140 !default; $slider-label-top-padding-block-start: ds.$spacing-140 !default; + +// Base-layer sizing injected with design tokens (wave B12) +$slider-tooltip-height: ds.$spacing-280 !default; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/toolbar/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/toolbar/_index.scss index 1e7e5f9e7719..3eef3b859c8e 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/toolbar/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/toolbar/_index.scss @@ -181,4 +181,9 @@ } } -@include dx-toolbar-focus-outline(var(--dx-focus-rect-outline), var(--dx-focus-rect-border-radius)); +@include dx-toolbar-focus-outline( + var(--dx-focus-rect-outline), + var(--dx-focus-rect-border-radius), + $outline-width: var(--dx-focus-rect-outline-width), + $outline-offset: var(--dx-focus-rect-outline-offset), +); diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_index.scss index 93b6c1f66223..6b2761f29757 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_index.scss @@ -6,6 +6,8 @@ $treeview-select-all-item-border-bottom: var(--dx-tree-view-select-all-item-border-block-end), $treeview-border-visible-border: var(--dx-tree-view-border-visible-border), $treeview-disabled-opacity: var(--dx-tree-view-opacity-disabled), + $treeview-searchbox-margin-bottom: var(--dx-tree-view-search-box-margin-block-end), + $treeview-item-icon-margin-inline-end: var(--dx-tree-view-item-icon-margin-inline-end), ); @use "../../base/icon_fonts" as *; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_public.scss index e42b5ce052cd..6e6d31e8655a 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_public.scss @@ -26,6 +26,7 @@ --dx-tree-view-item-content-hovered: #{$tree-view-item-content-hovered}; --dx-tree-view-item-content-selected: var(--dx-tree-view-content); --dx-tree-view-item-element-gap: #{$tree-view-item-element-gap}; + --dx-tree-view-item-icon-margin-inline-end: #{$tree-view-item-icon-margin-inline-end}; --dx-tree-view-item-margin: #{$tree-view-item-margin}; --dx-tree-view-item-padding: #{$tree-view-item-padding}; --dx-tree-view-item-padding-inline: #{$tree-view-item-padding-inline}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_sizes.scss index 7ef8a2686076..fc55153f7852 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_sizes.scss @@ -51,3 +51,6 @@ $tree-view-select-all-item-border-visible-padding: ds.$spacing-260 !default; // Base-layer sizing injected with design tokens (wave B2) $tree-view-select-all-item-border-block-end: ds.$border-width-10 solid !default; $tree-view-border-visible-border: ds.$border-width-10 solid !default; + +// Base-layer sizing injected with design tokens (wave B12) +$tree-view-item-icon-margin-inline-end: ds.$spacing-80 !default; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/validation/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/validation/_public.scss index a76d389eb464..5792bdb6a708 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/validation/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/validation/_public.scss @@ -11,6 +11,7 @@ --dx-validation-message-padding-inline: #{$validation-message-padding-inline}; --dx-validation-overlay-border-radius: #{$validation-overlay-border-radius}; --dx-validation-summary-content: #{$validation-summary-content}; + --dx-validation-summary-item-border-block-end-width: #{$validation-summary-item-border-block-end-width}; --dx-validation-summary-item-margin: #{$validation-summary-item-margin}; --dx-validation-summary-margin-block-start: #{$validation-summary-margin-block-start}; } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/validation/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/validation/_sizes.scss index 65c98052b3ea..da73f702e708 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/validation/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/validation/_sizes.scss @@ -24,3 +24,6 @@ $validation-message-font-size: ds.$font-size-caption-md !default; $validation-message-padding-inline: ds.$spacing-60 !default; $validation-message-line-height: ds.$line-height-120 !default; // dx-no-semantic-role: 120 is off the line-height-role scale } + +// Base-layer sizing injected with design tokens (wave B12) +$validation-summary-item-border-block-end-width: ds.$border-width-10 !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 3c238072baf1..a29ba039a1a0 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,6 +1,6 @@ { "openKnobs": 0, - "unclassified": 368, + "unclassified": 326, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, @@ -9,29 +9,12 @@ "htmlEditor": 33, "pivotGrid": 20, "cardView": 15, - "ui": 8, - "scrollView": 5, "dataGrid": 5, - "toolbar": 5, - "sortable": 4, "treeList": 4, "colorBox": 3, - "icon_fonts": 2, "numberBox": 2, - "resizable": 2, - "slider": 2, "tagBox": 2, - "chat": 2, - "dropDownMenu": 2, - "filterBuilder": 2, - "treeView": 2, - "fileUploader": 1, - "pagination": 1, - "validation": 1, - "dropDownButton": 1, - "gantt": 1, "list": 1, - "lookup": 1, - "popover": 1 + "lookup": 1 } } diff --git a/packages/devextreme-scss/tools/naming/derive-registries.mjs b/packages/devextreme-scss/tools/naming/derive-registries.mjs index 8f48f2280b96..516c8b3ce8f3 100644 --- a/packages/devextreme-scss/tools/naming/derive-registries.mjs +++ b/packages/devextreme-scss/tools/naming/derive-registries.mjs @@ -865,6 +865,8 @@ const OVERRIDES = { 'item', 'item-element', 'node', 'checkbox', 'checkbox-container', 'container', 'toggle-item', 'select-all-item', 'search-box', 'search-editor', 'load-indicator', 'spin', 'border', 'control', + // wave B12: .dx-icon inside an item is a real box the item spaces away from the text + 'icon', ], popup: ['title', 'content', 'toolbar', 'toolbar-item', 'toolbar-label', 'dialog', 'message', 'button'], diff --git a/packages/devextreme-scss/tools/naming/registries.json b/packages/devextreme-scss/tools/naming/registries.json index c46622b22b35..9b5fdce52d5b 100644 --- a/packages/devextreme-scss/tools/naming/registries.json +++ b/packages/devextreme-scss/tools/naming/registries.json @@ -1298,7 +1298,8 @@ "load-indicator", "spin", "border", - "control" + "control", + "icon" ], "popup": [ "title", diff --git a/packages/devextreme-scss/tools/review/nested-scopes.json b/packages/devextreme-scss/tools/review/nested-scopes.json index 9cfb632cd8e4..459669ebf11e 100644 --- a/packages/devextreme-scss/tools/review/nested-scopes.json +++ b/packages/devextreme-scss/tools/review/nested-scopes.json @@ -588,6 +588,7 @@ "dx-treeview-with-search" ], "validation": [ - "dx-validationsummary-item" + "dx-validationsummary-item", + "dx-validationsummary-item-content" ] } diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 6f4c298bac75..2adc035d5f1b 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -11,51 +11,34 @@ and carries a marker saying why. | | occurrences | |---|---| -| a raw grep of the layer | 780 | +| a raw grep of the layer | 778 | | …of those, inside comments (commented-out code, prose) | 6 | -| **in code** | **774** | -| — the theme can already set from outside | 393 | -| — nailed into the shared layer | 381 | +| **in code** | **772** | +| — the theme can already set from outside | 404 | +| — nailed into the shared layer | 368 | ## What the theme can already set -393 occurrences in 341 `!default` variables. fluent-next already passes 383; 0 are open knobs nobody turns. +404 occurrences in 350 `!default` variables. fluent-next already passes 388; 0 are open knobs nobody turns. ## What is nailed into the layer -| widget | inline | geometry | local-var | calc | mixin-arg | total | +| widget | inline | local-var | geometry | calc | mixin-arg | total | |---|---|---|---|---|---|---| -| gridBase | 50 | 7 | 18 | | | **75** | -| colorView | 35 | 24 | 8 | | | **67** | -| scheduler | 9 | 3 | 41 | 1 | | **54** | -| textEditor | 20 | 20 | | 4 | | **44** | -| htmlEditor | 22 | 8 | 3 | | | **33** | -| pivotGrid | 6 | 6 | 8 | | | **20** | -| cardView | 9 | 5 | 1 | | | **15** | -| ui | 8 | | | | | **8** | -| scrollView | 5 | | | | | **5** | -| dataGrid | | 3 | | | 2 | **5** | -| toolbar | 1 | 4 | | | | **5** | -| sortable | | 4 | | | | **4** | -| treeList | | 1 | | | 3 | **4** | -| colorBox | 1 | | 1 | 1 | | **3** | -| icon_fonts | 2 | | | | | **2** | -| numberBox | | | 2 | | | **2** | -| resizable | | | 2 | | | **2** | -| slider | | | 2 | | | **2** | +| gridBase | 50 | 18 | 7 | | | **75** | +| colorView | 35 | 8 | 24 | | | **67** | +| scheduler | 9 | 41 | 3 | 1 | | **54** | +| textEditor | 20 | | 20 | 4 | | **44** | +| htmlEditor | 22 | 3 | 8 | | | **33** | +| pivotGrid | 6 | 8 | 6 | | | **20** | +| cardView | 9 | 1 | 5 | | | **15** | +| dataGrid | | | 3 | | 2 | **5** | +| treeList | | | 1 | | 3 | **4** | +| colorBox | 1 | 1 | | 1 | | **3** | +| numberBox | | 2 | | | | **2** | | tagBox | 1 | | | 1 | | **2** | -| chat | | 2 | | | | **2** | -| dropDownMenu | | 2 | | | | **2** | -| filterBuilder | 2 | | | | | **2** | -| treeView | 1 | | 1 | | | **2** | -| fileUploader | 1 | | | | | **1** | -| pagination | | | 1 | | | **1** | -| validation | | 1 | | | | **1** | -| dropDownButton | 1 | | | | | **1** | -| gantt | 1 | | | | | **1** | -| list | | | 1 | | | **1** | +| list | | 1 | | | | **1** | | lookup | | | | 1 | | **1** | -| popover | | | | | 1 | **1** | ## Places, by widget @@ -556,34 +539,6 @@ and carries a marker saying why. - `scss/widgets/base/cardView/header_panel/item/_index.scss:88` · inline `0 6px 8px $cardview-header-panel__item--dragged-box-shadow-color;` -### ui — 8 - -- `scss/widgets/base/_ui.scss:13` · inline - `top: -10px;` -- `scss/widgets/base/_ui.scss:14` · inline - `left: -10px;` -- `scss/widgets/base/_ui.scss:41` · inline - `height: 1px;` -- `scss/widgets/base/_ui.scss:42` · inline - `width: 1px;` -- `scss/widgets/base/_ui.scss:226` · inline - `transform: translate3d(0, 150px, 0);` -- `scss/widgets/base/_ui.scss:348` · inline - `transform: rotate3d(1, 0, 0, 10deg) translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1);` -- `scss/widgets/base/_ui.scss:362` · inline - `transform: translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1);` -- `scss/widgets/base/_ui.scss:376` · inline - `transform: translate3d(0, 10px, 0) scale3d(1.1, 1.1, 1.1);` - -### scrollView — 5 - -- `scss/widgets/base/_scrollView.scss:54` · inline - `margin-left: -20px;` -- `scss/widgets/base/_scrollView.scss:153` · inline - `margin: -15px 20px 0 15px;` -- `scss/widgets/base/_scrollView.scss:234` · inline - `margin-top: -20px;` - ### dataGrid — 5 - `scss/widgets/base/dataGrid/_index.scss:146` · geometry @@ -597,24 +552,6 @@ and carries a marker saying why. - `scss/widgets/base/dataGrid/layout/cell.scss:283` · geometry `outline-offset: -2px;` -### toolbar — 5 - -- `scss/widgets/base/toolbar/_index.scss:101` · inline - `margin: 0 -5px;` -- `scss/widgets/base/toolbar/_mixins.scss:7` · geometry - `outline: 2px solid $accent-color;` -- `scss/widgets/base/toolbar/_mixins.scss:8` · geometry - `outline-offset: 1px;` -- `scss/widgets/base/toolbar/_mixins.scss:13` · geometry - `outline: 2px solid $accent-color;` -- `scss/widgets/base/toolbar/_mixins.scss:14` · geometry - `outline-offset: 1px;` - -### sortable — 4 - -- `scss/widgets/base/_sortable.scss:61` · geometry - `box-shadow: 0 1px 3px $sortable-clone-shadow-color-first, 0 6px 8px $sortable-clone-shadow-color-second;` - ### treeList — 4 - `scss/widgets/base/treeList/_index.scss:168` · mixin-arg @@ -635,13 +572,6 @@ and carries a marker saying why. - `scss/widgets/base/colorBox/_index.scss:36` · inline `margin-top: -7.5px;` -### icon_fonts — 2 - -- `scss/widgets/base/_icon_fonts.scss:307` · inline - `font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes` -- `scss/widgets/base/_icon_fonts.scss:675` · inline - `font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes` - ### numberBox — 2 - `scss/widgets/base/_numberBox.scss:5` · local-var @@ -649,20 +579,6 @@ and carries a marker saying why. - `scss/widgets/base/_numberBox.scss:6` · local-var `$touch-friendly-spin-container-width: 64px;` -### resizable — 2 - -- `scss/widgets/base/_resizable.scss:2` · local-var - `$one-side-handle-size: 3px + $handle-offset;` -- `scss/widgets/base/_resizable.scss:3` · local-var - `$two-side-handle-size: 6px + $handle-offset;` - -### slider — 2 - -- `scss/widgets/base/_slider.scss:4` · local-var - `$slider-tooltip-content-height: 28px;` -- `scss/widgets/base/_slider.scss:5` · local-var - `$slider-tooltip-arrow-height: 7px;` - ### tagBox — 2 - `scss/widgets/base/_tagBox.scss:15` · inline @@ -670,59 +586,6 @@ and carries a marker saying why. - `scss/widgets/base/_tagBox.scss:43` · calc `max-width: calc(100% - 1px);` -### chat — 2 - -- `scss/widgets/base/chat/layout/chat-messagebox/_index.scss:4` · geometry - `border-top-width: 1px;` -- `scss/widgets/base/chat/layout/chat/_mixins.scss:8` · geometry - `border: 1px solid;` - -### dropDownMenu — 2 - -- `scss/widgets/base/dropDownMenu/_mixins.scss:12` · geometry - `outline: 2px solid $accent-color;` -- `scss/widgets/base/dropDownMenu/_mixins.scss:13` · geometry - `outline-offset: 1px;` - -### filterBuilder — 2 - -- `scss/widgets/base/filterBuilder/_common.scss:76` · inline - `margin-top: -7px;` -- `scss/widgets/base/filterBuilder/_common.scss:77` · inline - `margin-bottom: -4px;` - -### treeView — 2 - -- `scss/widgets/base/treeView/_common.scss:6` · local-var - `$treeview-searchbox-margin-bottom: 5px;` -- `scss/widgets/base/treeView/_common.scss:85` · inline - `margin-inline-end: 8px;` - -### fileUploader — 1 - -- `scss/widgets/base/_fileUploader.scss:213` · inline - `margin-top: -6px;` - -### pagination — 1 - -- `scss/widgets/base/_pagination.scss:25` · local-var - `$pagination-paddings: 8px;` - -### validation — 1 - -- `scss/widgets/base/_validation.scss:85` · geometry - `border-bottom: 1px dashed;` - -### dropDownButton — 1 - -- `scss/widgets/base/dropDownButton/_mixins.scss:22` · inline - `margin-inline-start: 4px;` - -### gantt — 1 - -- `scss/widgets/base/gantt/_index.scss:60` · inline - `margin-top: -1px;` - ### list — 1 - `scss/widgets/base/list/_index.scss:6` · local-var @@ -732,8 +595,3 @@ and carries a marker saying why. - `scss/widgets/base/lookup/_index.scss:10` · calc `height: calc(100% - 45px);` - -### popover — 1 - -- `scss/widgets/base/popover/_index.scss:2` · mixin-arg - `@include dx-popover-arrow-size(20px);` diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index d1ad6c2ee912..991196d36b5a 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,11 +6,11 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 381, + "occurrences": 368, "byCategory": { - "inline": 176, - "geometry": 91, - "local-var": 89, + "inline": 174, + "local-var": 87, + "geometry": 82, "calc": 9, "structural": 8, "mixin-arg": 6, @@ -28,7 +28,6 @@ "scrollView": 5, "dataGrid": 5, "fileManager": 5, - "toolbar": 5, "sortable": 4, "treeList": 4, "colorBox": 3, @@ -36,24 +35,20 @@ "multiView": 2, "numberBox": 2, "resizable": 2, - "slider": 2, "tagBox": 2, - "chat": 2, - "dropDownMenu": 2, "filterBuilder": 2, - "treeView": 2, "fileUploader": 1, "pagination": 1, - "validation": 1, + "slider": 1, "diagram": 1, - "dropDownButton": 1, "gantt": 1, "list": 1, "lookup": 1, "popover": 1, - "stepper": 1 + "stepper": 1, + "toolbar": 1 }, - "unmarked": 368, + "unmarked": 326, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, @@ -62,30 +57,13 @@ "htmlEditor": 33, "pivotGrid": 20, "cardView": 15, - "ui": 8, - "scrollView": 5, "dataGrid": 5, - "toolbar": 5, - "sortable": 4, "treeList": 4, "colorBox": 3, - "icon_fonts": 2, "numberBox": 2, - "resizable": 2, - "slider": 2, "tagBox": 2, - "chat": 2, - "dropDownMenu": 2, - "filterBuilder": 2, - "treeView": 2, - "fileUploader": 1, - "pagination": 1, - "validation": 1, - "dropDownButton": 1, - "gantt": 1, "list": 1, - "lookup": 1, - "popover": 1 + "lookup": 1 } }, "places": [ @@ -97,8 +75,8 @@ "-6px" ], "occurrences": 1, - "marker": null, - "text": "margin-top: -6px;", + "marker": "dx-fixed-size", + "text": "margin-top: -6px; // dx-fixed-size: pulls the status text onto the progress line", "category": "inline" }, { @@ -496,8 +474,8 @@ "14px" ], "occurrences": 1, - "marker": null, - "text": "font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes", + "marker": "dx-icon-glyph-size", + "text": "font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes -- dx-icon-glyph-size: the icon font's own size, no icon scale in the package", "category": "inline" }, { @@ -508,8 +486,8 @@ "14px" ], "occurrences": 1, - "marker": null, - "text": "font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes", + "marker": "dx-icon-glyph-size", + "text": "font: 14px/1 DXIcons; // stylelint-disable-line font-family-no-missing-generic-family-keyword, font-family-name-quotes -- dx-icon-glyph-size: the icon font's own size, no icon scale in the package", "category": "inline" }, { @@ -568,8 +546,8 @@ "8px" ], "occurrences": 1, - "marker": null, - "text": "$pagination-paddings: 8px;", + "marker": "dx-fixed-size", + "text": "$pagination-paddings: 8px; // dx-fixed-size: the shared source of the two fallbacks below", "category": "local-var" }, { @@ -580,8 +558,8 @@ "3px" ], "occurrences": 1, - "marker": null, - "text": "$one-side-handle-size: 3px + $handle-offset;", + "marker": "dx-fixed-size", + "text": "$one-side-handle-size: 3px + $handle-offset; // dx-fixed-size: handle thickness ($handle-offset is 0)", "category": "local-var" }, { @@ -592,8 +570,8 @@ "6px" ], "occurrences": 1, - "marker": null, - "text": "$two-side-handle-size: 6px + $handle-offset;", + "marker": "dx-fixed-size", + "text": "$two-side-handle-size: 6px + $handle-offset; // dx-fixed-size: handle thickness ($handle-offset is 0)", "category": "local-var" }, { @@ -604,8 +582,8 @@ "-20px" ], "occurrences": 1, - "marker": null, - "text": "margin-left: -20px;", + "marker": "dx-fixed-size", + "text": "margin-left: -20px; // dx-fixed-size: centres the android pull-down on the pocket", "category": "inline" }, { @@ -618,8 +596,8 @@ "15px" ], "occurrences": 3, - "marker": null, - "text": "margin: -15px 20px 0 15px;", + "marker": "dx-fixed-size", + "text": "margin: -15px 20px 0 15px; // dx-fixed-size: centres the indicator on its own half-height", "category": "inline" }, { @@ -630,22 +608,10 @@ "-20px" ], "occurrences": 1, - "marker": null, - "text": "margin-top: -20px;", + "marker": "dx-fixed-size", + "text": "margin-top: -20px; // dx-fixed-size: pulls the text onto the indicator's line", "category": "inline" }, - { - "file": "scss/widgets/base/_slider.scss", - "line": 4, - "widget": "slider", - "literals": [ - "28px" - ], - "occurrences": 1, - "marker": null, - "text": "$slider-tooltip-content-height: 28px;", - "category": "local-var" - }, { "file": "scss/widgets/base/_slider.scss", "line": 5, @@ -654,8 +620,8 @@ "7px" ], "occurrences": 1, - "marker": null, - "text": "$slider-tooltip-arrow-height: 7px;", + "marker": "dx-fixed-size", + "text": "$slider-tooltip-arrow-height: 7px; // dx-fixed-size: feeds dx-popover-arrow-size, which divides by sqrt(2)", "category": "local-var" }, { @@ -669,8 +635,8 @@ "8px" ], "occurrences": 4, - "marker": null, - "text": "box-shadow: 0 1px 3px $sortable-clone-shadow-color-first, 0 6px 8px $sortable-clone-shadow-color-second;", + "marker": "dx-shadow-geometry", + "text": "box-shadow: 0 1px 3px $sortable-clone-shadow-color-first, 0 6px 8px $sortable-clone-shadow-color-second; // dx-shadow-geometry: the theme already takes both colours from roles; whether a whole shadow role replaces this two-layer geometry is design's call", "category": "geometry" }, { @@ -705,8 +671,8 @@ "-10px" ], "occurrences": 1, - "marker": null, - "text": "top: -10px;", + "marker": "dx-structural", + "text": "top: -10px; // dx-structural: parks the hidden input off-screen", "category": "inline" }, { @@ -717,8 +683,8 @@ "-10px" ], "occurrences": 1, - "marker": null, - "text": "left: -10px;", + "marker": "dx-structural", + "text": "left: -10px; // dx-structural: parks the hidden input off-screen", "category": "inline" }, { @@ -729,8 +695,8 @@ "1px" ], "occurrences": 1, - "marker": null, - "text": "height: 1px;", + "marker": "dx-structural", + "text": "height: 1px; // dx-structural: the screen-reader-only clipping box, not a designed size", "category": "inline" }, { @@ -741,8 +707,8 @@ "1px" ], "occurrences": 1, - "marker": null, - "text": "width: 1px;", + "marker": "dx-structural", + "text": "width: 1px; // dx-structural: the screen-reader-only clipping box, not a designed size", "category": "inline" }, { @@ -753,8 +719,8 @@ "150px" ], "occurrences": 1, - "marker": null, - "text": "transform: translate3d(0, 150px, 0);", + "marker": "dx-fixed-size", + "text": "transform: translate3d(0, 150px, 0); // dx-fixed-size: how far the android pop animation travels", "category": "inline" }, { @@ -765,8 +731,8 @@ "-10px" ], "occurrences": 1, - "marker": null, - "text": "transform: rotate3d(1, 0, 0, 10deg) translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1);", + "marker": "dx-fixed-size", + "text": "transform: rotate3d(1, 0, 0, 10deg) translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1); // dx-fixed-size: how far the 3d drop animation travels", "category": "inline" }, { @@ -777,8 +743,8 @@ "-10px" ], "occurrences": 1, - "marker": null, - "text": "transform: translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1);", + "marker": "dx-fixed-size", + "text": "transform: translate3d(0, -10px, 0) scale3d(1.1, 1.1, 1.1); // dx-fixed-size: how far the fade drop animation travels", "category": "inline" }, { @@ -789,22 +755,10 @@ "10px" ], "occurrences": 1, - "marker": null, - "text": "transform: translate3d(0, 10px, 0) scale3d(1.1, 1.1, 1.1);", + "marker": "dx-fixed-size", + "text": "transform: translate3d(0, 10px, 0) scale3d(1.1, 1.1, 1.1); // dx-fixed-size: how far the fade rise animation travels", "category": "inline" }, - { - "file": "scss/widgets/base/_validation.scss", - "line": 85, - "widget": "validation", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "border-bottom: 1px dashed;", - "category": "geometry" - }, { "file": "scss/widgets/base/cardView/content_view/content/card/_index.scss", "line": 22, @@ -963,30 +917,6 @@ "text": "0 6px 8px $cardview-header-panel__item--dragged-box-shadow-color;", "category": "inline" }, - { - "file": "scss/widgets/base/chat/layout/chat-messagebox/_index.scss", - "line": 4, - "widget": "chat", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "border-top-width: 1px;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/chat/layout/chat/_mixins.scss", - "line": 8, - "widget": "chat", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "border: 1px solid;", - "category": "geometry" - }, { "file": "scss/widgets/base/colorBox/_index.scss", "line": 5, @@ -1570,42 +1500,6 @@ "text": "width: calc(100% - 2px) !important; // stylelint-disable-line declaration-no-important -- dx-px-nudge: 2px shaved off a full-width popup", "category": "calc" }, - { - "file": "scss/widgets/base/dropDownButton/_mixins.scss", - "line": 22, - "widget": "dropDownButton", - "literals": [ - "4px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-inline-start: 4px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/dropDownMenu/_mixins.scss", - "line": 12, - "widget": "dropDownMenu", - "literals": [ - "2px" - ], - "occurrences": 1, - "marker": null, - "text": "outline: 2px solid $accent-color;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/dropDownMenu/_mixins.scss", - "line": 13, - "widget": "dropDownMenu", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "outline-offset: 1px;", - "category": "geometry" - }, { "file": "scss/widgets/base/fileManager/_index.scss", "line": 88, @@ -1674,8 +1568,8 @@ "-7px" ], "occurrences": 1, - "marker": null, - "text": "margin-top: -7px;", + "marker": "dx-fixed-size", + "text": "margin-top: -7px; // dx-fixed-size: pulls the row onto the group line", "category": "inline" }, { @@ -1686,8 +1580,8 @@ "-4px" ], "occurrences": 1, - "marker": null, - "text": "margin-bottom: -4px;", + "marker": "dx-fixed-size", + "text": "margin-bottom: -4px; // dx-fixed-size: pulls the row onto the group line", "category": "inline" }, { @@ -1698,8 +1592,8 @@ "-1px" ], "occurrences": 1, - "marker": null, - "text": "margin-top: -1px;", + "marker": "dx-px-nudge", + "text": "margin-top: -1px; // dx-px-nudge: a one-pixel correction on top of the row height", "category": "inline" }, { @@ -2679,8 +2573,8 @@ "20px" ], "occurrences": 1, - "marker": null, - "text": "@include dx-popover-arrow-size(20px);", + "marker": "dx-fixed-size", + "text": "@include dx-popover-arrow-size(20px); // dx-fixed-size: the arrow width; the mixin divides it by sqrt(2), so a var() cannot pass", "category": "mixin-arg" }, { @@ -3681,58 +3575,10 @@ "-5px" ], "occurrences": 1, - "marker": null, - "text": "margin: 0 -5px;", + "marker": "dx-fixed-size", + "text": "margin: 0 -5px; // dx-fixed-size: pulls the items flush with the toolbar edge", "category": "inline" }, - { - "file": "scss/widgets/base/toolbar/_mixins.scss", - "line": 7, - "widget": "toolbar", - "literals": [ - "2px" - ], - "occurrences": 1, - "marker": null, - "text": "outline: 2px solid $accent-color;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/toolbar/_mixins.scss", - "line": 8, - "widget": "toolbar", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "outline-offset: 1px;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/toolbar/_mixins.scss", - "line": 13, - "widget": "toolbar", - "literals": [ - "2px" - ], - "occurrences": 1, - "marker": null, - "text": "outline: 2px solid $accent-color;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/toolbar/_mixins.scss", - "line": 14, - "widget": "toolbar", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "outline-offset: 1px;", - "category": "geometry" - }, { "file": "scss/widgets/base/treeList/_index.scss", "line": 168, @@ -3780,30 +3626,6 @@ "marker": null, "text": "outline-offset: -2px;", "category": "geometry" - }, - { - "file": "scss/widgets/base/treeView/_common.scss", - "line": 6, - "widget": "treeView", - "literals": [ - "5px" - ], - "occurrences": 1, - "marker": null, - "text": "$treeview-searchbox-margin-bottom: 5px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/treeView/_common.scss", - "line": 85, - "widget": "treeView", - "literals": [ - "8px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-inline-end: 8px;", - "category": "inline" } ] } diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 905816e02c40..043cf6fbe0aa 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,11 +7,11 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 393, - "variables": 341, - "injected": 383, + "occurrences": 404, + "variables": 350, + "injected": 388, "open": 0, - "parameters": 10 + "parameters": 16 }, "places": [ { @@ -1504,6 +1504,22 @@ "setBy": "scss/widgets/fluent-next/scrollView/_index.scss", "setTo": "var(--dx-scroll-view-pull-down-padding)" }, + { + "file": "scss/widgets/base/_slider.scss", + "line": 4, + "widget": "slider", + "literals": [ + "28px" + ], + "occurrences": 1, + "marker": null, + "text": "$slider-tooltip-content-height: 28px !default;", + "variable": "slider-tooltip-content-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/slider/_index.scss", + "setTo": "var(--dx-slider-tooltip-height)" + }, { "file": "scss/widgets/base/_slider.scss", "line": 8, @@ -1809,6 +1825,22 @@ "setBy": "scss/widgets/fluent-next/common/_mixins.scss", "setTo": "validationSizes.$validation-message-content-padding" }, + { + "file": "scss/widgets/base/_validation.scss", + "line": 6, + "widget": "validation", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$validation-summary-item-border-bottom-width: 1px !default;", + "variable": "validation-summary-item-border-bottom-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/common/_mixins.scss", + "setTo": "var(--dx-validation-summary-item-border-block-end-width)" + }, { "file": "scss/widgets/base/buttonGroup/_index.scss", "line": 4, @@ -1905,6 +1937,22 @@ "file": "scss/widgets/base/chat/_index.scss", "line": 5, "widget": "chat", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$chat-messagebox-border-block-start-width: 1px !default;", + "variable": "chat-messagebox-border-block-start-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/chat/_index.scss", + "setTo": "var(--dx-chat-message-box-border-block-start-width)" + }, + { + "file": "scss/widgets/base/chat/_index.scss", + "line": 6, + "widget": "chat", "literals": [ "4px" ], @@ -1919,7 +1967,7 @@ }, { "file": "scss/widgets/base/chat/_index.scss", - "line": 6, + "line": 7, "widget": "chat", "literals": [ "8px" @@ -1935,7 +1983,7 @@ }, { "file": "scss/widgets/base/chat/_index.scss", - "line": 7, + "line": 8, "widget": "chat", "literals": [ "400px" @@ -1951,7 +1999,7 @@ }, { "file": "scss/widgets/base/chat/_index.scss", - "line": 8, + "line": 9, "widget": "chat", "literals": [ "400px" @@ -1965,6 +2013,20 @@ "setBy": "scss/widgets/fluent-next/chat/_index.scss", "setTo": "var(--dx-chat-bubble-image-max-height)" }, + { + "file": "scss/widgets/base/chat/layout/chat/_mixins.scss", + "line": 5, + "widget": "chat", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$border-width: 1px,", + "variable": "border-width", + "kind": "mixin-parameter", + "status": "parameter" + }, { "file": "scss/widgets/base/checkBox/_index.scss", "line": 5, @@ -2509,6 +2571,20 @@ "setBy": "scss/widgets/fluent-next/diagram/_index.scss", "setTo": "var(--dx-diagram-border-width)" }, + { + "file": "scss/widgets/base/dropDownButton/_mixins.scss", + "line": 4, + "widget": "dropDownButton", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$dropdownbutton-icon-right-margin-inline-start: 4px,", + "variable": "dropdownbutton-icon-right-margin-inline-start", + "kind": "mixin-parameter", + "status": "parameter" + }, { "file": "scss/widgets/base/dropDownMenu/_index.scss", "line": 2, @@ -2557,6 +2633,34 @@ "setBy": "scss/widgets/fluent-next/dropDownMenu/_index.scss", "setTo": "var(--dx-drop-down-menu-popup-content-padding)" }, + { + "file": "scss/widgets/base/dropDownMenu/_mixins.scss", + "line": 6, + "widget": "dropDownMenu", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$outline-width: 2px,", + "variable": "outline-width", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/dropDownMenu/_mixins.scss", + "line": 7, + "widget": "dropDownMenu", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$outline-offset: 1px,", + "variable": "outline-offset", + "kind": "mixin-parameter", + "status": "parameter" + }, { "file": "scss/widgets/base/fileManager/_index.scss", "line": 4, @@ -5661,6 +5765,34 @@ "setBy": "scss/widgets/fluent-next/toolbar/_index.scss", "setTo": "var(--dx-toolbar-text-editor-width)" }, + { + "file": "scss/widgets/base/toolbar/_mixins.scss", + "line": 5, + "widget": "toolbar", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$outline-width: 2px,", + "variable": "outline-width", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/toolbar/_mixins.scss", + "line": 6, + "widget": "toolbar", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$outline-offset: 1px,", + "variable": "outline-offset", + "kind": "mixin-parameter", + "status": "parameter" + }, { "file": "scss/widgets/base/treeList/_index.scss", "line": 19, @@ -5807,7 +5939,39 @@ }, { "file": "scss/widgets/base/treeView/_index.scss", - "line": 11, + "line": 2, + "widget": "treeView", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$treeview-searchbox-margin-bottom: 5px !default;", + "variable": "treeview-searchbox-margin-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/treeView/_index.scss", + "setTo": "var(--dx-tree-view-search-box-margin-block-end)" + }, + { + "file": "scss/widgets/base/treeView/_index.scss", + "line": 3, + "widget": "treeView", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$treeview-item-icon-margin-inline-end: 8px !default;", + "variable": "treeview-item-icon-margin-inline-end", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/treeView/_index.scss", + "setTo": "var(--dx-tree-view-item-icon-margin-inline-end)" + }, + { + "file": "scss/widgets/base/treeView/_index.scss", + "line": 15, "widget": "treeView", "literals": [ "1px" @@ -5823,7 +5987,7 @@ }, { "file": "scss/widgets/base/treeView/_index.scss", - "line": 12, + "line": 16, "widget": "treeView", "literals": [ "1px" From 76180c53adecb23ac5448907312c9cfba622936f Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 12:51:18 +0200 Subject: [PATCH 12/25] Restore the treeView icon margin and fix the label clip-path --- .../scss/widgets/base/textEditor/_mixins.scss | 13 +++- .../scss/widgets/base/treeView/_common.scss | 3 +- .../scss/widgets/base/treeView/_index.scss | 2 - .../widgets/fluent-next/treeView/_index.scss | 1 - .../widgets/fluent-next/treeView/_public.scss | 1 - .../widgets/fluent-next/treeView/_sizes.scss | 3 - .../devextreme-scss/tests/calc-budget.json | 8 +-- .../tools/naming/derive-registries.mjs | 2 - .../tools/naming/registries.json | 3 +- .../tools/sizes/lists/BASE-SIZES.md | 56 +++++++-------- .../tools/sizes/lists/base-owned.json | 71 +++++++++++-------- .../tools/sizes/lists/theme-settable.json | 26 ++----- 12 files changed, 93 insertions(+), 96 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/textEditor/_mixins.scss b/packages/devextreme-scss/scss/widgets/base/textEditor/_mixins.scss index 24aa9039f2e1..dbbe1c2a1af0 100644 --- a/packages/devextreme-scss/scss/widgets/base/textEditor/_mixins.scss +++ b/packages/devextreme-scss/scss/widgets/base/textEditor/_mixins.scss @@ -174,7 +174,18 @@ margin-left: -2px; margin-right: -2px; border-radius: 1px; - clip-path: inset(-$texteditor-label-font-size 1px -1px 1px); + + /* + * The clip reaches a whole font-size above the label to uncover the notch. A theme that feeds + * a var() here leaves nothing for Sass to negate, and `-var(…)` is not valid CSS: the browser + * drops the whole declaration and the notch stops being clipped. Same guard as the transform + * below, which had it from the start. + */ + clip-path: inset(#{if( + meta.type-of($texteditor-label-font-size) == number, + -$texteditor-label-font-size, + calc(-1 * #{$texteditor-label-font-size}) + )} 1px -1px 1px); span { position: relative; diff --git a/packages/devextreme-scss/scss/widgets/base/treeView/_common.scss b/packages/devextreme-scss/scss/widgets/base/treeView/_common.scss index 4fff2105c4d1..32d4272a4ad3 100644 --- a/packages/devextreme-scss/scss/widgets/base/treeView/_common.scss +++ b/packages/devextreme-scss/scss/widgets/base/treeView/_common.scss @@ -5,7 +5,6 @@ $treeview-disabled-opacity: null !default; // Sized from base/treeView, which owns the defaults and forwards a theme's values down. $treeview-searchbox-margin-bottom: null !default; -$treeview-item-icon-margin-inline-end: null !default; .dx-treeview-loadindicator-wrapper { text-align: center; @@ -84,7 +83,7 @@ $treeview-item-icon-margin-inline-end: null !default; order: 2; .dx-icon { - margin-inline-end: $treeview-item-icon-margin-inline-end; + margin-inline-end: 8px; // dx-fixed-size: demos hand-write this class outside the widget, where a tier var would not reach } .dx-button-has-icon { diff --git a/packages/devextreme-scss/scss/widgets/base/treeView/_index.scss b/packages/devextreme-scss/scss/widgets/base/treeView/_index.scss index 72eee3318f1b..3468a5b4e4f3 100644 --- a/packages/devextreme-scss/scss/widgets/base/treeView/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/treeView/_index.scss @@ -1,13 +1,11 @@ $treeview-disabled-opacity: 0.5 !default; $treeview-searchbox-margin-bottom: 5px !default; -$treeview-item-icon-margin-inline-end: 8px !default; @use "sass:math"; @use "sass:meta"; @use "./common" with ( $treeview-disabled-opacity: $treeview-disabled-opacity, $treeview-searchbox-margin-bottom: $treeview-searchbox-margin-bottom, - $treeview-item-icon-margin-inline-end: $treeview-item-icon-margin-inline-end, ); @use "../../base/icon_fonts" as *; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_index.scss index 6b2761f29757..492a7aab7244 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_index.scss @@ -7,7 +7,6 @@ $treeview-border-visible-border: var(--dx-tree-view-border-visible-border), $treeview-disabled-opacity: var(--dx-tree-view-opacity-disabled), $treeview-searchbox-margin-bottom: var(--dx-tree-view-search-box-margin-block-end), - $treeview-item-icon-margin-inline-end: var(--dx-tree-view-item-icon-margin-inline-end), ); @use "../../base/icon_fonts" as *; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_public.scss index 6e6d31e8655a..e42b5ce052cd 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_public.scss @@ -26,7 +26,6 @@ --dx-tree-view-item-content-hovered: #{$tree-view-item-content-hovered}; --dx-tree-view-item-content-selected: var(--dx-tree-view-content); --dx-tree-view-item-element-gap: #{$tree-view-item-element-gap}; - --dx-tree-view-item-icon-margin-inline-end: #{$tree-view-item-icon-margin-inline-end}; --dx-tree-view-item-margin: #{$tree-view-item-margin}; --dx-tree-view-item-padding: #{$tree-view-item-padding}; --dx-tree-view-item-padding-inline: #{$tree-view-item-padding-inline}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_sizes.scss index fc55153f7852..7ef8a2686076 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/treeView/_sizes.scss @@ -51,6 +51,3 @@ $tree-view-select-all-item-border-visible-padding: ds.$spacing-260 !default; // Base-layer sizing injected with design tokens (wave B2) $tree-view-select-all-item-border-block-end: ds.$border-width-10 solid !default; $tree-view-border-visible-border: ds.$border-width-10 solid !default; - -// Base-layer sizing injected with design tokens (wave B12) -$tree-view-item-icon-margin-inline-end: ds.$spacing-80 !default; diff --git a/packages/devextreme-scss/tests/calc-budget.json b/packages/devextreme-scss/tests/calc-budget.json index 5d90afb850a0..3d2fba35cd03 100644 --- a/packages/devextreme-scss/tests/calc-budget.json +++ b/packages/devextreme-scss/tests/calc-budget.json @@ -1,18 +1,18 @@ { "dx.fluent-next.blue.dark.compact.css": { - "calcOccurrences": 352, + "calcOccurrences": 353, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.dark.css": { - "calcOccurrences": 352, + "calcOccurrences": 353, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.compact.css": { - "calcOccurrences": 352, + "calcOccurrences": 353, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.css": { - "calcOccurrences": 352, + "calcOccurrences": 353, "declarationsWithDeepCalc": 5 } } diff --git a/packages/devextreme-scss/tools/naming/derive-registries.mjs b/packages/devextreme-scss/tools/naming/derive-registries.mjs index 516c8b3ce8f3..8f48f2280b96 100644 --- a/packages/devextreme-scss/tools/naming/derive-registries.mjs +++ b/packages/devextreme-scss/tools/naming/derive-registries.mjs @@ -865,8 +865,6 @@ const OVERRIDES = { 'item', 'item-element', 'node', 'checkbox', 'checkbox-container', 'container', 'toggle-item', 'select-all-item', 'search-box', 'search-editor', 'load-indicator', 'spin', 'border', 'control', - // wave B12: .dx-icon inside an item is a real box the item spaces away from the text - 'icon', ], popup: ['title', 'content', 'toolbar', 'toolbar-item', 'toolbar-label', 'dialog', 'message', 'button'], diff --git a/packages/devextreme-scss/tools/naming/registries.json b/packages/devextreme-scss/tools/naming/registries.json index 9b5fdce52d5b..c46622b22b35 100644 --- a/packages/devextreme-scss/tools/naming/registries.json +++ b/packages/devextreme-scss/tools/naming/registries.json @@ -1298,8 +1298,7 @@ "load-indicator", "spin", "border", - "control", - "icon" + "control" ], "popup": [ "title", diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 2adc035d5f1b..5eabb1e52fb4 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -14,12 +14,12 @@ and carries a marker saying why. | a raw grep of the layer | 778 | | …of those, inside comments (commented-out code, prose) | 6 | | **in code** | **772** | -| — the theme can already set from outside | 404 | -| — nailed into the shared layer | 368 | +| — the theme can already set from outside | 403 | +| — nailed into the shared layer | 369 | ## What the theme can already set -404 occurrences in 350 `!default` variables. fluent-next already passes 388; 0 are open knobs nobody turns. +403 occurrences in 349 `!default` variables. fluent-next already passes 387; 0 are open knobs nobody turns. ## What is nailed into the layer @@ -28,7 +28,7 @@ and carries a marker saying why. | gridBase | 50 | 18 | 7 | | | **75** | | colorView | 35 | 8 | 24 | | | **67** | | scheduler | 9 | 41 | 3 | 1 | | **54** | -| textEditor | 20 | | 20 | 4 | | **44** | +| textEditor | 23 | | 17 | 4 | | **44** | | htmlEditor | 22 | 3 | 8 | | | **33** | | pivotGrid | 6 | 8 | 6 | | | **20** | | cardView | 9 | 1 | 5 | | | **15** | @@ -359,51 +359,51 @@ and carries a marker saying why. `margin-right: -2px;` - `scss/widgets/base/textEditor/_mixins.scss:176` · geometry `border-radius: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:177` · geometry - `clip-path: inset(-$texteditor-label-font-size 1px -1px 1px);` -- `scss/widgets/base/textEditor/_mixins.scss:201` · geometry +- `scss/widgets/base/textEditor/_mixins.scss:188` · inline + `)} 1px -1px 1px);` +- `scss/widgets/base/textEditor/_mixins.scss:212` · geometry `clip-path: inset(-1px 1px -1px -1px);` -- `scss/widgets/base/textEditor/_mixins.scss:216` · geometry +- `scss/widgets/base/textEditor/_mixins.scss:227` · geometry `clip-path: inset(-1px -1px -1px 1px);` -- `scss/widgets/base/textEditor/_mixins.scss:221` · geometry +- `scss/widgets/base/textEditor/_mixins.scss:232` · geometry `clip-path: inset(-1px -1px -1px 1px);` -- `scss/widgets/base/textEditor/_mixins.scss:225` · geometry +- `scss/widgets/base/textEditor/_mixins.scss:236` · geometry `clip-path: inset(-1px 1px -1px -1px);` -- `scss/widgets/base/textEditor/_mixins.scss:239` · inline +- `scss/widgets/base/textEditor/_mixins.scss:250` · inline `height: 3px;` -- `scss/widgets/base/textEditor/_mixins.scss:241` · inline +- `scss/widgets/base/textEditor/_mixins.scss:252` · inline `margin-inline-start: -2px;` -- `scss/widgets/base/textEditor/_mixins.scss:303` · inline +- `scss/widgets/base/textEditor/_mixins.scss:314` · inline `border-start-end-radius: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:304` · inline +- `scss/widgets/base/textEditor/_mixins.scss:315` · inline `border-end-end-radius: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:629` · inline +- `scss/widgets/base/textEditor/_mixins.scss:640` · inline `margin-top: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:630` · inline +- `scss/widgets/base/textEditor/_mixins.scss:641` · inline `margin-bottom: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:749` · inline +- `scss/widgets/base/textEditor/_mixins.scss:760` · inline `margin-top: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:750` · inline +- `scss/widgets/base/textEditor/_mixins.scss:761` · inline `margin-bottom: 3px;` -- `scss/widgets/base/textEditor/_mixins.scss:757` · calc +- `scss/widgets/base/textEditor/_mixins.scss:768` · calc `padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px));` -- `scss/widgets/base/textEditor/_mixins.scss:761` · inline +- `scss/widgets/base/textEditor/_mixins.scss:772` · inline `margin-top: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:767` · inline +- `scss/widgets/base/textEditor/_mixins.scss:778` · inline `margin-top: 3px;` -- `scss/widgets/base/textEditor/_mixins.scss:775` · inline +- `scss/widgets/base/textEditor/_mixins.scss:786` · inline `padding: 2px;` -- `scss/widgets/base/textEditor/_mixins.scss:803` · inline +- `scss/widgets/base/textEditor/_mixins.scss:814` · inline `margin-top: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:804` · inline +- `scss/widgets/base/textEditor/_mixins.scss:815` · inline `margin-bottom: 3px;` -- `scss/widgets/base/textEditor/_mixins.scss:811` · calc +- `scss/widgets/base/textEditor/_mixins.scss:822` · calc `padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px));` -- `scss/widgets/base/textEditor/_mixins.scss:815` · inline +- `scss/widgets/base/textEditor/_mixins.scss:826` · inline `margin-top: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:821` · inline +- `scss/widgets/base/textEditor/_mixins.scss:832` · inline `margin-top: 3px;` -- `scss/widgets/base/textEditor/_mixins.scss:829` · inline +- `scss/widgets/base/textEditor/_mixins.scss:840` · inline `padding: 2px;` ### htmlEditor — 33 diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 991196d36b5a..8089e13a114b 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,11 +6,11 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 368, + "occurrences": 369, "byCategory": { - "inline": 174, + "inline": 178, "local-var": 87, - "geometry": 82, + "geometry": 79, "calc": 9, "structural": 8, "mixin-arg": 6, @@ -46,7 +46,8 @@ "lookup": 1, "popover": 1, "stepper": 1, - "toolbar": 1 + "toolbar": 1, + "treeView": 1 }, "unmarked": 326, "unmarkedByWidget": { @@ -3288,7 +3289,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 177, + "line": 188, "widget": "textEditor", "literals": [ "1px", @@ -3296,12 +3297,12 @@ ], "occurrences": 3, "marker": null, - "text": "clip-path: inset(-$texteditor-label-font-size 1px -1px 1px);", - "category": "geometry" + "text": ")} 1px -1px 1px);", + "category": "inline" }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 201, + "line": 212, "widget": "textEditor", "literals": [ "-1px", @@ -3314,7 +3315,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 216, + "line": 227, "widget": "textEditor", "literals": [ "-1px", @@ -3327,7 +3328,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 221, + "line": 232, "widget": "textEditor", "literals": [ "-1px", @@ -3340,7 +3341,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 225, + "line": 236, "widget": "textEditor", "literals": [ "-1px", @@ -3353,7 +3354,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 239, + "line": 250, "widget": "textEditor", "literals": [ "3px" @@ -3365,7 +3366,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 241, + "line": 252, "widget": "textEditor", "literals": [ "-2px" @@ -3377,7 +3378,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 303, + "line": 314, "widget": "textEditor", "literals": [ "1px" @@ -3389,7 +3390,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 304, + "line": 315, "widget": "textEditor", "literals": [ "1px" @@ -3401,7 +3402,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 629, + "line": 640, "widget": "textEditor", "literals": [ "1px" @@ -3413,7 +3414,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 630, + "line": 641, "widget": "textEditor", "literals": [ "1px" @@ -3425,7 +3426,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 749, + "line": 760, "widget": "textEditor", "literals": [ "1px" @@ -3437,7 +3438,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 750, + "line": 761, "widget": "textEditor", "literals": [ "3px" @@ -3449,7 +3450,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 757, + "line": 768, "widget": "textEditor", "literals": [ "1px" @@ -3461,7 +3462,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 761, + "line": 772, "widget": "textEditor", "literals": [ "1px" @@ -3473,7 +3474,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 767, + "line": 778, "widget": "textEditor", "literals": [ "3px" @@ -3485,7 +3486,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 775, + "line": 786, "widget": "textEditor", "literals": [ "2px" @@ -3497,7 +3498,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 803, + "line": 814, "widget": "textEditor", "literals": [ "1px" @@ -3509,7 +3510,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 804, + "line": 815, "widget": "textEditor", "literals": [ "3px" @@ -3521,7 +3522,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 811, + "line": 822, "widget": "textEditor", "literals": [ "1px" @@ -3533,7 +3534,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 815, + "line": 826, "widget": "textEditor", "literals": [ "1px" @@ -3545,7 +3546,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 821, + "line": 832, "widget": "textEditor", "literals": [ "3px" @@ -3557,7 +3558,7 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 829, + "line": 840, "widget": "textEditor", "literals": [ "2px" @@ -3626,6 +3627,18 @@ "marker": null, "text": "outline-offset: -2px;", "category": "geometry" + }, + { + "file": "scss/widgets/base/treeView/_common.scss", + "line": 86, + "widget": "treeView", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": "dx-fixed-size", + "text": "margin-inline-end: 8px; // dx-fixed-size: demos hand-write this class outside the widget, where a tier var would not reach", + "category": "inline" } ] } diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 043cf6fbe0aa..7597a5a068d3 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 404, - "variables": 350, - "injected": 388, + "occurrences": 403, + "variables": 349, + "injected": 387, "open": 0, "parameters": 16 }, @@ -5955,23 +5955,7 @@ }, { "file": "scss/widgets/base/treeView/_index.scss", - "line": 3, - "widget": "treeView", - "literals": [ - "8px" - ], - "occurrences": 1, - "marker": null, - "text": "$treeview-item-icon-margin-inline-end: 8px !default;", - "variable": "treeview-item-icon-margin-inline-end", - "kind": "module-variable", - "status": "injected", - "setBy": "scss/widgets/fluent-next/treeView/_index.scss", - "setTo": "var(--dx-tree-view-item-icon-margin-inline-end)" - }, - { - "file": "scss/widgets/base/treeView/_index.scss", - "line": 15, + "line": 13, "widget": "treeView", "literals": [ "1px" @@ -5987,7 +5971,7 @@ }, { "file": "scss/widgets/base/treeView/_index.scss", - "line": 16, + "line": 14, "widget": "treeView", "literals": [ "1px" From d7a986033316e54cc097c25949adcf299dd05c49 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 13:31:29 +0200 Subject: [PATCH 13/25] Tokenize editors --- .../scss/widgets/base/_numberBox.scss | 4 +- .../scss/widgets/base/_tagBox.scss | 4 +- .../scss/widgets/base/colorBox/_index.scss | 15 +- .../scss/widgets/base/lookup/_index.scss | 2 +- .../scss/widgets/base/textEditor/_mixins.scss | 72 ++-- .../widgets/fluent-next/colorBox/_index.scss | 1 + .../widgets/fluent-next/colorBox/_public.scss | 1 + .../widgets/fluent-next/colorBox/_sizes.scss | 3 + .../widgets/fluent-next/numberBox/_index.scss | 2 + .../fluent-next/textEditor/_index.scss | 8 + .../fluent-next/textEditor/_public.scss | 8 + .../fluent-next/textEditor/_sizes.scss | 10 + .../tests/base-size-markers.baseline.json | 10 +- .../devextreme-scss/tests/calc-budget.json | 8 +- .../tools/naming/derive-registries.mjs | 8 + .../tools/naming/registries.json | 6 +- .../tools/sizes/lists/BASE-SIZES.md | 114 +----- .../tools/sizes/lists/base-owned.json | 359 +++--------------- .../tools/sizes/lists/theme-settable.json | 178 ++++++++- 19 files changed, 343 insertions(+), 470 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/_numberBox.scss b/packages/devextreme-scss/scss/widgets/base/_numberBox.scss index 5cc302db045a..450acd6911bc 100644 --- a/packages/devextreme-scss/scss/widgets/base/_numberBox.scss +++ b/packages/devextreme-scss/scss/widgets/base/_numberBox.scss @@ -2,8 +2,8 @@ $numberbox-spin-idle-opacity: 0.2 !default; -$spin-container-width: 22px; -$touch-friendly-spin-container-width: 64px; +$spin-container-width: 22px !default; +$touch-friendly-spin-container-width: 64px !default; .dx-numberbox { position: relative; diff --git a/packages/devextreme-scss/scss/widgets/base/_tagBox.scss b/packages/devextreme-scss/scss/widgets/base/_tagBox.scss index ab4d70eb717d..37426af9b186 100644 --- a/packages/devextreme-scss/scss/widgets/base/_tagBox.scss +++ b/packages/devextreme-scss/scss/widgets/base/_tagBox.scss @@ -12,7 +12,7 @@ @include hide-input-cursor(); // T278002 min-width: 0; - width: 0.1px; // T393423, T437866 + width: 0.1px; // T393423, T437866 -- dx-structural: a non-zero width the browsers need, not a designed size padding-left: 0; padding-right: 0; margin-left: 0; @@ -40,7 +40,7 @@ } .dx-tag { - max-width: calc(100% - 1px); + max-width: calc(100% - 1px); // dx-px-nudge: a pixel off the full width so the tag never overflows display: inline-flex; align-self: flex-start; } diff --git a/packages/devextreme-scss/scss/widgets/base/colorBox/_index.scss b/packages/devextreme-scss/scss/widgets/base/colorBox/_index.scss index 44b772b69cc2..ab12b991153e 100644 --- a/packages/devextreme-scss/scss/widgets/base/colorBox/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/colorBox/_index.scss @@ -1,13 +1,22 @@ +@use "sass:math"; +@use "sass:meta"; @use "../mixins" as *; @use "./mixins" as *; @use "sass:string" as string; -$colorbox-input-left-padding: 40px; +$colorbox-input-left-padding: 40px !default; // Design sizing values (parametrizable; fluent-next injects tokens) $colorbox-texteditor-input-container-width: 15px !default; $colorbox-texteditor-input-container-height: 15px !default; $colorbox-texteditor-input-container-inset-inline-start: 14px !default; + +/* The preview is centred on the input, so the offset is half its own height. */ +$colorbox-texteditor-input-container-offset-block-start: if( + meta.type-of($colorbox-texteditor-input-container-height) == number, + math.div(-$colorbox-texteditor-input-container-height, 2), + calc(#{$colorbox-texteditor-input-container-height} / -2) +) !default; $colorbox-overlay-padding: 20px !default; $colorbox-toolbar-item-padding-right: 10px !default; @@ -19,7 +28,7 @@ $colorbox-toolbar-item-padding-right: 10px !default; } .dx-placeholder { - max-width: calc(100% - 25px); + max-width: calc(100% - 25px); // dx-fixed-size: room the colour preview and its gap take from the placeholder } } @@ -33,7 +42,7 @@ $colorbox-toolbar-item-padding-right: 10px !default; z-index: 1; width: $colorbox-texteditor-input-container-width; height: $colorbox-texteditor-input-container-height; - margin-top: -7.5px; + margin-top: $colorbox-texteditor-input-container-offset-block-start; inset-inline-start: $colorbox-texteditor-input-container-inset-inline-start; } } diff --git a/packages/devextreme-scss/scss/widgets/base/lookup/_index.scss b/packages/devextreme-scss/scss/widgets/base/lookup/_index.scss index d4e363f2f690..076a47c649e0 100644 --- a/packages/devextreme-scss/scss/widgets/base/lookup/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/lookup/_index.scss @@ -7,7 +7,7 @@ $lookup-popup-search-list-height: 90% !default; // dx-relative-% .dx-popup-content { .dx-scrollable { - height: calc(100% - 45px); + height: calc(100% - 45px); // dx-fixed-size: the height the popup toolbar takes from the list } } diff --git a/packages/devextreme-scss/scss/widgets/base/textEditor/_mixins.scss b/packages/devextreme-scss/scss/widgets/base/textEditor/_mixins.scss index dbbe1c2a1af0..06fd678b76ea 100644 --- a/packages/devextreme-scss/scss/widgets/base/textEditor/_mixins.scss +++ b/packages/devextreme-scss/scss/widgets/base/textEditor/_mixins.scss @@ -50,7 +50,7 @@ $texteditor-input-top-padding ) { .dx-label { - padding: 0 2px; + padding: 0 2px; // dx-fixed-size: fluent-next does not call this mixin, so the value only reaches the legacy themes border-top-width: $borderWidth; span { @@ -157,29 +157,42 @@ $label-margin-top-diff, $texteditor-label-outside-font-size, $texteditor-label-outside-height, + // The label widens itself by its padding and pulls the same amount back, so the box grows around + // the text without moving it: the margin is derived, not a second decision. + $label-padding-inline: 2px, + $label-border-radius: 1px, + $label-backdrop-height: 3px, ) { + $label-margin-inline: if( + meta.type-of($label-padding-inline) == number, + -$label-padding-inline, + calc(-1 * #{$label-padding-inline}) + ); + .dx-editor-outlined { .dx-texteditor-label { inset: 0; } .dx-label { - padding: 0 2px; + padding: 0 $label-padding-inline; border-top-width: 0; border-bottom-width: $label-border-width; border-inline-width: 0; border-style: solid; border-top-color: $texteditor-border-color; border-bottom-color: $texteditor-border-bottom-color; - margin-left: -2px; - margin-right: -2px; - border-radius: 1px; + margin-left: $label-margin-inline; + margin-right: $label-margin-inline; + border-radius: $label-border-radius; /* * The clip reaches a whole font-size above the label to uncover the notch. A theme that feeds * a var() here leaves nothing for Sass to negate, and `-var(…)` is not valid CSS: the browser * drops the whole declaration and the notch stops being clipped. Same guard as the transform * below, which had it from the start. + * + * dx-line-width: the notch is carved at the label border, a hairline that must not thicken. */ clip-path: inset(#{if( meta.type-of($texteditor-label-font-size) == number, @@ -209,7 +222,7 @@ border-start-start-radius: $texteditor-input-border-radius; border-end-start-radius: $texteditor-input-border-radius; min-width: $label-before-min-width; - clip-path: inset(-1px 1px -1px -1px); + clip-path: inset(-1px 1px -1px -1px); // dx-line-width: the notch is carved at the label border, a hairline that must not thicken with the scale } .dx-label-after { @@ -224,16 +237,16 @@ border-inline-end-color: $texteditor-border-color; border-start-end-radius: $texteditor-input-border-radius; border-end-end-radius: $texteditor-input-border-radius; - clip-path: inset(-1px -1px -1px 1px); + clip-path: inset(-1px -1px -1px 1px); // dx-line-width: the notch is carved at the label border, a hairline that must not thicken with the scale } &.dx-rtl { .dx-label-before { - clip-path: inset(-1px -1px -1px 1px); + clip-path: inset(-1px -1px -1px 1px); // dx-line-width: the notch is carved at the label border, a hairline that must not thicken with the scale } .dx-label-after { - clip-path: inset(-1px 1px -1px -1px); + clip-path: inset(-1px 1px -1px -1px); // dx-line-width: the notch is carved at the label border, a hairline that must not thicken with the scale } } @@ -247,9 +260,9 @@ content: ""; width: 100%; position: absolute; - height: 3px; + height: $label-backdrop-height; top: if(meta.type-of($label-backdrop-offset-y) == number, -$label-backdrop-offset-y, calc(-1 * #{$label-backdrop-offset-y})); - margin-inline-start: -2px; + margin-inline-start: $label-margin-inline; background-color: $label-backdrop-bg; } } @@ -311,8 +324,8 @@ clip-path: none; border-top-width: $label-border-width; border-radius: 0; - border-start-end-radius: 1px; - border-end-end-radius: 1px; + border-start-end-radius: $label-border-radius; + border-end-end-radius: $label-border-radius; margin-inline-start: 0; padding: 0; @@ -637,8 +650,8 @@ ) { .dx-texteditor-buttons-container { > .dx-button { - margin-top: 1px; - margin-bottom: 1px; + margin-top: 1px; // dx-fixed-size: fluent-next does not call this mixin, so the value only reaches the legacy themes + margin-bottom: 1px; // dx-fixed-size: fluent-next does not call this mixin, so the value only reaches the legacy themes margin-inline-start: $generic-texteditor-custom-button-margin; margin-inline-end: $generic-texteditor-custom-button-margin; @@ -700,6 +713,11 @@ $material-filled-texteditor-spin-button-horizontal-padding, $last-button-horizontal-padding, $material-button-vertical-padding, + $button-margin-block-start: 1px, + $button-margin-block-end: 3px, + $button-icon-margin-block-start: 1px, + $button-icon-margin-block-start-with-text: 3px, + $button-icononly-padding: 2px, ) { .dx-texteditor { .dx-texteditor-buttons-container { @@ -757,25 +775,25 @@ .dx-texteditor-buttons-container { > .dx-button.dx-button-mode-text { height: $material-underlined-editor-button-height; - margin-top: 1px; - margin-bottom: 3px; + margin-top: $button-margin-block-start; + margin-bottom: $button-margin-block-end; margin-inline-end: $material-editor-custom-button-margin; margin-inline-start: $material-editor-custom-button-margin; .dx-button-content { display: flex; justify-content: center; - padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px)); + padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px)); // dx-px-nudge: -1px under the button's own padding .dx-icon { align-self: center; - margin-top: 1px; + margin-top: $button-icon-margin-block-start; } } &.dx-button-has-text { .dx-button-content .dx-icon { - margin-top: 3px; + margin-top: $button-icon-margin-block-start-with-text; } } @@ -783,7 +801,7 @@ min-width: $material-underlined-editor-button-height; .dx-button-content { - padding: 2px; + padding: $button-icononly-padding; } } } @@ -811,25 +829,25 @@ .dx-texteditor-buttons-container { > .dx-button.dx-button-mode-text { height: $material-underlined-editor-button-height; - margin-top: 1px; - margin-bottom: 3px; + margin-top: $button-margin-block-start; + margin-bottom: $button-margin-block-end; margin-inline-end: $material-editor-custom-button-margin; margin-inline-start: $material-editor-custom-button-margin; .dx-button-content { display: flex; justify-content: center; - padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px)); + padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px)); // dx-px-nudge: -1px under the button's own padding .dx-icon { align-self: center; - margin-top: 1px; + margin-top: $button-icon-margin-block-start; } } &.dx-button-has-text { .dx-button-content .dx-icon { - margin-top: 3px; + margin-top: $button-icon-margin-block-start-with-text; } } @@ -837,7 +855,7 @@ min-width: $material-underlined-editor-button-height; .dx-button-content { - padding: 2px; + padding: $button-icononly-padding; } } } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/colorBox/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/colorBox/_index.scss index a32d437003c8..9e0d27482762 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/colorBox/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/colorBox/_index.scss @@ -3,6 +3,7 @@ @use "sizes" as *; @use "../colorView/colors" as colorViewColors; @use "../../base/colorBox" with ( + $colorbox-input-left-padding: var(--dx-color-box-input-min-width), $colorbox-texteditor-input-container-width: var(--dx-color-box-input-container-width), $colorbox-texteditor-input-container-height: var(--dx-color-box-input-container-height), $colorbox-texteditor-input-container-inset-inline-start: var(--dx-color-box-input-container-inset-inline-start), diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/colorBox/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/colorBox/_public.scss index 825967ce5a39..f3908dbaee6b 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/colorBox/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/colorBox/_public.scss @@ -6,6 +6,7 @@ --dx-color-box-input-container-height: #{$color-box-input-container-height}; --dx-color-box-input-container-inset-inline-start: #{$color-box-input-container-inset-inline-start}; --dx-color-box-input-container-width: #{$color-box-input-container-width}; + --dx-color-box-input-min-width: #{$color-box-input-min-width}; --dx-color-box-overlay-bg: var(--dx-surface-overlay); --dx-color-box-overlay-content-padding: #{$color-box-overlay-content-padding}; --dx-color-box-overlay-padding: #{$color-box-overlay-padding}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/colorBox/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/colorBox/_sizes.scss index 1bc91bd349e4..347c6fcafce5 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/colorBox/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/colorBox/_sizes.scss @@ -26,3 +26,6 @@ $color-box-input-container-height: ds.$spacing-150 !default; $color-box-input-container-inset-inline-start: ds.$spacing-140 !default; $color-box-overlay-padding: ds.$spacing-200 !default; $color-box-toolbar-item-padding-inline-end: ds.$spacing-100 !default; + +// Base-layer sizing injected with design tokens (wave B13) +$color-box-input-min-width: ds.$spacing-400 !default; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/numberBox/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/numberBox/_index.scss index 4440de94ade6..a3fa8f5a0a45 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/numberBox/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/numberBox/_index.scss @@ -3,6 +3,8 @@ @use "../sizes" as *; @use "../../base/icon_fonts" as *; @use "../../base/numberBox" with ( + $spin-container-width: var(--dx-number-box-spin-container-width), + $touch-friendly-spin-container-width: var(--dx-number-box-spin-container-touch-friendly-width), $numberbox-spin-idle-opacity: var(--dx-number-box-spin-opacity), ); @use "../textEditor" as *; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/textEditor/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/textEditor/_index.scss index 96cf7f1479a3..11af10f139f5 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/textEditor/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/textEditor/_index.scss @@ -517,6 +517,9 @@ 1px, // dx-px-nudge: 1px label margin-top difference var(--dx-text-editor-font-size), var(--dx-text-editor-label-outside-height), + $label-padding-inline: var(--dx-text-editor-label-padding-inline), + $label-border-radius: var(--dx-text-editor-label-border-radius), + $label-backdrop-height: var(--dx-text-editor-label-backdrop-height), ); @include dx-editor-filled( $text-editor-label-transition, @@ -573,4 +576,9 @@ 0, var(--dx-text-editor-spin-button-padding-inline), buttonSizes.$button-padding-block, + $button-margin-block-start: var(--dx-text-editor-button-margin-block-start), + $button-margin-block-end: var(--dx-text-editor-button-margin-block-end), + $button-icon-margin-block-start: var(--dx-text-editor-button-icon-margin-block-start), + $button-icon-margin-block-start-with-text: var(--dx-text-editor-button-icon-with-text-margin-block-start), + $button-icononly-padding: var(--dx-text-editor-button-icon-only-padding), ); diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/textEditor/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/textEditor/_public.scss index 5ab9a479230a..4990f7211779 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/textEditor/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/textEditor/_public.scss @@ -8,6 +8,11 @@ --dx-text-editor-border: #{$text-editor-border}; --dx-text-editor-border-width: #{$text-editor-border-width}; --dx-text-editor-button-filled-inset-inline-end: #{$text-editor-button-filled-inset-inline-end}; + --dx-text-editor-button-icon-with-text-margin-block-start: #{$text-editor-button-icon-with-text-margin-block-start}; + --dx-text-editor-button-icon-margin-block-start: #{$text-editor-button-icon-margin-block-start}; + --dx-text-editor-button-icon-only-padding: #{$text-editor-button-icon-only-padding}; + --dx-text-editor-button-margin-block-end: #{$text-editor-button-margin-block-end}; + --dx-text-editor-button-margin-block-start: #{$text-editor-button-margin-block-start}; --dx-text-editor-button-underlined-height: #{$text-editor-button-underlined-height}; --dx-text-editor-clear-button-icon: #{$text-editor-clear-button-icon}; --dx-text-editor-clear-button-width: #{$text-editor-clear-button-width}; @@ -36,6 +41,8 @@ --dx-text-editor-invalid-border-focused: #{$text-editor-invalid-border-focused}; --dx-text-editor-invalid-border: #{$text-editor-invalid-border}; --dx-text-editor-invalid-content: #{$text-editor-invalid-content}; + --dx-text-editor-label-backdrop-height: #{$text-editor-label-backdrop-height}; + --dx-text-editor-label-border-radius: #{$text-editor-label-border-radius}; --dx-text-editor-label-content-focused: #{$text-editor-label-content-focused}; --dx-text-editor-label-content: var(--dx-text-editor-placeholder); --dx-text-editor-label-font-size: #{$text-editor-label-font-size}; @@ -45,6 +52,7 @@ --dx-text-editor-label-offset: #{$text-editor-label-offset}; --dx-text-editor-label-outside-height: #{$text-editor-label-outside-height}; --dx-text-editor-label-outside-offset: #{$text-editor-label-outside-offset}; + --dx-text-editor-label-padding-inline: #{$text-editor-label-padding-inline}; --dx-text-editor-line-border-block-end-active: #{$text-editor-line-border-block-end-active}; --dx-text-editor-line-border-block-end-width-active: #{$text-editor-line-border-block-end-width-active}; --dx-text-editor-line-border-block-end-width-focused: #{$text-editor-line-border-block-end-width-focused}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/textEditor/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/textEditor/_sizes.scss index 9bbdb1b1e30e..14020acfe7da 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/textEditor/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/textEditor/_sizes.scss @@ -106,3 +106,13 @@ $text-editor-line-border-block-end-width-active: ds.$border-width-20 !default; // Base-layer sizing injected with design tokens (wave B2) $text-editor-clear-button-width: ds.$spacing-340 !default; + +// Base-layer sizing injected with design tokens (wave B13) +$text-editor-label-padding-inline: ds.$spacing-20 !default; +$text-editor-label-border-radius: ds.$border-radius-10 !default; +$text-editor-label-backdrop-height: ds.$spacing-30 !default; +$text-editor-button-margin-block-start: ds.$spacing-10 !default; +$text-editor-button-margin-block-end: ds.$spacing-30 !default; +$text-editor-button-icon-margin-block-start: ds.$spacing-10 !default; +$text-editor-button-icon-with-text-margin-block-start: ds.$spacing-30 !default; +$text-editor-button-icon-only-padding: ds.$spacing-20 !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index a29ba039a1a0..133118c3405a 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,20 +1,16 @@ { "openKnobs": 0, - "unclassified": 326, + "unclassified": 277, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, "scheduler": 54, - "textEditor": 44, "htmlEditor": 33, "pivotGrid": 20, "cardView": 15, "dataGrid": 5, "treeList": 4, - "colorBox": 3, - "numberBox": 2, - "tagBox": 2, - "list": 1, - "lookup": 1 + "textEditor": 3, + "list": 1 } } diff --git a/packages/devextreme-scss/tests/calc-budget.json b/packages/devextreme-scss/tests/calc-budget.json index 3d2fba35cd03..74202b9a0e03 100644 --- a/packages/devextreme-scss/tests/calc-budget.json +++ b/packages/devextreme-scss/tests/calc-budget.json @@ -1,18 +1,18 @@ { "dx.fluent-next.blue.dark.compact.css": { - "calcOccurrences": 353, + "calcOccurrences": 357, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.dark.css": { - "calcOccurrences": 353, + "calcOccurrences": 357, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.compact.css": { - "calcOccurrences": 353, + "calcOccurrences": 357, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.css": { - "calcOccurrences": 353, + "calcOccurrences": 357, "declarationsWithDeepCalc": 5 } } diff --git a/packages/devextreme-scss/tools/naming/derive-registries.mjs b/packages/devextreme-scss/tools/naming/derive-registries.mjs index 8f48f2280b96..4cf6f72eb9bf 100644 --- a/packages/devextreme-scss/tools/naming/derive-registries.mjs +++ b/packages/devextreme-scss/tools/naming/derive-registries.mjs @@ -482,6 +482,11 @@ const OVERRIDES = { 'with-label', // .dx-menu-item-has-icon: a menu item that reserves room for an icon 'with-icon', + // .dx-button:not(.dx-button-has-text): a button that shows a glyph and nothing else, which + // pads itself differently from one carrying a caption + 'icon-only', + // .dx-button-has-text: the same button when it carries a caption beside the glyph + 'with-text', // .dx-popup-title present: the content box loses the padding the title already provides 'with-title', // Switch.value rendered as .dx-switch-on-value / -off-value, and the two label boxes inside @@ -1051,6 +1056,9 @@ const OVERRIDES = { 'text-editor': [ 'input', 'label', 'line', 'button', 'clear-button', 'spin-button', 'custom-button', 'icon-container', 'invalid-badge', + // wave B13: the strip the floating label sits on (.dx-label::before) and the glyph inside an + // editor button (.dx-button-content .dx-icon) are both real boxes with sizes of their own + 'backdrop', 'icon', ], }, }; diff --git a/packages/devextreme-scss/tools/naming/registries.json b/packages/devextreme-scss/tools/naming/registries.json index c46622b22b35..4a7c395eda13 100644 --- a/packages/devextreme-scss/tools/naming/registries.json +++ b/packages/devextreme-scss/tools/naming/registries.json @@ -640,6 +640,8 @@ "alternation", "with-label", "with-icon", + "icon-only", + "with-text", "with-title", "on", "off", @@ -2018,7 +2020,9 @@ "spin-button", "custom-button", "icon-container", - "invalid-badge" + "invalid-badge", + "backdrop", + "icon" ] }, "packageElementPaths": [ diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 5eabb1e52fb4..316c802e6bc1 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -11,34 +11,30 @@ and carries a marker saying why. | | occurrences | |---|---| -| a raw grep of the layer | 778 | -| …of those, inside comments (commented-out code, prose) | 6 | -| **in code** | **772** | -| — the theme can already set from outside | 403 | -| — nailed into the shared layer | 369 | +| a raw grep of the layer | 769 | +| …of those, inside comments (commented-out code, prose) | 8 | +| **in code** | **761** | +| — the theme can already set from outside | 414 | +| — nailed into the shared layer | 347 | ## What the theme can already set -403 occurrences in 349 `!default` variables. fluent-next already passes 387; 0 are open knobs nobody turns. +414 occurrences in 360 `!default` variables. fluent-next already passes 390; 0 are open knobs nobody turns. ## What is nailed into the layer -| widget | inline | local-var | geometry | calc | mixin-arg | total | +| widget | inline | local-var | geometry | mixin-arg | calc | total | |---|---|---|---|---|---|---| | gridBase | 50 | 18 | 7 | | | **75** | | colorView | 35 | 8 | 24 | | | **67** | -| scheduler | 9 | 41 | 3 | 1 | | **54** | -| textEditor | 23 | | 17 | 4 | | **44** | +| scheduler | 9 | 41 | 3 | | 1 | **54** | | htmlEditor | 22 | 3 | 8 | | | **33** | | pivotGrid | 6 | 8 | 6 | | | **20** | | cardView | 9 | 1 | 5 | | | **15** | -| dataGrid | | | 3 | | 2 | **5** | -| treeList | | | 1 | | 3 | **4** | -| colorBox | 1 | 1 | | 1 | | **3** | -| numberBox | | 2 | | | | **2** | -| tagBox | 1 | | | 1 | | **2** | +| dataGrid | | | 3 | 2 | | **5** | +| treeList | | | 1 | 3 | | **4** | +| textEditor | 3 | | | | | **3** | | list | | 1 | | | | **1** | -| lookup | | | | 1 | | **1** | ## Places, by widget @@ -347,65 +343,6 @@ and carries a marker saying why. - `scss/widgets/base/scheduler/views/timelines/_index.scss:188` · geometry `border-bottom: 1px solid;` -### textEditor — 44 - -- `scss/widgets/base/textEditor/_mixins.scss:53` · inline - `padding: 0 2px;` -- `scss/widgets/base/textEditor/_mixins.scss:167` · inline - `padding: 0 2px;` -- `scss/widgets/base/textEditor/_mixins.scss:174` · inline - `margin-left: -2px;` -- `scss/widgets/base/textEditor/_mixins.scss:175` · inline - `margin-right: -2px;` -- `scss/widgets/base/textEditor/_mixins.scss:176` · geometry - `border-radius: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:188` · inline - `)} 1px -1px 1px);` -- `scss/widgets/base/textEditor/_mixins.scss:212` · geometry - `clip-path: inset(-1px 1px -1px -1px);` -- `scss/widgets/base/textEditor/_mixins.scss:227` · geometry - `clip-path: inset(-1px -1px -1px 1px);` -- `scss/widgets/base/textEditor/_mixins.scss:232` · geometry - `clip-path: inset(-1px -1px -1px 1px);` -- `scss/widgets/base/textEditor/_mixins.scss:236` · geometry - `clip-path: inset(-1px 1px -1px -1px);` -- `scss/widgets/base/textEditor/_mixins.scss:250` · inline - `height: 3px;` -- `scss/widgets/base/textEditor/_mixins.scss:252` · inline - `margin-inline-start: -2px;` -- `scss/widgets/base/textEditor/_mixins.scss:314` · inline - `border-start-end-radius: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:315` · inline - `border-end-end-radius: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:640` · inline - `margin-top: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:641` · inline - `margin-bottom: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:760` · inline - `margin-top: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:761` · inline - `margin-bottom: 3px;` -- `scss/widgets/base/textEditor/_mixins.scss:768` · calc - `padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px));` -- `scss/widgets/base/textEditor/_mixins.scss:772` · inline - `margin-top: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:778` · inline - `margin-top: 3px;` -- `scss/widgets/base/textEditor/_mixins.scss:786` · inline - `padding: 2px;` -- `scss/widgets/base/textEditor/_mixins.scss:814` · inline - `margin-top: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:815` · inline - `margin-bottom: 3px;` -- `scss/widgets/base/textEditor/_mixins.scss:822` · calc - `padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px));` -- `scss/widgets/base/textEditor/_mixins.scss:826` · inline - `margin-top: 1px;` -- `scss/widgets/base/textEditor/_mixins.scss:832` · inline - `margin-top: 3px;` -- `scss/widgets/base/textEditor/_mixins.scss:840` · inline - `padding: 2px;` - ### htmlEditor — 33 - `scss/widgets/base/_htmlEditor.scss:14` · local-var @@ -563,35 +500,12 @@ and carries a marker saying why. - `scss/widgets/base/treeList/layout/cell.scss:229` · geometry `outline-offset: -2px;` -### colorBox — 3 - -- `scss/widgets/base/colorBox/_index.scss:5` · local-var - `$colorbox-input-left-padding: 40px;` -- `scss/widgets/base/colorBox/_index.scss:22` · calc - `max-width: calc(100% - 25px);` -- `scss/widgets/base/colorBox/_index.scss:36` · inline - `margin-top: -7.5px;` - -### numberBox — 2 - -- `scss/widgets/base/_numberBox.scss:5` · local-var - `$spin-container-width: 22px;` -- `scss/widgets/base/_numberBox.scss:6` · local-var - `$touch-friendly-spin-container-width: 64px;` +### textEditor — 3 -### tagBox — 2 - -- `scss/widgets/base/_tagBox.scss:15` · inline - `width: 0.1px; // T393423, T437866` -- `scss/widgets/base/_tagBox.scss:43` · calc - `max-width: calc(100% - 1px);` +- `scss/widgets/base/textEditor/_mixins.scss:201` · inline + `)} 1px -1px 1px);` ### list — 1 - `scss/widgets/base/list/_index.scss:6` · local-var `$list-searchbox-margin-bottom: 5px;` - -### lookup — 1 - -- `scss/widgets/base/lookup/_index.scss:10` · calc - `height: calc(100% - 45px);` diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 8089e13a114b..715a35b55135 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,11 +6,11 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 369, + "occurrences": 347, "byCategory": { - "inline": 178, - "local-var": 87, - "geometry": 79, + "inline": 160, + "local-var": 84, + "geometry": 78, "calc": 9, "structural": 8, "mixin-arg": 6, @@ -20,8 +20,8 @@ "gridBase": 75, "colorView": 67, "scheduler": 55, - "textEditor": 44, "htmlEditor": 35, + "textEditor": 26, "pivotGrid": 21, "cardView": 15, "ui": 8, @@ -30,16 +30,15 @@ "fileManager": 5, "sortable": 4, "treeList": 4, - "colorBox": 3, "icon_fonts": 2, "multiView": 2, - "numberBox": 2, "resizable": 2, "tagBox": 2, "filterBuilder": 2, "fileUploader": 1, "pagination": 1, "slider": 1, + "colorBox": 1, "diagram": 1, "gantt": 1, "list": 1, @@ -49,22 +48,18 @@ "toolbar": 1, "treeView": 1 }, - "unmarked": 326, + "unmarked": 277, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, "scheduler": 54, - "textEditor": 44, "htmlEditor": 33, "pivotGrid": 20, "cardView": 15, "dataGrid": 5, "treeList": 4, - "colorBox": 3, - "numberBox": 2, - "tagBox": 2, - "list": 1, - "lookup": 1 + "textEditor": 3, + "list": 1 } }, "places": [ @@ -515,30 +510,6 @@ "text": "left: -9999px; // dx-structural: parks the hidden slide off-screen", "category": "structural" }, - { - "file": "scss/widgets/base/_numberBox.scss", - "line": 5, - "widget": "numberBox", - "literals": [ - "22px" - ], - "occurrences": 1, - "marker": null, - "text": "$spin-container-width: 22px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/_numberBox.scss", - "line": 6, - "widget": "numberBox", - "literals": [ - "64px" - ], - "occurrences": 1, - "marker": null, - "text": "$touch-friendly-spin-container-width: 64px;", - "category": "local-var" - }, { "file": "scss/widgets/base/_pagination.scss", "line": 25, @@ -648,8 +619,8 @@ "0.1px" ], "occurrences": 1, - "marker": null, - "text": "width: 0.1px; // T393423, T437866", + "marker": "dx-structural", + "text": "width: 0.1px; // T393423, T437866 -- dx-structural: a non-zero width the browsers need, not a designed size", "category": "inline" }, { @@ -660,8 +631,8 @@ "1px" ], "occurrences": 1, - "marker": null, - "text": "max-width: calc(100% - 1px);", + "marker": "dx-px-nudge", + "text": "max-width: calc(100% - 1px); // dx-px-nudge: a pixel off the full width so the tag never overflows", "category": "calc" }, { @@ -920,40 +891,16 @@ }, { "file": "scss/widgets/base/colorBox/_index.scss", - "line": 5, - "widget": "colorBox", - "literals": [ - "40px" - ], - "occurrences": 1, - "marker": null, - "text": "$colorbox-input-left-padding: 40px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/colorBox/_index.scss", - "line": 22, + "line": 31, "widget": "colorBox", "literals": [ "25px" ], "occurrences": 1, - "marker": null, - "text": "max-width: calc(100% - 25px);", + "marker": "dx-fixed-size", + "text": "max-width: calc(100% - 25px); // dx-fixed-size: room the colour preview and its gap take from the placeholder", "category": "calc" }, - { - "file": "scss/widgets/base/colorBox/_index.scss", - "line": 36, - "widget": "colorBox", - "literals": [ - "-7.5px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-top: -7.5px;", - "category": "inline" - }, { "file": "scss/widgets/base/colorView/_index.scss", "line": 3, @@ -2321,8 +2268,8 @@ "45px" ], "occurrences": 1, - "marker": null, - "text": "height: calc(100% - 45px);", + "marker": "dx-fixed-size", + "text": "height: calc(100% - 45px); // dx-fixed-size: the height the popup toolbar takes from the list", "category": "calc" }, { @@ -3235,61 +3182,13 @@ "2px" ], "occurrences": 1, - "marker": null, - "text": "padding: 0 2px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 167, - "widget": "textEditor", - "literals": [ - "2px" - ], - "occurrences": 1, - "marker": null, - "text": "padding: 0 2px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 174, - "widget": "textEditor", - "literals": [ - "-2px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-left: -2px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 175, - "widget": "textEditor", - "literals": [ - "-2px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-right: -2px;", + "marker": "dx-fixed-size", + "text": "padding: 0 2px; // dx-fixed-size: fluent-next does not call this mixin, so the value only reaches the legacy themes", "category": "inline" }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 176, - "widget": "textEditor", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "border-radius: 1px;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 188, + "line": 201, "widget": "textEditor", "literals": [ "1px", @@ -3302,272 +3201,104 @@ }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 212, + "line": 225, "widget": "textEditor", "literals": [ "-1px", "1px" ], "occurrences": 4, - "marker": null, - "text": "clip-path: inset(-1px 1px -1px -1px);", + "marker": "dx-line-width", + "text": "clip-path: inset(-1px 1px -1px -1px); // dx-line-width: the notch is carved at the label border, a hairline that must not thicken with the scale", "category": "geometry" }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 227, + "line": 240, "widget": "textEditor", "literals": [ "-1px", "1px" ], "occurrences": 4, - "marker": null, - "text": "clip-path: inset(-1px -1px -1px 1px);", + "marker": "dx-line-width", + "text": "clip-path: inset(-1px -1px -1px 1px); // dx-line-width: the notch is carved at the label border, a hairline that must not thicken with the scale", "category": "geometry" }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 232, + "line": 245, "widget": "textEditor", "literals": [ "-1px", "1px" ], "occurrences": 4, - "marker": null, - "text": "clip-path: inset(-1px -1px -1px 1px);", + "marker": "dx-line-width", + "text": "clip-path: inset(-1px -1px -1px 1px); // dx-line-width: the notch is carved at the label border, a hairline that must not thicken with the scale", "category": "geometry" }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 236, + "line": 249, "widget": "textEditor", "literals": [ "-1px", "1px" ], "occurrences": 4, - "marker": null, - "text": "clip-path: inset(-1px 1px -1px -1px);", + "marker": "dx-line-width", + "text": "clip-path: inset(-1px 1px -1px -1px); // dx-line-width: the notch is carved at the label border, a hairline that must not thicken with the scale", "category": "geometry" }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 250, - "widget": "textEditor", - "literals": [ - "3px" - ], - "occurrences": 1, - "marker": null, - "text": "height: 3px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 252, - "widget": "textEditor", - "literals": [ - "-2px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-inline-start: -2px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 314, + "line": 653, "widget": "textEditor", "literals": [ "1px" ], "occurrences": 1, - "marker": null, - "text": "border-start-end-radius: 1px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 315, - "widget": "textEditor", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "border-end-end-radius: 1px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 640, - "widget": "textEditor", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-top: 1px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 641, - "widget": "textEditor", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-bottom: 1px;", + "marker": "dx-fixed-size", + "text": "margin-top: 1px; // dx-fixed-size: fluent-next does not call this mixin, so the value only reaches the legacy themes", "category": "inline" }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 760, + "line": 654, "widget": "textEditor", "literals": [ "1px" ], "occurrences": 1, - "marker": null, - "text": "margin-top: 1px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 761, - "widget": "textEditor", - "literals": [ - "3px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-bottom: 3px;", + "marker": "dx-fixed-size", + "text": "margin-bottom: 1px; // dx-fixed-size: fluent-next does not call this mixin, so the value only reaches the legacy themes", "category": "inline" }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 768, + "line": 786, "widget": "textEditor", "literals": [ "1px" ], "occurrences": 2, - "marker": null, - "text": "padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px));", + "marker": "dx-px-nudge", + "text": "padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px)); // dx-px-nudge: -1px under the button's own padding", "category": "calc" }, { "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 772, - "widget": "textEditor", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-top: 1px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 778, - "widget": "textEditor", - "literals": [ - "3px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-top: 3px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 786, - "widget": "textEditor", - "literals": [ - "2px" - ], - "occurrences": 1, - "marker": null, - "text": "padding: 2px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 814, - "widget": "textEditor", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-top: 1px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 815, - "widget": "textEditor", - "literals": [ - "3px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-bottom: 3px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 822, + "line": 840, "widget": "textEditor", "literals": [ "1px" ], "occurrences": 2, - "marker": null, - "text": "padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px));", + "marker": "dx-px-nudge", + "text": "padding-top: if(meta.type-of($material-button-vertical-padding) == number, $material-button-vertical-padding - 1px, calc(#{$material-button-vertical-padding} - 1px)); // dx-px-nudge: -1px under the button's own padding", "category": "calc" }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 826, - "widget": "textEditor", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-top: 1px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 832, - "widget": "textEditor", - "literals": [ - "3px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-top: 3px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/textEditor/_mixins.scss", - "line": 840, - "widget": "textEditor", - "literals": [ - "2px" - ], - "occurrences": 1, - "marker": null, - "text": "padding: 2px;", - "category": "inline" - }, { "file": "scss/widgets/base/toolbar/_index.scss", "line": 101, diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 7597a5a068d3..2ccc4f349ba2 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,11 +7,11 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 403, - "variables": 349, - "injected": 387, + "occurrences": 414, + "variables": 360, + "injected": 390, "open": 0, - "parameters": 16 + "parameters": 24 }, "places": [ { @@ -862,6 +862,38 @@ "setBy": "scss/widgets/fluent-next/menu/_index.scss", "setTo": "var(--dx-menu-item-content-padding-inline-start)" }, + { + "file": "scss/widgets/base/_numberBox.scss", + "line": 5, + "widget": "numberBox", + "literals": [ + "22px" + ], + "occurrences": 1, + "marker": null, + "text": "$spin-container-width: 22px !default;", + "variable": "spin-container-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/numberBox/_index.scss", + "setTo": "var(--dx-number-box-spin-container-width)" + }, + { + "file": "scss/widgets/base/_numberBox.scss", + "line": 6, + "widget": "numberBox", + "literals": [ + "64px" + ], + "occurrences": 1, + "marker": null, + "text": "$touch-friendly-spin-container-width: 64px !default;", + "variable": "touch-friendly-spin-container-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/numberBox/_index.scss", + "setTo": "var(--dx-number-box-spin-container-touch-friendly-width)" + }, { "file": "scss/widgets/base/_pagination.scss", "line": 4, @@ -2045,7 +2077,23 @@ }, { "file": "scss/widgets/base/colorBox/_index.scss", - "line": 8, + "line": 7, + "widget": "colorBox", + "literals": [ + "40px" + ], + "occurrences": 1, + "marker": null, + "text": "$colorbox-input-left-padding: 40px !default;", + "variable": "colorbox-input-left-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorBox/_index.scss", + "setTo": "var(--dx-color-box-input-min-width)" + }, + { + "file": "scss/widgets/base/colorBox/_index.scss", + "line": 10, "widget": "colorBox", "literals": [ "15px" @@ -2061,7 +2109,7 @@ }, { "file": "scss/widgets/base/colorBox/_index.scss", - "line": 9, + "line": 11, "widget": "colorBox", "literals": [ "15px" @@ -2077,7 +2125,7 @@ }, { "file": "scss/widgets/base/colorBox/_index.scss", - "line": 10, + "line": 12, "widget": "colorBox", "literals": [ "14px" @@ -2093,7 +2141,7 @@ }, { "file": "scss/widgets/base/colorBox/_index.scss", - "line": 11, + "line": 20, "widget": "colorBox", "literals": [ "20px" @@ -2109,7 +2157,7 @@ }, { "file": "scss/widgets/base/colorBox/_index.scss", - "line": 12, + "line": 21, "widget": "colorBox", "literals": [ "10px" @@ -5657,6 +5705,118 @@ "setBy": "scss/widgets/fluent-next/textEditor/_index.scss", "setTo": "var(--dx-text-editor-clear-button-width)" }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 162, + "widget": "textEditor", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$label-padding-inline: 2px,", + "variable": "label-padding-inline", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 163, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$label-border-radius: 1px,", + "variable": "label-border-radius", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 164, + "widget": "textEditor", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$label-backdrop-height: 3px,", + "variable": "label-backdrop-height", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 716, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$button-margin-block-start: 1px,", + "variable": "button-margin-block-start", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 717, + "widget": "textEditor", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$button-margin-block-end: 3px,", + "variable": "button-margin-block-end", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 718, + "widget": "textEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$button-icon-margin-block-start: 1px,", + "variable": "button-icon-margin-block-start", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 719, + "widget": "textEditor", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$button-icon-margin-block-start-with-text: 3px,", + "variable": "button-icon-margin-block-start-with-text", + "kind": "mixin-parameter", + "status": "parameter" + }, + { + "file": "scss/widgets/base/textEditor/_mixins.scss", + "line": 720, + "widget": "textEditor", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$button-icononly-padding: 2px,", + "variable": "button-icononly-padding", + "kind": "mixin-parameter", + "status": "parameter" + }, { "file": "scss/widgets/base/timeView/_index.scss", "line": 4, From ada9a1af4575f4bc92e561f5b0033aa3c76753f7 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 15:08:00 +0200 Subject: [PATCH 14/25] Tokenize htmlEditor --- .../scss/widgets/base/_htmlEditor.scss | 56 ++-- .../fluent-next/htmlEditor/_index.scss | 12 + .../fluent-next/htmlEditor/_public.scss | 12 + .../fluent-next/htmlEditor/_sizes.scss | 14 + .../tests/base-size-markers.baseline.json | 4 +- .../tools/naming/derive-registries.mjs | 5 +- .../tools/naming/registries.json | 6 +- .../tools/sizes/lists/BASE-SIZES.md | 102 +++----- .../tools/sizes/lists/base-owned.json | 242 +++--------------- .../tools/sizes/lists/theme-settable.json | 200 ++++++++++++++- 10 files changed, 347 insertions(+), 306 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/_htmlEditor.scss b/packages/devextreme-scss/scss/widgets/base/_htmlEditor.scss index d075309efa5d..1c48f3ec2173 100644 --- a/packages/devextreme-scss/scss/widgets/base/_htmlEditor.scss +++ b/packages/devextreme-scss/scss/widgets/base/_htmlEditor.scss @@ -1,5 +1,6 @@ @use "sass:list"; @use "sass:math"; +@use "sass:meta"; @use "sass:selector"; $htmleditor-code-block-bg: rgba(191, 191, 191, 0.15) !default; @@ -11,12 +12,31 @@ $list-style-width: 1.2em; $list-style-margin: 0.3em; $list-style-outer-width: $list-style-margin + $list-style-width; $max-indent: 9; + +/* + * dx-fixed-size: the drag handle's size; its half is negated at twenty positions, so feeding a + * var() here would trade one knob nobody retunes for twenty calc() in the bundle. + */ $resize-handle-size: 11px; -$touch-resize-handle-size: 15px; +$touch-resize-handle-size: 15px; // dx-fixed-size: the touch variant of the same handle $half-resize-handle-size: math.div($resize-handle-size, 2); $half-touch-resize-handle-size: math.div($touch-resize-handle-size, 2); -$transparent-border: 1px solid transparent; +$htmleditor-border-width: 1px !default; +$transparent-border: $htmleditor-border-width solid transparent; + +// Design sizing values (parametrizable; fluent-next injects tokens) +$variable-padding: 3px 6px !default; +$variable-border-radius: 8px !default; +$blockquote-padding-inline-start: 12px !default; +$blockquote-border-inline-start-width: 4px !default; +$table-cell-padding: 2px 5px !default; +$placeholder-inset-inline: 15px !default; +$mention-padding-block: 1px !default; +$mention-border-radius: 2px !default; +$mention-margin-inline: 2px !default; +$table-resizer-thickness: 5px !default; +$table-resizer-highlight-thickness: 3px !default; @function add-counter-reset($counter, $start: 1) { @if $counter > $start { @@ -161,8 +181,8 @@ $transparent-border: 1px solid transparent; .dx-variable { & > span { - padding: 3px 6px; - border-radius: 8px; + padding: $variable-padding; + border-radius: $variable-border-radius; } } @@ -202,8 +222,8 @@ $transparent-border: 1px solid transparent; td, th { - border: 1px solid #000; - padding: 2px 5px; + border: 1px solid #000; // dx-line-width: a table hairline; the colour beside it is hard-coded too + padding: $table-cell-padding; } ol { @@ -319,10 +339,10 @@ $transparent-border: 1px solid transparent; color: $htmleditor-placeholder-color; content: attr(data-placeholder); font-style: italic; - left: 15px; + left: $placeholder-inset-inline; pointer-events: none; position: absolute; - right: 15px; + right: $placeholder-inset-inline; } &::after { @@ -332,15 +352,15 @@ $transparent-border: 1px solid transparent; } &[data-placeholder] > p { - height: 0.1px; + height: 0.1px; // dx-structural: a non-zero height the placeholder needs, not a designed size } } // stylelint-enable selector-class-pattern blockquote { - padding-inline-start: 12px; - border-inline-start: 4px solid; + padding-inline-start: $blockquote-padding-inline-start; + border-inline-start: $blockquote-border-inline-start-width solid; } } @@ -565,8 +585,8 @@ $transparent-border: 1px solid transparent; } .dx-mention { - padding: 1px 0; - border-radius: 2px; + padding: $mention-padding-block 0; + border-radius: $mention-border-radius; .dx-template-wrapper { white-space: nowrap; @@ -574,7 +594,7 @@ $transparent-border: 1px solid transparent; } & > span { - margin: 0 2px; + margin: 0 $mention-margin-inline; } } @@ -589,27 +609,27 @@ $transparent-border: 1px solid transparent; } .dx-htmleditor-column-resizer { - width: 5px; + width: $table-resizer-thickness; top: 0; height: 100%; cursor: col-resize; } .dx-htmleditor-highlighted-column { - width: 3px; + width: $table-resizer-highlight-thickness; top: 0; height: 100%; } .dx-htmleditor-row-resizer { - height: 5px; + height: $table-resizer-thickness; left: 0; width: 100%; cursor: row-resize; } .dx-htmleditor-highlighted-row { - height: 3px; + height: $table-resizer-highlight-thickness; left: 0; width: 100%; } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss index 4ffa47a4259e..652ec1d361b5 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss @@ -11,6 +11,18 @@ @use "../popup/sizes" as popupSizes; @use "../../base/mixins" as *; @use "../../base/htmlEditor" with ( + $htmleditor-border-width: var(--dx-html-editor-border-width), + $variable-padding: var(--dx-html-editor-variable-padding), + $variable-border-radius: var(--dx-html-editor-variable-border-radius), + $blockquote-padding-inline-start: var(--dx-html-editor-blockquote-padding-inline-start), + $blockquote-border-inline-start-width: var(--dx-html-editor-blockquote-border-inline-start-width), + $table-cell-padding: var(--dx-html-editor-table-cell-padding), + $placeholder-inset-inline: var(--dx-html-editor-placeholder-inset-inline), + $mention-padding-block: var(--dx-html-editor-mention-padding-block), + $mention-border-radius: var(--dx-html-editor-mention-border-radius), + $mention-margin-inline: var(--dx-html-editor-mention-margin-inline), + $table-resizer-thickness: var(--dx-html-editor-table-resizer-thickness), + $table-resizer-highlight-thickness: var(--dx-html-editor-table-resizer-highlight-thickness), $htmleditor-code-block-bg: var(--dx-html-editor-code-block-bg), $htmleditor-placeholder-color: var(--dx-html-editor-placeholder-content), $htmleditor-aidialog-title-font-weight: var(--dx-html-editor-ai-dialog-title-font-weight), diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_public.scss index d9c5684054aa..59f21530d810 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_public.scss @@ -10,7 +10,10 @@ --dx-html-editor-ai-dialog-content-padding: #{$html-editor-ai-dialog-content-padding}; --dx-html-editor-ai-dialog-selects-gap: #{$html-editor-ai-dialog-selects-gap}; --dx-html-editor-ai-dialog-title-font-weight: #{$html-editor-ai-dialog-title-font-weight}; + --dx-html-editor-blockquote-border-inline-start-width: #{$html-editor-blockquote-border-inline-start-width}; + --dx-html-editor-blockquote-padding-inline-start: #{$html-editor-blockquote-padding-inline-start}; --dx-html-editor-border-block-end-active: #{$html-editor-border-block-end-active}; + --dx-html-editor-border-width: #{$html-editor-border-width}; --dx-html-editor-code-block-bg: #{$html-editor-code-block-bg}; --dx-html-editor-content-margin: #{$html-editor-content-margin}; --dx-html-editor-cover-bg: #{$html-editor-cover-bg}; @@ -22,12 +25,19 @@ --dx-html-editor-highlighted-row-bg: #{$html-editor-highlighted-row-bg}; --dx-html-editor-input-wrapper-gap: #{$html-editor-input-wrapper-gap}; --dx-html-editor-mention-bg: #{$html-editor-mention-bg}; + --dx-html-editor-mention-border-radius: #{$html-editor-mention-border-radius}; + --dx-html-editor-mention-margin-inline: #{$html-editor-mention-margin-inline}; + --dx-html-editor-mention-padding-block: #{$html-editor-mention-padding-block}; --dx-html-editor-padding-block: #{$html-editor-padding-block}; --dx-html-editor-padding-inline: #{$html-editor-padding-inline}; --dx-html-editor-placeholder-content: #{$html-editor-placeholder-content}; + --dx-html-editor-placeholder-inset-inline: #{$html-editor-placeholder-inset-inline}; --dx-html-editor-resize-frame-border: #{$html-editor-resize-frame-border}; --dx-html-editor-resize-trigger: #{$html-editor-resize-trigger}; --dx-html-editor-table-border: #{$html-editor-table-border}; + --dx-html-editor-table-cell-padding: #{$html-editor-table-cell-padding}; + --dx-html-editor-table-resizer-highlight-thickness: #{$html-editor-table-resizer-highlight-thickness}; + --dx-html-editor-table-resizer-thickness: #{$html-editor-table-resizer-thickness}; --dx-html-editor-toolbar-border: #{$html-editor-toolbar-border}; --dx-html-editor-toolbar-menu-separator-margin: #{$html-editor-toolbar-menu-separator-margin}; --dx-html-editor-toolbar-padding: var(--dx-html-editor-padding-inline); @@ -38,4 +48,6 @@ --dx-html-editor-toolbar-wrapper-inset-inline-start: #{$html-editor-toolbar-wrapper-inset-inline-start}; --dx-html-editor-uploader-cover-bg: #{$html-editor-uploader-cover-bg}; --dx-html-editor-variable-bg: #{$html-editor-variable-bg}; + --dx-html-editor-variable-border-radius: #{$html-editor-variable-border-radius}; + --dx-html-editor-variable-padding: #{$html-editor-variable-padding}; } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_sizes.scss index fe9c5af8de05..5132daa188a7 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_sizes.scss @@ -52,3 +52,17 @@ $html-editor-border-block-end-active: ds.$border-width-20 solid !default; // Base-layer values injected with design tokens (wave B1) $html-editor-ai-dialog-title-font-weight: ds.$font-weight-title-default !default; + +// Base-layer sizing injected with design tokens (wave B14) +$html-editor-border-width: ds.$border-width-10 !default; +$html-editor-variable-padding: ds.$spacing-30 ds.$spacing-60 !default; +$html-editor-variable-border-radius: ds.$border-radius-80 !default; +$html-editor-blockquote-padding-inline-start: ds.$spacing-120 !default; +$html-editor-blockquote-border-inline-start-width: ds.$border-width-40 !default; +$html-editor-table-cell-padding: ds.$spacing-20 ds.$spacing-50 !default; +$html-editor-placeholder-inset-inline: ds.$spacing-150 !default; +$html-editor-mention-padding-block: ds.$spacing-10 !default; +$html-editor-mention-border-radius: ds.$border-radius-20 !default; +$html-editor-mention-margin-inline: ds.$spacing-20 !default; +$html-editor-table-resizer-thickness: ds.$spacing-50 !default; +$html-editor-table-resizer-highlight-thickness: ds.$spacing-30 !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 133118c3405a..443b8e156347 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,13 +1,13 @@ { "openKnobs": 0, - "unclassified": 277, + "unclassified": 257, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, "scheduler": 54, - "htmlEditor": 33, "pivotGrid": 20, "cardView": 15, + "htmlEditor": 13, "dataGrid": 5, "treeList": 4, "textEditor": 3, diff --git a/packages/devextreme-scss/tools/naming/derive-registries.mjs b/packages/devextreme-scss/tools/naming/derive-registries.mjs index 4cf6f72eb9bf..0695281650fa 100644 --- a/packages/devextreme-scss/tools/naming/derive-registries.mjs +++ b/packages/devextreme-scss/tools/naming/derive-registries.mjs @@ -932,7 +932,10 @@ const OVERRIDES = { 'html-editor': ['toolbar', 'table', 'variable', 'mention', 'resize', 'resize-frame', 'cover', 'uploader', 'file-uploader', 'input-wrapper', 'wrapper', 'ai-dialog', 'content', 'icon', 'item', 'highlighted-row', 'code-block', 'placeholder', 'size-editor', 'add-image-dialog', 'separator', - 'tabs', 'selects', 'title'], + 'tabs', 'selects', 'title', + // wave B14: the quoted block, a table cell, and the bar that resizes a column or row together + // with the strip that highlights the one being dragged + 'blockquote', 'cell', 'resizer', 'highlight'], 'pivot-grid': ['area', 'area-field', 'fields-area-head', 'fields-area-head-cell', 'field-chooser', 'field', 'fields', 'expand-icon', 'row', 'column', 'cell', 'last-cell', 'header', 'headers', 'drag-header', 'total', 'grand-total', 'filter', 'sort', 'icon', 'chevron', 'chevron-icon', diff --git a/packages/devextreme-scss/tools/naming/registries.json b/packages/devextreme-scss/tools/naming/registries.json index 4a7c395eda13..d611423efe69 100644 --- a/packages/devextreme-scss/tools/naming/registries.json +++ b/packages/devextreme-scss/tools/naming/registries.json @@ -1571,7 +1571,11 @@ "separator", "tabs", "selects", - "title" + "title", + "blockquote", + "cell", + "resizer", + "highlight" ], "pivot-grid": [ "area", diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 316c802e6bc1..a1337371516e 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -11,15 +11,15 @@ and carries a marker saying why. | | occurrences | |---|---| -| a raw grep of the layer | 769 | +| a raw grep of the layer | 766 | | …of those, inside comments (commented-out code, prose) | 8 | -| **in code** | **761** | -| — the theme can already set from outside | 414 | -| — nailed into the shared layer | 347 | +| **in code** | **758** | +| — the theme can already set from outside | 428 | +| — nailed into the shared layer | 330 | ## What the theme can already set -414 occurrences in 360 `!default` variables. fluent-next already passes 390; 0 are open knobs nobody turns. +428 occurrences in 372 `!default` variables. fluent-next already passes 404; 0 are open knobs nobody turns. ## What is nailed into the layer @@ -28,9 +28,9 @@ and carries a marker saying why. | gridBase | 50 | 18 | 7 | | | **75** | | colorView | 35 | 8 | 24 | | | **67** | | scheduler | 9 | 41 | 3 | | 1 | **54** | -| htmlEditor | 22 | 3 | 8 | | | **33** | | pivotGrid | 6 | 8 | 6 | | | **20** | | cardView | 9 | 1 | 5 | | | **15** | +| htmlEditor | 8 | 1 | 4 | | | **13** | | dataGrid | | | 3 | 2 | | **5** | | treeList | | | 1 | 3 | | **4** | | textEditor | 3 | | | | | **3** | @@ -343,69 +343,6 @@ and carries a marker saying why. - `scss/widgets/base/scheduler/views/timelines/_index.scss:188` · geometry `border-bottom: 1px solid;` -### htmlEditor — 33 - -- `scss/widgets/base/_htmlEditor.scss:14` · local-var - `$resize-handle-size: 11px;` -- `scss/widgets/base/_htmlEditor.scss:15` · local-var - `$touch-resize-handle-size: 15px;` -- `scss/widgets/base/_htmlEditor.scss:19` · local-var - `$transparent-border: 1px solid transparent;` -- `scss/widgets/base/_htmlEditor.scss:133` · inline - `min-height: 1px;` -- `scss/widgets/base/_htmlEditor.scss:158` · inline - `padding: 12px 15px;` -- `scss/widgets/base/_htmlEditor.scss:164` · inline - `padding: 3px 6px;` -- `scss/widgets/base/_htmlEditor.scss:165` · geometry - `border-radius: 8px;` -- `scss/widgets/base/_htmlEditor.scss:205` · geometry - `border: 1px solid #000;` -- `scss/widgets/base/_htmlEditor.scss:206` · inline - `padding: 2px 5px;` -- `scss/widgets/base/_htmlEditor.scss:322` · inline - `left: 15px;` -- `scss/widgets/base/_htmlEditor.scss:325` · inline - `right: 15px;` -- `scss/widgets/base/_htmlEditor.scss:335` · inline - `height: 0.1px;` -- `scss/widgets/base/_htmlEditor.scss:342` · inline - `padding-inline-start: 12px;` -- `scss/widgets/base/_htmlEditor.scss:343` · geometry - `border-inline-start: 4px solid;` -- `scss/widgets/base/_htmlEditor.scss:349` · inline - `min-height: 35px;` -- `scss/widgets/base/_htmlEditor.scss:358` · inline - `min-width: 50px;` -- `scss/widgets/base/_htmlEditor.scss:371` · inline - `min-width: 360px;` -- `scss/widgets/base/_htmlEditor.scss:396` · inline - `gap: 6px;` -- `scss/widgets/base/_htmlEditor.scss:403` · inline - `min-width: 240px;` -- `scss/widgets/base/_htmlEditor.scss:416` · geometry - `border-bottom: 3px solid transparent;` -- `scss/widgets/base/_htmlEditor.scss:436` · geometry - `border: 1px dashed lightslategrey;` -- `scss/widgets/base/_htmlEditor.scss:447` · geometry - `border: 1px solid white;` -- `scss/widgets/base/_htmlEditor.scss:503` · geometry - `border: 1px solid white;` -- `scss/widgets/base/_htmlEditor.scss:568` · inline - `padding: 1px 0;` -- `scss/widgets/base/_htmlEditor.scss:569` · geometry - `border-radius: 2px;` -- `scss/widgets/base/_htmlEditor.scss:577` · inline - `margin: 0 2px;` -- `scss/widgets/base/_htmlEditor.scss:592` · inline - `width: 5px;` -- `scss/widgets/base/_htmlEditor.scss:599` · inline - `width: 3px;` -- `scss/widgets/base/_htmlEditor.scss:605` · inline - `height: 5px;` -- `scss/widgets/base/_htmlEditor.scss:612` · inline - `height: 3px;` - ### pivotGrid — 20 - `scss/widgets/base/pivotGrid/_index.scss:56` · local-var @@ -476,6 +413,33 @@ and carries a marker saying why. - `scss/widgets/base/cardView/header_panel/item/_index.scss:88` · inline `0 6px 8px $cardview-header-panel__item--dragged-box-shadow-color;` +### htmlEditor — 13 + +- `scss/widgets/base/_htmlEditor.scss:20` · local-var + `$resize-handle-size: 11px;` +- `scss/widgets/base/_htmlEditor.scss:153` · inline + `min-height: 1px;` +- `scss/widgets/base/_htmlEditor.scss:178` · inline + `padding: 12px 15px;` +- `scss/widgets/base/_htmlEditor.scss:369` · inline + `min-height: 35px;` +- `scss/widgets/base/_htmlEditor.scss:378` · inline + `min-width: 50px;` +- `scss/widgets/base/_htmlEditor.scss:391` · inline + `min-width: 360px;` +- `scss/widgets/base/_htmlEditor.scss:416` · inline + `gap: 6px;` +- `scss/widgets/base/_htmlEditor.scss:423` · inline + `min-width: 240px;` +- `scss/widgets/base/_htmlEditor.scss:436` · geometry + `border-bottom: 3px solid transparent;` +- `scss/widgets/base/_htmlEditor.scss:456` · geometry + `border: 1px dashed lightslategrey;` +- `scss/widgets/base/_htmlEditor.scss:467` · geometry + `border: 1px solid white;` +- `scss/widgets/base/_htmlEditor.scss:523` · geometry + `border: 1px solid white;` + ### dataGrid — 5 - `scss/widgets/base/dataGrid/_index.scss:146` · geometry diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 715a35b55135..0089fdc36766 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,11 +6,11 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 347, + "occurrences": 330, "byCategory": { - "inline": 160, - "local-var": 84, - "geometry": 78, + "inline": 147, + "local-var": 83, + "geometry": 75, "calc": 9, "structural": 8, "mixin-arg": 6, @@ -20,9 +20,9 @@ "gridBase": 75, "colorView": 67, "scheduler": 55, - "htmlEditor": 35, "textEditor": 26, "pivotGrid": 21, + "htmlEditor": 18, "cardView": 15, "ui": 8, "scrollView": 5, @@ -48,14 +48,14 @@ "toolbar": 1, "treeView": 1 }, - "unmarked": 277, + "unmarked": 257, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, "scheduler": 54, - "htmlEditor": 33, "pivotGrid": 20, "cardView": 15, + "htmlEditor": 13, "dataGrid": 5, "treeList": 4, "textEditor": 3, @@ -77,7 +77,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 14, + "line": 20, "widget": "htmlEditor", "literals": [ "11px" @@ -89,31 +89,19 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 15, + "line": 21, "widget": "htmlEditor", "literals": [ "15px" ], "occurrences": 1, - "marker": null, - "text": "$touch-resize-handle-size: 15px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 19, - "widget": "htmlEditor", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "$transparent-border: 1px solid transparent;", + "marker": "dx-fixed-size", + "text": "$touch-resize-handle-size: 15px; // dx-fixed-size: the touch variant of the same handle", "category": "local-var" }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 133, + "line": 153, "widget": "htmlEditor", "literals": [ "1px" @@ -125,7 +113,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 140, + "line": 160, "widget": "htmlEditor", "literals": [ "-100000px" @@ -137,7 +125,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 141, + "line": 161, "widget": "htmlEditor", "literals": [ "1px" @@ -149,7 +137,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 158, + "line": 178, "widget": "htmlEditor", "literals": [ "12px", @@ -162,117 +150,31 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 164, - "widget": "htmlEditor", - "literals": [ - "3px", - "6px" - ], - "occurrences": 2, - "marker": null, - "text": "padding: 3px 6px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 165, - "widget": "htmlEditor", - "literals": [ - "8px" - ], - "occurrences": 1, - "marker": null, - "text": "border-radius: 8px;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 205, + "line": 225, "widget": "htmlEditor", "literals": [ "1px" ], "occurrences": 1, - "marker": null, - "text": "border: 1px solid #000;", + "marker": "dx-line-width", + "text": "border: 1px solid #000; // dx-line-width: a table hairline; the colour beside it is hard-coded too", "category": "geometry" }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 206, - "widget": "htmlEditor", - "literals": [ - "2px", - "5px" - ], - "occurrences": 2, - "marker": null, - "text": "padding: 2px 5px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 322, - "widget": "htmlEditor", - "literals": [ - "15px" - ], - "occurrences": 1, - "marker": null, - "text": "left: 15px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 325, - "widget": "htmlEditor", - "literals": [ - "15px" - ], - "occurrences": 1, - "marker": null, - "text": "right: 15px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 335, + "line": 355, "widget": "htmlEditor", "literals": [ "0.1px" ], "occurrences": 1, - "marker": null, - "text": "height: 0.1px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 342, - "widget": "htmlEditor", - "literals": [ - "12px" - ], - "occurrences": 1, - "marker": null, - "text": "padding-inline-start: 12px;", + "marker": "dx-structural", + "text": "height: 0.1px; // dx-structural: a non-zero height the placeholder needs, not a designed size", "category": "inline" }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 343, - "widget": "htmlEditor", - "literals": [ - "4px" - ], - "occurrences": 1, - "marker": null, - "text": "border-inline-start: 4px solid;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 349, + "line": 369, "widget": "htmlEditor", "literals": [ "35px" @@ -284,7 +186,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 358, + "line": 378, "widget": "htmlEditor", "literals": [ "50px" @@ -296,7 +198,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 371, + "line": 391, "widget": "htmlEditor", "literals": [ "360px" @@ -308,7 +210,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 396, + "line": 416, "widget": "htmlEditor", "literals": [ "6px" @@ -320,7 +222,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 403, + "line": 423, "widget": "htmlEditor", "literals": [ "240px" @@ -332,7 +234,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 416, + "line": 436, "widget": "htmlEditor", "literals": [ "3px" @@ -344,7 +246,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 436, + "line": 456, "widget": "htmlEditor", "literals": [ "1px" @@ -356,7 +258,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 447, + "line": 467, "widget": "htmlEditor", "literals": [ "1px" @@ -368,7 +270,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 503, + "line": 523, "widget": "htmlEditor", "literals": [ "1px" @@ -378,90 +280,6 @@ "text": "border: 1px solid white;", "category": "geometry" }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 568, - "widget": "htmlEditor", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "padding: 1px 0;", - "category": "inline" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 569, - "widget": "htmlEditor", - "literals": [ - "2px" - ], - "occurrences": 1, - "marker": null, - "text": "border-radius: 2px;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 577, - "widget": "htmlEditor", - "literals": [ - "2px" - ], - "occurrences": 1, - "marker": null, - "text": "margin: 0 2px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 592, - "widget": "htmlEditor", - "literals": [ - "5px" - ], - "occurrences": 1, - "marker": null, - "text": "width: 5px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 599, - "widget": "htmlEditor", - "literals": [ - "3px" - ], - "occurrences": 1, - "marker": null, - "text": "width: 3px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 605, - "widget": "htmlEditor", - "literals": [ - "5px" - ], - "occurrences": 1, - "marker": null, - "text": "height: 5px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 612, - "widget": "htmlEditor", - "literals": [ - "3px" - ], - "occurrences": 1, - "marker": null, - "text": "height: 3px;", - "category": "inline" - }, { "file": "scss/widgets/base/_icon_fonts.scss", "line": 307, diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 2ccc4f349ba2..461c9e788233 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 414, - "variables": 360, - "injected": 390, + "occurrences": 428, + "variables": 372, + "injected": 404, "open": 0, "parameters": 24 }, @@ -702,6 +702,200 @@ "setBy": "scss/widgets/fluent-next/gallery/_index.scss", "setTo": "var(--dx-gallery-indicator-item-margin)" }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 25, + "widget": "htmlEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$htmleditor-border-width: 1px !default;", + "variable": "htmleditor-border-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", + "setTo": "var(--dx-html-editor-border-width)" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 29, + "widget": "htmlEditor", + "literals": [ + "3px", + "6px" + ], + "occurrences": 2, + "marker": null, + "text": "$variable-padding: 3px 6px !default;", + "variable": "variable-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", + "setTo": "var(--dx-html-editor-variable-padding)" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 30, + "widget": "htmlEditor", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$variable-border-radius: 8px !default;", + "variable": "variable-border-radius", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", + "setTo": "var(--dx-html-editor-variable-border-radius)" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 31, + "widget": "htmlEditor", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "$blockquote-padding-inline-start: 12px !default;", + "variable": "blockquote-padding-inline-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", + "setTo": "var(--dx-html-editor-blockquote-padding-inline-start)" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 32, + "widget": "htmlEditor", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$blockquote-border-inline-start-width: 4px !default;", + "variable": "blockquote-border-inline-start-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", + "setTo": "var(--dx-html-editor-blockquote-border-inline-start-width)" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 33, + "widget": "htmlEditor", + "literals": [ + "2px", + "5px" + ], + "occurrences": 2, + "marker": null, + "text": "$table-cell-padding: 2px 5px !default;", + "variable": "table-cell-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", + "setTo": "var(--dx-html-editor-table-cell-padding)" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 34, + "widget": "htmlEditor", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$placeholder-inset-inline: 15px !default;", + "variable": "placeholder-inset-inline", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", + "setTo": "var(--dx-html-editor-placeholder-inset-inline)" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 35, + "widget": "htmlEditor", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$mention-padding-block: 1px !default;", + "variable": "mention-padding-block", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", + "setTo": "var(--dx-html-editor-mention-padding-block)" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 36, + "widget": "htmlEditor", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$mention-border-radius: 2px !default;", + "variable": "mention-border-radius", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", + "setTo": "var(--dx-html-editor-mention-border-radius)" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 37, + "widget": "htmlEditor", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$mention-margin-inline: 2px !default;", + "variable": "mention-margin-inline", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", + "setTo": "var(--dx-html-editor-mention-margin-inline)" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 38, + "widget": "htmlEditor", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$table-resizer-thickness: 5px !default;", + "variable": "table-resizer-thickness", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", + "setTo": "var(--dx-html-editor-table-resizer-thickness)" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 39, + "widget": "htmlEditor", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$table-resizer-highlight-thickness: 3px !default;", + "variable": "table-resizer-highlight-thickness", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", + "setTo": "var(--dx-html-editor-table-resizer-highlight-thickness)" + }, { "file": "scss/widgets/base/_loadIndicator.scss", "line": 5, From 9faa0f50e7bb148b7987c541da15e51cd30a137f Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 15:51:07 +0200 Subject: [PATCH 15/25] Tokenize scheduler --- .../scss/widgets/base/scheduler/_common.scss | 4 +- .../scss/widgets/base/scheduler/_index.scss | 67 ++- .../widgets/base/scheduler/views/_index.scss | 20 +- .../widgets/fluent-next/scheduler/_index.scss | 12 + .../fluent-next/scheduler/_public.scss | 19 +- .../widgets/fluent-next/scheduler/_sizes.scss | 17 + .../tests/base-size-markers.baseline.json | 6 +- .../tools/review/nested-scopes.json | 2 + .../tools/sizes/lists/BASE-SIZES.md | 181 +++---- .../tools/sizes/lists/base-owned.json | 349 +++---------- .../tools/sizes/lists/theme-settable.json | 461 +++++++++++++++--- 11 files changed, 626 insertions(+), 512 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/scheduler/_common.scss b/packages/devextreme-scss/scss/widgets/base/scheduler/_common.scss index 0e88ceea9c61..80ff146f7c18 100644 --- a/packages/devextreme-scss/scss/widgets/base/scheduler/_common.scss +++ b/packages/devextreme-scss/scss/widgets/base/scheduler/_common.scss @@ -1,8 +1,8 @@ @use "sass:math"; @use "../../base/mixins" as *; -$scheduler-appointment-collector-margin: 3px; -$scheduler-appointment-collector-height: 22px; +$scheduler-appointment-collector-margin: 3px; // dx-fixed-size: the collector margin, multiplied elsewhere so a var() cannot pass +$scheduler-appointment-collector-height: 22px !default; $scheduler-common-collector-margin: null !default; $scheduler-common-collector-size: null !default; diff --git a/packages/devextreme-scss/scss/widgets/base/scheduler/_index.scss b/packages/devextreme-scss/scss/widgets/base/scheduler/_index.scss index 164c54bf4b89..8214394f2eee 100644 --- a/packages/devextreme-scss/scss/widgets/base/scheduler/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/scheduler/_index.scss @@ -1,3 +1,4 @@ +$scheduler-appointment-collector-height: 22px !default; $scheduler-appointment-base-color: null !default; $scheduler-appointment-start-color: null !default; $scheduler-appointment-active-color: null !default; @@ -50,6 +51,7 @@ $scheduler-common-collector-size: 28px !default; @use "./common" with ( $scheduler-common-collector-margin: $scheduler-common-collector-margin, $scheduler-common-collector-size: $scheduler-common-collector-size, + $scheduler-appointment-collector-height: $scheduler-appointment-collector-height, ); $scheduler-tooltip-shadow: 0 0 15px 0 rgba(0, 0, 0, 0.15) !default; @@ -79,52 +81,58 @@ $scheduler-appointment-content-details-font-size: 11px !default; $scheduler-tooltip-date-font-size: $scheduler-tooltip-date-font-size ); -$scheduler-appointment-min-size: 4px; -$scheduler-appointment-content-padding: 5px 7px; -$scheduler-appointment-reduced-content-padding: 40px; +$scheduler-appointment-min-size: 4px !default; +$scheduler-appointment-content-padding: 5px 7px !default; +$scheduler-appointment-reduced-content-padding: 40px !default; -$scheduler-hovered-appointment-top-shadow-size: 5px; -$scheduler-focused-cell-shadow: inset 0 0 0 1px $scheduler-appointment-base-color; +$scheduler-hovered-appointment-top-shadow-size: 5px; // dx-fixed-size: negated and composed into shadows, so a var() cannot pass +$scheduler-focused-cell-shadow: inset 0 0 0 1px $scheduler-appointment-base-color; // dx-shadow-geometry -$scheduler-vertical-appointment-resizable-hovering-shadow: inset 0 $scheduler-hovered-appointment-top-shadow-size 0 0 $scheduler-appointment-start-color, inset 0 -2px 0 0 $scheduler-appointment-start-color; +$scheduler-vertical-appointment-resizable-hovering-shadow: inset 0 $scheduler-hovered-appointment-top-shadow-size 0 0 $scheduler-appointment-start-color, inset 0 -2px 0 0 $scheduler-appointment-start-color; // dx-shadow-geometry $scheduler-vertical-appointment-hovering-shadow: inset 0 $scheduler-hovered-appointment-top-shadow-size 0 0 $scheduler-appointment-start-color; -$scheduler-vertical-appointment-shadow: inset 0 2px 0 0 $scheduler-appointment-start-color; -$scheduler-vertical-appointment-resizing-shadow: inset 0 -2px 0 0 $scheduler-appointment-start-color, $scheduler-vertical-appointment-shadow; +$scheduler-vertical-appointment-shadow: inset 0 2px 0 0 $scheduler-appointment-start-color; // dx-shadow-geometry +$scheduler-vertical-appointment-resizing-shadow: inset 0 -2px 0 0 $scheduler-appointment-start-color, $scheduler-vertical-appointment-shadow; // dx-shadow-geometry $scheduler-appointment-dragging-shadow: 7px 7px 15px 0 rgba(50, 50, 50, 0.2) !default; -$scheduler-horizontal-appointment-resizable-hovering-shadow: inset $scheduler-hovered-appointment-top-shadow-size 0 0 0 $scheduler-appointment-start-color, inset -2px 0 0 0 $scheduler-appointment-start-color; -$scheduler-horizontal-appointment-resizable-hovering-shadow-rtl: inset (-$scheduler-hovered-appointment-top-shadow-size) 0 0 0 $scheduler-appointment-start-color, inset 2px 0 0 0 $scheduler-appointment-start-color; +$scheduler-horizontal-appointment-resizable-hovering-shadow: inset $scheduler-hovered-appointment-top-shadow-size 0 0 0 $scheduler-appointment-start-color, inset -2px 0 0 0 $scheduler-appointment-start-color; // dx-shadow-geometry +$scheduler-horizontal-appointment-resizable-hovering-shadow-rtl: inset (-$scheduler-hovered-appointment-top-shadow-size) 0 0 0 $scheduler-appointment-start-color, inset 2px 0 0 0 $scheduler-appointment-start-color; // dx-shadow-geometry $scheduler-horizontal-appointment-hovering-shadow: inset $scheduler-hovered-appointment-top-shadow-size 0 0 0 $scheduler-appointment-start-color; $scheduler-horizontal-appointment-hovering-shadow-rtl: inset (-$scheduler-hovered-appointment-top-shadow-size) 0 0 0 $scheduler-appointment-start-color; -$scheduler-horizontal-appointment-shadow: inset 2px 0 0 0 $scheduler-appointment-start-color; -$scheduler-horizontal-appointment-shadow-rtl: inset -2px 0 0 0 $scheduler-appointment-start-color; -$scheduler-horizontal-appointment-resizing-shadow: inset -2px 0 0 0 $scheduler-appointment-start-color, $scheduler-horizontal-appointment-shadow; +$scheduler-horizontal-appointment-shadow: inset 2px 0 0 0 $scheduler-appointment-start-color; // dx-shadow-geometry +$scheduler-horizontal-appointment-shadow-rtl: inset -2px 0 0 0 $scheduler-appointment-start-color; // dx-shadow-geometry +$scheduler-horizontal-appointment-resizing-shadow: inset -2px 0 0 0 $scheduler-appointment-start-color, $scheduler-horizontal-appointment-shadow; // dx-shadow-geometry -$scheduler-grouped-appointment-month-text-size: 12px; +$scheduler-grouped-appointment-month-text-size: 12px !default; -$scheduler-base-border: 1px solid; -$scheduler-transparent-top-border: 1px solid transparent; -$scheduler-accent-border: 1px solid; +$scheduler-border-width: 1px !default; +$scheduler-workspace-info-font-size: 20px !default; +$scheduler-small-font-size: 14px !default; +$scheduler-group-header-table-cell-height: 30px !default; +$scheduler-month-date-text-size: 16px !default; +$scheduler-month-date-text-padding: 6px !default; +$scheduler-base-border: $scheduler-border-width solid; +$scheduler-transparent-top-border: $scheduler-border-width solid transparent; +$scheduler-accent-border: $scheduler-border-width solid; -$scheduler-reduced-icon-offset: 5px; -$scheduler-recurrence-icon-offset: 20px; +$scheduler-reduced-icon-offset: 5px !default; +$scheduler-recurrence-icon-offset: 20px !default; -$scheduler-agenda-appointment-margin: 5px; -$scheduler-agenda-last-in-date-appointment-margin: 20px; +$scheduler-agenda-appointment-margin: 5px !default; +$scheduler-agenda-last-in-date-appointment-margin: 20px !default; $scheduler-small-size-factor: 0.5; $scheduler-small-size-element-offset: $scheduler-left-column-width * $scheduler-small-size-factor; -$scheduler-time-indicator-font-size: 30px; -$scheduler-time-indicator-size: 1px; -$scheduler-time-indicator-top: 14px; -$scheduler-time-indicator-left: 12px; +$scheduler-time-indicator-font-size: 30px !default; +$scheduler-time-indicator-size: 1px !default; +$scheduler-time-indicator-top: 14px; // dx-fixed-size: negated at its use site +$scheduler-time-indicator-left: 12px; // dx-fixed-size: negated at its use site $scheduler-time-indicator-shadow-color: rgba(255, 255, 255, 0.1) !default; -$scheduler-time-indicator-shadow: 0 1px 0 0 $scheduler-time-indicator-shadow-color; -$scheduler-time-indicator-text-shadow: $scheduler-time-indicator-shadow-color 1px 0 0; +$scheduler-time-indicator-shadow: 0 1px 0 0 $scheduler-time-indicator-shadow-color; // dx-shadow-geometry +$scheduler-time-indicator-text-shadow: $scheduler-time-indicator-shadow-color 1px 0 0; // dx-shadow-geometry $scheduler-appointment-icon-font-size: 18px !default; $scheduler-appointment-date-opacity: 0.7 !default; @@ -212,6 +220,11 @@ $scheduler-agenda-date-table-padding-top: 10px !default; $scheduler-renovation-virtual-row-height: 50px !default; @use "./views" with ( + $scheduler-workspace-info-font-size: $scheduler-workspace-info-font-size, + $scheduler-small-font-size: $scheduler-small-font-size, + $scheduler-group-header-table-cell-height: $scheduler-group-header-table-cell-height, + $scheduler-month-date-text-size: $scheduler-month-date-text-size, + $scheduler-month-date-text-padding: $scheduler-month-date-text-padding, $scheduler-timeline-min-height: $scheduler-timeline-min-height, $scheduler-timeline-group-two-empty-cell-width: $scheduler-timeline-group-two-empty-cell-width, $scheduler-timeline-group-header-width: $scheduler-timeline-group-header-width, diff --git a/packages/devextreme-scss/scss/widgets/base/scheduler/views/_index.scss b/packages/devextreme-scss/scss/widgets/base/scheduler/views/_index.scss index 2e791cd03b8f..45d09ac9e4b5 100644 --- a/packages/devextreme-scss/scss/widgets/base/scheduler/views/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/scheduler/views/_index.scss @@ -41,24 +41,24 @@ $scheduler-views-time-indicator-width: 10% !default; // dx-relative-% $scheduler-views-group-header-content-height: null !default; $scheduler-views-vertical-group-min-height: null !default; -$scheduler-timepanel-cell-offset: 20px; -$scheduler-workspace-info-font-size: 20px; -$scheduler-small-font-size: 14px; +$scheduler-timepanel-cell-offset: 20px; // dx-fixed-size: multiplied elsewhere, so a var() cannot pass +$scheduler-workspace-info-font-size: 20px !default; +$scheduler-small-font-size: 14px !default; -$scheduler-current-time-cell-border-size: 2px; +$scheduler-current-time-cell-border-size: 2px; // dx-fixed-size: multiplied elsewhere, so a var() cannot pass -$scheduler-workspace-date-table-cell-height: 50px; +$scheduler-workspace-date-table-cell-height: 50px; // dx-fixed-size: four derived heights multiply it, so a var() cannot pass $scheduler-all-day-table-cell-height: $scheduler-workspace-date-table-cell-height * 1.5; $scheduler-collapsed-all-day-table-cell-height: $scheduler-workspace-date-table-cell-height * 0.5; $scheduler-vertical-grouped-all-day-table-cell-height: $scheduler-workspace-date-table-cell-height; -$scheduler-header-panel-table-cell-height: if(meta.type-of($scheduler-workspace-date-table-cell-height) == number, $scheduler-workspace-date-table-cell-height - 10px, calc(#{$scheduler-workspace-date-table-cell-height} - 10px)); -$scheduler-group-header-table-cell-height: 30px; +$scheduler-header-panel-table-cell-height: if(meta.type-of($scheduler-workspace-date-table-cell-height) == number, $scheduler-workspace-date-table-cell-height - 10px, calc(#{$scheduler-workspace-date-table-cell-height} - 10px)); // dx-px-nudge: -10px under the workspace cell height +$scheduler-group-header-table-cell-height: 30px !default; -$scheduler-group-header-table-cell-width: 80px; +$scheduler-group-header-table-cell-width: 80px; // dx-fixed-size: multiplied elsewhere, so a var() cannot pass -$scheduler-month-date-text-size: 16px; +$scheduler-month-date-text-size: 16px !default; -$scheduler-month-date-text-padding: 6px; +$scheduler-month-date-text-padding: 6px !default; @use "./day" with ( $scheduler-base-border: $scheduler-base-border, diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_index.scss index 02aa7eff8315..379e4fbd4c79 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_index.scss @@ -9,6 +9,18 @@ @use "../../base/mixins" as *; @use "../../base/icon_fonts" as *; @use "../../base/scheduler" as baseScheduler with ( + $scheduler-appointment-collector-height: var(--dx-scheduler-appointment-collector-height), + $scheduler-appointment-min-size: var(--dx-scheduler-appointment-min-size), + $scheduler-appointment-content-padding: var(--dx-scheduler-appointment-content-padding), + $scheduler-appointment-reduced-content-padding: var(--dx-scheduler-appointment-reduced-content-padding), + $scheduler-grouped-appointment-month-text-size: var(--dx-scheduler-appointment-month-text-font-size), + $scheduler-border-width: var(--dx-scheduler-border-width), + $scheduler-reduced-icon-offset: var(--dx-scheduler-reduced-icon-inset-inline), + $scheduler-recurrence-icon-offset: var(--dx-scheduler-recurrence-icon-inset-inline), + $scheduler-agenda-appointment-margin: var(--dx-scheduler-agenda-appointment-margin), + $scheduler-agenda-last-in-date-appointment-margin: var(--dx-scheduler-agenda-appointment-last-margin), + $scheduler-time-indicator-font-size: var(--dx-scheduler-time-indicator-font-size), + $scheduler-time-indicator-size: var(--dx-scheduler-time-indicator-size), $scheduler-appointment-reduced-icon-top: var(--dx-scheduler-appointment-reduced-icon-inset-block-start), $scheduler-appointment-active-marker-border-radius: var(--dx-scheduler-appointment-marker-border-radius-active), $scheduler-appointment-content-details-margin-top: var(--dx-scheduler-appointment-content-details-margin-block-start), diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_public.scss index f144f950b516..593c4b66a085 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_public.scss @@ -9,6 +9,8 @@ --dx-scheduler-agenda-appointment-content: #{$scheduler-agenda-appointment-content}; --dx-scheduler-agenda-appointment-item-border-radius: #{$scheduler-agenda-appointment-item-border-radius}; --dx-scheduler-agenda-appointment-item-padding: #{$scheduler-agenda-appointment-item-padding}; + --dx-scheduler-agenda-appointment-last-margin: #{$scheduler-agenda-appointment-last-margin}; + --dx-scheduler-agenda-appointment-margin: #{$scheduler-agenda-appointment-margin}; --dx-scheduler-agenda-appointment-recurrence-icon: #{$scheduler-agenda-appointment-recurrence-icon}; --dx-scheduler-agenda-appointment-resource-item-margin-inline-start: #{$scheduler-agenda-appointment-resource-item-margin-inline-start}; --dx-scheduler-agenda-appointment-resource-value-margin-inline-start: #{$scheduler-agenda-appointment-resource-value-margin-inline-start}; @@ -43,15 +45,16 @@ --dx-scheduler-appointment-base-content: #{$scheduler-appointment-base-content}; --dx-scheduler-appointment-bg-focused: #{$scheduler-appointment-bg-focused}; --dx-scheduler-appointment-border-radius: #{$scheduler-appointment-border-radius}; + --dx-scheduler-appointment-collector-height: #{$scheduler-appointment-collector-height}; --dx-scheduler-appointment-collector-margin-inline-end: #{$scheduler-appointment-collector-margin-inline-end}; --dx-scheduler-appointment-collector-margin-inline-start: #{$scheduler-appointment-collector-margin-inline-start}; --dx-scheduler-appointment-collector-width: #{$scheduler-appointment-collector-width}; + --dx-scheduler-appointment-content-padding: #{$scheduler-appointment-content-padding}; --dx-scheduler-appointment-content: #{$scheduler-appointment-content}; --dx-scheduler-appointment-content-active: #{$scheduler-appointment-content-active}; --dx-scheduler-appointment-content-details-font-size: #{$scheduler-appointment-content-details-font-size}; --dx-scheduler-appointment-content-details-margin-block-start: #{$scheduler-appointment-content-details-margin-block-start}; --dx-scheduler-appointment-content-focused: var(--dx-scheduler-appointment-content); - --dx-scheduler-appointment-content-padding: #{$scheduler-appointment-content-padding}; --dx-scheduler-appointment-content-padding-inline-end: #{$scheduler-appointment-content-padding-inline-end}; --dx-scheduler-appointment-content-rtl-padding: #{$scheduler-appointment-content-rtl-padding}; --dx-scheduler-appointment-date-opacity: #{$scheduler-appointment-date-opacity}; @@ -60,7 +63,9 @@ --dx-scheduler-appointment-dragging-shadow: #{$scheduler-appointment-dragging-shadow}; --dx-scheduler-appointment-icon-font-size: #{$scheduler-appointment-icon-font-size}; --dx-scheduler-appointment-marker-border-radius-active: #{$scheduler-appointment-marker-border-radius-active}; + --dx-scheduler-appointment-min-size: #{$scheduler-appointment-min-size}; --dx-scheduler-appointment-month-font-size: #{$scheduler-appointment-month-font-size}; + --dx-scheduler-appointment-month-text-font-size: #{$scheduler-appointment-month-text-font-size}; --dx-scheduler-appointment-opacity-disabled: #{$scheduler-appointment-opacity-disabled}; --dx-scheduler-appointment-overlay-bg: #{$scheduler-appointment-overlay-bg}; --dx-scheduler-appointment-popup-all-day-item-height: #{$scheduler-appointment-popup-all-day-item-height}; @@ -72,6 +77,7 @@ --dx-scheduler-appointment-popup-repeat-end-item-height: #{$scheduler-appointment-popup-repeat-end-item-height}; --dx-scheduler-appointment-popup-toolbar-height: #{$scheduler-appointment-popup-toolbar-height}; --dx-scheduler-appointment-recurrence-icon-inset-block-start: #{$scheduler-appointment-recurrence-icon-inset-block-start}; + --dx-scheduler-appointment-reduced-content-padding: #{$scheduler-appointment-reduced-content-padding}; --dx-scheduler-appointment-reduced-icon-inset-block-start: #{$scheduler-appointment-reduced-icon-inset-block-start}; --dx-scheduler-appointment-reduced-icon-rtl-inset-inline-start: #{$scheduler-appointment-reduced-icon-rtl-inset-inline-start}; --dx-scheduler-appointment-resizing-opacity: #{$scheduler-appointment-resizing-opacity}; @@ -94,6 +100,7 @@ --dx-scheduler-appointment-transparent-right-border: #{$scheduler-appointment-transparent-right-border}; --dx-scheduler-base-border: #{$scheduler-base-border}; --dx-scheduler-bg: #{$scheduler-bg}; + --dx-scheduler-border-width: #{$scheduler-border-width}; --dx-scheduler-border: #{$scheduler-border}; --dx-scheduler-border-radius: #{$scheduler-border-radius}; --dx-scheduler-cell-bg-active: #{$scheduler-cell-bg-active}; @@ -120,6 +127,7 @@ --dx-scheduler-form-icon: #{$scheduler-form-icon}; --dx-scheduler-group-header-agenda-font-size: #{$scheduler-group-header-agenda-font-size}; --dx-scheduler-group-header-border-block-end: #{$scheduler-group-header-border-block-end}; + --dx-scheduler-group-header-cell-height: #{$scheduler-group-header-cell-height}; --dx-scheduler-group-header-content-inset-block-start: #{$scheduler-group-header-content-inset-block-start}; --dx-scheduler-group-header-content-padding-block-start: #{$scheduler-group-header-content-padding-block-start}; --dx-scheduler-group-header-font-size: #{$scheduler-group-header-font-size}; @@ -147,6 +155,8 @@ --dx-scheduler-month-appointment-content-padding: #{$scheduler-month-appointment-content-padding}; --dx-scheduler-month-appointment-content-rtl-padding: #{$scheduler-month-appointment-content-rtl-padding}; --dx-scheduler-month-date-font-size: #{$scheduler-month-date-font-size}; + --dx-scheduler-month-date-text-font-size: #{$scheduler-month-date-text-font-size}; + --dx-scheduler-month-date-text-padding: #{$scheduler-month-date-text-padding}; --dx-scheduler-month-recurrence-appointment-content-padding: #{$scheduler-month-recurrence-appointment-content-padding}; --dx-scheduler-month-recurrence-appointment-content-rtl-padding: #{$scheduler-month-recurrence-appointment-content-rtl-padding}; --dx-scheduler-navigator-button-font-size: #{$scheduler-navigator-button-font-size}; @@ -154,11 +164,14 @@ --dx-scheduler-other-month-cell-opacity: #{$scheduler-other-month-cell-opacity}; --dx-scheduler-panel-content: #{$scheduler-panel-content}; --dx-scheduler-recurrence-appointment-content-padding: #{$scheduler-recurrence-appointment-content-padding}; + --dx-scheduler-recurrence-icon-inset-inline: #{$scheduler-recurrence-icon-inset-inline}; --dx-scheduler-recurring-appointment-content-padding: #{$scheduler-recurring-appointment-content-padding}; --dx-scheduler-recurring-appointment-content-rtl-padding: #{$scheduler-recurring-appointment-content-rtl-padding}; + --dx-scheduler-reduced-icon-inset-inline: #{$scheduler-reduced-icon-inset-inline}; --dx-scheduler-rtl-border-inline-start: #{$scheduler-rtl-border-inline-start}; --dx-scheduler-rtl-padding: #{$scheduler-rtl-padding}; --dx-scheduler-scrollable-content-min-height: #{$scheduler-scrollable-content-min-height}; + --dx-scheduler-small-font-size: #{$scheduler-small-font-size}; --dx-scheduler-small-margin-block-end: #{$scheduler-small-margin-block-end}; --dx-scheduler-small-margin-block-start: #{$scheduler-small-margin-block-start}; --dx-scheduler-small-margin-inline-start: #{$scheduler-small-margin-inline-start}; @@ -166,6 +179,8 @@ --dx-scheduler-small-padding-inline-start: #{$scheduler-small-padding-inline-start}; --dx-scheduler-time-indicator-bg: #{$scheduler-time-indicator-bg}; --dx-scheduler-time-indicator-content: #{$scheduler-time-indicator-content}; + --dx-scheduler-time-indicator-font-size: #{$scheduler-time-indicator-font-size}; + --dx-scheduler-time-indicator-size: #{$scheduler-time-indicator-size}; --dx-scheduler-time-panel-cell-margin-block-start: #{$scheduler-time-panel-cell-margin-block-start}; --dx-scheduler-time-panel-font-size: #{$scheduler-time-panel-font-size}; --dx-scheduler-timeline-cell-height: #{$scheduler-timeline-cell-height}; @@ -203,13 +218,13 @@ --dx-scheduler-views-vertical-group-min-height: #{$scheduler-views-vertical-group-min-height}; --dx-scheduler-virtual-row-height: #{$scheduler-virtual-row-height}; --dx-scheduler-widget-margin-block-end: #{$scheduler-widget-margin-block-end}; + --dx-scheduler-workspace-info-font-size: #{$scheduler-workspace-info-font-size}; --dx-scheduler-workspace-accent-content: #{$scheduler-workspace-accent-content}; --dx-scheduler-workspace-bg: #{$scheduler-workspace-bg}; --dx-scheduler-workspace-cell-content-active: var(--dx-scheduler-accent-border); --dx-scheduler-workspace-cell-content-focused: #{$scheduler-workspace-cell-content-focused}; --dx-scheduler-workspace-cell-content-hovered: var(--dx-scheduler-workspace-month-content); --dx-scheduler-workspace-date-table-cell-height: #{$scheduler-workspace-date-table-cell-height}; - --dx-scheduler-workspace-info-font-size: #{$scheduler-workspace-info-font-size}; --dx-scheduler-workspace-month-cell-left-offset: #{$scheduler-workspace-month-cell-left-offset}; --dx-scheduler-workspace-month-content: #{$scheduler-workspace-month-content}; --dx-scheduler-workspace-month-header-height: #{$scheduler-workspace-month-header-height}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_sizes.scss index 95a8afa4b61d..bbc7fa3f888d 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_sizes.scss @@ -330,3 +330,20 @@ $scheduler-virtual-row-height: 50px !default; // dx-offscale: 50px * variables (NAMING.md, O7). */ $scheduler-all-day-table-cell-height: calc(#{$scheduler-workspace-date-table-cell-height} * 1.5); + +// Base-layer sizing injected with design tokens (wave B15) +$scheduler-appointment-collector-height: ds.$spacing-220 !default; +$scheduler-appointment-min-size: ds.$spacing-40 !default; +$scheduler-appointment-reduced-content-padding: ds.$spacing-400 !default; +$scheduler-appointment-month-text-font-size: ds.$font-size-120 !default; +$scheduler-border-width: ds.$border-width-10 !default; +$scheduler-reduced-icon-inset-inline: ds.$spacing-50 !default; +$scheduler-recurrence-icon-inset-inline: ds.$spacing-200 !default; +$scheduler-agenda-appointment-margin: ds.$spacing-50 !default; +$scheduler-agenda-appointment-last-margin: ds.$spacing-200 !default; +$scheduler-time-indicator-font-size: ds.$font-size-300 !default; +$scheduler-time-indicator-size: ds.$spacing-10 !default; +$scheduler-small-font-size: ds.$font-size-140 !default; +$scheduler-group-header-cell-height: ds.$spacing-300 !default; +$scheduler-month-date-text-font-size: ds.$font-size-160 !default; +$scheduler-month-date-text-padding: ds.$spacing-60 !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 443b8e156347..0ff128d86789 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,13 +1,13 @@ { - "openKnobs": 0, - "unclassified": 257, + "openKnobs": 10, + "unclassified": 216, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, - "scheduler": 54, "pivotGrid": 20, "cardView": 15, "htmlEditor": 13, + "scheduler": 13, "dataGrid": 5, "treeList": 4, "textEditor": 3, diff --git a/packages/devextreme-scss/tools/review/nested-scopes.json b/packages/devextreme-scss/tools/review/nested-scopes.json index 459669ebf11e..8d73daefdd29 100644 --- a/packages/devextreme-scss/tools/review/nested-scopes.json +++ b/packages/devextreme-scss/tools/review/nested-scopes.json @@ -408,6 +408,8 @@ "dx-scheduler-appointment-content-date", "dx-scheduler-appointment-content-details", "dx-scheduler-appointment-recurrence", + "dx-scheduler-appointment-recurrence-icon", + "dx-scheduler-appointment-reduced", "dx-scheduler-appointment-title", "dx-scheduler-container", "dx-scheduler-date-table-cell", diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index a1337371516e..9d2cd13a4d04 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -11,30 +11,43 @@ and carries a marker saying why. | | occurrences | |---|---| -| a raw grep of the layer | 766 | -| …of those, inside comments (commented-out code, prose) | 8 | -| **in code** | **758** | -| — the theme can already set from outside | 428 | -| — nailed into the shared layer | 330 | +| a raw grep of the layer | 771 | +| …of those, inside comments (commented-out code, prose) | 9 | +| **in code** | **762** | +| — the theme can already set from outside | 452 | +| — nailed into the shared layer | 310 | ## What the theme can already set -428 occurrences in 372 `!default` variables. fluent-next already passes 404; 0 are open knobs nobody turns. +452 occurrences in 389 `!default` variables. fluent-next already passes 418; 10 are open knobs nobody turns. + +Open knobs — theme-side work, the shared layer stays untouched: + +- `$scheduler-workspace-info-font-size` — scss/widgets/base/scheduler/_index.scss:109 +- `$scheduler-small-font-size` — scss/widgets/base/scheduler/_index.scss:110 +- `$scheduler-group-header-table-cell-height` — scss/widgets/base/scheduler/_index.scss:111 +- `$scheduler-month-date-text-size` — scss/widgets/base/scheduler/_index.scss:112 +- `$scheduler-month-date-text-padding` — scss/widgets/base/scheduler/_index.scss:113 +- `$scheduler-workspace-info-font-size` — scss/widgets/base/scheduler/views/_index.scss:45 +- `$scheduler-small-font-size` — scss/widgets/base/scheduler/views/_index.scss:46 +- `$scheduler-group-header-table-cell-height` — scss/widgets/base/scheduler/views/_index.scss:55 +- `$scheduler-month-date-text-size` — scss/widgets/base/scheduler/views/_index.scss:59 +- `$scheduler-month-date-text-padding` — scss/widgets/base/scheduler/views/_index.scss:61 ## What is nailed into the layer -| widget | inline | local-var | geometry | mixin-arg | calc | total | +| widget | inline | geometry | local-var | mixin-arg | calc | total | |---|---|---|---|---|---|---| -| gridBase | 50 | 18 | 7 | | | **75** | -| colorView | 35 | 8 | 24 | | | **67** | -| scheduler | 9 | 41 | 3 | | 1 | **54** | -| pivotGrid | 6 | 8 | 6 | | | **20** | -| cardView | 9 | 1 | 5 | | | **15** | -| htmlEditor | 8 | 1 | 4 | | | **13** | -| dataGrid | | | 3 | 2 | | **5** | -| treeList | | | 1 | 3 | | **4** | +| gridBase | 50 | 7 | 18 | | | **75** | +| colorView | 35 | 24 | 8 | | | **67** | +| pivotGrid | 6 | 6 | 8 | | | **20** | +| cardView | 9 | 5 | 1 | | | **15** | +| htmlEditor | 8 | 4 | 1 | | | **13** | +| scheduler | 9 | 3 | | | 1 | **13** | +| dataGrid | | 3 | | 2 | | **5** | +| treeList | | 1 | | 3 | | **4** | | textEditor | 3 | | | | | **3** | -| list | | 1 | | | | **1** | +| list | | | 1 | | | **1** | ## Places, by widget @@ -236,113 +249,6 @@ and carries a marker saying why. - `scss/widgets/base/colorView/_mixins.scss:16` · geometry `box-shadow: inset 0 -5px 0 3px $handle-color, inset 0 5px 0 3px $handle-color, inset 0 -6px 1px 4px $handle-border-color, inset 0 6px 1px 4px $handle-border-color;` -### scheduler — 54 - -- `scss/widgets/base/scheduler/_common.scss:4` · local-var - `$scheduler-appointment-collector-margin: 3px;` -- `scss/widgets/base/scheduler/_common.scss:5` · local-var - `$scheduler-appointment-collector-height: 22px;` -- `scss/widgets/base/scheduler/_index.scss:82` · local-var - `$scheduler-appointment-min-size: 4px;` -- `scss/widgets/base/scheduler/_index.scss:83` · local-var - `$scheduler-appointment-content-padding: 5px 7px;` -- `scss/widgets/base/scheduler/_index.scss:84` · local-var - `$scheduler-appointment-reduced-content-padding: 40px;` -- `scss/widgets/base/scheduler/_index.scss:86` · local-var - `$scheduler-hovered-appointment-top-shadow-size: 5px;` -- `scss/widgets/base/scheduler/_index.scss:87` · local-var - `$scheduler-focused-cell-shadow: inset 0 0 0 1px $scheduler-appointment-base-color;` -- `scss/widgets/base/scheduler/_index.scss:89` · local-var - `$scheduler-vertical-appointment-resizable-hovering-shadow: inset 0 $scheduler-hovered-appointment-top-shadow-size 0 0 $scheduler-appointment-start-color, inset 0 -2px 0 0 $scheduler-appointment-start-color;` -- `scss/widgets/base/scheduler/_index.scss:91` · local-var - `$scheduler-vertical-appointment-shadow: inset 0 2px 0 0 $scheduler-appointment-start-color;` -- `scss/widgets/base/scheduler/_index.scss:92` · local-var - `$scheduler-vertical-appointment-resizing-shadow: inset 0 -2px 0 0 $scheduler-appointment-start-color, $scheduler-vertical-appointment-shadow;` -- `scss/widgets/base/scheduler/_index.scss:96` · local-var - `$scheduler-horizontal-appointment-resizable-hovering-shadow: inset $scheduler-hovered-appointment-top-shadow-size 0 0 0 $scheduler-appointment-start-color, inset -2px 0 0 0 $scheduler-appointment-start-color;` -- `scss/widgets/base/scheduler/_index.scss:97` · local-var - `$scheduler-horizontal-appointment-resizable-hovering-shadow-rtl: inset (-$scheduler-hovered-appointment-top-shadow-size) 0 0 0 $scheduler-appointment-start-color, inset 2px 0 0 0 $scheduler-appointment-start-color;` -- `scss/widgets/base/scheduler/_index.scss:100` · local-var - `$scheduler-horizontal-appointment-shadow: inset 2px 0 0 0 $scheduler-appointment-start-color;` -- `scss/widgets/base/scheduler/_index.scss:101` · local-var - `$scheduler-horizontal-appointment-shadow-rtl: inset -2px 0 0 0 $scheduler-appointment-start-color;` -- `scss/widgets/base/scheduler/_index.scss:102` · local-var - `$scheduler-horizontal-appointment-resizing-shadow: inset -2px 0 0 0 $scheduler-appointment-start-color, $scheduler-horizontal-appointment-shadow;` -- `scss/widgets/base/scheduler/_index.scss:104` · local-var - `$scheduler-grouped-appointment-month-text-size: 12px;` -- `scss/widgets/base/scheduler/_index.scss:106` · local-var - `$scheduler-base-border: 1px solid;` -- `scss/widgets/base/scheduler/_index.scss:107` · local-var - `$scheduler-transparent-top-border: 1px solid transparent;` -- `scss/widgets/base/scheduler/_index.scss:108` · local-var - `$scheduler-accent-border: 1px solid;` -- `scss/widgets/base/scheduler/_index.scss:110` · local-var - `$scheduler-reduced-icon-offset: 5px;` -- `scss/widgets/base/scheduler/_index.scss:111` · local-var - `$scheduler-recurrence-icon-offset: 20px;` -- `scss/widgets/base/scheduler/_index.scss:113` · local-var - `$scheduler-agenda-appointment-margin: 5px;` -- `scss/widgets/base/scheduler/_index.scss:114` · local-var - `$scheduler-agenda-last-in-date-appointment-margin: 20px;` -- `scss/widgets/base/scheduler/_index.scss:120` · local-var - `$scheduler-time-indicator-font-size: 30px;` -- `scss/widgets/base/scheduler/_index.scss:121` · local-var - `$scheduler-time-indicator-size: 1px;` -- `scss/widgets/base/scheduler/_index.scss:122` · local-var - `$scheduler-time-indicator-top: 14px;` -- `scss/widgets/base/scheduler/_index.scss:123` · local-var - `$scheduler-time-indicator-left: 12px;` -- `scss/widgets/base/scheduler/_index.scss:126` · local-var - `$scheduler-time-indicator-shadow: 0 1px 0 0 $scheduler-time-indicator-shadow-color;` -- `scss/widgets/base/scheduler/_index.scss:127` · local-var - `$scheduler-time-indicator-text-shadow: $scheduler-time-indicator-shadow-color 1px 0 0;` -- `scss/widgets/base/scheduler/_index.scss:452` · inline - `bottom: -1px;` -- `scss/widgets/base/scheduler/appointment/regular/_index.scss:147` · inline - `left: -1px;` -- `scss/widgets/base/scheduler/layout/_header.scss:9` · inline - `margin-bottom: -1px;` -- `scss/widgets/base/scheduler/views/_index.scss:44` · local-var - `$scheduler-timepanel-cell-offset: 20px;` -- `scss/widgets/base/scheduler/views/_index.scss:45` · local-var - `$scheduler-workspace-info-font-size: 20px;` -- `scss/widgets/base/scheduler/views/_index.scss:46` · local-var - `$scheduler-small-font-size: 14px;` -- `scss/widgets/base/scheduler/views/_index.scss:48` · local-var - `$scheduler-current-time-cell-border-size: 2px;` -- `scss/widgets/base/scheduler/views/_index.scss:50` · local-var - `$scheduler-workspace-date-table-cell-height: 50px;` -- `scss/widgets/base/scheduler/views/_index.scss:54` · local-var - `$scheduler-header-panel-table-cell-height: if(meta.type-of($scheduler-workspace-date-table-cell-height) == number, $scheduler-workspace-date-table-cell-height - 10px, calc(#{$scheduler-workspace-date-table-cell-height} - 10px));` -- `scss/widgets/base/scheduler/views/_index.scss:55` · local-var - `$scheduler-group-header-table-cell-height: 30px;` -- `scss/widgets/base/scheduler/views/_index.scss:57` · local-var - `$scheduler-group-header-table-cell-width: 80px;` -- `scss/widgets/base/scheduler/views/_index.scss:59` · local-var - `$scheduler-month-date-text-size: 16px;` -- `scss/widgets/base/scheduler/views/_index.scss:61` · local-var - `$scheduler-month-date-text-padding: 6px;` -- `scss/widgets/base/scheduler/views/_index.scss:121` · calc - `top: if(meta.type-of($scheduler-header-panel-table-cell-height) == number and meta.type-of($scheduler-current-time-cell-border-size) == number, $scheduler-header-panel-table-cell-height - $scheduler-current-time-cell-border-size - 1, calc(#{$scheduler-header-panel-table-cell-height} - #{$scheduler-current-time-cell-border-size} - 1px));` -- `scss/widgets/base/scheduler/views/_index.scss:405` · inline - `padding: 0 5px;` -- `scss/widgets/base/scheduler/views/_index.scss:697` · inline - `margin-top: -13px;` -- `scss/widgets/base/scheduler/views/_index.scss:707` · inline - `bottom: -1px;` -- `scss/widgets/base/scheduler/views/_index.scss:844` · inline - `height: 50px !important; // stylelint-disable-line declaration-no-important` -- `scss/widgets/base/scheduler/views/_index.scss:855` · inline - `height: 50px;` -- `scss/widgets/base/scheduler/views/_index.scss:870` · geometry - `box-shadow: inset 0 -1px 0 $scheduler-base-border-color;` -- `scss/widgets/base/scheduler/views/day/_index.scss:45` · inline - `margin-top: 1px;` -- `scss/widgets/base/scheduler/views/month/_index.scss:73` · geometry - `box-shadow: 0 -2px 0 $scheduler-base-border-color;` -- `scss/widgets/base/scheduler/views/timelines/_index.scss:188` · geometry - `border-bottom: 1px solid;` - ### pivotGrid — 20 - `scss/widgets/base/pivotGrid/_index.scss:56` · local-var @@ -440,6 +346,35 @@ and carries a marker saying why. - `scss/widgets/base/_htmlEditor.scss:523` · geometry `border: 1px solid white;` +### scheduler — 13 + +- `scss/widgets/base/scheduler/_index.scss:465` · inline + `bottom: -1px;` +- `scss/widgets/base/scheduler/appointment/regular/_index.scss:147` · inline + `left: -1px;` +- `scss/widgets/base/scheduler/layout/_header.scss:9` · inline + `margin-bottom: -1px;` +- `scss/widgets/base/scheduler/views/_index.scss:121` · calc + `top: if(meta.type-of($scheduler-header-panel-table-cell-height) == number and meta.type-of($scheduler-current-time-cell-border-size) == number, $scheduler-header-panel-table-cell-height - $scheduler-current-time-cell-border-size - 1, calc(#{$scheduler-header-panel-table-cell-height} - #{$scheduler-current-time-cell-border-size} - 1px));` +- `scss/widgets/base/scheduler/views/_index.scss:405` · inline + `padding: 0 5px;` +- `scss/widgets/base/scheduler/views/_index.scss:697` · inline + `margin-top: -13px;` +- `scss/widgets/base/scheduler/views/_index.scss:707` · inline + `bottom: -1px;` +- `scss/widgets/base/scheduler/views/_index.scss:844` · inline + `height: 50px !important; // stylelint-disable-line declaration-no-important` +- `scss/widgets/base/scheduler/views/_index.scss:855` · inline + `height: 50px;` +- `scss/widgets/base/scheduler/views/_index.scss:870` · geometry + `box-shadow: inset 0 -1px 0 $scheduler-base-border-color;` +- `scss/widgets/base/scheduler/views/day/_index.scss:45` · inline + `margin-top: 1px;` +- `scss/widgets/base/scheduler/views/month/_index.scss:73` · geometry + `box-shadow: 0 -2px 0 $scheduler-base-border-color;` +- `scss/widgets/base/scheduler/views/timelines/_index.scss:188` · geometry + `border-bottom: 1px solid;` + ### dataGrid — 5 - `scss/widgets/base/dataGrid/_index.scss:146` · geometry diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 0089fdc36766..20415b450ac8 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,11 +6,11 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 330, + "occurrences": 310, "byCategory": { "inline": 147, - "local-var": 83, "geometry": 75, + "local-var": 63, "calc": 9, "structural": 8, "mixin-arg": 6, @@ -19,7 +19,7 @@ "byWidget": { "gridBase": 75, "colorView": 67, - "scheduler": 55, + "scheduler": 35, "textEditor": 26, "pivotGrid": 21, "htmlEditor": 18, @@ -48,14 +48,14 @@ "toolbar": 1, "treeView": 1 }, - "unmarked": 257, + "unmarked": 216, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, - "scheduler": 54, "pivotGrid": 20, "cardView": 15, "htmlEditor": 13, + "scheduler": 13, "dataGrid": 5, "treeList": 4, "textEditor": 3, @@ -2351,20 +2351,8 @@ "3px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-appointment-collector-margin: 3px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_common.scss", - "line": 5, - "widget": "scheduler", - "literals": [ - "22px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-appointment-collector-height: 22px;", + "marker": "dx-fixed-size", + "text": "$scheduler-appointment-collector-margin: 3px; // dx-fixed-size: the collector margin, multiplied elsewhere so a var() cannot pass", "category": "local-var" }, { @@ -2381,159 +2369,110 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 82, - "widget": "scheduler", - "literals": [ - "4px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-appointment-min-size: 4px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_index.scss", - "line": 83, - "widget": "scheduler", - "literals": [ - "5px", - "7px" - ], - "occurrences": 2, - "marker": null, - "text": "$scheduler-appointment-content-padding: 5px 7px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_index.scss", - "line": 84, - "widget": "scheduler", - "literals": [ - "40px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-appointment-reduced-content-padding: 40px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_index.scss", - "line": 86, + "line": 88, "widget": "scheduler", "literals": [ "5px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-hovered-appointment-top-shadow-size: 5px;", + "marker": "dx-fixed-size", + "text": "$scheduler-hovered-appointment-top-shadow-size: 5px; // dx-fixed-size: negated and composed into shadows, so a var() cannot pass", "category": "local-var" }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 87, + "line": 89, "widget": "scheduler", "literals": [ "1px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-focused-cell-shadow: inset 0 0 0 1px $scheduler-appointment-base-color;", + "marker": "dx-shadow-geometry", + "text": "$scheduler-focused-cell-shadow: inset 0 0 0 1px $scheduler-appointment-base-color; // dx-shadow-geometry", "category": "local-var" }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 89, + "line": 91, "widget": "scheduler", "literals": [ "-2px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-vertical-appointment-resizable-hovering-shadow: inset 0 $scheduler-hovered-appointment-top-shadow-size 0 0 $scheduler-appointment-start-color, inset 0 -2px 0 0 $scheduler-appointment-start-color;", + "marker": "dx-shadow-geometry", + "text": "$scheduler-vertical-appointment-resizable-hovering-shadow: inset 0 $scheduler-hovered-appointment-top-shadow-size 0 0 $scheduler-appointment-start-color, inset 0 -2px 0 0 $scheduler-appointment-start-color; // dx-shadow-geometry", "category": "local-var" }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 91, + "line": 93, "widget": "scheduler", "literals": [ "2px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-vertical-appointment-shadow: inset 0 2px 0 0 $scheduler-appointment-start-color;", + "marker": "dx-shadow-geometry", + "text": "$scheduler-vertical-appointment-shadow: inset 0 2px 0 0 $scheduler-appointment-start-color; // dx-shadow-geometry", "category": "local-var" }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 92, + "line": 94, "widget": "scheduler", "literals": [ "-2px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-vertical-appointment-resizing-shadow: inset 0 -2px 0 0 $scheduler-appointment-start-color, $scheduler-vertical-appointment-shadow;", + "marker": "dx-shadow-geometry", + "text": "$scheduler-vertical-appointment-resizing-shadow: inset 0 -2px 0 0 $scheduler-appointment-start-color, $scheduler-vertical-appointment-shadow; // dx-shadow-geometry", "category": "local-var" }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 96, + "line": 98, "widget": "scheduler", "literals": [ "-2px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-horizontal-appointment-resizable-hovering-shadow: inset $scheduler-hovered-appointment-top-shadow-size 0 0 0 $scheduler-appointment-start-color, inset -2px 0 0 0 $scheduler-appointment-start-color;", + "marker": "dx-shadow-geometry", + "text": "$scheduler-horizontal-appointment-resizable-hovering-shadow: inset $scheduler-hovered-appointment-top-shadow-size 0 0 0 $scheduler-appointment-start-color, inset -2px 0 0 0 $scheduler-appointment-start-color; // dx-shadow-geometry", "category": "local-var" }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 97, + "line": 99, "widget": "scheduler", "literals": [ "2px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-horizontal-appointment-resizable-hovering-shadow-rtl: inset (-$scheduler-hovered-appointment-top-shadow-size) 0 0 0 $scheduler-appointment-start-color, inset 2px 0 0 0 $scheduler-appointment-start-color;", + "marker": "dx-shadow-geometry", + "text": "$scheduler-horizontal-appointment-resizable-hovering-shadow-rtl: inset (-$scheduler-hovered-appointment-top-shadow-size) 0 0 0 $scheduler-appointment-start-color, inset 2px 0 0 0 $scheduler-appointment-start-color; // dx-shadow-geometry", "category": "local-var" }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 100, + "line": 102, "widget": "scheduler", "literals": [ "2px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-horizontal-appointment-shadow: inset 2px 0 0 0 $scheduler-appointment-start-color;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_index.scss", - "line": 101, - "widget": "scheduler", - "literals": [ - "-2px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-horizontal-appointment-shadow-rtl: inset -2px 0 0 0 $scheduler-appointment-start-color;", + "marker": "dx-shadow-geometry", + "text": "$scheduler-horizontal-appointment-shadow: inset 2px 0 0 0 $scheduler-appointment-start-color; // dx-shadow-geometry", "category": "local-var" }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 102, + "line": 103, "widget": "scheduler", "literals": [ "-2px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-horizontal-appointment-resizing-shadow: inset -2px 0 0 0 $scheduler-appointment-start-color, $scheduler-horizontal-appointment-shadow;", + "marker": "dx-shadow-geometry", + "text": "$scheduler-horizontal-appointment-shadow-rtl: inset -2px 0 0 0 $scheduler-appointment-start-color; // dx-shadow-geometry", "category": "local-var" }, { @@ -2541,172 +2480,64 @@ "line": 104, "widget": "scheduler", "literals": [ - "12px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-grouped-appointment-month-text-size: 12px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_index.scss", - "line": 106, - "widget": "scheduler", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-base-border: 1px solid;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_index.scss", - "line": 107, - "widget": "scheduler", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-transparent-top-border: 1px solid transparent;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_index.scss", - "line": 108, - "widget": "scheduler", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-accent-border: 1px solid;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_index.scss", - "line": 110, - "widget": "scheduler", - "literals": [ - "5px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-reduced-icon-offset: 5px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_index.scss", - "line": 111, - "widget": "scheduler", - "literals": [ - "20px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-recurrence-icon-offset: 20px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_index.scss", - "line": 113, - "widget": "scheduler", - "literals": [ - "5px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-agenda-appointment-margin: 5px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_index.scss", - "line": 114, - "widget": "scheduler", - "literals": [ - "20px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-agenda-last-in-date-appointment-margin: 20px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_index.scss", - "line": 120, - "widget": "scheduler", - "literals": [ - "30px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-time-indicator-font-size: 30px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/_index.scss", - "line": 121, - "widget": "scheduler", - "literals": [ - "1px" + "-2px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-time-indicator-size: 1px;", + "marker": "dx-shadow-geometry", + "text": "$scheduler-horizontal-appointment-resizing-shadow: inset -2px 0 0 0 $scheduler-appointment-start-color, $scheduler-horizontal-appointment-shadow; // dx-shadow-geometry", "category": "local-var" }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 122, + "line": 130, "widget": "scheduler", "literals": [ "14px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-time-indicator-top: 14px;", + "marker": "dx-fixed-size", + "text": "$scheduler-time-indicator-top: 14px; // dx-fixed-size: negated at its use site", "category": "local-var" }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 123, + "line": 131, "widget": "scheduler", "literals": [ "12px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-time-indicator-left: 12px;", + "marker": "dx-fixed-size", + "text": "$scheduler-time-indicator-left: 12px; // dx-fixed-size: negated at its use site", "category": "local-var" }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 126, + "line": 134, "widget": "scheduler", "literals": [ "1px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-time-indicator-shadow: 0 1px 0 0 $scheduler-time-indicator-shadow-color;", + "marker": "dx-shadow-geometry", + "text": "$scheduler-time-indicator-shadow: 0 1px 0 0 $scheduler-time-indicator-shadow-color; // dx-shadow-geometry", "category": "local-var" }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 127, + "line": 135, "widget": "scheduler", "literals": [ "1px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-time-indicator-text-shadow: $scheduler-time-indicator-shadow-color 1px 0 0;", + "marker": "dx-shadow-geometry", + "text": "$scheduler-time-indicator-text-shadow: $scheduler-time-indicator-shadow-color 1px 0 0; // dx-shadow-geometry", "category": "local-var" }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 452, + "line": 465, "widget": "scheduler", "literals": [ "-1px" @@ -2748,32 +2579,8 @@ "20px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-timepanel-cell-offset: 20px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/views/_index.scss", - "line": 45, - "widget": "scheduler", - "literals": [ - "20px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-workspace-info-font-size: 20px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/views/_index.scss", - "line": 46, - "widget": "scheduler", - "literals": [ - "14px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-small-font-size: 14px;", + "marker": "dx-fixed-size", + "text": "$scheduler-timepanel-cell-offset: 20px; // dx-fixed-size: multiplied elsewhere, so a var() cannot pass", "category": "local-var" }, { @@ -2784,8 +2591,8 @@ "2px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-current-time-cell-border-size: 2px;", + "marker": "dx-fixed-size", + "text": "$scheduler-current-time-cell-border-size: 2px; // dx-fixed-size: multiplied elsewhere, so a var() cannot pass", "category": "local-var" }, { @@ -2796,8 +2603,8 @@ "50px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-workspace-date-table-cell-height: 50px;", + "marker": "dx-fixed-size", + "text": "$scheduler-workspace-date-table-cell-height: 50px; // dx-fixed-size: four derived heights multiply it, so a var() cannot pass", "category": "local-var" }, { @@ -2808,20 +2615,8 @@ "10px" ], "occurrences": 2, - "marker": null, - "text": "$scheduler-header-panel-table-cell-height: if(meta.type-of($scheduler-workspace-date-table-cell-height) == number, $scheduler-workspace-date-table-cell-height - 10px, calc(#{$scheduler-workspace-date-table-cell-height} - 10px));", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/views/_index.scss", - "line": 55, - "widget": "scheduler", - "literals": [ - "30px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-group-header-table-cell-height: 30px;", + "marker": "dx-px-nudge", + "text": "$scheduler-header-panel-table-cell-height: if(meta.type-of($scheduler-workspace-date-table-cell-height) == number, $scheduler-workspace-date-table-cell-height - 10px, calc(#{$scheduler-workspace-date-table-cell-height} - 10px)); // dx-px-nudge: -10px under the workspace cell height", "category": "local-var" }, { @@ -2832,32 +2627,8 @@ "80px" ], "occurrences": 1, - "marker": null, - "text": "$scheduler-group-header-table-cell-width: 80px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/views/_index.scss", - "line": 59, - "widget": "scheduler", - "literals": [ - "16px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-month-date-text-size: 16px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/scheduler/views/_index.scss", - "line": 61, - "widget": "scheduler", - "literals": [ - "6px" - ], - "occurrences": 1, - "marker": null, - "text": "$scheduler-month-date-text-padding: 6px;", + "marker": "dx-fixed-size", + "text": "$scheduler-group-header-table-cell-width: 80px; // dx-fixed-size: multiplied elsewhere, so a var() cannot pass", "category": "local-var" }, { diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 461c9e788233..415f363bb1f3 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,10 +7,10 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 428, - "variables": 372, - "injected": 404, - "open": 0, + "occurrences": 452, + "variables": 389, + "injected": 418, + "open": 10, "parameters": 24 }, "places": [ @@ -4514,9 +4514,41 @@ "setBy": "scss/widgets/fluent-next/radioGroup/_index.scss", "setTo": "var(--dx-radio-group-collection-horizontal-column-gap)" }, + { + "file": "scss/widgets/base/scheduler/_common.scss", + "line": 5, + "widget": "scheduler", + "literals": [ + "22px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-collector-height: 22px !default;", + "variable": "scheduler-appointment-collector-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-collector-height)" + }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 47, + "line": 1, + "widget": "scheduler", + "literals": [ + "22px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-collector-height: 22px !default;", + "variable": "scheduler-appointment-collector-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-collector-height)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 48, "widget": "scheduler", "literals": [ "3px" @@ -4532,7 +4564,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 48, + "line": 49, "widget": "scheduler", "literals": [ "28px" @@ -4548,7 +4580,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 54, + "line": 56, "widget": "scheduler", "literals": [ "15px" @@ -4564,7 +4596,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 56, + "line": 58, "widget": "scheduler", "literals": [ "360px" @@ -4580,7 +4612,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 57, + "line": 59, "widget": "scheduler", "literals": [ "5px" @@ -4596,7 +4628,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 58, + "line": 60, "widget": "scheduler", "literals": [ "7px" @@ -4612,7 +4644,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 59, + "line": 61, "widget": "scheduler", "literals": [ "5px" @@ -4628,7 +4660,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 60, + "line": 62, "widget": "scheduler", "literals": [ "5px", @@ -4645,7 +4677,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 61, + "line": 63, "widget": "scheduler", "literals": [ "10px" @@ -4661,7 +4693,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 62, + "line": 64, "widget": "scheduler", "literals": [ "16px" @@ -4677,7 +4709,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 63, + "line": 65, "widget": "scheduler", "literals": [ "12px" @@ -4693,7 +4725,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 64, + "line": 66, "widget": "scheduler", "literals": [ "11px" @@ -4709,7 +4741,56 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 94, + "line": 84, + "widget": "scheduler", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-min-size: 4px !default;", + "variable": "scheduler-appointment-min-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-min-size)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 85, + "widget": "scheduler", + "literals": [ + "5px", + "7px" + ], + "occurrences": 2, + "marker": null, + "text": "$scheduler-appointment-content-padding: 5px 7px !default;", + "variable": "scheduler-appointment-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-content-padding)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 86, + "widget": "scheduler", + "literals": [ + "40px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-appointment-reduced-content-padding: 40px !default;", + "variable": "scheduler-appointment-reduced-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-reduced-content-padding)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 96, "widget": "scheduler", "literals": [ "7px", @@ -4724,10 +4805,208 @@ "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", "setTo": "var(--dx-scheduler-appointment-dragging-shadow)" }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 106, + "widget": "scheduler", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-grouped-appointment-month-text-size: 12px !default;", + "variable": "scheduler-grouped-appointment-month-text-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-appointment-month-text-font-size)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 108, + "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-border-width: 1px !default;", + "variable": "scheduler-border-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-border-width)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 109, + "widget": "scheduler", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-workspace-info-font-size: 20px !default;", + "variable": "scheduler-workspace-info-font-size", + "kind": "module-variable", + "status": "open" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 110, + "widget": "scheduler", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-small-font-size: 14px !default;", + "variable": "scheduler-small-font-size", + "kind": "module-variable", + "status": "open" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 111, + "widget": "scheduler", + "literals": [ + "30px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-group-header-table-cell-height: 30px !default;", + "variable": "scheduler-group-header-table-cell-height", + "kind": "module-variable", + "status": "open" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 112, + "widget": "scheduler", + "literals": [ + "16px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-month-date-text-size: 16px !default;", + "variable": "scheduler-month-date-text-size", + "kind": "module-variable", + "status": "open" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 113, + "widget": "scheduler", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-month-date-text-padding: 6px !default;", + "variable": "scheduler-month-date-text-padding", + "kind": "module-variable", + "status": "open" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 118, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-reduced-icon-offset: 5px !default;", + "variable": "scheduler-reduced-icon-offset", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-reduced-icon-inset-inline)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 119, + "widget": "scheduler", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-recurrence-icon-offset: 20px !default;", + "variable": "scheduler-recurrence-icon-offset", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-recurrence-icon-inset-inline)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 121, + "widget": "scheduler", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-agenda-appointment-margin: 5px !default;", + "variable": "scheduler-agenda-appointment-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-margin)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 122, + "widget": "scheduler", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-agenda-last-in-date-appointment-margin: 20px !default;", + "variable": "scheduler-agenda-last-in-date-appointment-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-agenda-appointment-last-margin)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 128, + "widget": "scheduler", + "literals": [ + "30px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-time-indicator-font-size: 30px !default;", + "variable": "scheduler-time-indicator-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-time-indicator-font-size)" + }, { "file": "scss/widgets/base/scheduler/_index.scss", "line": 129, "widget": "scheduler", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-time-indicator-size: 1px !default;", + "variable": "scheduler-time-indicator-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-time-indicator-size)" + }, + { + "file": "scss/widgets/base/scheduler/_index.scss", + "line": 137, + "widget": "scheduler", "literals": [ "18px" ], @@ -4742,7 +5021,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 135, + "line": 143, "widget": "scheduler", "literals": [ "12px" @@ -4758,7 +5037,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 138, + "line": 146, "widget": "scheduler", "literals": [ "3px" @@ -4774,7 +5053,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 139, + "line": 147, "widget": "scheduler", "literals": [ "4px" @@ -4790,7 +5069,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 140, + "line": 148, "widget": "scheduler", "literals": [ "2px" @@ -4806,7 +5085,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 141, + "line": 149, "widget": "scheduler", "literals": [ "3px" @@ -4822,7 +5101,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 142, + "line": 150, "widget": "scheduler", "literals": [ "10px" @@ -4838,7 +5117,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 143, + "line": 151, "widget": "scheduler", "literals": [ "5px" @@ -4854,7 +5133,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 144, + "line": 152, "widget": "scheduler", "literals": [ "10px" @@ -4870,7 +5149,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 145, + "line": 153, "widget": "scheduler", "literals": [ "5px" @@ -4886,7 +5165,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 146, + "line": 154, "widget": "scheduler", "literals": [ "15px" @@ -4902,7 +5181,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 147, + "line": 155, "widget": "scheduler", "literals": [ "3px" @@ -4918,7 +5197,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 148, + "line": 156, "widget": "scheduler", "literals": [ "10px" @@ -4934,7 +5213,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 192, + "line": 200, "widget": "scheduler", "literals": [ "2px" @@ -4950,7 +5229,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 193, + "line": 201, "widget": "scheduler", "literals": [ "1px" @@ -4966,7 +5245,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 194, + "line": 202, "widget": "scheduler", "literals": [ "1px" @@ -4982,7 +5261,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 195, + "line": 203, "widget": "scheduler", "literals": [ "1px" @@ -4998,7 +5277,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 196, + "line": 204, "widget": "scheduler", "literals": [ "1px" @@ -5014,7 +5293,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 197, + "line": 205, "widget": "scheduler", "literals": [ "1px" @@ -5030,7 +5309,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 198, + "line": 206, "widget": "scheduler", "literals": [ "5px" @@ -5046,7 +5325,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 199, + "line": 207, "widget": "scheduler", "literals": [ "5px", @@ -5063,7 +5342,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 200, + "line": 208, "widget": "scheduler", "literals": [ "1px" @@ -5079,7 +5358,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 201, + "line": 209, "widget": "scheduler", "literals": [ "40px" @@ -5095,7 +5374,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 202, + "line": 210, "widget": "scheduler", "literals": [ "100px" @@ -5111,7 +5390,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 204, + "line": 212, "widget": "scheduler", "literals": [ "100px" @@ -5127,7 +5406,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 205, + "line": 213, "widget": "scheduler", "literals": [ "160px" @@ -5143,7 +5422,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 206, + "line": 214, "widget": "scheduler", "literals": [ "80px" @@ -5159,7 +5438,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 207, + "line": 215, "widget": "scheduler", "literals": [ "240px" @@ -5175,7 +5454,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 208, + "line": 216, "widget": "scheduler", "literals": [ "200px" @@ -5191,7 +5470,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 209, + "line": 217, "widget": "scheduler", "literals": [ "70px" @@ -5207,7 +5486,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 210, + "line": 218, "widget": "scheduler", "literals": [ "18px" @@ -5223,7 +5502,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 211, + "line": 219, "widget": "scheduler", "literals": [ "10px" @@ -5239,7 +5518,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 212, + "line": 220, "widget": "scheduler", "literals": [ "50px" @@ -5255,7 +5534,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 268, + "line": 281, "widget": "scheduler", "literals": [ "7px" @@ -5271,7 +5550,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 269, + "line": 282, "widget": "scheduler", "literals": [ "9px" @@ -5287,7 +5566,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 270, + "line": 283, "widget": "scheduler", "literals": [ "2px" @@ -5303,7 +5582,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 271, + "line": 284, "widget": "scheduler", "literals": [ "25px", @@ -5320,7 +5599,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 272, + "line": 285, "widget": "scheduler", "literals": [ "7px", @@ -5337,7 +5616,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 273, + "line": 286, "widget": "scheduler", "literals": [ "24px" @@ -5353,7 +5632,7 @@ }, { "file": "scss/widgets/base/scheduler/_index.scss", - "line": 274, + "line": 287, "widget": "scheduler", "literals": [ "5px" @@ -5543,6 +5822,76 @@ "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", "setTo": "var(--dx-scheduler-agenda-appointment-rtl-margin-inline-end)" }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 45, + "widget": "scheduler", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-workspace-info-font-size: 20px !default;", + "variable": "scheduler-workspace-info-font-size", + "kind": "module-variable", + "status": "open" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 46, + "widget": "scheduler", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-small-font-size: 14px !default;", + "variable": "scheduler-small-font-size", + "kind": "module-variable", + "status": "open" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 55, + "widget": "scheduler", + "literals": [ + "30px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-group-header-table-cell-height: 30px !default;", + "variable": "scheduler-group-header-table-cell-height", + "kind": "module-variable", + "status": "open" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 59, + "widget": "scheduler", + "literals": [ + "16px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-month-date-text-size: 16px !default;", + "variable": "scheduler-month-date-text-size", + "kind": "module-variable", + "status": "open" + }, + { + "file": "scss/widgets/base/scheduler/views/_index.scss", + "line": 61, + "widget": "scheduler", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "$scheduler-month-date-text-padding: 6px !default;", + "variable": "scheduler-month-date-text-padding", + "kind": "module-variable", + "status": "open" + }, { "file": "scss/widgets/base/scheduler/views/_index.scss", "line": 77, From a758b783d213069b07a4d3f2b2eabaf33bcce246 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 16:10:51 +0200 Subject: [PATCH 16/25] Tokenize grid related components --- .../content_view/content/card/_index.scss | 4 +- .../content/card/header/_index.scss | 6 +- .../cardView/content_view/no_data/_index.scss | 2 +- .../base/cardView/header_panel/_index.scss | 4 +- .../cardView/header_panel/item/_index.scss | 8 +- .../scss/widgets/base/dataGrid/_index.scss | 8 +- .../widgets/base/dataGrid/layout/cell.scss | 2 +- .../scss/widgets/base/pivotGrid/_index.scss | 40 +-- .../scss/widgets/base/treeList/_index.scss | 6 +- .../widgets/base/treeList/layout/cell.scss | 2 +- .../widgets/fluent-next/common/_public.scss | 1 + .../widgets/fluent-next/common/_sizes.scss | 6 + .../widgets/fluent-next/pivotGrid/_index.scss | 5 + .../fluent-next/pivotGrid/_public.scss | 3 + .../widgets/fluent-next/pivotGrid/_sizes.scss | 5 + .../tests/base-size-markers.baseline.json | 7 +- .../devextreme-scss/tests/calc-budget.json | 8 +- .../tools/sizes/lists/BASE-SIZES.md | 128 ++------ .../tools/sizes/lists/base-owned.json | 273 +++++------------- .../tools/sizes/lists/theme-settable.json | 86 +++++- 20 files changed, 246 insertions(+), 358 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/cardView/content_view/content/card/_index.scss b/packages/devextreme-scss/scss/widgets/base/cardView/content_view/content/card/_index.scss index f3e094c5aff3..1fdee364b285 100644 --- a/packages/devextreme-scss/scss/widgets/base/cardView/content_view/content/card/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/cardView/content_view/content/card/_index.scss @@ -19,9 +19,9 @@ } &:focus-visible { - outline: 2px solid; + outline: 2px solid; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with outline-color: $cardview-card--focused-outline-color; - outline-offset: -2px; + outline-offset: -2px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with } } diff --git a/packages/devextreme-scss/scss/widgets/base/cardView/content_view/content/card/header/_index.scss b/packages/devextreme-scss/scss/widgets/base/cardView/content_view/content/card/header/_index.scss index ae28a7e5f713..70216956dd1e 100644 --- a/packages/devextreme-scss/scss/widgets/base/cardView/content_view/content/card/header/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/cardView/content_view/content/card/header/_index.scss @@ -7,7 +7,7 @@ height: $cardview-card__header-height; .dx-toolbar { - padding: 0 12px; + padding: 0 12px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with border-radius: $cardview-card-border-radius $cardview-card-border-radius 0 0; background-color: transparent; @@ -39,8 +39,8 @@ .dx-toolbar-item-content::before { content: ""; - width: 20px; - height: 20px; + width: 20px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with + height: 20px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with display: inline-block; pointer-events: none; } diff --git a/packages/devextreme-scss/scss/widgets/base/cardView/content_view/no_data/_index.scss b/packages/devextreme-scss/scss/widgets/base/cardView/content_view/no_data/_index.scss index 945055c5aaab..8fdc113f1420 100644 --- a/packages/devextreme-scss/scss/widgets/base/cardView/content_view/no_data/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/cardView/content_view/no_data/_index.scss @@ -7,7 +7,7 @@ align-items: center; justify-content: center; background-color: $cardview-nodata-view__icon-bg-color; - border-radius: 999px; + border-radius: 999px; // dx-fixed-size: a pill radius; the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with margin: $cardview-nodata-view__icon-container-margin; .dx-icon { diff --git a/packages/devextreme-scss/scss/widgets/base/cardView/header_panel/_index.scss b/packages/devextreme-scss/scss/widgets/base/cardView/header_panel/_index.scss index 0424508ec3f0..83db04979e65 100644 --- a/packages/devextreme-scss/scss/widgets/base/cardView/header_panel/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/cardView/header_panel/_index.scss @@ -7,7 +7,7 @@ 2px maximal right header item padding + 4px maximal dxSortable placeholder (drop indicator) width We can increase this number up to the CardView root padding without issues */ -$sortable-side-offset: 6px; +$sortable-side-offset: 6px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with .dx-cardview-header-item-sorting { display: flex; @@ -47,7 +47,7 @@ $sortable-side-offset: 6px; display: flex; align-items: center; justify-content: center; - gap: 4px; + gap: 4px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with .dx-icon { color: $cardview-header-panel__dropzone__icon-color; diff --git a/packages/devextreme-scss/scss/widgets/base/cardView/header_panel/item/_index.scss b/packages/devextreme-scss/scss/widgets/base/cardView/header_panel/item/_index.scss index 6e341df7730b..1546a0c6775a 100644 --- a/packages/devextreme-scss/scss/widgets/base/cardView/header_panel/item/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/cardView/header_panel/item/_index.scss @@ -6,7 +6,7 @@ align-items: center; padding: $cardview-header-panel__item-padding-vertical $cardview-header-panel__item-padding-horizontal; user-select: none; - gap: 4px; + gap: 4px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with border: solid $cardview-header-panel__item-border-width; border-radius: $cardview-header-panel__item-border-radius; line-height: $cardview-header-panel__item-line-height; @@ -52,9 +52,9 @@ } &:focus-visible { - outline: 2px solid; + outline: 2px solid; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with outline-color: $cardview-header-panel__item--focused-outline-color; - outline-offset: -2px; + outline-offset: -2px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with } &.dx-sortable-source { @@ -83,6 +83,8 @@ border-color: $cardview-header-panel__item--dragged-border-color; color: $cardview-header-panel__item--dragged-text-color; font-weight: $cardview-header-panel__item--dragged-text-weight; + + // dx-shadow-geometry: two-layer drag shadow; whether a shadow role replaces it is design's call box-shadow: 0 1px 3px $cardview-header-panel__item--dragged-box-shadow-color, 0 6px 8px $cardview-header-panel__item--dragged-box-shadow-color; diff --git a/packages/devextreme-scss/scss/widgets/base/dataGrid/_index.scss b/packages/devextreme-scss/scss/widgets/base/dataGrid/_index.scss index 95bed6c44221..2b465f04a229 100644 --- a/packages/devextreme-scss/scss/widgets/base/dataGrid/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/dataGrid/_index.scss @@ -143,7 +143,7 @@ $datagrid-button-margin-right: 10px !default; .dx-header-filter:focus { outline: $datagrid-header-filter-outline; outline-color: $datagrid-focused-border-color; - outline-offset: -2px; + outline-offset: -2px; // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots } .dx-header-filter:focus { @@ -179,7 +179,7 @@ $datagrid-button-margin-right: 10px !default; &.dx-filter-menu { .dx-menu-item-content .dx-icon { - @include dx-icon-sizing(14px); + @include dx-icon-sizing(14px); // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots } } @@ -298,7 +298,7 @@ $datagrid-button-margin-right: 10px !default; cursor: pointer; @include dx-icon(more); - @include dx-icon-sizing(21px); + @include dx-icon-sizing(21px); // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots } .dx-datagrid-edit-popup .dx-error-message { @@ -362,7 +362,7 @@ $datagrid-button-margin-right: 10px !default; right: 0; outline: $datagrid-header-filter-outline; outline-color: $datagrid-focused-border-color; - outline-offset: -1px; + outline-offset: -1px; // dx-px-nudge: a one-pixel inset for the sticky-column overlay z-index: 4; // should overlap sticky column cells pointer-events: none; background-color: transparent; diff --git a/packages/devextreme-scss/scss/widgets/base/dataGrid/layout/cell.scss b/packages/devextreme-scss/scss/widgets/base/dataGrid/layout/cell.scss index b559941f515e..ff5edc87dff5 100644 --- a/packages/devextreme-scss/scss/widgets/base/dataGrid/layout/cell.scss +++ b/packages/devextreme-scss/scss/widgets/base/dataGrid/layout/cell.scss @@ -280,7 +280,7 @@ $datagrid-cell-focus-outline: null !default; .dx-datagrid .dx-datagrid-headers.dx-state-focused .dx-header-row td:focus { outline: $datagrid-cell-focus-outline; outline-color: $datagrid-focused-border-color; - outline-offset: -2px; + outline-offset: -2px; // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots } // #endregion diff --git a/packages/devextreme-scss/scss/widgets/base/pivotGrid/_index.scss b/packages/devextreme-scss/scss/widgets/base/pivotGrid/_index.scss index 3af6a0e8e8af..c0d3135a601f 100644 --- a/packages/devextreme-scss/scss/widgets/base/pivotGrid/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/pivotGrid/_index.scss @@ -53,15 +53,17 @@ $pivotgrid-common-field-chooser-drag-height: 100px !default; ); @use "sass:meta"; -$pivotgrid-drag-header-border: 1px solid; -$pivotgrid-drag-header-first-shadow: 0 0 1px $pivotgrid-drag-header-first-shadow-color; -$pivotgrid-drag-header-second-shadow: 0 1px 3px $pivotgrid-drag-header-second-shadow-color; -$pivotgrid-border-width: 1px; +$pivotgrid-border-width: 1px !default; +$pivotgrid-focus-outline-width: 2px !default; +$pivotgrid-focus-outline-offset: -2px !default; +$pivotgrid-drag-header-border: $pivotgrid-border-width solid; +$pivotgrid-drag-header-first-shadow: 0 0 1px $pivotgrid-drag-header-first-shadow-color; // dx-shadow-geometry +$pivotgrid-drag-header-second-shadow: 0 1px 3px $pivotgrid-drag-header-second-shadow-color; // dx-shadow-geometry $pivotgrid-border: $pivotgrid-border-width solid; -$pivotgrid-icon-size: 14px; -$pivotgrid-common-field-padding: 2px; +$pivotgrid-icon-size: 14px !default; +$pivotgrid-common-field-padding: 2px !default; $pivotgrid-filter-area-border-spacing: if(meta.type-of($pivotgrid-common-left-right-padding) == number and meta.type-of($pivotgrid-common-field-padding) == number, $pivotgrid-common-left-right-padding - $pivotgrid-common-field-padding, calc(#{$pivotgrid-common-left-right-padding} - #{$pivotgrid-common-field-padding})) if(meta.type-of($pivotgrid-header-top-bottom-padding) == number and meta.type-of($pivotgrid-common-field-padding) == number, $pivotgrid-header-top-bottom-padding - $pivotgrid-common-field-padding, calc(#{$pivotgrid-header-top-bottom-padding} - #{$pivotgrid-common-field-padding})); -$pivotgrid-expand-icon-offset: -5px; +$pivotgrid-expand-icon-offset: -5px; // dx-fixed-size: negated at its use site $pivotgrid-expand-icon-text-offset: 0; .dx-pivotgrid-fields-container { @@ -69,17 +71,17 @@ $pivotgrid-expand-icon-text-offset: 0; background-color: gray; &.dx-position-indicator-vertical { - margin-top: -4px; - margin-left: -1px; + margin-top: -4px; // dx-fixed-size: pulls the element onto the grid line + margin-left: -1px; // dx-fixed-size: pulls the element onto the grid line height: $pivotgrid-position-indicator-vertical-height; &.dx-position-indicator-last { - margin-top: -3px; + margin-top: -3px; // dx-fixed-size: pulls the element onto the grid line } } &.dx-position-indicator-horizontal { - margin-left: -3px; + margin-left: -3px; // dx-fixed-size: pulls the element onto the grid line width: $pivotgrid-position-indicator-horizontal-width; &.dx-position-indicator-last { @@ -124,9 +126,9 @@ $pivotgrid-expand-icon-text-offset: 0; } .dx-area-field:focus-visible { - outline: 2px solid; + outline: $pivotgrid-focus-outline-width solid; outline-color: $pivotgrid-accent-color; - outline-offset: -2px; + outline-offset: $pivotgrid-focus-outline-offset; } &.dx-drag { @@ -166,14 +168,14 @@ $pivotgrid-expand-icon-text-offset: 0; td:has(> .dx-expand-icon-container:focus-visible) { outline: $pivotgrid-expand-icon-container-outline; outline-color: $pivotgrid-accent-color; - outline-offset: -2px; + outline-offset: $pivotgrid-focus-outline-offset; } .dx-pivotgrid-horizontal-headers td:focus-visible, .dx-pivotgrid-vertical-headers td:focus-visible { outline: $pivotgrid-expand-icon-container-outline; outline-color: $pivotgrid-accent-color; - outline-offset: -2px; + outline-offset: $pivotgrid-focus-outline-offset; } .dx-expand-icon-container:focus-visible { @@ -181,9 +183,9 @@ $pivotgrid-expand-icon-text-offset: 0; } .dx-pivotgrid-toolbar .dx-button:focus-visible { - outline: 2px solid; + outline: $pivotgrid-focus-outline-width solid; outline-color: $pivotgrid-accent-color; - outline-offset: -2px; + outline-offset: $pivotgrid-focus-outline-offset; } .dx-column-header, @@ -328,7 +330,7 @@ $pivotgrid-expand-icon-text-offset: 0; width: $pivotgrid-position-indicator-horizontal-width; top: 50%; height: $pivotgrid-position-indicator-vertical-height; - margin-top: -1px; + margin-top: -1px; // dx-fixed-size: pulls the element onto the grid line background-color: $pivotgrid-border-color; &.dx-group-connector-prev { @@ -599,7 +601,7 @@ $pivotgrid-expand-icon-text-offset: 0; .dx-pivotgrid-fields-container { .dx-position-indicator { &.dx-position-indicator-horizontal { - margin-left: -3px; + margin-left: -3px; // dx-fixed-size: pulls the element onto the grid line &.dx-position-indicator-last { margin-left: $pivotgrid-position-indicator-last-margin-left-rtl; diff --git a/packages/devextreme-scss/scss/widgets/base/treeList/_index.scss b/packages/devextreme-scss/scss/widgets/base/treeList/_index.scss index 411a79fc5362..e179a9a83229 100644 --- a/packages/devextreme-scss/scss/widgets/base/treeList/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/treeList/_index.scss @@ -165,7 +165,7 @@ $treelist-button-margin-right: 10px !default; &.dx-filter-menu { .dx-menu-item-content .dx-icon { - @include dx-icon-sizing(14px); + @include dx-icon-sizing(14px); // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots } } @@ -253,7 +253,7 @@ $treelist-button-margin-right: 10px !default; .dx-treelist-export-menu { .dx-menu-item .dx-icon-exportxlsx { - @include dx-icon-sizing(16px); + @include dx-icon-sizing(16px); // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots } } @@ -261,7 +261,7 @@ $treelist-button-margin-right: 10px !default; cursor: pointer; @include dx-icon(more); - @include dx-icon-sizing(21px); + @include dx-icon-sizing(21px); // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots } .dx-treelist-edit-popup .dx-error-message { diff --git a/packages/devextreme-scss/scss/widgets/base/treeList/layout/cell.scss b/packages/devextreme-scss/scss/widgets/base/treeList/layout/cell.scss index 8550e2160286..99d9aac760fb 100644 --- a/packages/devextreme-scss/scss/widgets/base/treeList/layout/cell.scss +++ b/packages/devextreme-scss/scss/widgets/base/treeList/layout/cell.scss @@ -226,7 +226,7 @@ $treelist-cell-focus-outline: null !default; .dx-treelist-container .dx-treelist-headers.dx-state-focused .dx-header-row td:focus { outline: $treelist-cell-focus-outline; outline-color: $treelist-focused-border-color; - outline-offset: -2px; + outline-offset: -2px; // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots } // #endregion diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/common/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/common/_public.scss index 810dbc0a21e9..356ab4a6740a 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/common/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/common/_public.scss @@ -6,6 +6,7 @@ --dx-focus-rect-border-radius: #{$focus-rect-border-radius}; --dx-focus-rect-outline: #{$focus-rect-outline}; --dx-focus-rect-outline-offset: #{$focus-rect-outline-offset}; + --dx-focus-rect-outline-offset-inset: #{$focus-rect-outline-offset-inset}; --dx-focus-rect-outline-width: #{$focus-rect-outline-width}; --dx-global-bg: #{$global-bg}; --dx-global-content: #{$global-content}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/common/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/common/_sizes.scss index be0f86ff67c7..cd40ccb36a8f 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/common/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/common/_sizes.scss @@ -14,6 +14,12 @@ $focus-rect-border-radius: $global-border-radius !default; $focus-rect-outline-width: ds.$border-width-20 !default; $focus-rect-outline-offset: ds.$spacing-10 !default; +/* + * The inset variant: the grids draw the ring inside the cell instead of around it. Derived once + * here and published, so ten places read a var() instead of each shipping its own calc(). + */ +$focus-rect-outline-offset-inset: calc(-1 * #{$focus-rect-outline-width}) !default; + $invalid-badge-size: calc(#{$global-icon-size} - #{ds.$spacing-20}) !default; $invalid-badge-padding-inline: calc((#{$global-inline-widget-inner-height} - #{$invalid-badge-size}) / 2) !default; $invalid-badge-offset: calc(#{$invalid-badge-padding-inline} / 2) !default; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/pivotGrid/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/pivotGrid/_index.scss index 2aedfa753267..00aa91379787 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/pivotGrid/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/pivotGrid/_index.scss @@ -5,6 +5,11 @@ @use "../treeView/sizes" as treeViewSizes; @use "../button/sizes" as buttonSizes; @use "../../base/pivotGrid" as basePivotGrid with ( + $pivotgrid-border-width: var(--dx-pivot-grid-border-width), + $pivotgrid-focus-outline-width: var(--dx-focus-rect-outline-width), + $pivotgrid-focus-outline-offset: var(--dx-focus-rect-outline-offset-inset), + $pivotgrid-icon-size: var(--dx-pivot-grid-icon-size), + $pivotgrid-common-field-padding: var(--dx-pivot-grid-field-padding), $pivotgrid-common-field-chooser-drag-width: var(--dx-pivot-grid-field-chooser-drag-width), $pivotgrid-common-field-chooser-drag-height: var(--dx-pivot-grid-field-chooser-drag-height), $pivotgrid-position-indicator-vertical-height: var(--dx-pivot-grid-position-indicator-vertical-height), diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/pivotGrid/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/pivotGrid/_public.scss index 06e700698a28..43340f090a07 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/pivotGrid/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/pivotGrid/_public.scss @@ -14,6 +14,7 @@ --dx-pivot-grid-area-fields-margin-block-start: #{$pivot-grid-area-fields-margin-block-start}; --dx-pivot-grid-area-font-size: #{$pivot-grid-area-font-size}; --dx-pivot-grid-area-padding: #{$pivot-grid-area-padding}; + --dx-pivot-grid-border-width: #{$pivot-grid-border-width}; --dx-pivot-grid-border: #{$pivot-grid-border}; --dx-pivot-grid-border-disabled: #{$pivot-grid-border-disabled}; --dx-pivot-grid-button-margin: #{$pivot-grid-button-margin}; @@ -44,6 +45,7 @@ --dx-pivot-grid-field-chooser-drag-width: #{$pivot-grid-field-chooser-drag-width}; --dx-pivot-grid-field-chooser-field-min-height: #{$pivot-grid-field-chooser-field-min-height}; --dx-pivot-grid-field-indicators-offset: #{$pivot-grid-field-indicators-offset}; + --dx-pivot-grid-field-padding: #{$pivot-grid-field-padding}; --dx-pivot-grid-fields-area-head-cell-padding-inline: #{$pivot-grid-fields-area-head-cell-padding-inline}; --dx-pivot-grid-fields-area-head-padding: #{$pivot-grid-fields-area-head-padding}; --dx-pivot-grid-fields-area-head-padding-inline-start: #{$pivot-grid-fields-area-head-padding-inline-start}; @@ -54,6 +56,7 @@ --dx-pivot-grid-header-top-bottom-padding: #{$pivot-grid-header-top-bottom-padding}; --dx-pivot-grid-headers-font-size: #{$pivot-grid-headers-font-size}; --dx-pivot-grid-icon-margin: #{$pivot-grid-icon-margin}; + --dx-pivot-grid-icon-size: #{$pivot-grid-icon-size}; --dx-pivot-grid-icon-sorted-margin-inline-end: #{$pivot-grid-icon-sorted-margin-inline-end}; --dx-pivot-grid-icon-sorted-margin-inline-start: #{$pivot-grid-icon-sorted-margin-inline-start}; --dx-pivot-grid-indicators-line-height: #{$pivot-grid-indicators-line-height}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/pivotGrid/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/pivotGrid/_sizes.scss index 478b71a9012e..29fa3d3d0dd7 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/pivotGrid/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/pivotGrid/_sizes.scss @@ -85,3 +85,8 @@ $pivot-grid-field-chooser-drag-height: ds.$spacing-1000 !default; // B2 tail: pivotGrid cell side paddings $pivot-grid-header-cell-padding-inline: ds.$spacing-20 !default; $pivot-grid-fields-area-head-cell-padding-inline: ds.$spacing-20 !default; + +// Base-layer sizing injected with design tokens (wave B16) +$pivot-grid-border-width: ds.$border-width-10 !default; +$pivot-grid-icon-size: ds.$spacing-140 !default; +$pivot-grid-field-padding: ds.$spacing-20 !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 0ff128d86789..31dc5774ac06 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,15 +1,12 @@ { "openKnobs": 10, - "unclassified": 216, + "unclassified": 176, "unclassifiedByWidget": { "gridBase": 75, "colorView": 67, - "pivotGrid": 20, - "cardView": 15, "htmlEditor": 13, "scheduler": 13, - "dataGrid": 5, - "treeList": 4, + "cardView": 4, "textEditor": 3, "list": 1 } diff --git a/packages/devextreme-scss/tests/calc-budget.json b/packages/devextreme-scss/tests/calc-budget.json index 74202b9a0e03..a9fabad9d34a 100644 --- a/packages/devextreme-scss/tests/calc-budget.json +++ b/packages/devextreme-scss/tests/calc-budget.json @@ -1,18 +1,18 @@ { "dx.fluent-next.blue.dark.compact.css": { - "calcOccurrences": 357, + "calcOccurrences": 358, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.dark.css": { - "calcOccurrences": 357, + "calcOccurrences": 358, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.compact.css": { - "calcOccurrences": 357, + "calcOccurrences": 358, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.css": { - "calcOccurrences": 357, + "calcOccurrences": 358, "declarationsWithDeepCalc": 5 } } diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 9d2cd13a4d04..d1969682bd88 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -11,15 +11,15 @@ and carries a marker saying why. | | occurrences | |---|---| -| a raw grep of the layer | 771 | +| a raw grep of the layer | 766 | | …of those, inside comments (commented-out code, prose) | 9 | -| **in code** | **762** | -| — the theme can already set from outside | 452 | -| — nailed into the shared layer | 310 | +| **in code** | **757** | +| — the theme can already set from outside | 457 | +| — nailed into the shared layer | 300 | ## What the theme can already set -452 occurrences in 389 `!default` variables. fluent-next already passes 418; 10 are open knobs nobody turns. +457 occurrences in 394 `!default` variables. fluent-next already passes 423; 10 are open knobs nobody turns. Open knobs — theme-side work, the shared layer stays untouched: @@ -36,18 +36,15 @@ Open knobs — theme-side work, the shared layer stays untouched: ## What is nailed into the layer -| widget | inline | geometry | local-var | mixin-arg | calc | total | -|---|---|---|---|---|---|---| -| gridBase | 50 | 7 | 18 | | | **75** | -| colorView | 35 | 24 | 8 | | | **67** | -| pivotGrid | 6 | 6 | 8 | | | **20** | -| cardView | 9 | 5 | 1 | | | **15** | -| htmlEditor | 8 | 4 | 1 | | | **13** | -| scheduler | 9 | 3 | | | 1 | **13** | -| dataGrid | | 3 | | 2 | | **5** | -| treeList | | 1 | | 3 | | **4** | -| textEditor | 3 | | | | | **3** | -| list | | | 1 | | | **1** | +| widget | inline | geometry | local-var | calc | total | +|---|---|---|---|---|---| +| gridBase | 50 | 7 | 18 | | **75** | +| colorView | 35 | 24 | 8 | | **67** | +| htmlEditor | 8 | 4 | 1 | | **13** | +| scheduler | 9 | 3 | | 1 | **13** | +| cardView | 4 | | | | **4** | +| textEditor | 3 | | | | **3** | +| list | | | 1 | | **1** | ## Places, by widget @@ -249,76 +246,6 @@ Open knobs — theme-side work, the shared layer stays untouched: - `scss/widgets/base/colorView/_mixins.scss:16` · geometry `box-shadow: inset 0 -5px 0 3px $handle-color, inset 0 5px 0 3px $handle-color, inset 0 -6px 1px 4px $handle-border-color, inset 0 6px 1px 4px $handle-border-color;` -### pivotGrid — 20 - -- `scss/widgets/base/pivotGrid/_index.scss:56` · local-var - `$pivotgrid-drag-header-border: 1px solid;` -- `scss/widgets/base/pivotGrid/_index.scss:57` · local-var - `$pivotgrid-drag-header-first-shadow: 0 0 1px $pivotgrid-drag-header-first-shadow-color;` -- `scss/widgets/base/pivotGrid/_index.scss:58` · local-var - `$pivotgrid-drag-header-second-shadow: 0 1px 3px $pivotgrid-drag-header-second-shadow-color;` -- `scss/widgets/base/pivotGrid/_index.scss:59` · local-var - `$pivotgrid-border-width: 1px;` -- `scss/widgets/base/pivotGrid/_index.scss:61` · local-var - `$pivotgrid-icon-size: 14px;` -- `scss/widgets/base/pivotGrid/_index.scss:62` · local-var - `$pivotgrid-common-field-padding: 2px;` -- `scss/widgets/base/pivotGrid/_index.scss:64` · local-var - `$pivotgrid-expand-icon-offset: -5px;` -- `scss/widgets/base/pivotGrid/_index.scss:72` · inline - `margin-top: -4px;` -- `scss/widgets/base/pivotGrid/_index.scss:73` · inline - `margin-left: -1px;` -- `scss/widgets/base/pivotGrid/_index.scss:77` · inline - `margin-top: -3px;` -- `scss/widgets/base/pivotGrid/_index.scss:82` · inline - `margin-left: -3px;` -- `scss/widgets/base/pivotGrid/_index.scss:127` · geometry - `outline: 2px solid;` -- `scss/widgets/base/pivotGrid/_index.scss:129` · geometry - `outline-offset: -2px;` -- `scss/widgets/base/pivotGrid/_index.scss:169` · geometry - `outline-offset: -2px;` -- `scss/widgets/base/pivotGrid/_index.scss:176` · geometry - `outline-offset: -2px;` -- `scss/widgets/base/pivotGrid/_index.scss:184` · geometry - `outline: 2px solid;` -- `scss/widgets/base/pivotGrid/_index.scss:186` · geometry - `outline-offset: -2px;` -- `scss/widgets/base/pivotGrid/_index.scss:331` · inline - `margin-top: -1px;` -- `scss/widgets/base/pivotGrid/_index.scss:602` · inline - `margin-left: -3px;` - -### cardView — 15 - -- `scss/widgets/base/cardView/content_view/content/card/_index.scss:22` · geometry - `outline: 2px solid;` -- `scss/widgets/base/cardView/content_view/content/card/_index.scss:24` · geometry - `outline-offset: -2px;` -- `scss/widgets/base/cardView/content_view/content/card/header/_index.scss:10` · inline - `padding: 0 12px;` -- `scss/widgets/base/cardView/content_view/content/card/header/_index.scss:42` · inline - `width: 20px;` -- `scss/widgets/base/cardView/content_view/content/card/header/_index.scss:43` · inline - `height: 20px;` -- `scss/widgets/base/cardView/content_view/no_data/_index.scss:10` · geometry - `border-radius: 999px;` -- `scss/widgets/base/cardView/header_panel/_index.scss:10` · local-var - `$sortable-side-offset: 6px;` -- `scss/widgets/base/cardView/header_panel/_index.scss:50` · inline - `gap: 4px;` -- `scss/widgets/base/cardView/header_panel/item/_index.scss:9` · inline - `gap: 4px;` -- `scss/widgets/base/cardView/header_panel/item/_index.scss:55` · geometry - `outline: 2px solid;` -- `scss/widgets/base/cardView/header_panel/item/_index.scss:57` · geometry - `outline-offset: -2px;` -- `scss/widgets/base/cardView/header_panel/item/_index.scss:87` · inline - `0 1px 3px $cardview-header-panel__item--dragged-box-shadow-color,` -- `scss/widgets/base/cardView/header_panel/item/_index.scss:88` · inline - `0 6px 8px $cardview-header-panel__item--dragged-box-shadow-color;` - ### htmlEditor — 13 - `scss/widgets/base/_htmlEditor.scss:20` · local-var @@ -375,29 +302,12 @@ Open knobs — theme-side work, the shared layer stays untouched: - `scss/widgets/base/scheduler/views/timelines/_index.scss:188` · geometry `border-bottom: 1px solid;` -### dataGrid — 5 - -- `scss/widgets/base/dataGrid/_index.scss:146` · geometry - `outline-offset: -2px;` -- `scss/widgets/base/dataGrid/_index.scss:182` · mixin-arg - `@include dx-icon-sizing(14px);` -- `scss/widgets/base/dataGrid/_index.scss:301` · mixin-arg - `@include dx-icon-sizing(21px);` -- `scss/widgets/base/dataGrid/_index.scss:365` · geometry - `outline-offset: -1px;` -- `scss/widgets/base/dataGrid/layout/cell.scss:283` · geometry - `outline-offset: -2px;` +### cardView — 4 -### treeList — 4 - -- `scss/widgets/base/treeList/_index.scss:168` · mixin-arg - `@include dx-icon-sizing(14px);` -- `scss/widgets/base/treeList/_index.scss:256` · mixin-arg - `@include dx-icon-sizing(16px);` -- `scss/widgets/base/treeList/_index.scss:264` · mixin-arg - `@include dx-icon-sizing(21px);` -- `scss/widgets/base/treeList/layout/cell.scss:229` · geometry - `outline-offset: -2px;` +- `scss/widgets/base/cardView/header_panel/item/_index.scss:89` · inline + `0 1px 3px $cardview-header-panel__item--dragged-box-shadow-color,` +- `scss/widgets/base/cardView/header_panel/item/_index.scss:90` · inline + `0 6px 8px $cardview-header-panel__item--dragged-box-shadow-color;` ### textEditor — 3 diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 20415b450ac8..97e15b2c503f 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,11 +6,11 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 310, + "occurrences": 300, "byCategory": { "inline": 147, - "geometry": 75, - "local-var": 63, + "geometry": 69, + "local-var": 59, "calc": 9, "structural": 8, "mixin-arg": 6, @@ -21,9 +21,9 @@ "colorView": 67, "scheduler": 35, "textEditor": 26, - "pivotGrid": 21, "htmlEditor": 18, "cardView": 15, + "pivotGrid": 11, "ui": 8, "scrollView": 5, "dataGrid": 5, @@ -48,16 +48,13 @@ "toolbar": 1, "treeView": 1 }, - "unmarked": 216, + "unmarked": 176, "unmarkedByWidget": { "gridBase": 75, "colorView": 67, - "pivotGrid": 20, - "cardView": 15, "htmlEditor": 13, "scheduler": 13, - "dataGrid": 5, - "treeList": 4, + "cardView": 4, "textEditor": 3, "list": 1 } @@ -557,8 +554,8 @@ "2px" ], "occurrences": 1, - "marker": null, - "text": "outline: 2px solid;", + "marker": "dx-fixed-size", + "text": "outline: 2px solid; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with", "category": "geometry" }, { @@ -569,8 +566,8 @@ "-2px" ], "occurrences": 1, - "marker": null, - "text": "outline-offset: -2px;", + "marker": "dx-fixed-size", + "text": "outline-offset: -2px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with", "category": "geometry" }, { @@ -581,8 +578,8 @@ "12px" ], "occurrences": 1, - "marker": null, - "text": "padding: 0 12px;", + "marker": "dx-fixed-size", + "text": "padding: 0 12px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with", "category": "inline" }, { @@ -593,8 +590,8 @@ "20px" ], "occurrences": 1, - "marker": null, - "text": "width: 20px;", + "marker": "dx-fixed-size", + "text": "width: 20px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with", "category": "inline" }, { @@ -605,8 +602,8 @@ "20px" ], "occurrences": 1, - "marker": null, - "text": "height: 20px;", + "marker": "dx-fixed-size", + "text": "height: 20px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with", "category": "inline" }, { @@ -617,8 +614,8 @@ "999px" ], "occurrences": 1, - "marker": null, - "text": "border-radius: 999px;", + "marker": "dx-fixed-size", + "text": "border-radius: 999px; // dx-fixed-size: a pill radius; the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with", "category": "geometry" }, { @@ -629,8 +626,8 @@ "6px" ], "occurrences": 1, - "marker": null, - "text": "$sortable-side-offset: 6px;", + "marker": "dx-fixed-size", + "text": "$sortable-side-offset: 6px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with", "category": "local-var" }, { @@ -641,8 +638,8 @@ "4px" ], "occurrences": 1, - "marker": null, - "text": "gap: 4px;", + "marker": "dx-fixed-size", + "text": "gap: 4px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with", "category": "inline" }, { @@ -653,8 +650,8 @@ "4px" ], "occurrences": 1, - "marker": null, - "text": "gap: 4px;", + "marker": "dx-fixed-size", + "text": "gap: 4px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with", "category": "inline" }, { @@ -665,8 +662,8 @@ "2px" ], "occurrences": 1, - "marker": null, - "text": "outline: 2px solid;", + "marker": "dx-fixed-size", + "text": "outline: 2px solid; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with", "category": "geometry" }, { @@ -677,13 +674,13 @@ "-2px" ], "occurrences": 1, - "marker": null, - "text": "outline-offset: -2px;", + "marker": "dx-fixed-size", + "text": "outline-offset: -2px; // dx-fixed-size: the base/cardView chain is not configurable from a theme yet: nothing in it is passed through @use ... with", "category": "geometry" }, { "file": "scss/widgets/base/cardView/header_panel/item/_index.scss", - "line": 87, + "line": 89, "widget": "cardView", "literals": [ "1px", @@ -696,7 +693,7 @@ }, { "file": "scss/widgets/base/cardView/header_panel/item/_index.scss", - "line": 88, + "line": 90, "widget": "cardView", "literals": [ "6px", @@ -1202,8 +1199,8 @@ "-2px" ], "occurrences": 1, - "marker": null, - "text": "outline-offset: -2px;", + "marker": "dx-fixed-size", + "text": "outline-offset: -2px; // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots", "category": "geometry" }, { @@ -1214,8 +1211,8 @@ "14px" ], "occurrences": 1, - "marker": null, - "text": "@include dx-icon-sizing(14px);", + "marker": "dx-fixed-size", + "text": "@include dx-icon-sizing(14px); // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots", "category": "mixin-arg" }, { @@ -1226,8 +1223,8 @@ "21px" ], "occurrences": 1, - "marker": null, - "text": "@include dx-icon-sizing(21px);", + "marker": "dx-fixed-size", + "text": "@include dx-icon-sizing(21px); // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots", "category": "mixin-arg" }, { @@ -1238,8 +1235,8 @@ "-1px" ], "occurrences": 1, - "marker": null, - "text": "outline-offset: -1px;", + "marker": "dx-px-nudge", + "text": "outline-offset: -1px; // dx-px-nudge: a one-pixel inset for the sticky-column overlay", "category": "geometry" }, { @@ -1250,8 +1247,8 @@ "-2px" ], "occurrences": 1, - "marker": null, - "text": "outline-offset: -2px;", + "marker": "dx-fixed-size", + "text": "outline-offset: -2px; // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots", "category": "geometry" }, { @@ -2104,231 +2101,111 @@ }, { "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 56, - "widget": "pivotGrid", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "$pivotgrid-drag-header-border: 1px solid;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 57, + "line": 60, "widget": "pivotGrid", "literals": [ "1px" ], "occurrences": 1, - "marker": null, - "text": "$pivotgrid-drag-header-first-shadow: 0 0 1px $pivotgrid-drag-header-first-shadow-color;", + "marker": "dx-shadow-geometry", + "text": "$pivotgrid-drag-header-first-shadow: 0 0 1px $pivotgrid-drag-header-first-shadow-color; // dx-shadow-geometry", "category": "local-var" }, { "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 58, + "line": 61, "widget": "pivotGrid", "literals": [ "1px", "3px" ], "occurrences": 2, - "marker": null, - "text": "$pivotgrid-drag-header-second-shadow: 0 1px 3px $pivotgrid-drag-header-second-shadow-color;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 59, - "widget": "pivotGrid", - "literals": [ - "1px" - ], - "occurrences": 1, - "marker": null, - "text": "$pivotgrid-border-width: 1px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 61, - "widget": "pivotGrid", - "literals": [ - "14px" - ], - "occurrences": 1, - "marker": null, - "text": "$pivotgrid-icon-size: 14px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 62, - "widget": "pivotGrid", - "literals": [ - "2px" - ], - "occurrences": 1, - "marker": null, - "text": "$pivotgrid-common-field-padding: 2px;", + "marker": "dx-shadow-geometry", + "text": "$pivotgrid-drag-header-second-shadow: 0 1px 3px $pivotgrid-drag-header-second-shadow-color; // dx-shadow-geometry", "category": "local-var" }, { "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 64, + "line": 66, "widget": "pivotGrid", "literals": [ "-5px" ], "occurrences": 1, - "marker": null, - "text": "$pivotgrid-expand-icon-offset: -5px;", + "marker": "dx-fixed-size", + "text": "$pivotgrid-expand-icon-offset: -5px; // dx-fixed-size: negated at its use site", "category": "local-var" }, { "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 72, + "line": 74, "widget": "pivotGrid", "literals": [ "-4px" ], "occurrences": 1, - "marker": null, - "text": "margin-top: -4px;", + "marker": "dx-fixed-size", + "text": "margin-top: -4px; // dx-fixed-size: pulls the element onto the grid line", "category": "inline" }, { "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 73, + "line": 75, "widget": "pivotGrid", "literals": [ "-1px" ], "occurrences": 1, - "marker": null, - "text": "margin-left: -1px;", + "marker": "dx-fixed-size", + "text": "margin-left: -1px; // dx-fixed-size: pulls the element onto the grid line", "category": "inline" }, { "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 77, + "line": 79, "widget": "pivotGrid", "literals": [ "-3px" ], "occurrences": 1, - "marker": null, - "text": "margin-top: -3px;", + "marker": "dx-fixed-size", + "text": "margin-top: -3px; // dx-fixed-size: pulls the element onto the grid line", "category": "inline" }, { "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 82, + "line": 84, "widget": "pivotGrid", "literals": [ "-3px" ], "occurrences": 1, - "marker": null, - "text": "margin-left: -3px;", + "marker": "dx-fixed-size", + "text": "margin-left: -3px; // dx-fixed-size: pulls the element onto the grid line", "category": "inline" }, { "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 127, - "widget": "pivotGrid", - "literals": [ - "2px" - ], - "occurrences": 1, - "marker": null, - "text": "outline: 2px solid;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 129, - "widget": "pivotGrid", - "literals": [ - "-2px" - ], - "occurrences": 1, - "marker": null, - "text": "outline-offset: -2px;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 169, - "widget": "pivotGrid", - "literals": [ - "-2px" - ], - "occurrences": 1, - "marker": null, - "text": "outline-offset: -2px;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 176, - "widget": "pivotGrid", - "literals": [ - "-2px" - ], - "occurrences": 1, - "marker": null, - "text": "outline-offset: -2px;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 184, - "widget": "pivotGrid", - "literals": [ - "2px" - ], - "occurrences": 1, - "marker": null, - "text": "outline: 2px solid;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 186, - "widget": "pivotGrid", - "literals": [ - "-2px" - ], - "occurrences": 1, - "marker": null, - "text": "outline-offset: -2px;", - "category": "geometry" - }, - { - "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 331, + "line": 333, "widget": "pivotGrid", "literals": [ "-1px" ], "occurrences": 1, - "marker": null, - "text": "margin-top: -1px;", + "marker": "dx-fixed-size", + "text": "margin-top: -1px; // dx-fixed-size: pulls the element onto the grid line", "category": "inline" }, { "file": "scss/widgets/base/pivotGrid/_index.scss", - "line": 602, + "line": 604, "widget": "pivotGrid", "literals": [ "-3px" ], "occurrences": 1, - "marker": null, - "text": "margin-left: -3px;", + "marker": "dx-fixed-size", + "text": "margin-left: -3px; // dx-fixed-size: pulls the element onto the grid line", "category": "inline" }, { @@ -2908,8 +2785,8 @@ "14px" ], "occurrences": 1, - "marker": null, - "text": "@include dx-icon-sizing(14px);", + "marker": "dx-fixed-size", + "text": "@include dx-icon-sizing(14px); // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots", "category": "mixin-arg" }, { @@ -2920,8 +2797,8 @@ "16px" ], "occurrences": 1, - "marker": null, - "text": "@include dx-icon-sizing(16px);", + "marker": "dx-fixed-size", + "text": "@include dx-icon-sizing(16px); // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots", "category": "mixin-arg" }, { @@ -2932,8 +2809,8 @@ "21px" ], "occurrences": 1, - "marker": null, - "text": "@include dx-icon-sizing(21px);", + "marker": "dx-fixed-size", + "text": "@include dx-icon-sizing(21px); // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots", "category": "mixin-arg" }, { @@ -2944,8 +2821,8 @@ "-2px" ], "occurrences": 1, - "marker": null, - "text": "outline-offset: -2px;", + "marker": "dx-fixed-size", + "text": "outline-offset: -2px; // dx-fixed-size: the gridBase tier already paints this across the family; a widget-scoped name would collide under the other grid roots", "category": "geometry" }, { diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 415f363bb1f3..88c6dd975870 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 452, - "variables": 389, - "injected": 418, + "occurrences": 457, + "variables": 394, + "injected": 423, "open": 10, "parameters": 24 }, @@ -4482,6 +4482,86 @@ "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", "setTo": "var(--dx-pivot-grid-field-chooser-drag-height)" }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 56, + "widget": "pivotGrid", + "literals": [ + "1px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-border-width: 1px !default;", + "variable": "pivotgrid-border-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-border-width)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 57, + "widget": "pivotGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-focus-outline-width: 2px !default;", + "variable": "pivotgrid-focus-outline-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-focus-rect-outline-width)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 58, + "widget": "pivotGrid", + "literals": [ + "-2px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-focus-outline-offset: -2px !default;", + "variable": "pivotgrid-focus-outline-offset", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-focus-rect-outline-offset-inset)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 63, + "widget": "pivotGrid", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-icon-size: 14px !default;", + "variable": "pivotgrid-icon-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-icon-size)" + }, + { + "file": "scss/widgets/base/pivotGrid/_index.scss", + "line": 64, + "widget": "pivotGrid", + "literals": [ + "2px" + ], + "occurrences": 1, + "marker": null, + "text": "$pivotgrid-common-field-padding: 2px !default;", + "variable": "pivotgrid-common-field-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/pivotGrid/_index.scss", + "setTo": "var(--dx-pivot-grid-field-padding)" + }, { "file": "scss/widgets/base/radioGroup/_index.scss", "line": 4, From 288eed5606613a8fdbcf5601dad2680743f50775 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 18:57:57 +0200 Subject: [PATCH 17/25] Fix the mention background outside the editor scope --- .../scss/widgets/fluent-next/htmlEditor/_index.scss | 6 +++++- .../devextreme-scss/tests/fluent-next-naming.baseline.json | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss index 652ec1d361b5..e0b99517eea4 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss @@ -296,8 +296,12 @@ text-align: start; } +/* + * Consumers hand-write .dx-mention outside the editor, where the component tier does not + * reach: without the fallback the whole declaration dies there and the highlight disappears. + */ .dx-mention { - background-color: var(--dx-html-editor-mention-bg); + background-color: var(--dx-html-editor-mention-bg, #{$html-editor-mention-bg}); } .dx-suggestion-list-wrapper { diff --git a/packages/devextreme-scss/tests/fluent-next-naming.baseline.json b/packages/devextreme-scss/tests/fluent-next-naming.baseline.json index 93d0f2261172..b0435de16260 100644 --- a/packages/devextreme-scss/tests/fluent-next-naming.baseline.json +++ b/packages/devextreme-scss/tests/fluent-next-naming.baseline.json @@ -573,6 +573,7 @@ "fluent-next/gridBase/_index.scss: $grid-cell-padding-block", "fluent-next/gridBase/_index.scss: $grid-cell-padding-inline", "fluent-next/gridBase/_index.scss: $grid-editor-input-padding", + "fluent-next/htmlEditor/_index.scss: $html-editor-mention-bg", "fluent-next/progressBar/_index.scss: $progress-bar-indeterminate-width", "fluent-next/progressBar/_index.scss: $progress-bar-indeterminate-width", "fluent-next/scheduler/_index.scss: $scheduler-appointment-15min-height", From 94a051f771966a2bb143cc67f9fbe88e4c6ec9d5 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Tue, 1 Sep 2026 21:47:54 +0200 Subject: [PATCH 18/25] Publish the mention tokens in the system tier --- .../scss/widgets/fluent-next/common/_colors.scss | 9 +++++++++ .../scss/widgets/fluent-next/common/_public.scss | 4 ++++ .../scss/widgets/fluent-next/common/_sizes.scss | 5 +++++ .../widgets/fluent-next/htmlEditor/_colors.scss | 1 - .../scss/widgets/fluent-next/htmlEditor/_index.scss | 13 +++++-------- .../widgets/fluent-next/htmlEditor/_public.scss | 4 ---- .../scss/widgets/fluent-next/htmlEditor/_sizes.scss | 3 --- .../tests/fluent-next-naming.baseline.json | 1 - .../tools/naming/derive-registries.mjs | 7 +++++++ .../devextreme-scss/tools/naming/registries.json | 1 + .../devextreme-scss/tools/review/nested-scopes.json | 1 - 11 files changed, 31 insertions(+), 18 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/common/_colors.scss b/packages/devextreme-scss/scss/widgets/fluent-next/common/_colors.scss index 38717262cc97..9e26789f8649 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/common/_colors.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/common/_colors.scss @@ -30,3 +30,12 @@ $valid-badge-content: ds.$color-bg-success !default; $palette-text: ds.$color-content !default; $global-bg: ds.$color-bg !default; $global-content: ds.$color-content !default; + +/* + * A mention is markup the editor writes into the value, and consumers render that value back + * anywhere — the Mentions demo shows a chat log built from plain spans, with no editor around. + * The base layer says the same by styling `.dx-mention` from a bare selector, unlike `.dx-variable` + * which it nests under `.dx-htmleditor-content`. So the value is not part of one widget's anatomy + * and belongs in the system tier, next to invalid-badge. + */ +$mention-bg: ds.$color-bg-selected !default; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/common/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/common/_public.scss index 356ab4a6740a..25221eba6022 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/common/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/common/_public.scss @@ -26,6 +26,10 @@ --dx-invalid-badge-offset: #{$invalid-badge-offset}; --dx-invalid-badge-padding-inline: #{$invalid-badge-padding-inline}; --dx-invalid-badge-size: #{$invalid-badge-size}; + --dx-mention-bg: #{$mention-bg}; + --dx-mention-border-radius: #{$mention-border-radius}; + --dx-mention-margin-inline: #{$mention-margin-inline}; + --dx-mention-padding-block: #{$mention-padding-block}; --dx-palette-accent: #{$palette-accent}; --dx-palette-bg: #{$palette-bg}; --dx-palette-border: #{$palette-border}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/common/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/common/_sizes.scss index cd40ccb36a8f..b50bc7868447 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/common/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/common/_sizes.scss @@ -43,3 +43,8 @@ $invalid-badge-font-weight: ds.$font-weight-500 !default; // dx-no-semantic-role $global-dropdown-content-padding: ds.$spacing-10 !default; $global-dropdown-border-block-end-width: ds.$border-width-10 !default; $global-dropdown-flipped-border-block-start-width: ds.$border-width-10 !default; + +// see the note on $mention-bg in _colors.scss +$mention-padding-block: ds.$spacing-10 !default; +$mention-border-radius: ds.$border-radius-20 !default; +$mention-margin-inline: ds.$spacing-20 !default; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_colors.scss b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_colors.scss index 574f2e6bce22..19d996f8ffeb 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_colors.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_colors.scss @@ -4,7 +4,6 @@ $html-editor-toolbar-border: ds.$color-border-subtle !default; $html-editor-variable-bg: ds.$color-bg-primary-alpha-hovered !default; $html-editor-resize-frame-border: ds.$color-border-primary !default; $html-editor-resize-trigger: ds.$color-bg-primary !default; -$html-editor-mention-bg: ds.$color-bg-selected !default; $html-editor-table-border: ds.$color-border !default; $html-editor-file-uploader-input-wrapper-border: ds.$color-border !default; $html-editor-file-uploader-input-wrapper-bg: ds.$color-bg-canvas !default; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss index e0b99517eea4..86a78c19cdd6 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss @@ -18,9 +18,9 @@ $blockquote-border-inline-start-width: var(--dx-html-editor-blockquote-border-inline-start-width), $table-cell-padding: var(--dx-html-editor-table-cell-padding), $placeholder-inset-inline: var(--dx-html-editor-placeholder-inset-inline), - $mention-padding-block: var(--dx-html-editor-mention-padding-block), - $mention-border-radius: var(--dx-html-editor-mention-border-radius), - $mention-margin-inline: var(--dx-html-editor-mention-margin-inline), + $mention-padding-block: var(--dx-mention-padding-block), + $mention-border-radius: var(--dx-mention-border-radius), + $mention-margin-inline: var(--dx-mention-margin-inline), $table-resizer-thickness: var(--dx-html-editor-table-resizer-thickness), $table-resizer-highlight-thickness: var(--dx-html-editor-table-resizer-highlight-thickness), $htmleditor-code-block-bg: var(--dx-html-editor-code-block-bg), @@ -296,12 +296,9 @@ text-align: start; } -/* - * Consumers hand-write .dx-mention outside the editor, where the component tier does not - * reach: without the fallback the whole declaration dies there and the highlight disappears. - */ +// a mention renders wherever the editor's value is rendered, so it reads the system tier .dx-mention { - background-color: var(--dx-html-editor-mention-bg, #{$html-editor-mention-bg}); + background-color: var(--dx-mention-bg); } .dx-suggestion-list-wrapper { diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_public.scss index 59f21530d810..23cfd4b44e9f 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_public.scss @@ -24,10 +24,6 @@ --dx-html-editor-file-uploader-input-wrapper-border-width: #{$html-editor-file-uploader-input-wrapper-border-width}; --dx-html-editor-highlighted-row-bg: #{$html-editor-highlighted-row-bg}; --dx-html-editor-input-wrapper-gap: #{$html-editor-input-wrapper-gap}; - --dx-html-editor-mention-bg: #{$html-editor-mention-bg}; - --dx-html-editor-mention-border-radius: #{$html-editor-mention-border-radius}; - --dx-html-editor-mention-margin-inline: #{$html-editor-mention-margin-inline}; - --dx-html-editor-mention-padding-block: #{$html-editor-mention-padding-block}; --dx-html-editor-padding-block: #{$html-editor-padding-block}; --dx-html-editor-padding-inline: #{$html-editor-padding-inline}; --dx-html-editor-placeholder-content: #{$html-editor-placeholder-content}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_sizes.scss index 5132daa188a7..0346f3b8a051 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_sizes.scss @@ -61,8 +61,5 @@ $html-editor-blockquote-padding-inline-start: ds.$spacing-120 !default; $html-editor-blockquote-border-inline-start-width: ds.$border-width-40 !default; $html-editor-table-cell-padding: ds.$spacing-20 ds.$spacing-50 !default; $html-editor-placeholder-inset-inline: ds.$spacing-150 !default; -$html-editor-mention-padding-block: ds.$spacing-10 !default; -$html-editor-mention-border-radius: ds.$border-radius-20 !default; -$html-editor-mention-margin-inline: ds.$spacing-20 !default; $html-editor-table-resizer-thickness: ds.$spacing-50 !default; $html-editor-table-resizer-highlight-thickness: ds.$spacing-30 !default; diff --git a/packages/devextreme-scss/tests/fluent-next-naming.baseline.json b/packages/devextreme-scss/tests/fluent-next-naming.baseline.json index b0435de16260..93d0f2261172 100644 --- a/packages/devextreme-scss/tests/fluent-next-naming.baseline.json +++ b/packages/devextreme-scss/tests/fluent-next-naming.baseline.json @@ -573,7 +573,6 @@ "fluent-next/gridBase/_index.scss: $grid-cell-padding-block", "fluent-next/gridBase/_index.scss: $grid-cell-padding-inline", "fluent-next/gridBase/_index.scss: $grid-editor-input-padding", - "fluent-next/htmlEditor/_index.scss: $html-editor-mention-bg", "fluent-next/progressBar/_index.scss: $progress-bar-indeterminate-width", "fluent-next/progressBar/_index.scss: $progress-bar-indeterminate-width", "fluent-next/scheduler/_index.scss: $scheduler-appointment-15min-height", diff --git a/packages/devextreme-scss/tools/naming/derive-registries.mjs b/packages/devextreme-scss/tools/naming/derive-registries.mjs index 0695281650fa..8cd01cc8dbda 100644 --- a/packages/devextreme-scss/tools/naming/derive-registries.mjs +++ b/packages/devextreme-scss/tools/naming/derive-registries.mjs @@ -396,6 +396,13 @@ const OVERRIDES = { // editor family plus fieldset. 'invalid-badge', 'valid-badge', + // Markup a widget writes into its own value, which consumers then render anywhere: the + // htmlEditor emits .dx-mention into the HTML it saves, and the Mentions demo shows that HTML + // in a chat log with no editor around it. The base layer already says so — `.dx-mention` is a + // bare selector there, while `.dx-variable` is nested under `.dx-htmleditor-content`. A + // component-tier token would only resolve inside the editor and the highlight would vanish + // everywhere else, so the value is published on :root. + 'mention', 'focus-rect', // ds.$focus-rect-color-* 'shadow', // ds.$color-shadow-* / ds.$box-shadow-* 'typography', // ds.$font-* / ds.$line-height-* diff --git a/packages/devextreme-scss/tools/naming/registries.json b/packages/devextreme-scss/tools/naming/registries.json index d611423efe69..49ad105b8441 100644 --- a/packages/devextreme-scss/tools/naming/registries.json +++ b/packages/devextreme-scss/tools/naming/registries.json @@ -190,6 +190,7 @@ "focus-rect", "global", "invalid-badge", + "mention", "motion", "palette", "separator", diff --git a/packages/devextreme-scss/tools/review/nested-scopes.json b/packages/devextreme-scss/tools/review/nested-scopes.json index 8d73daefdd29..d5af662b377b 100644 --- a/packages/devextreme-scss/tools/review/nested-scopes.json +++ b/packages/devextreme-scss/tools/review/nested-scopes.json @@ -304,7 +304,6 @@ "dx-htmleditor-toolbar-format", "dx-htmleditor-toolbar-menu-separator", "dx-htmleditor-toolbar-separator", - "dx-mention", "dx-resize-frame", "dx-table-resize-frame" ], From 96b049182b654acbf7e27e82006897d3bd6313aa Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Wed, 2 Sep 2026 10:51:34 +0200 Subject: [PATCH 19/25] Finishing tokenization of scheduler --- .../widgets/fluent-next/scheduler/_index.scss | 14 ++---- .../tests/base-size-markers.baseline.json | 2 +- .../tools/review/nested-scopes.json | 1 + .../tools/sizes/lists/BASE-SIZES.md | 15 +----- .../tools/sizes/lists/theme-settable.json | 50 +++++++++++++------ 5 files changed, 43 insertions(+), 39 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_index.scss index 379e4fbd4c79..88c1490f6b67 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/scheduler/_index.scss @@ -15,6 +15,11 @@ $scheduler-appointment-reduced-content-padding: var(--dx-scheduler-appointment-reduced-content-padding), $scheduler-grouped-appointment-month-text-size: var(--dx-scheduler-appointment-month-text-font-size), $scheduler-border-width: var(--dx-scheduler-border-width), + $scheduler-workspace-info-font-size: var(--dx-scheduler-workspace-info-font-size), + $scheduler-small-font-size: var(--dx-scheduler-small-font-size), + $scheduler-group-header-table-cell-height: var(--dx-scheduler-group-header-cell-height), + $scheduler-month-date-text-size: var(--dx-scheduler-month-date-text-font-size), + $scheduler-month-date-text-padding: var(--dx-scheduler-month-date-text-padding), $scheduler-reduced-icon-offset: var(--dx-scheduler-reduced-icon-inset-inline), $scheduler-recurrence-icon-offset: var(--dx-scheduler-recurrence-icon-inset-inline), $scheduler-agenda-appointment-margin: var(--dx-scheduler-agenda-appointment-margin), @@ -827,11 +832,6 @@ } } -.dx-scheduler-header-panel, -.dx-scheduler-time-panel { - font-size: var(--dx-scheduler-workspace-info-font-size); -} - .dx-scheduler-work-space-grouped:not(.dx-scheduler-agenda) .dx-scheduler-group-row th, .dx-scheduler-work-space.dx-scheduler-work-space-grouped:not(.dx-scheduler-work-space-vertical-grouped):not(.dx-scheduler-timeline) .dx-scheduler-last-group-cell { border-right: var(--dx-scheduler-last-group-cell-border-inline-end); @@ -995,10 +995,6 @@ } } -.dx-scheduler-agenda-nodata { - font-size: var(--dx-scheduler-workspace-info-font-size); -} - .dx-popup-content .dx-scheduler-dropdown-appointment-buttons-block { .dx-button { min-width: auto; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 31dc5774ac06..bda75d8c0a3a 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,5 +1,5 @@ { - "openKnobs": 10, + "openKnobs": 0, "unclassified": 176, "unclassifiedByWidget": { "gridBase": 75, diff --git a/packages/devextreme-scss/tools/review/nested-scopes.json b/packages/devextreme-scss/tools/review/nested-scopes.json index d5af662b377b..d6e702f1f6bf 100644 --- a/packages/devextreme-scss/tools/review/nested-scopes.json +++ b/packages/devextreme-scss/tools/review/nested-scopes.json @@ -420,6 +420,7 @@ "dx-scheduler-fixed-appointments", "dx-scheduler-group-flex-container", "dx-scheduler-group-flex-container-hierarchical", + "dx-scheduler-group-header", "dx-scheduler-group-row", "dx-scheduler-group-table", "dx-scheduler-header", diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index d1969682bd88..545b1c3da20e 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -19,20 +19,7 @@ and carries a marker saying why. ## What the theme can already set -457 occurrences in 394 `!default` variables. fluent-next already passes 423; 10 are open knobs nobody turns. - -Open knobs — theme-side work, the shared layer stays untouched: - -- `$scheduler-workspace-info-font-size` — scss/widgets/base/scheduler/_index.scss:109 -- `$scheduler-small-font-size` — scss/widgets/base/scheduler/_index.scss:110 -- `$scheduler-group-header-table-cell-height` — scss/widgets/base/scheduler/_index.scss:111 -- `$scheduler-month-date-text-size` — scss/widgets/base/scheduler/_index.scss:112 -- `$scheduler-month-date-text-padding` — scss/widgets/base/scheduler/_index.scss:113 -- `$scheduler-workspace-info-font-size` — scss/widgets/base/scheduler/views/_index.scss:45 -- `$scheduler-small-font-size` — scss/widgets/base/scheduler/views/_index.scss:46 -- `$scheduler-group-header-table-cell-height` — scss/widgets/base/scheduler/views/_index.scss:55 -- `$scheduler-month-date-text-size` — scss/widgets/base/scheduler/views/_index.scss:59 -- `$scheduler-month-date-text-padding` — scss/widgets/base/scheduler/views/_index.scss:61 +457 occurrences in 394 `!default` variables. fluent-next already passes 433; 0 are open knobs nobody turns. ## What is nailed into the layer diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 88c6dd975870..3ea652a03629 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -9,8 +9,8 @@ "summary": { "occurrences": 457, "variables": 394, - "injected": 423, - "open": 10, + "injected": 433, + "open": 0, "parameters": 24 }, "places": [ @@ -830,7 +830,7 @@ "kind": "module-variable", "status": "injected", "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", - "setTo": "var(--dx-html-editor-mention-padding-block)" + "setTo": "var(--dx-mention-padding-block)" }, { "file": "scss/widgets/base/_htmlEditor.scss", @@ -846,7 +846,7 @@ "kind": "module-variable", "status": "injected", "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", - "setTo": "var(--dx-html-editor-mention-border-radius)" + "setTo": "var(--dx-mention-border-radius)" }, { "file": "scss/widgets/base/_htmlEditor.scss", @@ -862,7 +862,7 @@ "kind": "module-variable", "status": "injected", "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", - "setTo": "var(--dx-html-editor-mention-margin-inline)" + "setTo": "var(--dx-mention-margin-inline)" }, { "file": "scss/widgets/base/_htmlEditor.scss", @@ -4929,7 +4929,9 @@ "text": "$scheduler-workspace-info-font-size: 20px !default;", "variable": "scheduler-workspace-info-font-size", "kind": "module-variable", - "status": "open" + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-workspace-info-font-size)" }, { "file": "scss/widgets/base/scheduler/_index.scss", @@ -4943,7 +4945,9 @@ "text": "$scheduler-small-font-size: 14px !default;", "variable": "scheduler-small-font-size", "kind": "module-variable", - "status": "open" + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-small-font-size)" }, { "file": "scss/widgets/base/scheduler/_index.scss", @@ -4957,7 +4961,9 @@ "text": "$scheduler-group-header-table-cell-height: 30px !default;", "variable": "scheduler-group-header-table-cell-height", "kind": "module-variable", - "status": "open" + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-group-header-cell-height)" }, { "file": "scss/widgets/base/scheduler/_index.scss", @@ -4971,7 +4977,9 @@ "text": "$scheduler-month-date-text-size: 16px !default;", "variable": "scheduler-month-date-text-size", "kind": "module-variable", - "status": "open" + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-month-date-text-font-size)" }, { "file": "scss/widgets/base/scheduler/_index.scss", @@ -4985,7 +4993,9 @@ "text": "$scheduler-month-date-text-padding: 6px !default;", "variable": "scheduler-month-date-text-padding", "kind": "module-variable", - "status": "open" + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-month-date-text-padding)" }, { "file": "scss/widgets/base/scheduler/_index.scss", @@ -5914,7 +5924,9 @@ "text": "$scheduler-workspace-info-font-size: 20px !default;", "variable": "scheduler-workspace-info-font-size", "kind": "module-variable", - "status": "open" + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-workspace-info-font-size)" }, { "file": "scss/widgets/base/scheduler/views/_index.scss", @@ -5928,7 +5940,9 @@ "text": "$scheduler-small-font-size: 14px !default;", "variable": "scheduler-small-font-size", "kind": "module-variable", - "status": "open" + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-small-font-size)" }, { "file": "scss/widgets/base/scheduler/views/_index.scss", @@ -5942,7 +5956,9 @@ "text": "$scheduler-group-header-table-cell-height: 30px !default;", "variable": "scheduler-group-header-table-cell-height", "kind": "module-variable", - "status": "open" + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-group-header-cell-height)" }, { "file": "scss/widgets/base/scheduler/views/_index.scss", @@ -5956,7 +5972,9 @@ "text": "$scheduler-month-date-text-size: 16px !default;", "variable": "scheduler-month-date-text-size", "kind": "module-variable", - "status": "open" + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-month-date-text-font-size)" }, { "file": "scss/widgets/base/scheduler/views/_index.scss", @@ -5970,7 +5988,9 @@ "text": "$scheduler-month-date-text-padding: 6px !default;", "variable": "scheduler-month-date-text-padding", "kind": "module-variable", - "status": "open" + "status": "injected", + "setBy": "scss/widgets/fluent-next/scheduler/_index.scss", + "setTo": "var(--dx-scheduler-month-date-text-padding)" }, { "file": "scss/widgets/base/scheduler/views/_index.scss", From 08a18b501b6bc7d063574af9d0b6f6d3554aee04 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Wed, 2 Sep 2026 11:11:23 +0200 Subject: [PATCH 20/25] The rest of components --- .../scss/widgets/base/_htmlEditor.scss | 23 ++- .../scss/widgets/base/list/_index.scss | 2 +- .../scss/widgets/base/scheduler/_index.scss | 2 +- .../scheduler/appointment/regular/_index.scss | 2 +- .../base/scheduler/layout/_header.scss | 2 +- .../widgets/base/scheduler/views/_index.scss | 14 +- .../base/scheduler/views/day/_index.scss | 2 +- .../base/scheduler/views/month/_index.scss | 2 +- .../scheduler/views/timelines/_index.scss | 2 +- .../fluent-next/htmlEditor/_index.scss | 2 +- .../scss/widgets/fluent-next/list/_index.scss | 1 + .../tests/base-size-markers.baseline.json | 9 +- .../tools/review/nested-scopes.json | 1 + .../devextreme-scss/tools/review/px-audit.mjs | 50 ++++- .../tools/sizes/lists/BASE-SIZES.md | 98 +-------- .../tools/sizes/lists/base-owned.json | 189 +++++++----------- .../tools/sizes/lists/theme-settable.json | 69 +++++-- 17 files changed, 207 insertions(+), 263 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/_htmlEditor.scss b/packages/devextreme-scss/scss/widgets/base/_htmlEditor.scss index 1c48f3ec2173..7419d438b14a 100644 --- a/packages/devextreme-scss/scss/widgets/base/_htmlEditor.scss +++ b/packages/devextreme-scss/scss/widgets/base/_htmlEditor.scss @@ -32,6 +32,7 @@ $blockquote-padding-inline-start: 12px !default; $blockquote-border-inline-start-width: 4px !default; $table-cell-padding: 2px 5px !default; $placeholder-inset-inline: 15px !default; +$htmleditor-content-padding: 12px 15px !default; $mention-padding-block: 1px !default; $mention-border-radius: 2px !default; $mention-margin-inline: 2px !default; @@ -150,7 +151,7 @@ $table-resizer-highlight-thickness: 3px !default; display: flex; flex: 1; flex-basis: auto; - min-height: 1px; + min-height: 1px; // dx-structural: lets the flex item shrink below its content, not a designed height margin: 0; position: relative; overflow: hidden; @@ -175,7 +176,7 @@ $table-resizer-highlight-thickness: 3px !default; width: 100%; outline: none; overflow-y: auto; - padding: 12px 15px; + padding: $htmleditor-content-padding; white-space: pre-wrap; word-wrap: break-word; @@ -366,7 +367,7 @@ $table-resizer-highlight-thickness: 3px !default; .dx-suggestion-list-wrapper { .dx-list { - min-height: 35px; + min-height: 35px; // dx-fixed-size: the mention suggestion list keeps a row of space while filtering .dx-scrollable-content { margin: 0; @@ -375,7 +376,7 @@ $table-resizer-highlight-thickness: 3px !default; } .dx-suggestion-list { - min-width: 50px; + min-width: 50px; // dx-fixed-size: the narrowest the mention suggestion list may get .dx-list-item { display: block; @@ -388,7 +389,7 @@ $table-resizer-highlight-thickness: 3px !default; } .dx-formdialog-form { - min-width: 360px; + min-width: 360px; // dx-fixed-size: the link/image dialog form width } .dx-aidialog { @@ -413,14 +414,14 @@ $table-resizer-highlight-thickness: 3px !default; .dx-aidialog-title { display: flex; align-items: center; - gap: 6px; + gap: 6px; // dx-fixed-size: gap between the AI dialog title icon and its text font-weight: $htmleditor-aidialog-title-font-weight; } .dx-overlay-content { &.dx-popup-fullscreen { .dx-formdialog-form { - min-width: 240px; + min-width: 240px; // dx-fixed-size: the same dialog form once the popup goes fullscreen } } } @@ -433,7 +434,7 @@ $table-resizer-highlight-thickness: 3px !default; .dx-background-format { .dx-icon-color, .dx-icon-background { - border-bottom: 3px solid transparent; + border-bottom: 3px solid transparent; // dx-line-width: the strip under the colour-format icon that shows the picked colour } } @@ -453,7 +454,7 @@ $table-resizer-highlight-thickness: 3px !default; .dx-resize-frame { position: absolute; box-sizing: content-box; - border: 1px dashed lightslategrey; + border: 1px dashed lightslategrey; // dx-line-width: hairline of the image resize frame pointer-events: none; .dx-resizable-handle { @@ -464,7 +465,7 @@ $table-resizer-highlight-thickness: 3px !default; .dx-resizable-handle-corner-top-left, .dx-resizable-handle-corner-bottom-right, .dx-resizable-handle-corner-bottom-left { - border: 1px solid white; + border: 1px solid white; // dx-line-width: hairline around a resize handle width: $resize-handle-size; height: $resize-handle-size; border-radius: 0; @@ -520,7 +521,7 @@ $table-resizer-highlight-thickness: 3px !default; position: absolute; width: $resize-handle-size; height: $resize-handle-size; - border: 1px solid white; + border: 1px solid white; // dx-line-width: hairline around a resize handle // dx-line-width: hairline around a resize handle @at-root #{selector.append(".dx-touch-device", &)} { width: $touch-resize-handle-size; diff --git a/packages/devextreme-scss/scss/widgets/base/list/_index.scss b/packages/devextreme-scss/scss/widgets/base/list/_index.scss index 44ef994f8c3b..ddcf7c6908b3 100644 --- a/packages/devextreme-scss/scss/widgets/base/list/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/list/_index.scss @@ -3,7 +3,7 @@ $list-response-wait-opacity: 0.5 !default; -$list-searchbox-margin-bottom: 5px; +$list-searchbox-margin-bottom: 5px !default; // Design sizing values (parametrizable; fluent-next injects tokens) $list-item-badge-container-width: 20px !default; diff --git a/packages/devextreme-scss/scss/widgets/base/scheduler/_index.scss b/packages/devextreme-scss/scss/widgets/base/scheduler/_index.scss index 8214394f2eee..2ff440da9b89 100644 --- a/packages/devextreme-scss/scss/widgets/base/scheduler/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/scheduler/_index.scss @@ -462,7 +462,7 @@ $scheduler-appointment-content-padding-right: 5px !default; right: 0; /* NOTE: Cell has 1px table cell () border, so -1px bottom is ok here. */ - bottom: -1px; + bottom: -1px; // dx-px-nudge: sits on the 1px border, see the note above height: $scheduler-header-panel-current-time-cell-height; background-color: $scheduler-time-indicator-color; } diff --git a/packages/devextreme-scss/scss/widgets/base/scheduler/appointment/regular/_index.scss b/packages/devextreme-scss/scss/widgets/base/scheduler/appointment/regular/_index.scss index 16494c6d774f..d9576dcd663f 100644 --- a/packages/devextreme-scss/scss/widgets/base/scheduler/appointment/regular/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/scheduler/appointment/regular/_index.scss @@ -144,7 +144,7 @@ $appointment-reduced-icon-rtl-left: null !default; } .dx-resizable-handle-left { - left: -1px; + left: -1px; // dx-px-nudge: pulls the resize handle onto the appointment's 1px border } .dx-scheduler-appointment-recurrence-icon { diff --git a/packages/devextreme-scss/scss/widgets/base/scheduler/layout/_header.scss b/packages/devextreme-scss/scss/widgets/base/scheduler/layout/_header.scss index f58cba3e9c35..32ab0190d027 100644 --- a/packages/devextreme-scss/scss/widgets/base/scheduler/layout/_header.scss +++ b/packages/devextreme-scss/scss/widgets/base/scheduler/layout/_header.scss @@ -6,7 +6,7 @@ $arrow-down: "\f016"; ) { border: $border; border-color: $border-color; - margin-bottom: -1px; + margin-bottom: -1px; // dx-px-nudge: collapses the header border with the row below position: relative; z-index: 1; width: 100%; diff --git a/packages/devextreme-scss/scss/widgets/base/scheduler/views/_index.scss b/packages/devextreme-scss/scss/widgets/base/scheduler/views/_index.scss index 45d09ac9e4b5..ee7d6d730edc 100644 --- a/packages/devextreme-scss/scss/widgets/base/scheduler/views/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/scheduler/views/_index.scss @@ -118,7 +118,7 @@ $scheduler-renovation-virtual-row-height: 50px !default; &::before { position: absolute; - top: if(meta.type-of($scheduler-header-panel-table-cell-height) == number and meta.type-of($scheduler-current-time-cell-border-size) == number, $scheduler-header-panel-table-cell-height - $scheduler-current-time-cell-border-size - 1, calc(#{$scheduler-header-panel-table-cell-height} - #{$scheduler-current-time-cell-border-size} - 1px)); + top: if(meta.type-of($scheduler-header-panel-table-cell-height) == number and meta.type-of($scheduler-current-time-cell-border-size) == number, $scheduler-header-panel-table-cell-height - $scheduler-current-time-cell-border-size - 1, calc(#{$scheduler-header-panel-table-cell-height} - #{$scheduler-current-time-cell-border-size} - 1px)); // dx-px-nudge: -1px under the derived top offset, so the indicator overlaps the border right: 0; width: 100%; height: $scheduler-current-time-cell-border-size; @@ -402,7 +402,7 @@ $scheduler-renovation-virtual-row-height: 50px !default; @include flex-container(row, nowrap); flex: 0 0 auto; - padding: 0 5px; + padding: 0 5px; // dx-fixed-size: horizontal padding of the time panel cell height: 100%; width: $scheduler-left-column-width; justify-content: flex-start; @@ -694,7 +694,7 @@ $scheduler-renovation-virtual-row-height: 50px !default; border-bottom: $scheduler-views-time-panel-border-bottom; > div { - margin-top: -13px; + margin-top: -13px; // dx-px-nudge: lifts the hour label to straddle the cell border } .dx-scheduler-small & { @@ -704,7 +704,7 @@ $scheduler-renovation-virtual-row-height: 50px !default; &::after { position: absolute; - bottom: -1px; + bottom: -1px; // dx-px-nudge: sits the time indicator on the cell border width: $scheduler-views-time-indicator-width; height: $scheduler-views-time-indicator-height; right: 0; @@ -841,7 +841,7 @@ $scheduler-renovation-virtual-row-height: 50px !default; &.dx-scheduler-work-space-work-week { .dx-scheduler-all-day-title { top: 0; - height: 50px !important; // stylelint-disable-line declaration-no-important + height: $scheduler-workspace-date-table-cell-height !important; // stylelint-disable-line declaration-no-important border-bottom: none; } } @@ -852,7 +852,7 @@ $scheduler-renovation-virtual-row-height: 50px !default; } .dx-scheduler-all-day-table-row { - height: 50px; + height: $scheduler-workspace-date-table-cell-height; } .dx-scheduler-time-panel-cell { @@ -867,7 +867,7 @@ $scheduler-renovation-virtual-row-height: 50px !default; &.dx-scheduler-last-group-cell { border-bottom: none; - box-shadow: inset 0 -1px 0 $scheduler-base-border-color; + box-shadow: inset 0 -1px 0 $scheduler-base-border-color; // dx-line-width: hairline standing in for the removed border-bottom } } diff --git a/packages/devextreme-scss/scss/widgets/base/scheduler/views/day/_index.scss b/packages/devextreme-scss/scss/widgets/base/scheduler/views/day/_index.scss index 4d1205c67e90..7322fcc918ac 100644 --- a/packages/devextreme-scss/scss/widgets/base/scheduler/views/day/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/scheduler/views/day/_index.scss @@ -42,7 +42,7 @@ $scheduler-base-border-color: null !default; &:not(.dx-scheduler-work-space-grouped) { .dx-scheduler-header-panel { - margin-top: 1px; + margin-top: 1px; // dx-px-nudge: keeps the ungrouped header panel off the border above } } diff --git a/packages/devextreme-scss/scss/widgets/base/scheduler/views/month/_index.scss b/packages/devextreme-scss/scss/widgets/base/scheduler/views/month/_index.scss index f19bd0a0e64a..d08189bb53ff 100644 --- a/packages/devextreme-scss/scss/widgets/base/scheduler/views/month/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/scheduler/views/month/_index.scss @@ -70,7 +70,7 @@ $scheduler-first-month-cell-background-color: null !default; } .dx-scheduler-group-header { - box-shadow: 0 -2px 0 $scheduler-base-border-color; + box-shadow: 0 -2px 0 $scheduler-base-border-color; // dx-line-width: 2px line standing in for the removed border-bottom border-bottom: none; } diff --git a/packages/devextreme-scss/scss/widgets/base/scheduler/views/timelines/_index.scss b/packages/devextreme-scss/scss/widgets/base/scheduler/views/timelines/_index.scss index a45158ca3d98..dffb3a8ba2a6 100644 --- a/packages/devextreme-scss/scss/widgets/base/scheduler/views/timelines/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/scheduler/views/timelines/_index.scss @@ -185,7 +185,7 @@ $scheduler-timeline-cell-width: null !default; } .dx-scheduler-header-panel-empty-cell { - border-bottom: 1px solid; + border-bottom: 1px solid; // dx-line-width: hairline under the empty header cell border-bottom-color: $scheduler-accent-border-color; } } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss index 86a78c19cdd6..65d54e379582 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/htmlEditor/_index.scss @@ -18,6 +18,7 @@ $blockquote-border-inline-start-width: var(--dx-html-editor-blockquote-border-inline-start-width), $table-cell-padding: var(--dx-html-editor-table-cell-padding), $placeholder-inset-inline: var(--dx-html-editor-placeholder-inset-inline), + $htmleditor-content-padding: var(--dx-html-editor-padding-block) var(--dx-html-editor-padding-inline), $mention-padding-block: var(--dx-mention-padding-block), $mention-border-radius: var(--dx-mention-border-radius), $mention-margin-inline: var(--dx-mention-margin-inline), @@ -134,7 +135,6 @@ .dx-htmleditor-content { line-height: var(--dx-global-line-height); - padding: var(--dx-html-editor-padding-block) var(--dx-html-editor-padding-inline); &.ql-blank::before { // stylelint-disable-line selector-class-pattern color: textEditorColors.$text-editor-placeholder; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/list/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/list/_index.scss index 79e35fdd0ea3..15efe3fd03e2 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/list/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/list/_index.scss @@ -13,6 +13,7 @@ $list-static-delete-button-padding: var(--dx-list-delete-button-static-padding), $list-next-button-padding: var(--dx-list-next-button-padding), $list-response-wait-opacity: var(--dx-list-response-wait-opacity), + $list-searchbox-margin-bottom: var(--dx-list-search-box-margin-block-end), ); @use "../../base/list/mixins" as *; @use "../radioButton/colors" as radioButtonColors; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index bda75d8c0a3a..527b27f815d2 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,13 +1,8 @@ { "openKnobs": 0, - "unclassified": 176, + "unclassified": 142, "unclassifiedByWidget": { "gridBase": 75, - "colorView": 67, - "htmlEditor": 13, - "scheduler": 13, - "cardView": 4, - "textEditor": 3, - "list": 1 + "colorView": 67 } } diff --git a/packages/devextreme-scss/tools/review/nested-scopes.json b/packages/devextreme-scss/tools/review/nested-scopes.json index d6e702f1f6bf..7bf8873018df 100644 --- a/packages/devextreme-scss/tools/review/nested-scopes.json +++ b/packages/devextreme-scss/tools/review/nested-scopes.json @@ -327,6 +327,7 @@ "dx-list-items", "dx-list-next-button", "dx-list-reorder-handle", + "dx-list-search", "dx-list-select-all", "dx-list-select-all-label", "dx-list-slide-menu-button", diff --git a/packages/devextreme-scss/tools/review/px-audit.mjs b/packages/devextreme-scss/tools/review/px-audit.mjs index ade44356ac16..9e63b2999f33 100644 --- a/packages/devextreme-scss/tools/review/px-audit.mjs +++ b/packages/devextreme-scss/tools/review/px-audit.mjs @@ -49,15 +49,61 @@ const split = (line) => { return at === -1 ? { code: line, comment: '' } : { code: line.slice(0, at), comment: line.slice(at) }; }; +const ENDS_STATEMENT = /[;{}]$/; +const nonBlankAbove = (lines, index) => { + for (let at = index - 1; at >= 0; at -= 1) if (lines[at].trim() !== '') return at; + return -1; +}; + +/* + * A marker is written next to the declaration it explains, but a px literal inside a multi-line + * declaration lands on a continuation line, where there is no comment to find — the two-layer + * box-shadow of cardView's dragged item and the clip-path of textEditor's label both carry a + * reviewed marker that the line-by-line lookup could not see. So for a continuation line the + * marker is inherited from the declaration: the trailing comments of its earlier lines plus the + * comment attached above its first line, block comments included (those are blanked in `code`, + * which is why the raw text is passed in separately). + * + * A line counts as a continuation only when the statement above it is unfinished, so a plain + * `min-height: 1px;` never inherits anything from its neighbours. + */ +const inheritedComment = (raw, index) => { + const above = nonBlankAbove(raw, index); + if (above === -1 || ENDS_STATEMENT.test(raw[above].trim())) return ''; + + let start = index; + while (start > 0) { + const previous = nonBlankAbove(raw, start); + if (previous === -1 || ENDS_STATEMENT.test(raw[previous].trim())) break; + start = previous; + } + + // a comment line contributes its whole text (a block comment carries no `//` to split on); + // a code line contributes only its trailing comment, so a marker can never be read out of code + const isComment = (text) => text.startsWith('//') || text.startsWith('/*') + || text.startsWith('*') || text.endsWith('*/'); + const parts = raw.slice(start, index) + .map((line) => (isComment(line.trim()) ? line : split(line).comment)); + for (let at = start - 1; at >= 0; at -= 1) { + const text = raw[at].trim(); + if (text === '' || !isComment(text)) break; + parts.push(text); + if (text.startsWith('/*')) break; + } + return parts.join('\n'); +}; + export const scanPxLiterals = (root = themeDir) => { const marked = []; const unmarked = []; scssFiles(root).forEach((file) => { - blankBlockComments(readFileSync(file, 'utf8')).split('\n').forEach((line, index) => { + const raw = readFileSync(file, 'utf8').split('\n'); + blankBlockComments(raw.join('\n')).split('\n').forEach((line, index) => { const { code, comment } = split(line); const literals = code.match(PX_LITERAL); if (!literals) return; - const marker = MARKERS.find((entry) => comment.includes(entry)) ?? null; + const scope = comment || inheritedComment(raw, index); + const marker = MARKERS.find((entry) => scope.includes(entry)) ?? null; const place = { file: relative(packageRoot, file), line: index + 1, diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 545b1c3da20e..54100f99d619 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -11,27 +11,22 @@ and carries a marker saying why. | | occurrences | |---|---| -| a raw grep of the layer | 766 | -| …of those, inside comments (commented-out code, prose) | 9 | -| **in code** | **757** | -| — the theme can already set from outside | 457 | -| — nailed into the shared layer | 300 | +| a raw grep of the layer | 768 | +| …of those, inside comments (commented-out code, prose) | 13 | +| **in code** | **755** | +| — the theme can already set from outside | 460 | +| — nailed into the shared layer | 295 | ## What the theme can already set -457 occurrences in 394 `!default` variables. fluent-next already passes 433; 0 are open knobs nobody turns. +460 occurrences in 396 `!default` variables. fluent-next already passes 436; 0 are open knobs nobody turns. ## What is nailed into the layer -| widget | inline | geometry | local-var | calc | total | -|---|---|---|---|---|---| -| gridBase | 50 | 7 | 18 | | **75** | -| colorView | 35 | 24 | 8 | | **67** | -| htmlEditor | 8 | 4 | 1 | | **13** | -| scheduler | 9 | 3 | | 1 | **13** | -| cardView | 4 | | | | **4** | -| textEditor | 3 | | | | **3** | -| list | | | 1 | | **1** | +| widget | inline | geometry | local-var | total | +|---|---|---|---|---| +| gridBase | 50 | 7 | 18 | **75** | +| colorView | 35 | 24 | 8 | **67** | ## Places, by widget @@ -232,76 +227,3 @@ and carries a marker saying why. `border: 1px solid;` - `scss/widgets/base/colorView/_mixins.scss:16` · geometry `box-shadow: inset 0 -5px 0 3px $handle-color, inset 0 5px 0 3px $handle-color, inset 0 -6px 1px 4px $handle-border-color, inset 0 6px 1px 4px $handle-border-color;` - -### htmlEditor — 13 - -- `scss/widgets/base/_htmlEditor.scss:20` · local-var - `$resize-handle-size: 11px;` -- `scss/widgets/base/_htmlEditor.scss:153` · inline - `min-height: 1px;` -- `scss/widgets/base/_htmlEditor.scss:178` · inline - `padding: 12px 15px;` -- `scss/widgets/base/_htmlEditor.scss:369` · inline - `min-height: 35px;` -- `scss/widgets/base/_htmlEditor.scss:378` · inline - `min-width: 50px;` -- `scss/widgets/base/_htmlEditor.scss:391` · inline - `min-width: 360px;` -- `scss/widgets/base/_htmlEditor.scss:416` · inline - `gap: 6px;` -- `scss/widgets/base/_htmlEditor.scss:423` · inline - `min-width: 240px;` -- `scss/widgets/base/_htmlEditor.scss:436` · geometry - `border-bottom: 3px solid transparent;` -- `scss/widgets/base/_htmlEditor.scss:456` · geometry - `border: 1px dashed lightslategrey;` -- `scss/widgets/base/_htmlEditor.scss:467` · geometry - `border: 1px solid white;` -- `scss/widgets/base/_htmlEditor.scss:523` · geometry - `border: 1px solid white;` - -### scheduler — 13 - -- `scss/widgets/base/scheduler/_index.scss:465` · inline - `bottom: -1px;` -- `scss/widgets/base/scheduler/appointment/regular/_index.scss:147` · inline - `left: -1px;` -- `scss/widgets/base/scheduler/layout/_header.scss:9` · inline - `margin-bottom: -1px;` -- `scss/widgets/base/scheduler/views/_index.scss:121` · calc - `top: if(meta.type-of($scheduler-header-panel-table-cell-height) == number and meta.type-of($scheduler-current-time-cell-border-size) == number, $scheduler-header-panel-table-cell-height - $scheduler-current-time-cell-border-size - 1, calc(#{$scheduler-header-panel-table-cell-height} - #{$scheduler-current-time-cell-border-size} - 1px));` -- `scss/widgets/base/scheduler/views/_index.scss:405` · inline - `padding: 0 5px;` -- `scss/widgets/base/scheduler/views/_index.scss:697` · inline - `margin-top: -13px;` -- `scss/widgets/base/scheduler/views/_index.scss:707` · inline - `bottom: -1px;` -- `scss/widgets/base/scheduler/views/_index.scss:844` · inline - `height: 50px !important; // stylelint-disable-line declaration-no-important` -- `scss/widgets/base/scheduler/views/_index.scss:855` · inline - `height: 50px;` -- `scss/widgets/base/scheduler/views/_index.scss:870` · geometry - `box-shadow: inset 0 -1px 0 $scheduler-base-border-color;` -- `scss/widgets/base/scheduler/views/day/_index.scss:45` · inline - `margin-top: 1px;` -- `scss/widgets/base/scheduler/views/month/_index.scss:73` · geometry - `box-shadow: 0 -2px 0 $scheduler-base-border-color;` -- `scss/widgets/base/scheduler/views/timelines/_index.scss:188` · geometry - `border-bottom: 1px solid;` - -### cardView — 4 - -- `scss/widgets/base/cardView/header_panel/item/_index.scss:89` · inline - `0 1px 3px $cardview-header-panel__item--dragged-box-shadow-color,` -- `scss/widgets/base/cardView/header_panel/item/_index.scss:90` · inline - `0 6px 8px $cardview-header-panel__item--dragged-box-shadow-color;` - -### textEditor — 3 - -- `scss/widgets/base/textEditor/_mixins.scss:201` · inline - `)} 1px -1px 1px);` - -### list — 1 - -- `scss/widgets/base/list/_index.scss:6` · local-var - `$list-searchbox-margin-bottom: 5px;` diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 97e15b2c503f..c94da4089bdd 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,11 +6,11 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 300, + "occurrences": 295, "byCategory": { - "inline": 147, + "inline": 143, "geometry": 69, - "local-var": 59, + "local-var": 58, "calc": 9, "structural": 8, "mixin-arg": 6, @@ -19,9 +19,9 @@ "byWidget": { "gridBase": 75, "colorView": 67, - "scheduler": 35, + "scheduler": 33, "textEditor": 26, - "htmlEditor": 18, + "htmlEditor": 16, "cardView": 15, "pivotGrid": 11, "ui": 8, @@ -41,22 +41,16 @@ "colorBox": 1, "diagram": 1, "gantt": 1, - "list": 1, "lookup": 1, "popover": 1, "stepper": 1, "toolbar": 1, "treeView": 1 }, - "unmarked": 176, + "unmarked": 142, "unmarkedByWidget": { "gridBase": 75, - "colorView": 67, - "htmlEditor": 13, - "scheduler": 13, - "cardView": 4, - "textEditor": 3, - "list": 1 + "colorView": 67 } }, "places": [ @@ -80,7 +74,7 @@ "11px" ], "occurrences": 1, - "marker": null, + "marker": "dx-fixed-size", "text": "$resize-handle-size: 11px;", "category": "local-var" }, @@ -98,19 +92,19 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 153, + "line": 154, "widget": "htmlEditor", "literals": [ "1px" ], "occurrences": 1, - "marker": null, - "text": "min-height: 1px;", + "marker": "dx-structural", + "text": "min-height: 1px; // dx-structural: lets the flex item shrink below its content, not a designed height", "category": "inline" }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 160, + "line": 161, "widget": "htmlEditor", "literals": [ "-100000px" @@ -122,7 +116,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 161, + "line": 162, "widget": "htmlEditor", "literals": [ "1px" @@ -134,20 +128,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 178, - "widget": "htmlEditor", - "literals": [ - "12px", - "15px" - ], - "occurrences": 2, - "marker": null, - "text": "padding: 12px 15px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/_htmlEditor.scss", - "line": 225, + "line": 226, "widget": "htmlEditor", "literals": [ "1px" @@ -159,7 +140,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 355, + "line": 356, "widget": "htmlEditor", "literals": [ "0.1px" @@ -171,110 +152,110 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 369, + "line": 370, "widget": "htmlEditor", "literals": [ "35px" ], "occurrences": 1, - "marker": null, - "text": "min-height: 35px;", + "marker": "dx-fixed-size", + "text": "min-height: 35px; // dx-fixed-size: the mention suggestion list keeps a row of space while filtering", "category": "inline" }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 378, + "line": 379, "widget": "htmlEditor", "literals": [ "50px" ], "occurrences": 1, - "marker": null, - "text": "min-width: 50px;", + "marker": "dx-fixed-size", + "text": "min-width: 50px; // dx-fixed-size: the narrowest the mention suggestion list may get", "category": "inline" }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 391, + "line": 392, "widget": "htmlEditor", "literals": [ "360px" ], "occurrences": 1, - "marker": null, - "text": "min-width: 360px;", + "marker": "dx-fixed-size", + "text": "min-width: 360px; // dx-fixed-size: the link/image dialog form width", "category": "inline" }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 416, + "line": 417, "widget": "htmlEditor", "literals": [ "6px" ], "occurrences": 1, - "marker": null, - "text": "gap: 6px;", + "marker": "dx-fixed-size", + "text": "gap: 6px; // dx-fixed-size: gap between the AI dialog title icon and its text", "category": "inline" }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 423, + "line": 424, "widget": "htmlEditor", "literals": [ "240px" ], "occurrences": 1, - "marker": null, - "text": "min-width: 240px;", + "marker": "dx-fixed-size", + "text": "min-width: 240px; // dx-fixed-size: the same dialog form once the popup goes fullscreen", "category": "inline" }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 436, + "line": 437, "widget": "htmlEditor", "literals": [ "3px" ], "occurrences": 1, - "marker": null, - "text": "border-bottom: 3px solid transparent;", + "marker": "dx-line-width", + "text": "border-bottom: 3px solid transparent; // dx-line-width: the strip under the colour-format icon that shows the picked colour", "category": "geometry" }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 456, + "line": 457, "widget": "htmlEditor", "literals": [ "1px" ], "occurrences": 1, - "marker": null, - "text": "border: 1px dashed lightslategrey;", + "marker": "dx-line-width", + "text": "border: 1px dashed lightslategrey; // dx-line-width: hairline of the image resize frame", "category": "geometry" }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 467, + "line": 468, "widget": "htmlEditor", "literals": [ "1px" ], "occurrences": 1, - "marker": null, - "text": "border: 1px solid white;", + "marker": "dx-line-width", + "text": "border: 1px solid white; // dx-line-width: hairline around a resize handle", "category": "geometry" }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 523, + "line": 524, "widget": "htmlEditor", "literals": [ "1px" ], "occurrences": 1, - "marker": null, - "text": "border: 1px solid white;", + "marker": "dx-line-width", + "text": "border: 1px solid white; // dx-line-width: hairline around a resize handle // dx-line-width: hairline around a resize handle", "category": "geometry" }, { @@ -687,7 +668,7 @@ "3px" ], "occurrences": 2, - "marker": null, + "marker": "dx-shadow-geometry", "text": "0 1px 3px $cardview-header-panel__item--dragged-box-shadow-color,", "category": "inline" }, @@ -700,7 +681,7 @@ "8px" ], "occurrences": 2, - "marker": null, + "marker": "dx-shadow-geometry", "text": "0 6px 8px $cardview-header-panel__item--dragged-box-shadow-color;", "category": "inline" }, @@ -2063,18 +2044,6 @@ "text": "$ai-chat-message-regenerate-button-border-radius: 4px;", "category": "local-var" }, - { - "file": "scss/widgets/base/list/_index.scss", - "line": 6, - "widget": "list", - "literals": [ - "5px" - ], - "occurrences": 1, - "marker": null, - "text": "$list-searchbox-margin-bottom: 5px;", - "category": "local-var" - }, { "file": "scss/widgets/base/lookup/_index.scss", "line": 10, @@ -2420,8 +2389,8 @@ "-1px" ], "occurrences": 1, - "marker": null, - "text": "bottom: -1px;", + "marker": "dx-px-nudge", + "text": "bottom: -1px; // dx-px-nudge: sits on the 1px border, see the note above", "category": "inline" }, { @@ -2432,8 +2401,8 @@ "-1px" ], "occurrences": 1, - "marker": null, - "text": "left: -1px;", + "marker": "dx-px-nudge", + "text": "left: -1px; // dx-px-nudge: pulls the resize handle onto the appointment's 1px border", "category": "inline" }, { @@ -2444,8 +2413,8 @@ "-1px" ], "occurrences": 1, - "marker": null, - "text": "margin-bottom: -1px;", + "marker": "dx-px-nudge", + "text": "margin-bottom: -1px; // dx-px-nudge: collapses the header border with the row below", "category": "inline" }, { @@ -2516,8 +2485,8 @@ "1px" ], "occurrences": 1, - "marker": null, - "text": "top: if(meta.type-of($scheduler-header-panel-table-cell-height) == number and meta.type-of($scheduler-current-time-cell-border-size) == number, $scheduler-header-panel-table-cell-height - $scheduler-current-time-cell-border-size - 1, calc(#{$scheduler-header-panel-table-cell-height} - #{$scheduler-current-time-cell-border-size} - 1px));", + "marker": "dx-px-nudge", + "text": "top: if(meta.type-of($scheduler-header-panel-table-cell-height) == number and meta.type-of($scheduler-current-time-cell-border-size) == number, $scheduler-header-panel-table-cell-height - $scheduler-current-time-cell-border-size - 1, calc(#{$scheduler-header-panel-table-cell-height} - #{$scheduler-current-time-cell-border-size} - 1px)); // dx-px-nudge: -1px under the derived top offset, so the indicator overlaps the border", "category": "calc" }, { @@ -2528,8 +2497,8 @@ "5px" ], "occurrences": 1, - "marker": null, - "text": "padding: 0 5px;", + "marker": "dx-fixed-size", + "text": "padding: 0 5px; // dx-fixed-size: horizontal padding of the time panel cell", "category": "inline" }, { @@ -2540,8 +2509,8 @@ "-13px" ], "occurrences": 1, - "marker": null, - "text": "margin-top: -13px;", + "marker": "dx-px-nudge", + "text": "margin-top: -13px; // dx-px-nudge: lifts the hour label to straddle the cell border", "category": "inline" }, { @@ -2552,32 +2521,8 @@ "-1px" ], "occurrences": 1, - "marker": null, - "text": "bottom: -1px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/scheduler/views/_index.scss", - "line": 844, - "widget": "scheduler", - "literals": [ - "50px" - ], - "occurrences": 1, - "marker": null, - "text": "height: 50px !important; // stylelint-disable-line declaration-no-important", - "category": "inline" - }, - { - "file": "scss/widgets/base/scheduler/views/_index.scss", - "line": 855, - "widget": "scheduler", - "literals": [ - "50px" - ], - "occurrences": 1, - "marker": null, - "text": "height: 50px;", + "marker": "dx-px-nudge", + "text": "bottom: -1px; // dx-px-nudge: sits the time indicator on the cell border", "category": "inline" }, { @@ -2588,8 +2533,8 @@ "-1px" ], "occurrences": 1, - "marker": null, - "text": "box-shadow: inset 0 -1px 0 $scheduler-base-border-color;", + "marker": "dx-line-width", + "text": "box-shadow: inset 0 -1px 0 $scheduler-base-border-color; // dx-line-width: hairline standing in for the removed border-bottom", "category": "geometry" }, { @@ -2600,8 +2545,8 @@ "1px" ], "occurrences": 1, - "marker": null, - "text": "margin-top: 1px;", + "marker": "dx-px-nudge", + "text": "margin-top: 1px; // dx-px-nudge: keeps the ungrouped header panel off the border above", "category": "inline" }, { @@ -2612,8 +2557,8 @@ "-2px" ], "occurrences": 1, - "marker": null, - "text": "box-shadow: 0 -2px 0 $scheduler-base-border-color;", + "marker": "dx-line-width", + "text": "box-shadow: 0 -2px 0 $scheduler-base-border-color; // dx-line-width: 2px line standing in for the removed border-bottom", "category": "geometry" }, { @@ -2624,8 +2569,8 @@ "1px" ], "occurrences": 1, - "marker": null, - "text": "border-bottom: 1px solid;", + "marker": "dx-line-width", + "text": "border-bottom: 1px solid; // dx-line-width: hairline under the empty header cell", "category": "geometry" }, { @@ -2661,7 +2606,7 @@ "-1px" ], "occurrences": 3, - "marker": null, + "marker": "dx-line-width", "text": ")} 1px -1px 1px);", "category": "inline" }, diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 3ea652a03629..a835dbd05a99 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 457, - "variables": 394, - "injected": 433, + "occurrences": 460, + "variables": 396, + "injected": 436, "open": 0, "parameters": 24 }, @@ -820,6 +820,23 @@ "file": "scss/widgets/base/_htmlEditor.scss", "line": 35, "widget": "htmlEditor", + "literals": [ + "12px", + "15px" + ], + "occurrences": 2, + "marker": null, + "text": "$htmleditor-content-padding: 12px 15px !default;", + "variable": "htmleditor-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/htmlEditor/_index.scss", + "setTo": "var(--dx-html-editor-padding-block) var(--dx-html-editor-padding-inline)" + }, + { + "file": "scss/widgets/base/_htmlEditor.scss", + "line": 36, + "widget": "htmlEditor", "literals": [ "1px" ], @@ -834,7 +851,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 36, + "line": 37, "widget": "htmlEditor", "literals": [ "2px" @@ -850,7 +867,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 37, + "line": 38, "widget": "htmlEditor", "literals": [ "2px" @@ -866,7 +883,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 38, + "line": 39, "widget": "htmlEditor", "literals": [ "5px" @@ -882,7 +899,7 @@ }, { "file": "scss/widgets/base/_htmlEditor.scss", - "line": 39, + "line": 40, "widget": "htmlEditor", "literals": [ "3px" @@ -1353,7 +1370,7 @@ "9px" ], "occurrences": 1, - "marker": null, + "marker": "dx-fixed-size", "text": "$pagination-info-paddings: 9px !default;", "variable": "pagination-info-paddings", "kind": "module-variable", @@ -1754,7 +1771,7 @@ "14px" ], "occurrences": 1, - "marker": null, + "marker": "dx-fixed-size", "text": "$slider-label-position-bottom-padding-bottom: 14px !default;", "variable": "slider-label-position-bottom-padding-bottom", "kind": "module-variable", @@ -2059,7 +2076,7 @@ "1px" ], "occurrences": 1, - "marker": null, + "marker": "dx-relative", "text": "$validation-summary-item-border-bottom-width: 1px !default;", "variable": "validation-summary-item-border-bottom-width", "kind": "module-variable", @@ -3783,7 +3800,7 @@ "3px" ], "occurrences": 1, - "marker": null, + "marker": "dx-relative", "text": "$filemanager-splitter-wrapper-right: 3px !default;", "variable": "filemanager-splitter-wrapper-right", "kind": "module-variable", @@ -4050,6 +4067,22 @@ "setBy": "scss/widgets/fluent-next/gantt/_index.scss", "setTo": "var(--dx-gantt-view-min-width)" }, + { + "file": "scss/widgets/base/list/_index.scss", + "line": 6, + "widget": "list", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$list-searchbox-margin-bottom: 5px !default;", + "variable": "list-searchbox-margin-bottom", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/list/_index.scss", + "setTo": "var(--dx-list-search-box-margin-block-end)" + }, { "file": "scss/widgets/base/list/_index.scss", "line": 9, @@ -4602,7 +4635,7 @@ "22px" ], "occurrences": 1, - "marker": null, + "marker": "dx-fixed-size", "text": "$scheduler-appointment-collector-height: 22px !default;", "variable": "scheduler-appointment-collector-height", "kind": "module-variable", @@ -4877,7 +4910,7 @@ "15px" ], "occurrences": 3, - "marker": null, + "marker": "dx-shadow-geometry", "text": "$scheduler-appointment-dragging-shadow: 7px 7px 15px 0 rgba(50, 50, 50, 0.2) !default;", "variable": "scheduler-appointment-dragging-shadow", "kind": "module-variable", @@ -4893,7 +4926,7 @@ "12px" ], "occurrences": 1, - "marker": null, + "marker": "dx-shadow-geometry", "text": "$scheduler-grouped-appointment-month-text-size: 12px !default;", "variable": "scheduler-grouped-appointment-month-text-size", "kind": "module-variable", @@ -5101,7 +5134,7 @@ "18px" ], "occurrences": 1, - "marker": null, + "marker": "dx-shadow-geometry", "text": "$scheduler-appointment-icon-font-size: 18px !default;", "variable": "scheduler-appointment-icon-font-size", "kind": "module-variable", @@ -5920,7 +5953,7 @@ "20px" ], "occurrences": 1, - "marker": null, + "marker": "dx-fixed-size", "text": "$scheduler-workspace-info-font-size: 20px !default;", "variable": "scheduler-workspace-info-font-size", "kind": "module-variable", @@ -5952,7 +5985,7 @@ "30px" ], "occurrences": 1, - "marker": null, + "marker": "dx-px-nudge", "text": "$scheduler-group-header-table-cell-height: 30px !default;", "variable": "scheduler-group-header-table-cell-height", "kind": "module-variable", @@ -5968,7 +6001,7 @@ "16px" ], "occurrences": 1, - "marker": null, + "marker": "dx-fixed-size", "text": "$scheduler-month-date-text-size: 16px !default;", "variable": "scheduler-month-date-text-size", "kind": "module-variable", From 4b7dd479ef455647f10ef163179d1fb3da376689 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Wed, 2 Sep 2026 12:34:32 +0200 Subject: [PATCH 21/25] Update etalons --- ...ListsOverview (fluent-next.blue.light).png | Bin 320637 -> 321392 bytes .../List-Search (fluent-next.blue.light).png | Bin 26655 -> 26635 bytes ...p-with-search (fluent-next.blue.light).png | Bin 34858 -> 34383 bytes ... after scroll (fluent-next.blue.light).png | Bin 77640 -> 77912 bytes ...before scroll (fluent-next.blue.light).png | Bin 76523 -> 76957 bytes ...t with search (fluent-next.blue.light).png | Bin 35735 -> 35745 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/demos/testing/etalons/Common-ListsOverview (fluent-next.blue.light).png b/apps/demos/testing/etalons/Common-ListsOverview (fluent-next.blue.light).png index 5d20b7a8bcc11ddbf2894243060cacd1e1864be7..7fd2d03f9f2c0da80d152a930ba642a34db8c2b3 100644 GIT binary patch literal 321392 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

*6%j{n-rUT=j0LCF}&a0b#Ey& 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

BBaoGND;e?~FKS0G0?m2G-y$Cr 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 I?fvil8&BgJ)Bpeg literal 320637 zcmce-1yEf<(>92^b0JvJixb=-I0SbIk_6X_ySux)I{|__!8JG`xO;#Q++h!Szi;KQ z-M{{=+S;niJ@?qmbWiv5boUJ5%8DP*QHW5WprFuYq$O0LpkNPxKXN1l;7SdF^m`~M zKPVXqQFS-y;~q>q-Qetlhi@R={kXKkPdqa;xFg3>OP-l}tZA`jlK0ZiT)j6Ed znbM9#tYwE|Y?ZRR7&^ z*wIAPe+>tTqFR9CzsC^N^5=i$g?5zJhRzo0kIm$~8EZ+*_{_s;7ymR<+JJD;8s~6j z_tJNfX=Q>s%Kpg`^M95F@AXn{ayZ2j3`GLJnZ?f=Frm3qU5$On(r;vHXVb-i_h3)r zTB`4?5!*#LfoOwjQ8D||SAy=V`WXd_H5NqN&9NaRni;>n7c}sL!{a;qZ=zLd_{&kb zH(e`U+t#Xpc~x_mWDzU7w3}L*L`o$4r6AvXCFWG>_awAiNK>oC#j9rf^#-N(Q;z`KEyXG$G+2HlS0U?2*8(5qaJ#gW_C@8Zu1cVVB1Z0$42^6JPyn>&-o@tiE$8V3vw4`gP7bKW|Xk+MX$uvDwjq&s- zo4wDM$kEQ30Ed6*EE}UcUKjJWiX!1?5J@uj#R@45qOw_A1k>@gNC;6Nx-c9{_0 zoq?C1G)?7Me`+exrJJSDW`VKK3-DDT$lTaJ9Q>JJ6+R=R?fui!`l#N(*;D@mE}EGX z;oBbxKZwmSFh74w<+>VgKzss>N1b5xL#3}@e!RUyD@hwP9T9gXZ0K@iS9$Wa2bl{V zFf%-1uZA8*tYQ$9qf8vXDfou{l4Man2I7`xT$kyeqQu2L_+_=Ay`>w?R_% zU~FcjI1#NVlyG{xUyStJv)%kqHqJ;h2f`rAolG8&~2YqmQRp?&RQQ@|L%E10cE zBgvdd8844R7&h~}@jP7_4>ZAnmhI)?M=RD@gw9;heW0J#WEVi(q_i~j z4VnOiyrAbsWDZ3*C_?O&NZ{L3ZIR6g(byC;3hMNn1%33JQxLae9FKOs_5KWqH<=qU ze`FRt6g=pa@uM$;%j)Cy&DJlFDTpAvX?i9bJj8^qL@q6-7Uw5tl#=tO_}$M*^LW09 zsKGWQ^ddH1rD>8DJq*sh*;!a8XIcUlO28Wtl>hm5>oj5X&ENjAkX{(H?6Im^u zG-X?q?D|Us%1=}W?r(YyFnX^rqSS>qt3Rvqn-NBV)pm3`S~T$EsJPH_QhW?o(HArn z8RLFil)g(4+pm<*dNvk#Hl@vNg(SGqU`D|DcE|oeXxkj9h8kc?fJLqwGeDhsKPBEi zIoi-`E_|Y}T2!YevT0d{L3Sk+tUjtABHGp*uFoycs~$VKJ7{BKU+ZCU5WJ=TXW8;bDES$eG4gZ~LD$F#^O}23UgxxlCYzX%m1ZHkS3iV}yEhHPCONoO2g#L7UyJWYL|0X2^(Of$eIOx!xkSWS z9&YI#X;EJB;GZxoarw%sS0lM&ZS zE7{cC;!~U@jKNGqZ#%2-6H?@!bmvC2$sBcOaQVWq+KIBJPAXZSZ{gCx{R$?LU*KOo z30-nPdtSCIMsBJ`n@hwjMDg=Hz2S%5Es!rqG%4eL8O9?tX3STG=ZccP1Z`Ay1tmw~- zkvbG|mf#=mL^j`G8Q;{jpLud^@nu^KN+-nYp?+>gi3lmN`&^Pb;gWql;ga!tp~RmMB< z?1l;JsTO78xZ@P4)VJrbshs{{x{}VXN1L04G;~xiVz0jf3V{O+wr>Lm(&CK)$Rz2w zFy$v`cF1?mufNN&SI~1RwksxisYja42Vq{x7#%XVd9;akQ{10b&2|BH92h5b1|`UZcp6F&WtTCj4)QLNI39r8A9>qaIE|v>*|Ig8Q8H5fCZ#CT z%`}HQ{s9zHWbcphALym{Fplq5^=0S9~_F zJ&8b@oz~2~6}~J`E43gx z{ru}j)bBKx|W>Rz?Wao=;)>PkP zh$AKxH^az;Z6D-AaXgILKL^zovWE)ETK?QvQl2K^<|LogzEhEMkbKlkc1Pip8gvq> z?L`Wl_6gzGj*8tMK18{ih7%w^z$z&4bi$`|O4?JSrT+@2uVNe;2 z2^6CY0WfRGFCUxYtVD4%mieOq1RVhRJ=xdkSs{4D->D;#=0>)%_w^Y^j%g8?*r^d` zXEyy+R}%KTDJEcX(1{P9emZ`8yjlJ(^WfMk!h2g%Xz(}9)QVpy9~vy|D>8rj4>C(Q zE=@sY*Pl~?)wX}~@T>TTs|&Bj!@2LV563FzZA+S94-X#vcEE{lP}x_{=k0kuQ0oT> zm}+WgXhgdLHg^*GkZIo-!Q6`Nz=uCX&JuUfgRU)-B zRXP&0T}K~6CuYVglcOYhg#*EyB9l$nuhdJhoBGhzm28*ZVUe7MifXmn!#${MOKR9QITrriV{dj#cMC6 zbEcDCDB@vGMmSO5nzitn-z@xN^A(ZGYAB%(QF<};=U_3>L0sspd!!L{d{|=tCJ&Ta z0*gQnhco7-OQ`Q6jGwA7gm@4L#)>!W=ypP=8t$pgF%V^iKCJ1JnkWcRbY)*ux)H&& zAk-Q2DJcydSVpkPY0pYEvq-v;_qikFrv0W_z%LTUqaCUw8Tms#5*C7<-2rV*3X?<9 zXOXQms!c|*#4Y+DLKLWtu&5rerXKK_SphZZ5QU%bgEO}IUo3@EwltHtaMxMTscFhr zYBBGo%(bK*ro!Pl6-Y}qk+GAh31S8knr96?%9=7uycBIkb8wZlIGiWP*yy16?Y034 zMz9xiY>ysuMq9>TZ9av8RZxj_S@>E*PlFz%ymtX{=8s@;wKUTMKK4by{e|Baw%2(8 ziW=5()DI`qa2zkUM%(&&zrTV1WArrNHQto{Ff5<)nlr*1V`8De+p}urII$~ICJ%^E zVUdzA%_$ZtZFdMB8fQsZ!URqx`Wx8gY*8${%^xUaRhZlzCLSxjL$V8AwXIzW-WM&F z_X^B=vm?9b0QpqqJF-q(^9$^M^me+sp4u|N2m~JG&!)*%OdQ$c8&Xla5lJ#_2I>xB z1K$E9zxL;QFS}RTMrEMCbrQT|=U#eOdFIC z4h-xoV%I)L$ZJ7rXu!3!?LAe$;}vk$MGR}FlJLMOazMz_cXa=IM{HqXn?F&-E>!VK zxoCaeQ0hVybBcY}a5BD_(>VkqQ5baQ7;nCdP`#^q$LWTCO^v>%TImJj@|aIhUZN6$ z>lu!T&XF*Zz|-Ov(ziXZk2&*`sA$4^x1dr;?8zQ7jr9J^ppL)Pf>%%oCi-1N6X!;w zB5S^d-vpERe#Ig&Wxoe!TOnIWJwiRi3I=Y4h{3GfhR79s#zjj&5|t=jGEA6d0jIW%|Ve`1{?)K}@?4dOD8dcpV<;4bl;&AiT z-2uQPQ%um|6HJ#dxYg9WXz*6Rl!0DS0|Oz#zF@jgQ(7Uq;SD~_uu7?+OOrE{^YOvYz)b13>qq* zOg2@SH0IRf4I%&`f&xQjf7%=u6y_tKmTK@!ZC)!s+!LfQn99F3{PHDf|I7Q~_;Lo# zpVfthUjv=FG~_c!!3&Ewl!)x1X$?PXnl>p&|9t!q4KEvtBX}+yfaf|Nx9I9u5j}Z+ z9Ae4NBDHw81wB|&VYl8HA4;|+V$H=N8|ucjG!psE6nNk6M*NeLby+ddE5GuqWdCgb zImMGXhh7J{QA3sW4SSHZRacSUJ#}pH}avjSZ@69b?5UtE*sc7^qg%Fv_pIcsHyO8Sq z=u@&au%4s%?CnE4Z9S>>blmsTA@2K$cU0ACZ+)yM`32>)dD6)omtgxeIzDPjxi|^Q z*W&F(GUfJyh!L&k+LHkpqPBZ?hXD#4fkMc#&E_KQJexK91;e*_!LeE4%3xS;!6uGT z8zmM@&x%)zsD9%q&eOTdpS>#MFqXeRY@DWaF^eCKbG;1AkbPnrfq|`3((?}8q8@4B z>{iun0=FJB+4G)Do6gfhtFnKsH(SAbPZ^W?9cPjHO@}+A2G{AigMrZj5TOz^!Ad4j zjuPXy(s#W3dk5Rl(5$kr*;=**M>WD57;YdXB{lq;h&lF6ZddrVGSz3sRG#mtO-;NJ zx)j3P6G2;44V{^$-+FJq)5ZIPwk4Ib(Vaq;%j$OtAgAE+1-8Glc<7tW=iwSP1R8V7 z?S=`f-%OF(tjf0xONNgKjnYcJ1?pfv80*i~^b51lE|NdMXZwo;n`s1QD zVDSOt{I}@G8IzSBV#H@4rGOqu9bT z@kEeOxzLF}?pKG*VBTfovBL9eJKRoyt+K$rF?%&vs zX}2>4a{G_6$r!(1Lx&vQ;GV`NN=LIMj2N&g^lhGPxwQX9Btri6V6XE}>vS#%5<8d+N7|mS?F25B7dPw2R2Kdnw>T6br~jO zt|EM-DpzAqqhME6?5b66Nnuk2ssibX!uk<@fYO=*m)2yR;XC5oM`&WX#HhD!$^DTm zbr-d77PU3xhGv!OdK`kN5V-kaAVbe`LO@^WoJi zzhgxh^|!an?1)^r&fuQ(ek(#kT$Z`>ly+(-3~#`WFd0S*3P-?!e5;3*lrl2tJ!8t- zKn^*y{5EttJ;gzf^MqXx&eSTwvkFc2G;X6_qEI7T7yic>!wxG74a?%n5XkwE-k-da zP^E8cmN*-1-fCtqWEGn%VcsI_-lG+qQW`ch(Xn@mQ5tFq=Ug`;r-n{OgtOSsEMMYEKJ51~C_@O1fhT6!O z4IRr0KfvduFKaLE=J^cmw}se||KNEUrdY1H+U6boL3dIhCBHuzayuIctXxJ?pR3s% z`Ak|}wI!yOF4SbLq}-Svxkfv`^%)wmskz=efsaXlb5#2k2VVI_GCz%&CVocr3^&FJ zh^!3)E-Dp?+7QEb0-dNG!P`_$b6ol?#tQrb6-6uO< zBEoAbS`B_stv^9q#6Y1XRr>22Ml)^i21%+Y1aUCC{e9v|rG-lY3@(+Yj4|)Hq;5lK z+~g?J+_Ef~fAphO6r>aUreDFMRR+8#rV&a=bD)0h_27J(I7s*xDI8ADfg`+J>N{ zfG4jYI)|e9k%rI7JOQV^Bu$WA204wNbI|x|6|z!;aTCFi#^1ZJ0H(&*FE1$}q8Y+q z8;F|O5yfHoKDq$T8?Wt~;YVz9y`!W%qPcolNHry%ATks@kP zrK4UIsJ`8OoZg069X*7>D@aD}B4^Wjr#-+84iT#<*n=V*`g2J|#)QeJgl$fx_t8QE zZ|WX&Ev^{#jR|B;=p6{}>B?)7^Q3JcK>_1G$X5RheUfHNU}U$Z}H9FB;JwbJIMO#hk`u=B0&w3#pdjx&y`!7X3ZPr6#?bqQ3{H+O%?tA{Wci- z{^c?yvR+vx@K(f@?mqiAE?wUP(76&jmfq|Rl#?qVzLNPr1Cmt9GDnFcqe^5{HPdP( z_}cET$+OQ#yzm^04%x>6DMN|Z7SLrGfX)xHOkXu9G!enLF~Al_!INSrZ#!5{bb!l0 z%UMdCnH;P3>GoF(c``*N5%v0?fe~tRA`d}%wNp6B0R>N9zuEFByiuG(8(NjLJpC)& z-!@{@LyhV^=+z$9h)OnxM!HVK?d_yyM%G-Z8UWU8>(&V7>aS0HI1pf$98ry4u20$6 z?u0vaF@pZ({2tX?<(~8b)g`5(yu33rl=O7tk7b? z@%xiBUgsx#<_5!0Z(@}s7YR>x24qnGwDSN}8HAM-oc~=F1LDqi7JuoAW-SVoB>rB8 zl&jrdMz~9P-F?nW-M611BsB4QGJ0bO@^nB$ke~VAUYn~ zh9FHZV;KtZRMqBT?(DizzE#J>b#&n7_4civmh=_@Rhf#HIU()emq`t*$^GXfTSW`EjwLkiT@^yHG0lbN`Od@sFIR_-)} zsT&2u>2A2=kMim-Sr6` z-QRbK!a-lUo^5xO9F}A*SH8Kw$EM0*I8W|=&zoB7M` zP8ELtUA@YCHu=XdF?KswsWNXMyxH6hxTozQeRc8r;~r0?UMmjZr(`#4o~J6GK8-i3Yio}fI-IAz$Xnd38&qpYyPKfr{v7%8 z%u&4R8`^5hwU^B0rAq62H<{$}@^&v{E=}v#UzzO3U17DQC)YG9O{34+eYDR1*9L%D z?l)Aa9h)Gl((9GpDn0P0J-j>e{8$ouF(J^k$!=O9@rUxTE_d*AG@8cCH>5=#GDO&eq{D=eXsOb`t8E1?}M2u2VS|s+9sxj zxp!RSHA-2{_SuUWO(^c8u8`8+8~dE~Il0qrQk=e*LEGoQqB)PkCsB`E^Cb0m3kx1B zipgI&ge1&LYc3-S!yoRU|8^ z+;1|MBwrtIrEvMMrng%DkInpp%MbP&)@6m&`N6+>Trzt5b`sb^hG01bG$!a{>c6!I zUw_26!#-Y9bZsXSKviDl{D9j6`*cY=6ZIy-FJkU(9`(jaa@%l7s+%p1BPKMQd_V`c#XqId|&Y~)}hd6|JE4HfjqszOT@3N-<%BZ z6S9Mo{^vt@)#0rkXow)fX_iB;d;WblPzyp;ty}==&?NAx(~4rXXuJWJ{RN!-8bZli zyyeCyZ|&}g?6h0iaSOq!eBB`|8v_$2J3|y8qnaKm8`l1kPO6{Hj+*{XzL8ZtzQEGxuKHg-j?D2aLH7h|xfEdM#a2fm zt&$;kW~(;I%k&N3^F?m=2rg4mEWsYJ(R*9^0T15Nf`rir(!9FzXzf>cj(K^cwL6DH zr9bK_1|4l?MaVLodisr)aGSpUpLP7tk#$j|Y=Y!9X~~qZ&v~}gTgwb>lHy77_|Eu2 zB?`x}HN`y9{-I58R{^~-e+3rVwTR=3{Dq0kfTbh70Z77a4Ms%hy(y-qDQGAZso6Pk zxE*;2!Quu8PK~{I2kkKI=4N-A9f6fI=x?}qQ=IVU{0L@*{6^Y#jqWuL8KoFq0^?|S z`$WQ|jAaqH&6asbdUzbU9Fi(i&Tj!szBp`)DWF?nVj#Qa-y?dX)px9?U}A*os3G*% zd5nv>I%KgmV{{OIufl8ND9uVw553-zD>?ezn8scAJllLr3z6x*B?GZ;+ShacZ${Pj z_FQ8VbL!kpuiIk0_S9+pQ^+yMbCIwitGye~Y&2+l^ideooz!AWP+B$7ermy6bZ6#S zOf@Br0-t;Yv?QE2t}G9vVvJi7X+s9-SPNO(Qtixm=wbB~41gTcw49qosNFwa340M_ zdTQ=ZC^>j7d4NVcvQ55#*K4~!N|#m4n%hIIjW?mvVhOAfRcbOKVvuwjv!6A7^N#-g z+Y&IDNQi?&g74G3Z?PWp#V(6)dS-~E=psq}?N6G~(Dhvh`L8zOizLvIy@L4gCXPW{ zYMFFoKB+(0s@l*^9O0NyEi#<3%mtP8wuKQRwA{N@HuYv{&|RFt_t&~}S9M?aU?6*>NmX0AxXHR*jMbLj^*$>1`kSez_&+xET8h%{2UQ?%tYrqz~WS648C#uvH*?fGtZvmCB>2& zXx;@1Y85>8z&WO;e9QB?M5-Sp+iArCxGe2QgBSd6;fFMhXYyE}(^|TPqlL4sIVg3(d}i*NMkpypWhGGDTH+$A`>O|L2 zG9B3noApR)mz0SSqv`xf*68B zb0V4D`MR$R-wWw$UeR**A7zJ(4wbO3-)S&K`-a~&37e(>qZ$43exTg-IdDc9ErQJ7 z0~M8?4A}j&uT{(WOue`KoTd$QN#}b7DqXw7lm!^y2k!SfrXnv0%0>2RhC zZhgpG>lOQ77|=ff+|z;Wsp)dOF2@AGxs9G&D)VcO0j#t8{IBdg{eQht_5b|~>5`Kh z8#hF^O0Ed*dwD$r1c-`m?y?AM>%JZ;{(&qFWFou@^v{M%4ga6^(&DW& zpw+!x3VM4B?==S6IwtK_em8n|%boa3YggbY#3xRN*wIV+c|)$_vX}JpUFjG5kJ{r)SL=pH zdk^;Xem-$#IvMVt-IMYc#9Kh7uY)ZQ-%lDx8zAi+$UL?L()7i#7(~pAUPqR*y^7PC zX4m%^4v&xNw6~e5>l@aewy%Xdb3?z|3rl?=UjHF1E!dPU@VfEgpQJ0@3@!A8JD-;% zj#9K(ZC<`ruCMgG9nI`G?ew=iwZZJVV9$2bTtD}E@L<%;GRwu!6y4S*7E;5Drz5^wRWg>2 zns5as+UxB0sTNgy5WJAr19i@#$#%6ZWSd2EJ*MP<#H%E63e~puF~_#X`ROfzZHL5q z$$a-MmgYJN%74#}jUC=flGBpoFf_HXHViMC2RAnD}(T* z7+d?7w?uX5wEtOMq5zdPU&AYi9Y8( zyrt`Yx~UA=)BNnVOTBi`5-F_K!v8^dC#DM4Ykv}w75_qe-SLQD`HUdo;uYG?x$*qa zTIzy3uDe$9-%1V36ou!Bn9;rD@=X`QZ_3c-es*$X@g4PAIv1!}MX^2NM{umXN4cr| zm6o4Zr4thnJa^*-pV^CM!uQp-QU8FSjQt19k9mg|9Yho}3s<|-C5?{1GntRSYkG34 z_I|&<`fDl8gv2M2=c2~rsdFXYJ|*BN2eHNMj`0!n9|H#Vo(7`W5PZG;rrUhJVHu1{ zXnVRDPU|zOC-n#Y`m(e82O`G#-tq@}`!xn;yRYa9n=*IG)_%Gfy*UB1T zz+2BbFclXbg!E{%&xHVw^zn{`QltLRvI3r3uwz1etz7?;+6Dn{g^sCtt7V({PlZNH zTt3N;<_{%$`xKwJeeTBT8^-8H%t|xIA+3*{vf_OAM3avs^+=qjKII4VLe};$`!E`Li7w+SU91E5^m(x6hl6 zJerQDZ@pykTktT1ZqPh0AGE6oNxZ9KzklgDd5fuPwarQFy5fi^ctPa(`A6OT=V+cU z9x?mZB>i<+Kk8Qp0&mtPl)fBnm+xD9ZDY7SB&WI^Dzq5kkpNrd{)1QJc>$U6+n>MJ zZ>uDkecni)`a$>AO8cQ({L*WmRF;MD@y5(&Ealx4$3jo3VRx0QSKz6a+~)3^??aB? zItEm1b{W?fdSYzn3fL4jW3JW>mX{}|ZaQBAzgfeid@DA3;MVM%8oY4|#7Ql%pWk~6 z;mO%({jShZAMtJF;tgcY<&CY-Gs1rt5s~aUSd(Ro*;DO+e< z#oST_BCp7Qp-x}>>Gw#iREK5jW_zwR@0(9RczxmYf1I@>E!(t511T<(1HbLDd&qm+ zU+3eemHQaM9DsRjN0adW(T-LS1@;(IH!nwHz2V^I9;7|%U3c<#M^2MZ8#k4w!KFz= zP8M8B9} zP)yTMOi9(}vrkYfQOjb_?pHT39KpfOqU%F0E%Hv;_Q_3;e=5I-0s}10=CbPw))_i38$e=N5!kRgjreMly zukx>%sJj<4%+DE2a+4Q=>yr=ORwtbo>ia@alTP`^atAO!%Db1YnhnrO=LgR{JIeuO%AWD zVCHNil57sFJ8z@B<#Z`*l(LHcMO1~}0Eya`Hk}!aheVHoIqYdB;(^16d=^!@jA;U& z7!gF?Fmnt6=WyfiU*=P<%^xeRo@BHHxW#|@O%opfdisufuD{?ewdBKrW#q)=dIz~D zcK8AzQ8Gg5)}Ku?!>w(kVFIxTX<+#S4C4Z3Pr7-0p1xfqe|zL=tKK)0=@zMlHiCiU zgSg*sll=|tdhv}T9g#l|LqfbwMKEz3)N*GOgVZ0cwwZsd2Ul8L>? z-|M&Uo&#SFPXAt~`i4Jzxo13n`p#QQ98%J*nrQi$UB6g4 z+$5f+6JUdogiRYJM$e%Pt(6x*uFVnO%^i&(3#JI)%cCAM<@mG4SMW7CG7>fA2lYge z%lkvZ?HX|rdP96Lyr@ukKA1iPu|a^>rbDa z&95^bdAcs<`L=#l={DP}-ZuwY2SJ~4Ec)F>#sz`FXY4X73xA~AY@~#b7OY*pZj_#b zcFzNv*PkdcPv6!F@-U_g0BJeP$84d^9f*u@)YuIsUB&R*#xSX=3_^4R3V&z;Xtwwu zFoY_6gcn1)=lMD7%5+1Z>xD)6@NV$i6T*Wh2lp~`a!f5(fuF1i4|kD&^(E37e}Y>l zdGEp?x66Qt1iL+b2NSefTr?PLAcB(+h9n>0k47GjC8fUrX|7B$J3cv4dmyB|t;`z9 zZg*W=UN&o7nO=h0YGms6`UAPp4$EcLLMs~Q#b_Xj>)#*e#+6yA0osCwCm!UkTM*tj zXf3KA6A zAIXui=tO#vC@RUZ6XJ*@{9wRXNYF6-KgOs7(~$bPV7C(7(%Eq7-HxVVO@C1R`RV=r zZ)9jg;rq1p-AAVZ%T{AYkBPm@thqD#q1arz^Bwxk#38i(*u`jF7i;lZ!V2a6V1CA* z)iuO#^2Ep^^00zL>EVu(i)xLUbsRf%wsDNHtKr+keiSWNABanUSa;Hfdn%ohh#;N4 zV3fEZ<2<(bZic*=u#E^2>?Aq~INW4?N@N-7Et3Rt5gZsEJ6E)BF*RBi9 zTQZCn&u3ssAouRW%gIYGj@zx(3;oO7`pdVw$u73-|F)`NbOLbA_z(6(842?Ker`ZU z@G~V~`(+$Da^}%EJ*<%1jSs^5p5J#?T>)=;7H_-Dnp-59%VA$Oa=uO)zoTz3BOxWl z#sj@g-(XV#sWUJX@P!}vZSWDJHL+n)fc?jNo&!#7Hg29rg!gtXlh*HbU)Ve^MlHFN z+hzOEs#HJ?@+;gIfs#l)0Z@}$ryU*hzP*yGWUU3WawIOC@I6}l2nyJlqkg@N*GD3 zVr5whO1fgKVpbYkFdbY$5S=7lfDiZnb0FeMmn+$FB@6RH6^ps|P|I=wj-CvacqBO+ z(ik-|eH@I8v=|Z+lPFR-7Bx8xeOi%ZP>m?eML;W<;xlV%Kk8lta$UN;=ft7wOWLZN z)NIz%hnp71(^NhN)IZ~Y^1gVzncOozA+&Dl8y*`Y7@u2NrYQ=wvVioo*1V- zBw9U~m4bqq51J|p46Xr?hay~uu~AbN6jckjJOD*BO+ABpi7?9@qZXe_9gfzaIKJO6 z`=#-)co(a#Q6U9kza};BcKmsNLohSe$!MrNo&zi<%N)M@<*^fem zn;Wc;!?e>Kh9pj`{f*@#^JLoT$*eO+78Z6#42T?<3ktILK2fex>^89Y;8bu;E2aN9 z9`e~N*nn7OVQ*G?%Pd}^Y0%89+Yc)){W#=p)17Z10Kmx0D{=i2_|o#P&q-5KlB3v+ ztUW`=u6cysd68jD$01|;TSGW%6<*Dei{qGE@a_OsQ7J~n4=x>@;#dNQ=ame@He|!X z$SIZKutg$eLorY=7 zQSI+i;({PzFz|&@)c@KN!9fZTQ4tYC2_xqqN5MxDRi6=K$lHj3vX{}r)*3@a7*hhO zrlLE;=OeN90%pyDXOC=W(`=2I`PF8X$+ha7>qaha!+;PEo;R(&`=1KD!UuUQ+T-op z4IEtt7e_cICQ~YNp81Y0)D!`=Ld5^-B)?i=oAc3yVc;FIQMJsLMpJx0UgrK7*O@&6@PiR&!IZLJ37gE!r`OL- z(GU6z#poi-E&P^X8L8&hVlRQskP@1E&=1OA6mUd>xZ8Aq5}?llT8)J!$eH1}!{oLy z?%)u@8TZU^7o>1JfCJhrLCf$n!+vqY(Q$Otr zU(WuA+w1R|tM(Tr_sfYlA4y15+GEBo72myYoX~!kYwuHAaystyx%`O)s}Pro={1@H zpD~2X`O5^w>9c)>xI_#4p0;}(`7WRHJn#ATK5xENHsIj~V`I}1yCf{ekyFO?X95m| z!Y&E7fB=UhwZgjbOPK~c&W}|#aiqB44=%wTNp+=++MJY6H>bwcu6wopz3N|`y#%OQ zSG(c0P3*oAKgUoo)`C7X&VpV%mVRccjG-Z5%ThQ^@j=#~X^_Y8GGpWW!5p=BXlQAS zFmQ*)1PEXttUynw8Aq2Ps2T5nXWmw5z*GvXkC{o!yD%qJ7BF-bduK?`Cy z`ZTZ3A8t*P;J34QhD$2^3?MvwBfj01d{H+-cq|a31jWHoPzKP6CW)05sK%kF{sUNS z3AhA6J_fEbY$xh4q_%3aTGwvC;v)1(TLE*zlZfJy10Evn4+i@O zAs30@NQl5uh{CB-z%y`A!jy}`(TTty%Mchu?)N)xWwg@B6T6W3UZy4NN9opo)(k16 z9ed+=zZj(>U|IEZX*PQ-ta|2m0JlJp5A}^}1fsL6z%&ouZ)NSCCj~xHwfRh#84%N#t!4?_klFiuH*Q|TMj>Z2HT1`VfjCNv zJ#zlHD*%2eqtAw&3htIRoMDH)SS09IA~0i*fyK!c^K*X-3j^?-5+(8lPI#CI4uVcb zV4pbY_bUv~2SgD+I0TvD0H|dk^tGl87_oHk4JCUF+dbr%iB`rU01+68AYlQ9E`gIT zf`gF{{G&;J0FXmbfF$6GL9+CK6NDjA!kBl26DfbClawyF=D5bhNIyN{AY4Y;PB}3h zun{mKKpbm~L+Yn9fCe-#K^F&u45olr6~!sb!@=?|*uX)GFSJLl6ro1KBk>m_H_)gN z5rbjElHLmO1B(`zY%iX%tz~yBr=3g^xCq=YhRnbh7B_(!WsSlQFb6WcNkf@Of*0CWYvW^Tz~n%9UeE4o^f zJ@Hq94nxyoV^I>hB?Ve$B=zabU&P9ZN%za^_LWx0*gLOW4dK$vcf6k0L6N&`nO6yr zw-49MW9W{0*z%c-{N}aMNjS%TdVf@mF=^q*PT@t zOmW@n3Ed}Xc*Vr@l`tgmS;=dVBLS*Lii0|{K93`fnNf*K(vkuM>NO$Q{L zudzP11bugRCfxu?G(6AcZDgl6M(iKFPoxCA>4I+#>Hq@n=IJR})9er0H&OBiIauy8*SFr9SYh{M4B z4#8l|Ku?s1(A2moIaRu9U^VJqeavD<=~3Wf2W#%+VSA4I`s@vdm?+dLL`v6JdJUNGo4A#=R=i4bCaIwC&Z4YzwdCSL7V{wB#YLrQE#l45@{>7_Or4`>IJ)yBb^YwhJ=kqo(Lg=J2+A%d0APm%W>Hl9{$$L_|y{f!? z+zs50%pe&cW-|cFqLo>JsPm$nI|($S5`~DVPDPB^DS2^Mf*rRe7$xWxOogar1OKEHm4qh$$esGYn7tr_Npzk{5G0d9dGYmel=M)?HpG#w#LrHnKo30qVqzM3s3rfpP2|RGq`y!rtM6@dU-1z zi*H+qMl~Efy|5`J%PmQ6Ed;m|+=)>r)pH0paKms@JCwQuow_6gs|h2+ODu~A4B|ci zdzZOxHATz4zWejkU%{!j{qM4`x!B8`=({RhX>q|*;Fc6|!Y4m=>YlVy$!Bw07!}^S zsShz!FE_>YXySvZjY4Isxhv_!ZlBt*8lT+m$I*s9!iZcIEi10s3FuAwNIISOk~)^G z$i`sW$uR~35D1{ ztg97)o)M^6XeezI4V6XXdGfJzT;QZd;Apvu05R8o@cB9P9z!IVP74dw!Rr92hzw<5 zQHSb~upF|CNIy)S(5o2f#nS@vsAU<7yZ7(F6Nad3dbtpSb3yjQ2e)&xufJ<}K9sZl z)a`~RR{^R1Fwo(Zm-9>f5(&onRO0gOnQL`fMM9td;Fmlzlcwn2UAA0kJz`r^wcClg zD;jKFXJ30uj!?Vet%6xxEKXT0&VJnLUHvVM_Obwr#MvS9 zB}bvky^IMT3F6#Gl-yeYTU>g3Lo?cL$K zdt!A{@oI-bN2!&Aa;G9AlS>QX`WrGFrP@%LF>N~W_OS3?(LwY1l@$@^i-pzST<-q0 zfBbzp=&8nxoSRl(pX#@RIim5&LIijEITPAgG-E6j!uS4g?Ft9S6KGT0-nFBz$493x zT~@MJSs9yD$sgi?ENLot>5Ca!d$nO6S@FKH6Qh7r+^Iw+p1$Q#)8|={qr;g416}!s zjo)kM_}gb>>*RYMw9Jy z(D9XsRi$Db1WZ~WeakUG(Tx}5_@(}s6nd!gpxVeq>jCQx@vFBo zGZW|K;=W;9QNyWkQ+!dPAgl&B{vML_K#Z#8s$C5BTTi$$zSt_J|e#c>?N!1 z9?sa_6L`Gz`f;XPjnzFyh7>15^czucBfVKA2DJ-1`uRlKNlti;EA8`}DQG2nBdP zmO*M(KZ6+&-8#mPyCe?kQv(LneE|ekn~oL+vlHV|?`~bV#$1MwMtO>AO}O=~k_k2)M;2N_7In5uB5 zUyfltD-ya$e(EV_q#Z3F4aX7m5Y7eb#D-9lbH;STaA%Ebqjw(z9`_ME+l#YvVfwn# z4{igjyR@HGdfJ%wq^W;ipV37vd&AY!tp}W|YI%L9c>eS_2us>{VU{MF}Ye)-I9jz`riFv!~SU7{n+&qs(bLs zZvD((Owe}Ai7_?k{$map^uD~UfCP`TG?=z^^HDE(8kL!Bvb%rxFMGpA-)RKXnM(nk zwIBYts_t)GIrW$6_vZvz(6t%EfLsz~LdHAXH?YH?fi(5^uN)N&7fr?1Hf*qdQBk(} z5_jqGhl<15ov0$hs0A{NLIVC(giMKO^*Wyrp+=>_?^yN2?)SUFVJ9Bjol$+%I5^K; zQv5fC#)yVF^g@Di}S?3W+tMHK) z>^vR1FTc8#7uiX$OC#Sa0IHYb%9}TDu*Sa2pP${5I#ccvZrbngMTU(&u~VKBN21|x zabqW49L{*7Ue49b1w}tIZ{d~Xq~dCVTtcfC9Rv!9KPrn`dm)V$5rT3Xi$amh1rj-v z@FX3)NAClLvR*f@zQGe0*(MdVPBgSmHz5jw(o8MOER)zVBvh$BMM;4SUY%|tQa#+T8gD?3N1HFXS6F` zM7w<|t#YtXP;jbX-N91kCW@9Z)}E6Df{ZJxLS;c7oqIp|T=kJGHRW)+GTRiEkYmEoDG2 z7vb!u=ppXm5Y2S4Jh7CO^;OUHSqrIc4jCkXznk3c@5xS3PO-`O6EnwL9l}S@OL?5! z>3TSDX}J(cmYcxn0+bX$V|X5%!34n*hS$bJ0A-EN8N!u3HTMVRqrt=5TBn5o9n0=d z?e#asC(2*UV;>9e-6yW@)1gZgbS1}h@MH>AstKl{$HBO8XGvJDurTn{qJkl)h|f7x zc{3Wzf@Fzqkz}G6H0PyAX7XxUuVMwjaOc=ZX|9}hxD#shJT8vso5Y0S z5Z!H5foUF(DZqoty2;HIkcW57q)y>W^z(S$m5P8P=u<6X_=Z>q|KgLon{IF5~@Iz5?LTl=>rJs4|lwZfTO?R29?N~2Ggrr0R;^h|K$L2geXZDoB4nbix>xQwy5e^Y4dNJ3Gc0&|>2oK<=-?EPe z-M!Y=Zofk=Y<=B~4C?!3WAMQY{aVhHC500x=(cEWT$3n}4HW^|10pH*{$gLC^JwLr z*L%;^4mh?-3;+AH^I~~1wl06<3_68OoM0N~H%!7v8;HH3>@@705f@f%g4C_@RgPz< zXhjBWe7=TRR=AoSKtjS1d2r@Qc#;!pR$rg&)TpmNC+}S`<@R>0^wIAhx5LKVF7Vc> zO#hwTQM&A_i${ZQ@07$0v^9tH9=pJDo1S(R_n?HX`@Ye3N58KgladC-6%AgL$7SZn z@c@Uj?3`$@euN-2s&rX`YfJ|-cpZRhSAtgy=;6BXQo#ABk~b&(4yUj>)UAF?l9TiP7-VmSJ@ zd8Mkj9}-q-TrlZ&g1w&;D7_0|EJ@G==3FcHa;rekKH8pC8NVEPST@5L+H>2q#lUAiTaoZz3V5fL=!IEr2869Dn87S(_1`yIaXrYv66a=sR;f zT0b)V_tJxl{P)<`v0rWW+4?c@a5hB(jEg;^daKO|NGuYR z-anL{j|GlCDpvvstp5Y-rV-Y5MIzN40T#Ks$sf@iKt&Nc%i?J#UVl+mWlOMUE9CjK z3Rg%b9zxLpjT}XOr1vEOpnaA^D6*RXv$2oSA}@pr!5nlG$Jf|qG~Fuo`x zL?T?)6qrE~Mai6JjUsek(id;?%zE;6%@WL&e1mo%5r= z?XNnBc;znQw!^bn#{~?x{+g~$)%mPX*9RdYTh0(*Nfd1);Ip!?d-di=KkPHi_^;Oq zzEkvn)YPISe(>w?uJO6Bk<>;+;~1P7O%@y{gXloeR`jp08M%gp5sSY5{(DN-m?S<& znI{li1;ZOp)g-*JZA58e`OZ1nru$~SEI_l-*FSU?dNY2}&CT(Jvgdyv6^ri~@`lOj z2+(7aO>&9spPNJxCoI=WeSHHNATxnG#O~$(vErM>9UlvYZ*v**>V`D^27(TR0>9#L ze`xT%HK8oAC%?M=eb1**rb(uQ-|k0p1F`<|+uJ7#PJP4mL&9W`60jQDkffgc9Xlu1 zi*-UL`h?4rZf&K{9Aw-*{#DrXSE%G7CvVbaz>g)uv)UPZYPUaY^((1OmSr&_@e@@A z2xexF#M|0)ofrz}$ad)>rj;i7NYIYMfiBl>NZ5)X0f2Eq?!ui*i$IO=oUjRf)UpsygJ`v=F_z58 z$SS|AWE)g>WlfvYx>15&Tb7$`?iFCk{W>Ift0Uu@y~46Mh}rw6l$D*@-_w$`nAbXU z(mwK+4?21cbxwGwC}Ut?PSu|blx%pX4=e_Rp}2$!xw!2 z{ESA5Y*qv32k_{*cxw8=ge4mIKPpaAoLp%;?lj6V881su46ZSxL`<)Z8<_hwZnMFnSt`h=2{56d994 zMfm8Tp5l_I&NmF1^oLgORFVNa;6X%Pxxs?dz_aH8H&23|>uJ$b*(gsz-iQQqrgkSg zUQOMS*!f1qOr!RbG9}h&R+iUZus@tI>Nwe5mFI3KG0(Tn@{`%#%kV6(9m|V%BJr?- zu9d2WPZrO23~MYZgnqc@)?N-AAN-p&z5N@LRKNLu73CFqB(Vp61tn%lf|5J+{lxmS z0vrEyKO@`_=rgQ&|98!Y@*=7SRrhv$3RZ0sQGO$?&{*fA3eK zPj*8`3)5n<$=wO*6^ykk>g|q3s{Db3DYfG1P1PW;pbSgSN`M4rv2&5ArqOz=>wmp%Ghi5K3 zgQt--Jf~|4-TJwIQaJEHM#~LLs-irjR5L>^fxH{n*{bzi8X3HEaZy8@@MCNGT zf2c6g1(fQ;d^N}%8+?JyG+pQQV4obcV<6~d%*-Imo%a2}tPKqBH(sxX?md zsGgIX7_kD6a$j~o?hcxto0XjL-RF36MlFvcJSFN`IMNvPEgnRi#ug-~Alu7MfH0ld zYLU2mmKFy?ayAJt!?KfhGs0--xk6BcBus^5fssqWC&enttM03}%;)Dex%-4OyzW0% zXFG>GdHeClwePGEVI{+YMGqD`dJZ zJ8w4NVG7Lo=rm*8#~1E~LfV6u#>a)-%DE-cK=i&|7JsX1R$<#Mx{fLEW z=C?hM5x?~QQKUIjLp&;;U>oY1p|j8vDg3^_P+0AXuC8>d3P{@M!4ee{L7*Z8kLTo) zpgsVLN+ZXF1kydg+9?@QM#qcHzp>%fM6#G{xDH#}@v_V-%Ep3A>ME-;t}-V0XXMsG zxOphp{}$Z!EuOhC*j2VS0foe$C5NF+;6OhHot4D-i7KOMsI$o8fn@z&EElv{0Mcn_ z5vb0#{BXHj9JN*QwYPJyq{Q$&@(M?$Ii6jvNRH+T^9vK+7*eoFo0*2B5%MKMmwf<7 z5j+`N`P|KJGY!G~1tzTAE`d+hm86f3?!XD1E#PsM9J0<&#^J4b&)Qqc#h+^*27OLrm@{vLcKpkiFJ(P)(I6%AVn@?Lxn7(L zscWPwIwaFhDIPfo9He6Ui?2&R%gV)bPxeY)Txkp+Y19Q1wQK$}TCmqT5A@gL2v*|2 z0qNR8s<03`^~v|@!Amvch;v`|s9OX-cYJ2WlLzp6EL+GR9H9Re-M5<&<`SAsqxpeGH>j>5^|TqWSFK5uq;>57_vYB5MMDX;>EQa;C?$ru zPIHnjgmJp_mcfamC`9WQ<>ghrCo{g!{w%QZ9H?UOkUsin{c7J&s~z*Xj?2Y{&}A^T zCV*zg0&p?Y844eumI}^^gnaSYFRe=d9+OYxd>$=T@98a&Ov7zL83B8vI$m9 zZmB-$GnqB9bL2;NY>}OqRimIzo@a+udMzqJ5)~511`b6e@i{=b@ieg_+6-K@pl^de z2r`+DY7GGj%?!CMBzX&M}oSHI9ViQfcTQ%~&LsS35)Q?bUq~Cs-xXM2jcf>(OVO6{MDtQKYX=+D<&)aK!U~Hx<>TKM;%1a$%7vRuRI2wfYS7<}UeqKnhZPulhCB%it@_4fN+bovR&q zYw<6W&5b03u{hFm5}e)17Qao=H#492NFARN{88^!_rX5vgyLzGSxWfiRD5^$)uI+{ zv8rj`KflttyU#87I`C?p$xySZn*u!w$i*=+9myt8(ea%XZ>Af|3X`kRNlEMyin`Y$ ztaC=9U5#@8Xihv34_q7jB12g~Ul3fNFX@%qqTR=_d)}|GPGdA>slM?IYh1?aG&pES zhgr)1(>EZ{{RQlcS6bPzQ$zDqPMMAjra4u=;Gma4)1LjE1vF+SO7OiBxeK6BAJi{+ z`+VJBXza*-Z#C1qZ`bRmQ1PD?bD^;`sLi_|7%>L!W{_F370?L|1|B6RUF%JTL>kac z-F2FS*$oHZNoq*2xI;xUY(PMSwrT{x-pHOvi>!vfXO>s#Ng>J{vC9h2vM<|?f0%m! zMOxjl>cXw-41N9mEqQf2jHLUHy8y;t<|{ooq#T@BAU^0oueUfq^Zsg||Cdu)4Lg_H zovxTyO?yHp3ld0hRH$XsY~8@qFrX8)#hJr;pYf3)C`J@*UUj&LijKGz*PM4yOZT&z z#TPA*jPdzcP=qK|$JWn&fz4e@^xmV-s%mI(EGUr>(F|saAZVV)mN;#IXRj<|>)=v* z@}*f>X7%F%5(b_RNcGwY09>sJyNd{UbY)Hg(|sP&;mtI}&P} zj_H4Y-2K7P=P=RfY%&bsFdWsC1&%i02|y_VApt-`fqDcynSXinY7-ZGK`p>V1#hxF z%uB|y92vd((`gi{%!X$sqoW2DxxKXV9BrLgS**pqkx?SdvfNVfI2;0<&yJ}{Kp>&a z|9fVbI+9sK1D1%zaY@jH8$l7kJ_02Sf<*1Vr#C9f1UaObYcES;+A^C&E|zRAy`sP9 z+9X;eYBv1wKORhI>VJ~Naz@+mvrwxdo6FIjXv1rEEMjyK&g}?En8u5g98(gVFgzp9q3kMY1JgHbdlkluOBtj=p{qu*p|j zCluL|Wj|d$GllN2y>$GIPr~foxUj>WJM}hM0@bGGVmEI-Bh(7yK_T<#iXNsj8JWQG zxny0Z3K$ha-0_6jYeP~IkOZ~tKYXxP?SXryo=!;@s#jPj7)*}>Q07WW@o1r)JO1S4 zAbV(T7;gj?kusvR;z<1XUTVe7-N`k#(39zw1mnmn1@UTRlToXD+z>38bKXeO_?Ee? z8++j`^Tq8?ih>-!r<-)7k$GizuD5%()t(&Z``I}6wdG0H*5V9 z@(c$Mm98XUg4!@GB>Yh?re@Ef>6s2gQUJFGND(FR5~gM0#824u%-kF8NQYB?7ymBb zJovS!Hor1^?ab}>Ex&)r$gssOv)8`9Q|7l@jJOX zq@KO3q9-^m+kUe5+t-V)=AfJa=iL^FyDuHfN@c*#XM8%3Y z)U>P?-DX5<0z;xAtQ|P+Enmj6vVMJ=+A(uC45ndi9j)k12(ee)n00^LCf=VV6Q^Dh zqC+M@!H|RqHSJ3N2Y-p6V*eSwAgv0b*abX!H*_V3%=schJkxkTYD+TcfTKBxH0+SC zJ(SB?zzND;-vJqllj?51)DL7N_DMX%3gyA5h0{g~YBvYFq9M(gF86V5BmrgoB?_ud zZcPvc-VhHC0S*fzIKv#fBv!qKua;s@al*tHu#&C1II2wyF<~07pGt)*5#K7Pj;|`N z?2t3h$_zJ~5!G!3t>hS9d1|6;nQv4Zg}h8HPeaOS*s^gYKoyZEKS$4qXrFp7GQZ4YGB=rf|9-bA{=Rrfv%9F~djy$OG{%hS zw8C1^&c!#)?YulVR|&*R&|m-h)$G}tv`4iZHTJHhfyc)m3Z>Z*d8Yv8tiMx!#~}8V z!V}@UoLpgaI)YQv(;L5jM*C*Ht$(|)Kb*C^?6Mt6uVbQXT|IH%dpmg5yI1jK!`50I z0b_yXwLMwkqq?_o^Gjcx@3iN`J>s(qrQ^5n%3WYBGIF-BpW4`%BldPlVh(<2sfn>y z`#9?@$j>|Xb~$u|Kd+wMJXmo*j{d%VQnYn%iJoH%=i0?de~nUREhxTV?{MdouB0}I zz{j7wz%bdnZqF?oISo&1F{n96H zz1aEAZM*KaHd{L58}w>NT^~X~D@FN9>!4d%u4d9UUE&>L$uX=LF&?h=7%ycNL-m*ozZD4@a3#Vf+B!mhDBL}mW=eUXe4${Dw_cyzQGS=ExI z1p>}~+rfYQ+MMfc%ndB>sycr7koTtiPLxUO0L(bb+&I{EU-p^{x&E4Nn<2QALYh1b zJCs~#iDv2DJHG~x_p^1<)edK$@V#I!5p|N#2rlPFVXf9kB2huf5X=Wrll5(E74`fKhIelLCIyb<+3d)J3|UqZ~CvAEf}636*PA=zntH%@-2Ui zOlDvkgJYp+94|c%a@T`njnp+8v9d1__C_@yGP$YXmLqhmic56YANS_Gb5{5X+?Oe>95*za!+?p)qjMmXGK|3%=`xY zkqneBW62QL<`=c$o`R|EQ6ogz;#;nL+Mzt~JKUeT!AaJ*+RGlsWS}l-K>hy~M+#H2wuU6_e!@->fcu7zujk_T|D0{tYG8+B`2b zI8ATxyx?e1-k3e$%2xfbFxy3+WtrgtAbvGJpLnWnaME-V4Uwy$90H>o`0CcksTqt; z!3JYlpor@^BFvoHsTbLx2nL*@?-d*%_D~~~P$>2xoECxOWH{TkHte-<$iDdG%;wkG zD}a62n7Mx1NBC`WMZP*QUhmf>&jA8(B-}!<0#UP7T7#R5oID~&}Pzyd^Q1&NCpNUey~9r&iPbi^RLbUJ;1xJ5z3tPgIv7I0D&a_ z!2UPC0+-<7A&+}r#pT(lBLo+I?a3J$)?QNl0Ov+|^2}9}zOrwQ_yv9(Ut+j<;f}1Z zTTXv6+A2OJtB6sn##g!th+FW6EEF3r_bH9=X%!B2(gyK_ik}O5^NFk#7Q&m6Y2N@e z)O=4?%bo<(bVZzNe60F=LT+2W(8;fs}kCr*j!g`Hs-pEYsnzQxUr+*Y>In*T?Pest0)_#$q z|BJcyPO^|`;d^763T?7s?tQx+3k)xC7g}#ZX~QqFp=R>$Q(^ng+9B)b3J+QK*eCtB z{3`NqnHPo`vkiIL6p5refs@-v&-xDk3q($J1mVnG%ddnlUo36HL`b}7^?o}+>w1MJ z7tW}s=HBpg8N*)GTyb-Ibnt`gYS#Of!faKMWH$T!;+y!FQh=bcUbs7L;yll!w#)5S z`r5dU=Q^i$2$S_`9CwS+%j%88^&nxt`O1FP7Q;Nl*k$R5z%g5XJrJaHz(ae*-O4*5~r;nSD5<9D}ywdrLAZXllg z?DWZM==Q5-)Q9@<6J&c8OCKHdT`MhRSsrezx^?X*)?v{j_3it2vz3b%-uN9Qu7*Yi zScE{=6w8y$&z%^th6OEucP|y+MQJz#ANM{b*Z@V}|veZ_OmT+LJn@@M! zyw4cHkoRY2*MA=MEFfS*zdc$jadz-O7}nu=ZTRq;_O&-5_IV(Xn4&J`{55Ok1d}ea zA;!XOhxPc+>*MHY<>T(VNAATpT^9DR?he&=WG={2y5vuxuyZF)8UyDHNmut3UE|xU zd5{uEPY~ft2I2o7_17Xpe6xIgAGVE$YH5Gra@U#j8P^mwbFU@TSaAGx;R&gv$ARSQ zT2}&!>R?g3cz|@&>v?_fRa7luE2UK^gjW5n1R_&hQxtKALj zk-4C;TqZ@%B)%jz@=#WSKt}ZAiPKzOj1Z6PV3OKy&YQ2t#s47-gt?J zIpJHGt=e@znn=FVJD*cfrsYk+G9UC{$0FDNKihZlNuTfDlGedSM^O8l$5;*l6NX#A z_4nys-?{Ag_Hmzl$q!1^bW@bhf^Y6lyCOR{@{X4xgFf!fua~Q&I($~nPCrp=dG~Si z+CD?znxHom+nA2e{mMEp+^L)(jAvzSD8*!DK8M-VjaT&4Uh+E#%RYF0tP-^4bK%}C9ffZnQ{y_; z6|z(zg}a*f0fwaUOmZxhCVQug5R@w|DesZ*9yfUCnN2X=`JcOj3BR;pxa0 z0?)M5Ba=*us%-?0)V9A0-5cCj-8$IWKU{Cwdf)LlSHP2#PHMd|mhg>_wZHiLge12P zxMgLy@QPeqy2YKk`snb)TugA$QEZ5!<(XaC<>hn<<&>C{u5yv>f`Wn- zHL8Uk`g2K%t@+6*+=*7-_+Jv^Xmm`Yis!=EJ0+6RbhO77em?CcxMth9ET7`+2y30O zNndUa2n=1lrm}LoKGrMe9ZZ%HCpM@LhE*XoZxi131*Fn=>d%Ft47HK2vfR|UF0PLQ_EFeySsstI0ChkQ)H)b?g1~@L#d#JO&G0-U-P~kcGLGv0aM2oE8LX;u z)tcG)ef#R5ympAIA=U2aE#v~W2S&Ke04UPji5_C5U9A`-no$5nodu;%orTdLKvJCg zTc8e9QBNI26gc%Hxu_$*;5-k;Kcu4vD%dg<0i2U|mNQynTQy}e=S&lOMC481y}gx9 zKTrIAbaG*`7AAV@JBdG3W7LO`HSz7o4^o?r2EVMeSzK{D$~9U*^G|S>d>^XgqaufC zIs^N&?Q;BYg=|Dcp6Oq;Twq_{L zG8;j52t_P}Rgi7cx3htN$p}__)mvJpQ#%_w41_u@E-f_%Ghw$_Arw zN?eJw+hwna2Mnw%$pf1=-H#Y}F_;nGpo@DkJI@5;9Au(p47ln07>>J7yXCT5w-8+8 zNN4oMn3>zFGQmMUTt;^?t<xW|dq{skkaZxh>P31NdLs3>6&HwC5nuB4r(V#4wrXf}_N#@+V z*-PHMuRrcBNXO;i5qUJ>g7Nnzc9tfxhCdVaJ)%AJ2S6YUI77u<6YZxgCMQwtlvoNI z#V%ejE`*@^@&%9Oxv?I{%afDoRRta%Z>|oW8X39xvRikM2TWWo{2ac$y}b=SIc_UM zH84$O?M-Ors**zQeFaWq$%0Q+>|D);&J2>keFAesaVYC}uxNq*-#iWqOt*qtN1UgL z3A8L6j3GgR>r<_eZAo!_{2Rsh9Y24NGUXh9Ty#TB@ZDCMAK0sXdvK&8$fj2_GRkWw z!ES;`?i67jqhpxGMexe7;~Ev&l1;`k`pr1bP48_!F&j>pIp_`QpIG3~V8>XMmzVcB zn{gUMqEw}I@bX}bNILiV_FzuyvN$$tnXWXHj*~#UXa2G>NCO`3%-Gu6#+aBNolmQ= z5A=!|56FBT+MR6Tk@mCI3FX<05eFR=!b@&k0C9&o5tJbq2e1CMMT&Z>X|&vFa|50kk(5KN+IvJ;I4Kxb#FJO`;P%y-{vQ*3 z27{nV!S!X<3E-#Ny82-L&EY;6-cD#$j88TJ2mtJt0TFc&An*c8Ar4AQMF3Q(-zt$p zEmvv{CqkpJV8-Sj7+@S=K2rqpEjLiJoZ3ZD$14xN5A|_m9~bn?4V~0_B{ETC?PVJ` zbtr=I_P*DDS2QiY$`}$2CYE_wyG6l3kb^8UL*VGZL%Jr)0NDwwd$DD>#yi=J#(*rf zgfT{iaLuKSqm(WqLA5aR;rkET9A<@(P6sLG^8{{ruHs$?DUK6-E_C5t&gHGc zc=;*=tx50X^0J2Vc#%$d#Uf1QExp^#6BGOtdZx%aREH%NJ%rM|VmesuHF18-QebIN zs^g<`ahP=x`)5+}xcN+8JpD-{h&K@gedS`>h;ec3xTkv)8Gm|}3UB|IAo9Si#YO2j ztJ6L^RNX2)Tax%<*|WLtrI4b^Ye;Pdu2EPwmfaApT$FG1cvM zMX8dZoVhf#Fm6dWXt>M&tJQz&B*39>Xexjrr^EOS33dxT>kaCKTdW><(iw(SV}G!B90e*!8FZG%SH( zb1<0*8dc)1gsqs3O+~!aX;y+rtmR%LJPM3-bYGWEFY#K;%zmET`_c&s{u>C70UI%n zWxnj&ueL1^W4cP>gmu7}!IQ>;%4Vi^Ks=t>Q{ibiNe0Or>eh%))t3V=7Op!~xpqGU z2Y?tgK%g2ofEoKLh+vnsY8;EAwFLpP;D2XeD@K%MPI)o|IBwRl=zoeNjx+uKb4|4UolUj5$9Iq5 z$DsxMH<+|yTcS-`-!Dbo$w|>r_}t@UCwmS|2+@nD3(a0iXO->T6(|~Ps1VfJ-rk9VdV9NB@BGxz<*H01_&n8ong*b@&gcVq zF4OA+JyB^QMky-SbUdx6N^I+x?u&mzuE?rin5JgYpkP1C z1IL1RJBmz$fKUgK!L|VeC&`vNZ5f8O zN*@4wcpMWkiTBbX%5Jgiov#nddUwgj(J?ZvL}>pp80zubYi2xs;eG$lf$I~uuFmYp zyFR&uV`0L}o52~*(n50KbnSw?UUn64F}6ED8SWf5oeS8ExjVOAr`mz$up(au1Gq-0O-sw$I@Eco{r_rV=gzBzBid-eh${r(-yN{S^if20lQjuS&pj;22=CK zNV%evQ(XdlDy^MOdK3*H2WV|80iAgofq{|)?zROoE+&^z$Sr0v!aW?L!k zoCiWN%D*ZudPTt(PP-!WYp!93{smPtbTRy(aB{9W+F1w1PC9VjInuJKn z8+_W4HjuPRQi5?okaEoFHS$F~Dcv8ZKNCZri!y2HnWzs!TvWm;U^y z-ECU9`Dm@c(RWvVbhV+~>#AyB%;MT&RON+@-=P)3Ls&e)oC%==<5q-oa$I zb_=zmbM0x#quc#rji=5Og&_6#uFG!rBG+cUV6 zZY;JX54IF|wZgdQC@n2lZoJaHuP-JAVVj3ysOt)};dD>B?kmYEzI1XHGida?>5g zk8?jr=335TrB8)F>@gm90E3~t{%upqi9@l6mWil^RDDGcV&q9_5hMi!jGLNh6|}_K z$I1i~)8MVMpAokF=z?H~Btn1mq3KqXf^m^GfBbO5i`B8QFL|zQkG`|mRn*tF4Ig$F zKNM0)w*cKBqvP<)gpsKmV)PAo3YaoT`8&BzrSLY)iseU6;zNZ=J() zuChT&aw(@v?_BQBK6rNAb2?~sbPtS#5_{<670-z!;PGg%Wh_2_53;1GE=4C{h-I>&;y57s}Kr2MnQ^cv2LY zk|a^JIxLI@c;moLrV4EuIk4mbBi$>b59M9E37F?j=Af%v=%Y%@xj6x=zyJ2z*RR1> zKVni{fR@KyLjep)V6t<89+m`v3OE?%*1Ivn9T@Pf|GorACc^TZtq^aAZpld$xeV_5 z?i9Wwe9OJk|NA8}NTkzF7S;quSo3BZ2^nEUppY$})U z>9tgdb$g;B6UyVwG>Im7V=|xioMz%~YwS()A|GM0D@cP5} z`tb9)gW2WRzc7xzN1IGP_B3i9Z6t{MlDSVmTK)Ul)AJ7vm5&=7OW1*hsL5XopPg=f zf5q11%Fu8p`JA^hS>K6;a&i)C4Ryx7ug`?rqj~Q4~t_zkbYl@P2AQ&Z*X=olCAC==O zu&|}XNRX41mN#Gp)4ea&u`k?nB(2g#9TI3ocLAJm9fa9x82?DiGBIzrRv)aX`b?`H zWo2s{3Y+`!Bba>4!s59re+GTJfQ8gekgxPOI$$WZeAn}Ly}sYkO{E14Q?La`K~4Pk+bFe4gyZN*FU2Qh5(onUir zHyG`7?8|Ui?8*FnsB959d*Hu*fA6D)vyj=OS)r4|n9c%8gme$eMA1BpzosoJ@|1?9 zU8xM?a*OTn!RYa}xFGl_p`harjOs6FMWU|i!7fHaS8!pTB0a5kVkU3~@|cyrlSTV5 zOh?|p=oR9o<+}$_B^K@?x=onGHwh?kD&{Ra65QO%{g-6N#^9{1RF&H*6g1sYZ7Z+1 zT>)6?2LoKNqC=7sRkYHIih9!ylJoH*iJa|*Lt_}W6NCPy zAIBq-e5Nn=7sT9DI_^7JdZ+$lTg+*tOPBIFL>?9ond>}Beqr0AE6Y_ONorTGEgouN z=%%3CBV^7goU7(g%ymk70#2#K-M56t2@ye>=imFKEZ#Xd^ZLDCeErd#Gy4-s0f#TO z9$B%bxCcBdJac?X?adBzmjC^v^~*siqbVmgo)%`!b}>zVUGeJQ95}K4X6M}1t&-Pj z&4HJN$H185ZYWp^-TgY_dC&$|!%?r}?$5x>-NFrx+)skiN7s*)X972M&it4ySr5$Y zXxIzH2p>KP*hxQee{Dy2vFq9P?&@o`t|c|U5VZ-v=+oK$vAtf7zS}!@zdq?(E#G@} zVr#d>V|((#V9=`C{cVd6ZBA}wf5l!Od^Py`xZ&ta%%weS|F`B>7dBSLy}rDA3qJCm zb;dsp{2-RvqdwM*!}co#&k(hv`i{LRwJ-Cv$6xCL{?49s%zl*Yc=y8-@uN}q#-K;U z)BT<+CmS}0FKiC1*SBsxnd+E+1zyG5%J;waC#Br$pIuP-GW75 zaBeO#xu1Xg{}6T7aZSHb--l77$LOxn;Rr_xqen;y0!o9R5`u_;-*>`1++aEVB=>+4m(qTn6A3J`qOkNg`IyGwy zShf1{m{xS&Z(Xd?Iw<|NZqSAq$I8XE3)VXQ9m8p2CZGw^s5tScmvum)HL3%#2uZNx zT*&2!&cKVO1T~_=&8u(e{h7#Cm#NuF5RhCkahlo_C_~#ku9&P+b`h&lI1LQz7P*Q+ z+K0UcbRYuFx3_u0?p)oLxsA;$!7`>qm9!3Qne@#tul7vPum?WoFB$_jc;1~KUg{^L zy)mn-s&DSC@QIx|VR`dbFUz={rs%vvL+8y_eRJZ_)zvLTopl(6 zFE{*xulW;tR64*ow*97R?CoLih*IpT;YLxxH{4A-rRtnP8^zuH2gROFUAE?DFrACwAwi^O*)E6LxiMAlz+OcGKc5aL8_UVyJHvDgHP_J zUWh%t*4Ar(7!q`Q!`Vx8SyY|3NXT6K0}Y4{*ynuFp^i?0y$>6ghAtN-_U#vgPddZY zWdy`}!b1i1;*t7NMs!z#2kF&%swZgAaTUt*sNLhKtkzaD?BJ)(D%B#xc-$@m@_7Ei z`ofY_eq&gj+w1RwWB}YXAaUy|`{_OTM>R0*FG}_AK6$F1vC0)IIb(&z^Epfav zDa5T`;);wZx~;xs4uOC-LnD*8y&Nssm%#A-B3&6CX$A;UGlVEe{{qaGlvkb4QO~%j zgHDr#?~Z%(vU}E3O+Y}wCxno~*5vI%lg`iMT252iZ2jJA&D6=_tA)d`8Bip@3WRKe z5T*j;X2T*_3Abu0Je;h^aO_r5iO`Ke1ppewEG-k+dL&nhGU_HIP`$ohO_p!Mr9=7< zJ@8TxV`eGB#ZRM(8lwJUX)6T!k6YN%afp@fAi|@R*ch2(J;7}%huMIe9gET!IMy! ziTnv(d6iZUFOW~MuAvB6A;cSjd?9#~TSwO_fz5ih_u+fprm#mipCLcC(cs)qI1pp2i3x5%}igL>Jy zzkk^L&-wBKFM@Vwwx<*h$rg@#Xj>ld@xR)WA6T2uZn^m8rFdC#ZGZdI*$1zHz2jQN zqeX&QpLMyQUt#G-<9iE31VhR_xo7r)z14ANi`(S0&lc1a&q@@gW=|dR{MRh3gIG~} zmy*}5^E5AlHj%*X zZsShf45)_euLjloI({VoiAEIB)$nI(d%{Z!9ZRZ{!U4+xvJTZpFOtD!J*mpxgE>jW z6}RAn*w)rCiZYX!K9%4m?P8}Wc``B#oNYJKIoH9bBqoJefVsU z(F;(7tEYBeM}>0{l5s^dJ;(~RfBAqcKURGd)h}8^2$wFYLS-9$H_ioxeV}p}wC4^W zru=3?!n>&iE{d6 zL)~;H;53f>C_x~8fDX$Q=pFOFO&5gH6^yNtmexxT1}};BWV2vn_vlOe{;==g>zT>c zRp|r2A=h!w<4%83Gu`sUpG_|x`15b*q$U`%utmi5OJLQ*Kfk4mv6uj4lj9A8`S!|y z3!8J+lVkZ9=G!8g>Jtoz1ZJV5D}7VFx`T*pvWJQXlCFwxjC0U{3PlS#@)v?$RBes_ zU*Urf*Y(}p^!E1tmwSO~H(@GlZc08o6 zO6vAJ{SQ66y2;n47MfK_Y2dVSG*`uxD-I1ZFnqxA0ZD17(HNeK*9;@GMSLQu96~?;o-2lK4}oei-!MD z-gLp;FLHJZq+D-raT7#CV+jd6F)FFVX$8^|IH8A7zQ@KoDkw4|M5JC7Q^JdF>!vRm z9rK2sq)b|_QhWX_joK65Z^b5lI!gid>+AQ}ZhLJiUbTd`o6(OQ6Mjys%3D0=<(8U` z|Gt8Rq}iE&8w4syLqBV=K^_tXRIw}(_dRo{_!eyUi)@{CCOWw z8M@IEcw_rwe{Vmm9_t?*wQhYxOzpPwdy`XfFlE6nCGq=0uUX!+Sio7dus$9fRs5ZM zbN3u1TZ?KoYd_v8_J5+zS=*~n7*MnE4<~6mjml~E<+Sl%(r$e=A^z^72me{0*u!F+4R7%#;mo|j8lHVjPpV=(K6(&LH^o*>UA-T z-iCAh^^FO#5t2-NBXcSzO9qxWqln5a?Jz`q_088YG-ObsS9J!ShwHm`=Te6rKYp7w z8OsK4-ga+W76%os!^Cgh!&&Xor(n?F3^z1??)Nlkb;9r#lM7ckjXHAcj?;HXVz&v8 z)ra2>BaA3zlQb3vEEeQ7%xFa`X(pW-Et5agpb|i-F^-0VGX#Tch5*2{dUSL<)UHbc zi_e->=iuNKcRVdm3KYeZ{&2nNDa-=}^XE(>>RLLBG-;|rJsDX<8g_5fJgOQSJ4DwJ zy-U5mYz^n*w?re8Dj$88AAZqkc#|bGR2z_ju@Zoa3QEzLSMD7QsEPPY%N!d#y##_f z8vFNscZ8zt^a!6=^$O6_(5W%17=-Dnr50p+KMCwDk3A3Lb#l28xL_9=ZHvmLpzG=`TNu`xqYNwPhMMa?UP1D1p>T7=f%yOsyp69}~xlbPtgA)G!rF6yWu@nDS z^wcGRd4=$HHYp5%2gLlhO88&r7zoFyU}^#c1|afi>t&U8016VQK=1WPOj#~CIyj^# z>>l59Vg+KRR ze{DO%%buwpegTQrL&G${cyvr+a@P>hkw6AGlM1$cjLB%V$H)e4;d(5#2&@Nw*W>EN zrHHscfkP+L#J1`@L;#yF08?2Qnw)Bk5Mf*pxB(;cfM8Sq1CU}MUZ5A008oNGAawzK z?+hD^o}QB=6~Ul7!k7S>ov#a5jzdsDafDfM~mJu>BSjF2Wa#Fi>R}<%`%Y2m>Y<;*w#e%#sg&#$lJK_N#N@iE zU|MRQiZlUl2|OHM&VjcbP*kRBzSpeoj+d6)e)s+3Gq=`()7Bv`=fF94?Ye4Lms0-g zFW<$LyWgLoaZ@NNe<A`P^!oo9d5gKz{t;B#Ce0&D3d7bWH6blM? z2o+PBJ!#HS^2@TSyl)>8t-KRp#diO-|k-6O0sX1@ZkllG3@LT)hSD4R1lt{1NkpJFl;Nkp$)z+4!*TD6O z0D&~D(|ZgD@n&7&gS*7xx*9g}I^xmjP-Dqai$o$-t_;1>CxO)59)_lI(m;0=y*8Sw zV8HQ=irvc5&o5~Sk9fQPeb}7WE8mUd6j6>wn(Nn7&Y1@z+A&2sF=cSOGGT03>Fdur zwzn*qzO=6$drg+o0WjU?PiUF!>V~SW`FW+l3EJ{99vUMIKKJMTdxrRYsqKU*!9@g#eSXkBD1A#ulLMM5NHl?!OfLxmY7@qODR1gYPvgNmNs5R< zI_n#!@a2!XY^^_#C3jw0aY+1OrwPzik>sYzK=6|CNNo9w@9d7e=XI5G&Q{8PkdHrd zcte~>11XcLn#g3}e**b_KdD}%MEx;0g=w1Mty^ZK7MM;eZsTETv8&!$U4@F%=gg@m zUkcOiJ+Ay*BCxLd-DD-FBck-R`F+;N!m5wWy%81UdOZ$THovD~U5xc{cPK)pkh>?@_+uWhdnU(kk|fu&Hd#`BYsn4e4Izb37pewZ8ZR@p*y;UCCPO*-jE8im_Obk4T?Q;s9V z9DCcq-sPKSi>YThBuc-bua5P_q%Fsh6W{92Y@OI2xe-4JsE>SFvRdICVDqNl>+sRs z;9UQJ?{N&t(Qp*!kFSZ!J)@j0aWh9R5+=Oo;yJB9v9|>(b2j*Y@jM0lU>Ce!r`u8kT*O2S0JPvA-YGi_2kS7`Fhm$7BS7_4h5 zT+_Uh21Z0^UVz7k2#b*DHl&;EL?;!LM>lbY*z=OI!WUC9d?{j)klQ@vor|GT8KLwA zcqFD{f9B8=jD{NOD!XO3s)p;vb|eQn;o0w6zuc5*p;a|EqzLyA>KB3&Q><8`i`-ds z#F-qzgzwJ~3o%8iN??k>&Eoc0$Wcw|pK zBs95=O$Z6pI40-k?6RcZh=_<*aFo7=7niPm8yD#>J*Du|8+DpC!leqSX~n3jYZx2q zba02ZJFXe?@c=8H<+C@}mLTI6)GgC zUJmCYpP3{kG7cdNzhCS$ez?86Th-9;`S%wV_#_dHEwTsQp-xyl!V{JFwzjQ4%nA>v z?{t<%RgJ14$5)*%YB0@qtg@Q35yjyd;TSuxpaEA#lDfvnKu_?I(mQb0UU%;AaUl&L zNL-CCarZx|8ya7etE;aM(bI`BmWjFI7zA$RW2%~874bD3E<9grRO8;ywDAJ-O+Ni zG<1xTFgTeVL1>-ZeN9rB_xEoJEV1M_Z_&cJag^dOg$)tqChbK!oy2x)bUZv6v;|OD zs^u@-2ERiSeq=|P7=;!0dOVTe=SgCGR7Xx`98A0@wt#ZvWk@TMPKwT`hB=lwGLPE_ zr=XK(NB$Y8z1%D95PCaODS>c75Lt-00E3`Xt0gVAjq$16>9$ba{f2{ypt$DXAB4@p z$Fl5RQWu|cR##qIIqg}O%mrrFW}|BdW6~JR3s>96g-|}&r#-J<8B~+M{q^zvd#%J8 zNX`xK*a3EPo4Frjqt|M|@6S061?5l&A93d?odhZU8;)vpNh1&w0cnjiTE+q8@*ta@ z#n$COv{}kLH+Oa8*4=ip1%uvMGFDbC?C6uXV7+$NK8;=fMqu(lY2gFAx?1x3kBO%o zXLw>&$LWU$3YX`+IYFC8ev}|z%0Y+~H{bMA z_57QrGIWf;kw_LXSUC3Jjbc~mwoPoc{%F^ER zUc|>fIvxo+DRxQ!6e0g+|3A#7YML6U7QJ3Jfmt8^vYIQ`w7W{)%b=oA`?2&76*W#J z!9HY&rjP0K?e`4^d1cc^hGhTbyyDQyu(?7Qz8VUnF7yZAgq~eRoS!^ikzP*&A-|31B26L({&)hpso4cyCo|L$t0GNrdFfxuX|fbusomSd{#xn z6*F>Qz0V0HCB*09vHN|Z;eB8XqmAq*h2Rw}xo30oS_y32CE-{}N1UNpe5RCbC5~|E zZr2t77v^^5sA5|5K|-S%;ufEz{$Dzi5eMbDPS<5f+;iHzGJEUA3v*Y-hKo`kGkq>$yXK1K zS_>_&lzVa{xNhU0w&9zogAeIL{~{(JVvYwb#MTr%?H2l(Gb>jq0n!=UTRKim&tRAk zB03NS_W(BMD!)Oj(WypSlEro*GqMw`h6;Hn@JT^A%{k|m_mk$9@Yu!ffCVN#>vYR9w; zG9l|?@bK%<5OV0ep@+on5INg+M>QcLsCWt*LWBWB&J1-`RDz@)^NB>5N@F*KFd0Tl zj)Re;q9I*5Fwhb9N-pzrp%1<${WjnH)emU_&~y_(p?o)&4Qjq(YX$t4Hg2&gcg(#1 zTFZGUc&O~prmr-(e7EX%o_~W&aY^pnpqs$r>y*U(b^-y}X3u1;yvdbQi?(x)-C5uG zUVWv0Ev2TuToGr#&6wJNYdbx;vyJ!$N`H}@EvKHlzC*ce%XImtE9p~^gaxl_KI~y> zb3R^0emSp{j$xdE_j_`)6Mr9BwAMe3cuv3gXZ`3XtZiufoO315ra60t!!IKxQL$ZX zLb?6w?=5mFb&nig4grB(JTc%Wfuiqk!o9XVwOOyCAKNKIHAHN4vR`z*UcZWJ^~YT) z!2^tK7i`7d_jKg@(_4QNZLSh&?!fP6uX~`bvENyHv6b+$p52 z*-jLg^&JIMfY$bQo?VHvk3(&q4PBGWP4HWteG{;}BGd5WZpr-09146f z>TGShI?Up1;}?5H zfnmy*Zwzi(9+7}S6vc!7iOH#{*))p9D^Slx;d3kv|83VFXnVOnpj5(L5 z-p^wBObDt!?NJUSSwTj$?I21BTvA>0yD0CJvd!3$vcd-sr|a%Xa`3Xgw*Lw6S87hD zOH}4;a?iqznxntAA0MnwHF+czPgHnquVpu0oNUQ8wdzYf>?<*hq>zlo1DVEtE(jno zAh>ATixWnF1rZNODH3Knz?$!B(3n-*9BX;MoQo&vRA`3r)f4hKHu->z4_ospAFFhl zy%TcD-;E6PP<%qqy;qkiTFJ6}xap*B+-*p~KvuXI;t6CCLq~DzfVAC4q0y;~=MDn* zXZWg+Aj*L8g&BI9kQk`34nQ18bPDQCPLk?cI^Ft$HsyOfQQg+o`^7QheT%9fUKqp^ z&DC`;iAhYf=IKwt(LO>Z7}l}CLj#Wp<^=)M+Iu|hEqpUA*S$=|Gh6qnDJ4GxI9XV7 zmuWI6_aNb)yVc8M?l*WYGn7A5M?vuco9(I$)DZ&6ZI6o&wc9)Hw05dRsr@;0=BnbB ze58oVl1l<(@y-Vga^8jbO^+=B=dUsaB5{DK-}n z=e*z-K{dTIrXY$=e(tffV`Zi=C+^R2bCht7*Tq-wBZ4J^F)=W(Ap^|8TwA*_OJok& z#zC1}&{V;_Xn3f);WccAHcxGiIOlPdhN;l%aipHX_%nQ?S4p^-Tqny6F=_<*TcBRhbN37xH!8B*>L z)7fq7fOQiNy`#b>2oEcKLhu9svD0S)wS`e1+LNgaLUmzGCloZGAzk=b2wg}9ErgT? z!$q`U(7iw|Ca`H~iR&h@<0-F1gU#V-WZNN}{Nd*Z3G z6dDfC>-YbtQ6G%m{?y|ilzn>f{bSC3?7z8yU#+K;&lb5kg3nYq8g>F_4-1?9j*1gM zQOLJO{k2*Aba*M=e5l-?VxZLb1&B%KoIibkbqE|QRLl>ODF5@+SN!M6;rB;7?_$Lv zfZ1H`f@A*jE+|r4E*Z_&+jsVsTTk;=FQPb>`=U4(SN)ax_hxIqYH?15ChU#pE#^_T z@V9IYfsBbu|SL#xut~hA#RT@m84hk1YT^>D}4r!s4}y?FG+2KkXh*s8D*F z9`pwdCAJ>q1}t|!s;N~j7LR$xC&9jV0Omks>t_SV^G|=TH@t5%Fr7%X{M@+w^NVo( z+XakqSkaH+q)*b%H=GHc7Kx%156+|ly!@m3-d8D4b@O4oHPi>boNy~$9=HA2j(cSx z-=td3BHr@8`^N<=|NNV9+rG$Uyz=EAf#a>Vb6p)%iD$=K6e%2Io(~S4kJj5RwgL{0 zAN|t0T<1LKBzKnEuguQ8z0}nl6mOgePL`xzX~6OynWHo3e8=G6{EpIW@3WOPcD5PW z9_Nb_sTPkDjq%%z%!jl+>7`>v`%-%s%yrjxf5jMF$PEQ9Z@sOk1bG%D0&AhXY8JGg zetcjMm_^>aF86!DxoorR&9#r}(v+7!(}P|Z+&F#}u;XH5=jWXXA}-JV?7Su7T$qWfaKpnjSd)9hL-xg0%JXPjcE$`qO<+-q>(IC)UpkdZF9g4Adac z%{0cNZkrQ1j=(=g7n`pQ_Md+DrWDFp(ZlBn1v#l9CJ95+F9ZP~Bc3X9vLsN;7P5cf zDl1nX9Rtd|HmQPO2~KDwXX6y>jUi3(PTbN~`p)7}%yP?t z)_iy2r>GdHWxPX>eTyldB1mv>+6L^7Wl?>8XSArtJ_6YStQoH`Q*Wv|k z5!={5xc7Wy$*%Iv-4_g++m^m*=W}jOqk+PbrocmSJ2r;^^Rf(W%SdNS>RK+$Mf}tU zB^M|hM$5`706tIqcsCHms6U|=z^0}U-<2dOCqU4HDq+%CG_JZCUS{0wDu3^hPkNnI z!2_1HF8mld0u&VUdg~4Z&)9KTzKNq-FvXq}Gj@ zBJrC;&;c^Qdx(UO^gs+=*xvp_O-mLezuilc_-o$D86qXa-t6x_K23;YL?w}NSCLOn z@|Tm5EofZrvk2^qt<7LCkeKLLqvrN9D^OKb;@XK_fq13JA(cG232 zZSCM>RIkF%5hvGcmF2fk=ir)#AD6kOi5OgP@82}pqaTdLF zYBb@!CKli8aN&@p|H_h}HaA_a`FoA0eeMh9p^J{aUs#g1ez&&M;9tK;9=*DXJja)B zK;;^&7Z(?I7W|_>Q|fH9Er3&tfnln#p;!6iq0I4Un{Rx?2!t<@xe43kuI=6ZdnuZn z5oIK8LX>5iG0@-H$x<9alU^sY0g`A6^@k6%bjQTOl2`88ikq_b2JyEii9dT993N9( zd(`&DCh$PS)ha7gB(lZ8)U@k9WqR!D>WiRB`@1~4cSyO`+OGXzQ zPnY}#ALaG7Cv8!AEhlaH{a|(W+nBYu{qC+NS)@g&^;_9G&m7i-+4fuc$D%U|3bO%U zy)9>3F%KV>Yx+Wb&X)xVJ0em3icGcI4^a z^dPKTO=QeXO(zB&4y4qQ*l5Bl_9?rF`=+FVUdp5i z+%!!PaYCVnHIWe&6RoOiXfF#r&lMZY_s`tPC13ew^qro(*tER7qdZ!=$emFTrN&%l z3@aCEBo(<9Maj~ZfD(@a(I$<%G*DA-;q2mH}+`xgwR@E-+^Sn|5YFQ|o{7L|ZFkbglVqG42q509&7f@7cioIx8A zJXl9dGC?dMsxwuw%KJj`l|kV1+#RnmZzAyqCP1SzHofJV3<$QM3w33qfZ#!s(cvdy zlA_BnrfNFZP3I)Z{Hn{K%S~!#j4qR)2LLMD{HCga7To*Jd z+A%OV6ajiFeqjLg15XwlwB$xy*%Qlh0h{itVd89NkI3ZSh9?wZN7H8c>(}xFV#nT7 zaFj7g%xC{{P<|@X_H1ZK>W=ix3}X^}Vy=oxX#Z94KMSROf&A6aN%uAxfM1}+9i}9c zBxysl>*A4gqVWvTu+gd1R!+m{aEy>3(>nG;H+@1ShZ7Uo=^Xks+=}CKV+gQ#w6A29 z=i$?#QN!97aNc)&u^DSvI3yM6T0`_jcF5eyYRx9-SKAN9pdB;Ww!oy@q$Z$$p$%gL zoKZp=TRX1^(8M4lLwNofSMU{~pE!F}e@u87y!c7+=|9=S*+aYede0ZV9LJJ#Uvg*t z4@vJ_wGdn`g3KE)h>@a|9ILuRf%KcUP$QADEK}8(j~{hSym3)k5g+cs+2@|9rqd4I z7@f;=e@GlB{Qd3Qx1NrFi6h;=y!N^_lJLTOL-MsniG}68y|b^|*3(N{*{`OiHXcmB z;8vsOjii_xR3eY#6?fZ{%-zME#x@Dvzd!sf{8OBk-%cmr#ZKEXZ%eA}*znF@J)c*p zv$Zuq2W+Psh!sLU)&@ zbD`4|-M8W#_MRK^|C~>s%!$XniAx<<1js(FLkE-0lC&2V%1#dgy9T?N-?$Ad1ndia z6Et!XtNobpZASw4nvr(hS{|s~s5q_Lf;w;6Sdyd!KfG*mdSCNd*SW3FxeYhDC*?jN zTj!CgeA<;?{if^d%)1)DeaOyzY&bVON%-OQ?Hz0T+kZvhiY*UPI2xNKxem5IiToJH zD8zC<-G%>C>gtDLOWz%y;@h&+il+n4les&!O^;LS-?(W`W|lcO425WOclJakOJQUo z#P{zM(!DGk9y0`KmJpHm++st#$j9bdSNT#d=*xzGi8 zL|nrm63H1-T%e4E64m%hanHZyF*LzoY50WSq8+E@1xp-ilq2lWE?Va1Q?@t6jIOnQ zi6D2*jQ1(n{`Q`?yd0m*4{6N94dHf92AzN*0#g$cH+#v(E^=pmd&ypRKLK4`kp}49 z$(~3I5t7GO1eiu6)~*0s5a>**i6F`do)DTs!w>vv)8Mt0yrxCv>N43?_5Lw+ZV#qu zCb_&a0XUqBkcKjf%BuIGPP~j_L`1RfPglr@Qjf}f+1jm zOpbKB^B!FM#+++@Yc`yWi^-LTkQuRmgPD+So-3x&o)&EiSGRjXLdDsbS3JQ4h zu|yKlS{gz1Wab>UX5-?0t|hBB(1EsS9HxOz6?c_`0efUPSdc{8Iy$IT8wsgrn0z1G zfpjA?_50*#$&91rZe{H5jQ-UefEtHE7^czy2Yyd|u2qfIy&RLAlqGt! zfcESJB4IH&w^U4zg$lx9a;!)iNH~lR2FVm56rYTc^Frg3&Fe|htO++G1%SB_;Pw-$ zLcKD(vgzYR9V>B3?HPrRj&_g~rr&s>YEk1B7H$&Pt#)5C+;>r?$DU9{77Cm&zvlc&M575$#w+9jPI?fzszN%4a5}Ut zsSq?~@6}S)<)87rwNHl&T0WP(zGqnK16h)+8Q%phrOuB6{~K{y&7)~fM}U{-hK*-ulgC`7195_Pxw$L`-Y?x)X=z$seyL z*{5uG6;u~KIsPPdwj}=dkNAta^n=W3>>xpLIloTNs6_1)-8u`ivHoX*xu^Dj>u8!8 z|26#j#$P=)JbwL;liZ#1r=JR%m4@X)LL-_Q zLN^!(tzNpjXx`MYBAU82{Y?EvSgX_s(M@a+s+fYv>_%gLlBB4Ki0hu)OC7rn;D zO?{)-#OuCi+AMYd3G*m9`%Rrx&!HL9>y&9y-d4BhL1AV}`Z&@ON!)KK6p<=iUatBP zEHCcr8s_uy!0M_1F8qGIT;Aw$;jja!R_vJ2SGiLN zteZ&GxE#9g25K2neEi9PM{pt2E8UyR801q#uk~fA|1_>I4H7ZTyeKKrc=6(q-TTSM zyWi8NK6>OSI%*c{nUdALp3yK#{8@wH=4vnEf*6_67o$c7oO0yO6|Izi6)QheaBGeh zi===np6hb>YF28cL5bjva`{Z3-TugW?M;(@Zii0K3B*EiXWR2GG za`QTB@0XX74e`wDS>C#SCxU(|gMPl9>`@kdrA1YZnWIDLLo$P#5w9z;`u0Ar2;@i) zrFE9LW-uYc`+um4|Hx$vn=N$;IAKTAU=45kg zi`Bdky0`4IA#4D;Bn1fi78Z6j6bduhV=N)0MBXMs8cZ-lor1+Ws1Yy`ueSBzg@huo zRiyE5?M!McQH^TA9{B;%7KgUauZo})qjlzWlT3M%EVrn~rtS29|B55Dty(D-ZG?*# zGqjIMyw$jMNy|!|yE^qKchzFIX{)mNV(V}F51XaU4=(ZJ)KZ!H$7!DqxnoKsJ6T4U z?)Q5TkM@z(0qb^tg?e|Rtqfy3$?_)>-EjW{<_}q)NT{k5tyZx%$M_F{^* zgvl$e^FV~!i{3;$`Sv_L<1L4yci{87>JC@uY!S0}UVnSU#<=J(_N_AOxnN3DKC`N& zrGIl%SbQmW&t~Q7=ktw2j}tTHugb@N05|<^$qSki6G>JlZdeSIP%xC54tW~hrNqrZ zNZg0v+LxkKgKMOgsS^naeozBbp?2Gvtk3?fHTR#eJGph9d|`<~DRn=o8C>nVYuWrb zbEiVAbTrS1{{~lFDP$8$lu)3)IR4p5(~6I-|KHQbqw_YcDcR$%`F2e$kuc5o6j|J{ zNnOEY+M<}ER0xDshh@gFEA%cP0|C?1sTSZK*D*gYo}Dejlqeu7X8LlG3XGv9Y&`jb z4U200@R3r^@C&q=8!{u<9`Lx%q6!>lSI;Q7pswLN#rZ>?{Pk0|cGx3rFvG!KN23ZM zsH>&~^I7V6orG`RkjOn=VWOc&((sI;@l;U_+$?7ATE6=4UEp%(ZmP~YWhVk#ABt!q zZlYK;oGZTSIbAqJkjY55WSpktDMjEnY6U?!Mko4?X1}vGD>09}y?oJUlj}`cmLLD9 zUHtwV{I!JBy5P1%t{x4)lm$5PO0V^Rr^tT;BBXTT?I`lAVG+rce8=`#?*Gs$ZtbEN z5HZN>EDV2nO@Vj;jfZg}A=%utqgAX=fddA=6t_C-n&Ur;3V}Iv(KyYVV`qojA&l^= z$Q$*IpPSJe=J8tKo1GE#NZ+WCm7WeeS9O!HUYo1>S`sbcV^u20tv=$(*|n|^F%WM- z%oWgAL*a1o2!wlWgqWlTD}2T=%MP=4kQbz+MMM{aU_e|6jQdy}7FQf(ssJxc%y?

>YM_ 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

j^n8~lz1VX#@{5;KHJ^RsxpfKCah_kUna4-! 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 AX#fBK diff --git a/apps/demos/testing/etalons/List-Search (fluent-next.blue.light).png b/apps/demos/testing/etalons/List-Search (fluent-next.blue.light).png index 71b5a2659ab3dbdfd50fca25f2a29364f22fd83b..07300623fd4ff5862d59229cab2fc9a545dd44a7 100644 GIT binary patch literal 26635 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

k<2U6L8*2<4DsT+HwoIEk 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 KP-TDh-oF81Oq^5z diff --git a/e2e/testcafe-devextreme/tests/cardView/headerFilter/etalons/card-view_header-filter_popup-with-search (fluent-next.blue.light).png b/e2e/testcafe-devextreme/tests/cardView/headerFilter/etalons/card-view_header-filter_popup-with-search (fluent-next.blue.light).png index 21fadc6b933eca8e14b93cf42f6dccb4f83d28f0..9f1a27f5ef5eacafc096e93168a2a19ead6015d8 100644 GIT binary patch literal 34383 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 LvodF{`0+mg@;bhy diff --git a/e2e/testcafe-devextreme/tests/common/pivotGrid/etalons/headerFilter - after scroll (fluent-next.blue.light).png b/e2e/testcafe-devextreme/tests/common/pivotGrid/etalons/headerFilter - after scroll (fluent-next.blue.light).png index 72f040d253f971a7b2a3934191f36a872e021aa1..c19b98471d7892eeeee48f40ec1c0a13ea661aa2 100644 GIT binary patch literal 77912 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
4>tVnmpH&(v~W=M-mVXtts`(G2NXrufULuL
z+=@Az_fbA1;rsA2?0z_+k!i8N?Lp2lRt3m8m&1(uV94<^=ia(**bD|9JOI$LufmaI
zAL;`r8naCSRwo619PJvVJ-Sj9lCPqq4jb!c)+y#%(9KaMW<#6cc5P!%SQDE=g8y)~`%W$$S?$25G
zBiys;k=4JQd3fcbV(Gu}=!3bFkN`CMKo0T4^e34_aV
zyPNLKF|pkQ`$#stVla*(_=$w&8MBz4JpJz$n?lElV$|}i2JNonSo#&`80(q~3kq)0
zT2dHavCn#adSvQ_1jqO2wv@@IA}!}jRP?6j)77yQ?B&$oWj;$P4Y4L1LiX5rp&5PdBDUQx0c*wh48hqrS)$f-%F?Esq3JS&^a^X=AZ|~SSAHdzs{dF
z5Y*7A@S4`77OikRt!PKTH2IlOxH_0pf%aZ*hKuf%qNmxPWBBpR)2d8Fo}V0EUzhUN
zjelVBmO&uQ+sxtS%$%X>fa`<52(yMty$D3zNnU1TlPkSG?Q3zhEie<3aE$V!^K`+MeSl{UDG8bMh`uO~b#1W4I@~@=^myWxgkQwDj
zRM6QmxFqW_P7=laEfH&JKwcuevOYbx=1sG
zf6zNzJthuN$J=XMfxWrT6qx#|81viCI2|BU8jz^_AWzTeUWD*ugma;1>
zQiOg0)*yKzS5#UA53UU&H{(l*HaL3x-n=W0!p&!ruIC7J)miU
z?TMqhu3oitinZ*JAKv+Ssl)M)_Sq2a-dkUbtEddzD>Y}E8t0m^;WHqxv(&2H{x-XA
zk_$k|(dEUb^S-g~(!*~4x{8kF1TvY*XDg8tQa}5@`sQBr8uJzzOuqMsMLENZ4$IH>
z-Y&tpy|ul@#2%aX5*LCvXcnR#IlW?Q*_ikP?b1o;$}Df^iq6zoM2
z>_(4$aY$Jqu%C5o0|^KXPVxX&z^z88<4N`chhIW$d)v
zgZmGDrL_$yneh@uVa<;*PA-ioH285{Annt9EQ;|Hzy@Ssos#JCUXUrjSzt00s`q@
zIBKzdc{6tF%EMPxsV7A>L{4AF@lU#1Zb(6tk&%sM`6Bj7vbd}rudyP7*DRN5dW_boD9m8Vqb13YZ!c`e};(w)1ojq{#miCk6>Lo0GmLF-B
zYFO4d0ruTJ5j1$0-jkS5Jl!a|?8ww4`$2cu+im`Fzb6K6!wi#Ucm0yZ4wrU`-Qm5k
zsS)Xx|1Uu-?|;eFCbhFxoDy<$i!vCZinpxx)v1zk&E=zp5bP;}LXK^M2OxA^ho{{P>DG+gD9+%`t!YqL{_BS9<91BM29R)Y-VTewD@B)6@Y=>N{h%{ZW1N8
zRRs(Qcd$p9P3nUs)3M%t_|~hUs?)kE@?Q1YM!=P<*B5J*Jc5fwb<_^EdO^3ALlvP4YT|=jCy4dY~qec{q
zdV$mF4PCz?_E!&EG+jtv4Qu}1n@-l)XjSRSO;&u`Xmc$nIQ@A4+q;CqGBlk2g4OOE
zy}sKJXHcwbNz3|P8JJ{5OTn(fTJ{FLbr%UU=pN%v4Iq)k+e=4(u*LZ
z-1LJ8^V6^CFi;1q_=5bf*$Dh^s;m1o`Dy_1!57(GZ=o3i#Pp=V{GRg}Q`l|`-cvhYANa!(K0Q1ohLfx5f+{!oNMfe92Dk;SyV+7!i4Eh(NV)WotM527f
z``zhW;MgOOBAQjBc4uu!2}0W7+@WKj)Orl{$`TyfzyW^POK74KgmMN^9xs3>K8R5{
zJ~5%Jq2Yf(gTTjk24k7N2~Z^U!h86hJHYcE{_!$oGBK9h_%x*3VPe@4N+NNnsfkg7
zZ3jQbe;H>IO@U~45M*O;Ki;(ChOAv}NWJ|E?PyFB?au*B^8&(?Je@)jLG^(oJQn?Y
zV8o+-D+i`@*ijoiGBKDl0rtxI>nE06-c_nX4yup_I~`K+WQsuKWt?S6om
zd&n3c%0rt#V)f$pZ;L-H7QZGfZNKd^{6JuI9`$Exf-VT#;C~L^WPi7;g3=e~cjnxa
zA!{(#ZG{CjYse{|zLc-)@{{pSwq`w~{h=0uwI~GwitRDN=dlOz=7DH$OKWR$JU|NwXM*`c!Da;70O^OjY9-qe`br}d%NhD1ti!Z-LSDpz
z%ez0D4-J79H4ea;g8b?!U(s#aqYB9)iCGYx_pd>cjCw*0Dheb{!upQFw*e<)bE3R!
z_hDLvuOzy287MV>7%BQe
zH4`>raQ`n#ijTn`TnY4CB@}=77hXaDIEm3RkiB5#L8$2#SIf)G@isWOQ1WrgxD_ds
z>-pc{WiPlP@&M9$+ixlW(ZeJA`G1T}^WXA#kwJ~Q{r4Q?KhOSe`qTe)&$PHIYkcC{VKeb$y-xVpnT1qwQvWqPkMVVkL^E(Q+Hsd8v0Eo^$Uxg~o>ouIZ=
zi{SC>Ou+HdQmBb&ce%e|d(OhZk$Rk1et2^(>#l=;-QiQ^&n?H&A6;EC`Yb-O?k}Hc
ze@2Z&&-MvfE`*^!2AV4QS0n;|^)0mV%)DkvheqSy%#{bhuXby=
zJnbUHC$g)Y8j~JR#(E!@^HDpFTS-xp%~fSp9VxRQPlM$``>|8rRzFPY63)lRwm=o!
zIv(;Vf`@O?%5$Pf-D7?jf3LmYrvBY`Xkla|8SyRz>b)rZidiRo(kO`@Z;=4k#l2v9
zTg_>h-1gpY#ZdeK2Xda6B2~LqCFki9tx`jSph@E)V>Kdl$q;4l>bka)aDo70^;F=U
zF$9PKuB=H0xYh26BUwHn%uWp8)f-I#M1F8+R
z&c??meeY_VU6M^n%k&;R#z26VFwoRMtjavkBTeA`^WpR~iK;RIL-p&(pI0W1r6$^~
zGCGN8`4&@Myo7Vjlt*FU@L%WdD2LAt6W!)?bl~brY%jdAQNfTDUUvB^Te{HjNOJv;
z`@b4^fbcMzW?!cmo@N^-n0B(UIb-?P(4>JL6Rv2FxQDL8RnZ11_9{=y7!u@LYwsO(
zTUio}`++fQxEGHFXjHnLU235ag7CE8IDc4cbdK?ay=nN=h+m6-tn-pwW+ux7n@lRD
za^eROGSPha1d;d255-*rF)vt&fJtzOU;vxBM_dbwsQv74hug8FJ~dJCQ0=xU`%kyz+$6=F8$obzJT7Z+@;yLh7GPl
zo{)2b4c*61{FplYb7q!zCmi_p25meBkIm*WP&J15vU2EFQ(JN?3N;H7n&}V5r01pJ
z3XNSVb5tOv6}1Fc>(f-^&2a`OZNMNTwv9b(Jx|CKFMUK8hY{aALzrwl{s>k$<%bAe
zR}oy@e4+J4AqE#+T71uYg&{g2D@(H#ZY_(~B4-^RM`&48Qtm0KSy$Ehp&ncRk7lKm
zyvJ{Ixmdjl%AuK+HWuqAx*~YHcm=(e2_6hI09!1Uhu*&=FDZZfVxr*IJTU+!9~-v_
z%`F+HVXTL&aoC!NHu!$UTiPhd;BkoMlun#;&~+mTnF+Sp-N2#$`u}ROj`{)OcC)?E
z+5FgKPKKKcz8iPt`VLii7pY7>!3P5_0ugEv+_})??VHTRSL`om>xpUPd#4xc`mJ<*
zJB#QaP752ZP7z!N*r7oLb-rV3R`-+zzHeei`lQjbGlGUnDV&Dok0(9XIJY*u;M}yh
zxx}|%h!@x(&6&UQpTWaAuq%yG6^$?hfbpTw%K-~^QGasu$S+mW4Q*+y59j9G>e*Yqt;At>WxWaJK>-7A_
z5idnA5{Eh3X0bdsU8m!V6r#H011OxBk?3$fPd(@<3OOkX{A3t>1N9Z2p;9cB)QE8h
z-64ahMXAi#q&}g*lQ^#Mfn5)d2TmPZ`Lif{bD}o$SKQ-M)Xt~mvtAk5v&l`%X6Bv>
zdzk$)r@rpPCcz^AZ-GE*6HlcT@b7cvB>leW+g4$6LJPHP%DJ7}$%
zdGSGNjs;r^G4Zi2E%owp&ubb-X??|Imy15dVXJ5iW3dk3w5gX6;_Yw$lulC;?c!uI
zEBr8+#J2I(A+R`?SeO>ydqnjMi-hDRM;UGDtiAn3KQ;fZfMWbz9!dbSL5ZYTsP8UB
zexNgS`=ga6`VcE9X0eE}N>TJ^1of|zYO!vlY=m!Lu$-FaW&c;W5&YN%_qHx*3T*vI
zUUF{e7-35?xHEIl$i?b3OV6^Zs<3CL=%Ibqzjqo==nKPHq6@vhFEopFE50N%`W$x}WU=KoSpoACoHQ9-q}5f*m3;fX_*p_wZy%eQ;2noVPlh;;m=
zT@znMyL~Oop4M2k=Tn`Sc?8+kp_^80YwjzZ5{W7S6occDgDpFb?883Cr)*pZPRfsV
z%yF2?R>fdv%qUioR6ILg;_l6}DNGbp?NLEh>FtlRNcH9O=eJM*h`oB-rbB2+-e(cm
zuwhU!XA!K_B~)SJ(VIYVM-``(uOUI_APAS>4f;wA@t)@uz+A`7RGZOaV|hD_)d
z2f<%jCMI8v0u$6jaKQmgX_P&C9eN}~8#NBskuyfKeR-bWEvplAAJ3X?gSm`J`fXv!
z9S3J=HBaI(gx1qYsf;E}T3
zMNlNccKBE0XCeCTr=(+pttOYqT?ADZu=_T)1*X>=v<35~d+{x^8iz6%}3)$5eS*>J;rnTdM$?J3^m!4fe8ef)2hh?EHd)`)1G@
zY#Z_x$DvG$$Q4=}Tb`dQpDlXFYoHv9@*o70?Q9={Nc9iGW7Icl~{XtDC3CQZ>sGL6{GDQ)i
zZF3577*KrjjaqIxw30>MjF{&MF7Wgqkc#RjxI^AN3NFe(4tRg5^??gzcL6ud(@R#a3Z55AgVFuxBJ+zOOW;0wc|b`6DcM8o7Tb}}-uT-^Dgy`3QlJiB_HI6De)>z@MuvCX&D*
z=-^MVrEpsxK?fS31o6;qIK&7R1IhwLBqasUc@Zk!o$5%ueEBkJeMtbk3~{N=m0wc%
zbvS}Sz%CCdMp>z!(&RF;vOe(Ij7vwe>$Cu%GH*XOnE3hgEdmu)Rhb`O3z(`b2Fif}
zavhl05Rhd@q->0kV4uJ2hv}@D1Wa%ENJUuZ`9$~Kjdfk;3F6ogr!3L5N@`TWp&;W=@%hO*1z0Q(f4ULbNg-TKP&CMse3qhTto_{@Wf;w&%=Q
z9z&1{kR^P739F6;NH~PDXp(YrXDWE0uPmr~XoxAGpr9ZG;-&34VDFR!*~Y@?BA)YF
zrUNPIyG6w_*zd&_0|z*xwCNHazuz-z(Iom{z9Y$Td60GsRWIO^5#0!?dSNPDuplf9
z3hGUO>$q;}Ba^L$%^KG+%w@R$UV!#QKJNmRxiK`noZXnVWBFUhv0Tk#5
z80>c}8EisaD63=){U;%;jq;Hep;lTPN*?J}5=}&D5HRu3EISSe_$WoJbbT~%e}?gY
z$`?Q0a*)CT165LOG{Mj@!M3oGUrMWkKb(JRo_|VuGJ(E^-?#JNOUlDG_}CN$=pVG9
zfba_q)EAr*pnM;^J%|M(Y+xk=pdq!zUkQASG?7Vrytm&BHB8k7ypwn*kDWYr#3{*l
z${FtB^i5*PM0n_H+N3#oTuppB+velQPMJt@^VFG|F!1nv!4C)6Is{Iqq`~FkLnYl{UST@@8^@sf9W9+s9iY2jQ_jHb66&m55^BTlT!IN}
z!%mJ1yKBM_OE${|vnS~h7uMF+N6hn*jpwDXNdw3Q)=Oyy4?7*iXxe~&$R2((-$13|
z^M@w7E;idScn?5x;0zY)jyypa8jO%_ilP}a6b9Rlu;GNdse>;N09bdNWLq4x?E5S3
zB%}y+HlP+1q#4uE=`;dXE7U-xZ|m7L+gr0cGqMbjdz5HhX77vwA9ij
zCWXc(g^g`}lssd1AwmFykt$Dzlr4a1=@wHC9(<~T2f)z9=a2m_W_j}O?7UCSf7GUg
zgg_iJdoed@rltS&CG=<#S^qw?+W<^M1yJda=!Jz7L58~CJ^GUp_Uf0km=QIq6Gucs
z!gKfiq16VE#8O~$#X*qbk8IgH*&WV%c82Wst=e!Gkur6*+a#{u{w(A_TRv5c;U1#c8l11L$pgX`qmvz
zQ|Bx8?f0=sxdWQJ8&nerYkSqT6bxU7R&surR|4zb8%TUo
z+?a<1wzje?(w|-S>3AHTjN2)(+R>3Hi0bn=0SO6p)CS9h35Z94$g14D`95O=@}(xB
z)aFaQYPXp;S{7yA$TC8alA!Zf0(R~Li*xz+06FZjunvMZdd=;GOq|sze#b-9l!<_O
zg>$w2xzocQh8*|T-hnZ!`YrD-ulf=RXxW`5Hf(XCGZf;XN|ti4Berc}xyYh4rdINd
zrhlC?g6U2dUsiZV%($2Wv2jG}#ZIS$zeYJP=cGKSEn;Qzv^q~s^2W5;i|f{99Q|*V
z8O$fIyscc+ybxKhK5up0n|7C7R%b<0Wl8o_LD<#>#k(>On9uAEU9^c;Q&GO7s9}5p
zSB;1u;7fr)!?8;bR8IMJ`z>~!H+yp*n=`=vU7wj*+?~OFzTS|jZ!|XmCtsF!Svb(+Y=NYDQ%$Y$-P&L)9Q|!j
z*avHKb+(o1isNtXoYK+Lu-zN0tUB_*{`A46?tp&1O{k-HvLgQk5t1qaxhw}-;|Z2#
z(om^Vm{fk!D|`MLW2Ot5dry~@+=F+Ry%o;|7UOlW=r^pZ1n_vimu`s3xjV7_;JjwQ
zedke;2P%Payk)TocsGTfHnSw%T?~)UT&-yC+qWu?g8A>a%k-Neyb6Pj#y6i4IYhuJEdTe=VD))SA{uld%
zACRMaeFomqB0UF_Yry-)1;VoCc$A+0G*B#Y#9JsL1l}e-t7%w
zOc#RZ3Xv-`K4^&wSNbE#4n=sZFkfBjsR$aFZV?-UTT1uR|31&*|^3QH43uyuYy-GOM
zkq?1QDG;grQW6pIip{?_K(U!7bahbA6RdY&TOZ~z1V9HF`iNg#xiR@1Rq?H(-VKE+
zRY)ovnEwZRZyrwd_x_E3KFvx*853p95JKi5naP+!LNX;HLxxP1v5aAxhh#1pE0m$g
zyb(%7$xLQjGCTL$o9g@fUFSU4xz2N*^T&BMJ3ID%zt_6w`?cuACLSJeZZn6)Ak4d`8z*E7TH48D6w4E&J7EINVsSD)_#${pF&ra-Td*BAUXEb
zacG6oPOTAk@b(#j7iW2k!Un3&pOfCulj6CY0>3ZU
zNp^P|KY{(Ubd4-ROaVLz@e1;eOh=DiJA_TiDhb1Cf1!Gw`kK=I0N*~jqq;qZm`rX7
zTDmhwN=rM1`NahbL~zyCnmM?Jr?}hdl1Q5x4Gj%JEJd1cT)oE~(mSXI<>TX1%*x7o
z40V-m)205v@f{}~>Vx{QpsRj*rh^-m+Kh!I>si$13$-wDNveaSTM4!7d=kh#
zaQ^@|Y%S0*G;Be~aHEwya)?DC7TQ6hi3Fr)bmZC6W>0$2uj;)p
zKOrRbZ#C;dHa2P|+M6fNoRa0JIQ~u};HnCL^Qp<$F=f`#Um4Dw#~W|Vmv}m{yPlBz
zp!>$p?-qS&KXr3+^Ls5BAH{H5R$2bw0!k;gPF)#Q6%y~F>JRPb98|(yywJYCq@|>y
z&O+(ouN&lbJ*R&l6{%tHW*Od&@`=@^ud{K7
zVfmfYH@^t{fTNJ1*0-AqZVTxT4--fPVctqGHJzaC=*AWUAI
zo~;{98gz?AYVAJlkUW@E)ba!pL}>PQ3piM4Hz-d|e`o9jl*z)uJ}D5pqjhRXhLC`K
zKd{FeUcycfrICa|=$!H$+JJJSwPu7VqP^K@`z%o(oT(BEO-l9j^b&4W5e3mp#39|;
z3NRd_jx5GgAJx&mb#wV}TCmaEp(WZ`nF@i~MSDohUVa94paTvM8PORWgR*V8e+3nMGCTJ^_(D32cBsyCe|3
zz)9LeS!%xHxE6|1p(%GO5nICD8MGn~*ag}R42!F{$>*)^BmBsCEJ0H0I#d4ZIw~I+
z`<%ys00SaO)=eNn7oU57I01xq37TI&n8~juNd*Efk%&$5e)HP&AO~(B!=(TX*$w+Dt;2B+R5OTr8$W+x#6e$*0PZ%2|nDzdMxL)kFz@(xldXs-Il0H
zVePc`>FuZS*+;Ib!qi31q8uJ2|0Io!B)z>rzVo6`SX8`%@V*ym;Zd}yDW$&DhnQ1*
zM=~hyr#Rl1mTa&8!q#cur6)D=k@tI;`blbHKGXU`e#A6@%ngGAen$=cV0nDFPDhZFGC697wGgEt`~1C0Xh
zA&lADvfZwy)kXS4C-Q<|W^B7J>4i9|0fzSamIH_5jhbu6_EnwO$c=sdL-alkQ^UTt
zl&)Hq^IZChD?u#UNBow~@+zJ?aBA&&ir?*1B0()A5rUw0jA*(<52R8#HuU8P!d2r1@twteURr&Il9xOU=#LKFs-R;*3UYK(K-uJtYf*K9ZnGL(on};%HTC(tuehk+vgJAa<
z)SMX`sF0)<$=uypb;MA>=VOysBbG(vicw@^6V9uasd@L>_3L}2C68ELQU5BYV0Woc
zz_jles8$)EYN$;Iz>FJHeH%a^7jIOruR!nWR}JN^t+C3ZH+<&0MHv5HGu|v^CWE9e;+{R_#V528dahmk>HG6LC*j)8-~6Atfx*L
zOxqdgB1Dk@K)9@g+GM^_A;>1qfq6EwY?e(}NmO|Ef((K(>
z&pW4CM3`bE@*WVGnJl#%oV_7fZP99SS(7?IQ_O4EXjERhZ>al(Y}5`KCaPJNi>K2M
zP#t<&78|cp@qV~D+jNwI-}M`_{D`&1r-VK2`|TU{&8J)?VS4uT`pNjWyS>eKSSExAE>z*g|M4MR0gey9htY5BlGOF4uqYK
z9CyZElQlnNq++sD)n{KiWAa&mBo9z>J%0N1Axb&WCL9DK{kwAyiU(RmC%DLA2~b{6
zZnsHoP(P%C2x?h__8xC>;^a`Tg_^82Me}3=7KAplfXmonWNFFHZ;t&A9feMT>6m-~
zcvJx_-k?_Z`sTG`ZK--tQ3d@x@Msz65X2_mQP*my1Y?BlaFP(IUR6JzD2hStMo|wC
zK!NKYF_r#!`V1hH^RaxsoVg|U(Gw0Ku!qf6XsgR<0IXn{v(DK6m>)Q&`nuf>&vdJ!
z_M;ds%5$W-Y_?Abmv^NA|c6pNDl5CF>why;KV@XZXs
z1RkyEPpB4A0Dns#dN{NWupYD@4}hP-!onqHw6p*j`c^=p`5B^9;+;&b%#@=20%o
z?nfSIA05BzyeSHP(PPo)e+qc;KL?pe&p!&FXzqKFx@qCj>!A)IuM!+4AO6KAgxCEA
z%aH>>vyIXKd*FXy$paKW&q6QtepmW?XaCs(XFztb#CWJJ2BB_l+kg^3zf%qNdK30~
zXl#L)dF?yYEyw`hEokEeykvay%5(jWEQu*wvOC`~C1WAr&bTs+Da0XU5k}Y~qQHko
z2mwn1*#QiZ@C`z=1uBX7JA?p!gcqfbFJF`iKoShm4mMtr;UU6ptP21yz>u~_hR{O1
z)CBF~XNpCF6dp@+GZq10PIXw}E+KR%k&B-EPhTE=~hD4wFKNX?@swn(m8L&z_IRxd&FTOsh(t#B7fl@GqQv9_E5iwG}9k)Z+QL*4(rLr^ku
zR`c@ZM%bhZPGJ~r#eplPgrKcyCiINB06jn4|pn}Ov2m+v2XTQ>5&B+4156VViKjR}v*-=I3H+P)sj~_o~VT~pT
z8h4ZLIY=uDZI{754#TR+VYILZt^^V-RN1U`@uJ-2%e2rW*$m2;~?nk?}2UE6#&BXoH>K>`PB!FVE=RVi
z^0yufLqjQ8pEq-cQdYFzyBG@1P#y==MiH00R*T4;g)#j4lv`YU{8qkVfE(L!?I;!B
z(<~pBpYHYrm!EPk?LVv|SXdcL!|3({6^f&k7P$9|i<+9!um*JUG#Cw#4p`#Vr
zW?ur%8J%AuqCpINfc?9uSm4V_4UgwLIVuC$sz9C!NK}a+ePE;}hRxVrut!r5R>aGpVN@eKgRMsROUoW!oQON_@lVZRj#z^@g@DlaKlC(DKO%BIqfxeG_w-@aTJrT%
zDjb|KMP+fXM+Ei|)6@)E4zjlp^;_jU&p55EXh?nSCuiyM7kkP}pW71R-ep&_X`Z=x
zMC61dxyfMlaHMKkXjEG$&QXqDdgDZ=Ms-meaZ4)+?w+m$r@3eH1LrfmlN&}3`kFDD
zhkNShk7mpcDkP<+hy+i*qnh(hUcYM`D=m7>9D)j7{sf1B$>&NDtmy2GkP|X~yx@Z?
z7GLHS!08xhul=Pw!)DY(48j?CH?%y6VjIv&bQa3^r)N}~H_&=B=pJ{pffEfZai&7G
zzl(SaDg#H0g}{ELv2W#KsFIloR-i`EZhe%RKxll;c@GJlA}mirZ>-F+vINx2d?NQv
z2n6qTptbhsiJG99)DlascDK&M$yEDB>EINAjAv-M1+>HQ7=ZD;;&wZ5M<43Wx=_d&
zLzwlry(%Nq#;o%>=^U2xRN7{b$d%K>d${Rie`HFLxrA-7|A<(@jd)(tX@0`&wR*C7XRcHoUg>Q{0crj6CR5(Lk+A>B{GswvKP+
z7K^@Du6*=AveEyuukYRZrUPv{)o2@T>WsF5=k8w>U%kKg*y6fz6{>S{3iBx^&lGVF
zKK$fSV!mS<%F=r2@w~Byl9~lt%DKPzy1n+v1rM&0UPuR8?+ch^Tx!S&Km8M
zhw=k&N7cN_4N;Gk1?i!y$qu2K_xM!Bv*)xV8tY#^lGXFMo&Hmikxm~PzF83Q$E@?@b9_gnZ3Npe1
z)_uO@Dl5b1b6MBLF}s<-aO@C?JWt&+A5PnO=KV?H-6t+9+&(rG(t7tcPOtE^cRNe^
z5%WFwG|$sk-gg+~N`GAtHt>Q{>i}DUi+#*R6Z!nGS5H1(v}L~i*38HIkd;rujKteK
zz8f)1&GAbywX{)^ZEv%qzg5Y(#_nnulFBWOWaBn$EPS~sZ6m$!QA_6=XIs>b11dnq
z>wkQDX2}VD2BCFyir}cwE)|rJ=sbM*5H%KQKu1oYCpp>y5&m<$!yh_fd~a%O9DuOt
zu>=HpBakIzNLX500=BvvR+(fj%m2$y8N{ru-}3b0De#BVC)dyCmZb1lBz=n(xcWWT
zqJ3ucSJC)ON=5Z_epkoBtL9{fIWjd9Xoh4?33LjQ6AvF!yP1*u>d{r3f5C=^*WSHv
zo%JjwW%vD9-y>A!g>3#dmDYdS|D4ndAdT_?(
z+64jZ-G6CzEo<#8=d&nB
zGM@^TRbrx3PB#h8d1iC`lu+ocu&>Ih&CKtM1O$rzk(T^Go?fu~oMpEAWqeG`t!NQyw9%(%6oU3*AQIi{2{~!;#IF8IJwc+QE%1K0LvbWxNHiZwSgS
zEArp|bbA;7{(1tE7)e3Fe^WJb6Dn&zoIBuUm4$#USX3de5)nyLu*!ZOIF~{l{PL54
zkA3~Yz2h1$?wvV$qWF0Hp*K|6G4)Cfrisoo+81~uOS
za)=>hVDf2Q?B>r3M^=bZ-=yw@4oia(*RN>Gx5W$#w8`K2wS!0
zqSUO$+@XFVS5U?rI~Jj6)vIc^4~Nxer&{pa*6!o;K4icjJV1uaP7Q|jKG*T1y=$gq
z2Ph-M5`WyKeu?AxZY7ihKv`4C*y!5It7}yScjznn?Q>UalCSS+-|H2vZ&Mj}qW?J5
zvWp>Wy%L
z?W!Dt*V?Ym0as;;fEp7WY|z)!{3L<^O{}fCr&+;{Csd%r$gurl3i`t=%=9rl+NlRs
zOk)8z`zpS+-9yE37~#>bV^9+_fB+|iHW4a~{ss!5HU?n@RH1cB*Kgje5m5k$0LqLK
z#hlv#FSvAxlCk{^%7)G!N6=l;D1ZjM{18|XC5_@;ETJ@JyW|89EdgFYsE;vm#s+z#
zp21K@G#&?gv``Y;E&9b0
z-Y{?ZA9X^7pRqwZAHm-W^R`|fNNTUtU)4b)Csr}B1#H+Lb#HiIdsOV4C0x&E>v{(9
ze?w4VYG&q>?EGlxudu{qkJJNW+oJI3OcEa$O?aeP&4ukuiY+L{1{s{@mra}CMJP^}
z{&pJoZ9dG49Zb!ThRIec!TcXpG4>yz*b4s*%qJUvjRlAWRT7=rGEYMt11A{JN9*5h
zTj-tf{*EGWeaBr&Crz=F`Lqotn7Nd_iK{u%np9nmkvcuOrZLywENCv;#Vz-FG
zITRk^V?_7|!Ksj#!qi;gJV-*_SS&uC8g+%Lr>%GjD#Vu1V1d5{oCw9*4y1B`k?pqu
zE0i5#fR~JgRsc-^Tb&?z=y(Lfl9Ec!t^JLv0dxhmZcy{Ig@VH1egjwt|4d*yfd@XJ
zTnf;3z;8f{WMyCDw}KLshlOP~Ka^*I8odL|3dl&P&q5_n=;d~(2XWpOUPVnnH2(*9
z)jW>{s(~xW{0pqZ6a9Bx6~BpkEQ%coDdLOa6RYpB!iQpL+^VsP*DWmps`3Ek*~M>S
z3pHUow*AdP`uS`=eiCLxM--nXjY7R-Pyiilp6UzPf@%SprBeikqKC)}*ZLFH*sjCo
z$g?xrkM%&mIH*AVova7?(|tfQ1r3A*4{->vUVQiq@Yvk|x-SV1XzdXF{?FxMu>vAs
z$*n<|+Pc(Bw<6?`P}v4oAcHeR|)Ti4GD)<+Tro>D)_oWsMf<{^n@BsNhm;sU!W3BU~tkXL41sn
zB8F_0Bi3$QCCFoa3e#?pNf%xQ3IC#z;wwx|i~!WZKin91FGrsS);Y5BSBt=mfO`lt#M2V~167a&dJ~pI
zwiZReL1FPDyeTp|7T^#f(VsA=aRiTD*Rw&#
zAjzMP#st1X0thorLMbNp+r$ezQY}i;%(8`eOyB&+sl^hqcoV0^Z
zN?eDu*k#j8OljK>=xP^aP{u3TFjJ5nWY*b#U(s+^M*dmFwBu8pcc0b^B>ZzA=vDo#
zc>WunbDXOMM&+WT*nXo2A92fcp8diWYL(d9m^^DESN{$Rp84@nqqiNcg|0t#*wXb~
z^_7b29f`o@+5d>vxAvSpO%)ol9FchR%IjN6#geZZpNp-!E-KUsdyFv0TXAal2;~-*
z+xrBcK5t_*()_t~{@W-0UcJl1{yb&1HT-qD`u(A-y=${vY=$1m4Vw$l(tG(})N)Zn
z=k46-ocXGEr;TFaZprJ14cCV$<2UE~<^oeqHcVId+m^3X&Q)$M>TTqCZT>4Iaa^gy
zh(jqxfraQ8hS^a&{DbCr7V`-rNT-#~VSLoc;c!xx6docEC2Hj=0VQ2o@@XCNiV0=*
zNUiG|=Z8JBxz45MMV@2djX8mlgfHcE_4HJ&>;;Tg79iZB9PkUR>`A#{X${M`y0)Q3
zvv2M{kIYyf8~z%~WAAvrLqN4dpm}hr#cQB%W9`hwqS4emDUZQGvSeklf-wVWPYXp$
zrTu-QyriMtI$MWZqZhu3x+NX9_=R(>Tw))bA{ANxA@|D5{a)XdFLx)XMC?{}S?EZO
z42)2}%DXl9al-vQ$KbmA*CD}ZweqUvDF(ZdslHn-W`UvHWi8o<4}V*q6<4^lRDR6H
zpuC~I)~>d9XkAC$&T?FMX2ahk=W8i;`LKnEoiT>AmBHA|K3=`0vT=DrC8%zdsPBcx
zAV<$2lXcL&Db6e6KSekFF4nFt$0Z(}!TpeOP2SubKfM|qRYJv~G?vBO@0snWt?dWo
zr3sb?@)l(=r)Vji1FB<`$vH603)zn0A2QpOs>C@il27|K4nB@N=dh_wna&ri%Tzcx0c1_nq+8me+*LGE#vbqOF(RvnlEW}Oe1Rwb^}0y1t?E)^
z%ct_NO0_PbEt~qRbv7&xC}MI#@nZ>twoyata6~{5`cT0KMt=-%qCV(gy$a
zrmE`#PYCbadeheB{^KI}o4}RYuD`!7a7}<#bNlM(GymnC|9|`ifuz6zAl`3+{|8<0
z#FHg3?7y%HIPiz0ZP&Nn^k3Mp&8Drt|Gr69R-~4OCVJ2iWp9I5w$?>ug|#l@
zB*ixH$}{FA#m051R(i>O#koZ<4>au!$#)(4hqKAOW1co1dUK9^;X@|&M|xAQ-YVJA
zXHAgbe=aR3s_pkSakBX~)Y2$A@vKRE@aMrx&NlWARy&%k=)Q_q-DAnpukvy
zX`S{1xDo$Q#<^(WNdW(p9)*K%IVN2KYRb8$SVik*z%q7vl?5PFC&^
zCyLVP6wWW)vcZQ<#w|DA8BJO|P_ShP?P~e?%LVs&cF?Ho?U#9<39&a^!8*E6E}OfW
z`3`>->+Lo>Efy`Z9_>}Vs-M3wsj@aOHE5kPi>=I{^{(fmI(1VlEV28Y
zyOJh%G-3I>D_VYjJ!2>;Jff+oRF(QT+$TgiJ=~`}i`keK*+8&~B?1M%0}eV
z{*BHCNMxG5QwynJ(#q__*=S)`=RK{C7ZRQRr;Sn4~K*DAUHa)6GJYofXh&aKCNW1MpJGngHRzE^oh#%^WrR$_dCYU0G(
zS0)f0{qG5qEDp>=<>bb&hm8Up95|?=$;uK?O-AHz6h{OA
z$`@7lf>Y_bgc}Q}NE`<8TI|Pv+!WNQ_}-|h>t&3gi0baHOdkGv%xSFqtGWMrkWN&L
zZG3BVthvCQs<9n
zah(HkBe)wq?TS+zn8qjC)6u_atR7XxbZa%DD8Xfdq^@r@EU>OqFXc??wm|2+x|D5A-B_;ipM)I0kgdIf|AK$On`&!=Ac4^9
zfYARheEd>IYDrH)fpihCliQKce=vU75M*RaIw#E_mRV#gbM5EYYqWYdTJX}+YqLvU
z3*-vlM4OfmD3rR~@czn4RdUPq0fT{f)xRV9^m%iW?Wewpdff}g)rrh6P+jqy*b&V(
zkH?FAICja#^{ZW$&>GU{jgMJ{m
zp=e3fx|UMa6YX%`U}f^fC*eLPFwDfDZ>f0MfB?i%TNK49cm;&OBv~2bBZ=W4!ewE@
zeMVMgh7Gf^U_WTI#xEd4i)nQyTriljurD-rxHI8ZHc3e
zLr_7-YQcH~QAou+nGr8sM935OFHhd7B8T;3YKg*4dBu0ry~}26d&=yr6De4GT}Ct4
zh9+&hhbJx>xkrcc*c5uL?yr13%R1w3pQ!H~C0tU_(3DqRtD+FKyzucfH+|V#|4c#M
z5mMHkXjj~O_HVCOcIPKER4nYVO5tLj?Sz_CMT?)dgK1}Mx-rC;8E)kcv=k
zdP5VRJe?RnIZxOK;^
zR~-Ugw|>9uFnHq>3`>!I8Oz*msEnkJr*e%CJNNN|`kY6Uj~p`$3C4ADdz5InStuh|
zLC0djmUVRuOyTz&(OjxD$TO6xxRgqcD!H_~L#e$u)H4YDQX96(!p=iuj5%+HwYw*_
zj0_=Rz^e^<3F3t`9;p+02N@+Q;a
z9*vH0#TJE*6r}x;YshGnsti$Lqf{lpp_HW^uCe842+k$~bfJP7o64t79>*5ixUSJ1
z2-K5-FGS%YFzJDKGla&6k0nqzA>E~b`v8|wX8{#Kp?uX>LO4%IqR<_FtClwYrXMoH
zL8Bm_(tgSe-XhxPP0GBmmL)wMFczN1A`N
zO2+Ly$3pZ=2A=Q}k_V*BVBRw{|6~(t<
zM{K|8utmuvvVe@Vo60LG@+m$UTA>
zxO~`>gKe^j61cQIKQ=;QhWG`B@j^CaXW%Kzv$!~jngPl@-hse|yU1e+I^;c7pXx_l{{*_a*!gGUmWzYqTkZ*aE<0Mms(j$ObL6A2{;P~&`rk6X&T
zLFSY8UMb9*6qpTC>;;gJKg#|D_=x0Wn|Z1o#i1i&kXrr%g5l{1jN2w7`VAZK^3TM0
z(?A$qwJ9I@j5PcX0W5#Zha^k{U4PpDHyN7^7uzP4;QA^oL^1^IfWR)o2c|5(?{@$t?zz~;
zCCftO2Ao7*Efq9id!_{Xio)#)T*FUJPkTh^9Bw_`J`ZVAAXvw3T}y6EO~Xe$zcstA
zLo%+;4=;RwW&x@VLjTu2kPzZoWvrOa12pJhHs;|_-$8*Hd3QlC60&o=XC$Z?Az=CQ
z@3vG}PJaSrR>RA@u_8eOe&YfE?cUoo#P}#fcr3u-0qSBF#VnwTtOU5=U=R$CEt`ex
z7U9bcJa(+S86^hqec{eY?yJ}7IXS>MBNnav)`4{36PhC2X4^=CzmN8j%j(Tz7U+}2
zz?3uzY6j|zRGRQ*U;JCjEvM@w<9xFb)WN(ppRo(ugmVUig_jXEq}IqZ{fBv?$LNL6
z9?y1<&Jy^g4zY%#c7`U5ThUAr*bh&<5TGd`v;3dJP_fu1PWF2q$y=PmGYAR6_7kZv
zUKr%EdjpvTLK!grsvuZJcxQ@|itXn@_V1ugoR|=gv`Vf9jkJd6XE9?Vd@RHB1DF>G
zF0o66+z&bN6z1MwW(bttV0SOvY{Sbp
zq`@e>LJ@%){svoQmr*Lw=TIjHpVNk5A2-6a5vB1uZi%R*@Y}D=6nhB#f&hy&93LzG
z87u@mpl@631jD`UT@=icm;qDKDrJE97u++5DG(bjj(nS*Hod^_fhTbRIYclJLWhIS
z;H|{g59CS+S4PGcABLs?#fFU)&*7#nEWZNDhPXQv)QS+m;q@5%1SDviC~;N4-VTkp
z(TT0_McX)RvI>
z*eCc=078TSA^g}v<9-`C^&}7R9TAXlj#^N;Y)14IzH|($=Aj$Kjz@P><1ka4Gq+YI
z4<0<4Gpi8M<8HrkQElBmu$feHWT5S|SD}Nq3RMfPQ$eTnwuMyd
z#u#;GYl5l6P2U@MkkE+f=doNH}9@eE1B
z@1M;St+v;#jjZiyTI)8Q5Y=(MNCXzshG@ap$4)tC0EWIw}!S0{=(moJOVQY`r#Uy;k#_
zmi?o-=hTz?T2u2w{cn!$A2kwrm#3p{KRsA1Qi5Z*O_XSTP_(-I#%L{aZqYx%^Cx4E
zRK;6c?wfCa1||r5+%I~@;9%!K+@n+C^5eGTHO!o6g^hi@N~U4|+G40MZqZh_tguFb
z%5e1K1ELvEmn0_6wQnTFx!+7J2Zc>+<~N>Ymb`FGaNevw-8p?_WbHvwLP>t3|7d7F
zUuiSjsL}A+PnO!j^~qUPw00*USyfBjRZ&%QArD9PY^|7c{x&djk;1UDqGdd=vcK+`
z{@O}2;LO*eF{C`V9Ek~WG^`6DD3mxG1n9SgN`zDgAEQHFy{_e&kewwEiW~(vB(S~&
zZ@~qqBp7;|Y=LIyhM`)w1Yx(>PZmPdwgexGTY7^N^Yok_T^qGX8ja1|WD3>lKM_AU
z$@k4A)?qZHsMPcBOC}!s`K3J(@jBgK67zpf{3@+@(Gc4apA%e{b2DjRL9@htoUfRT
zH}>t92GXV3U@BOqdCSeIpl;tkAQEy+Z}9DkrlI7|9nX4_am$@Pd6T^ZKThdNmF-X7
ze5fL%BjPzCtUwY(lgBXlGQz)mV?pQ2*O6aNdZP2R3|BuWOOg`@v6GZATAM8LU^}6=n%hWQ*c{!5l-tV=GKFScr0ZfHlCZYzi1zss-x@3IF5ugQ>w2`jWRIFHnWdTfDLE
z>oRv8J~@~!*894kd45GD=lQGxtmn>3yG)4czo`?x^?hIb-n&y1?$v1ZAa9N>qUTDv
zW2~4JPkzDc^A?33iATk(%3N+?TRz42>gic{+>X6bR`Kpf3tMk*Tz+XmZCmr1m|oMT
ziTYQ{|DDLx(d++3LT8NoC*LE{R@ZPa(}Mehv&96Zb5vc<^k^CYwdmZQ>zs0>2Ey{f~~ntDEe<^maQ%3s-uYvI)3
zqu5)x2wa)x;^#@JW$w(-pnE;yhd7TWxUcRM%yqAVs{HrQ@+J${-pL7)TH}^8^(T$`
zu9gw&_a;wG=ycJ;vIf?myVUMMQD%#S#}wTRJuK?mLYM^L5(+E-3=uS!3vd4*J}L(f
zs&qX`oTCq5JXkFUljn-)tpK)g8yyzt_+PXn-~bVIk;gD2n_5}*knaKaTjmivo3Iey
zp(Pkfyof-|0Qm(TUIB+qkFgA&&CeDO(T=l?MtQ9!L<68D;&^idQ}}i6cZk7e)K6Bj
z-k_&ecH4h&#-qLlmNhh{M!(m_G(3OS+uI*H4U4^}qI5`$URPa-h>sSwbBy5EaaxKP
zHWPg_IdAkT7q>i3>rWao9`w1><<96HAsf{tZz5z(Ul!J`xWtw^y(+Ok+)2t{>RXps#|m#$Y*{mln-M3%nnEqhT=_4!oMN@}$5e5YQEk#J+pg`<;(rEh(k
zRMy4@$Vhnm=3Rmg1oto3^taCS8?xqrX
z<@w+M)i>k8V3QmVyV&IN+uom=e|1swe>R=ipFER0*Zz)zlCQL(a=Cl6;d%Aw(rg!P
z6Bi%_2=Nf#b`*f3$bk-sbKnEPUz|kE5emaSkL`=s@+RM@UQZxO`aa$#751Ry#lTRP
zir>hGhaz2?%zASz)=X!PWIu_1=<}}#dw%$yp05I0tK~sd7BkZ&PwGdsdMbzm7@=?
z@-W^n57?K)%IFdofc`T|My9w|zxE4O-E}lVHOXa0LFlpY`{ka`G?uF;3r^zfu6e|y;6gT)P9)#bJ3!y3MK@5DIFXQx
z8Ou4vd**agX3tr>u(kuyrM#Ci&)2S05q*nYPvGv;mT>j$!KtqFaQ0p|Fg3OeZcb$M
z4ra}4O&t7q>p^QqZ4868ox@Y<2MUFYd{k^1B`@xfj*Zr3a^G5BBif_l9OTn4k!eM5E2xNv5oaC#+ly|9J#c7b8o1*EvQ
z8wk{;+FR)*WkID7LMP1wH&0SX8lAidPr0N~@vsbbrSMt*A=eheVb_+TdR&4bJU`dq
z@4Bd@dUCr+;Z86E^uvZA4RE`!vb)p?zwe7072)Av>>>p!
ztW%NEQIfsG1?*dd-#o)hO!>ooNjkE}mBN|Fe|GpU%E^X}ioht~8X#D32TR8L0mosA
zAYxlT5T!X7mt^3N#~Irs>>)Do(BE?c+Umf)9`1wF$C=BMRz9R0B11$W
z40UV7@MCM7M$!2Db^+HO8EVUZPysr@(10>=CWF1SeeM}N;lWYS5aaPAf&GDsra
z0mkvyWX62OTif~%lhHYny$b}DSHNF}iUL21_MIMMd+~&UKf&-}mgsWgfdStifCgM5
zdshsyC{2z&4czkPWOShcV*z8x`#pvQS%wv9xm~VFI7R|lw`2=(fiQ(h5cM=~R>q~*
z0pHCY?1TP=NMWK+;K`YmHz6Zcf`$*=n>`CRhv{wI{4?CViJVLv@iqy_Cj%dbH^F^?
zONbX~wi7aY&mqy{k--Zf3=k1QM|SqMYf_OBs3i=$nw`-_4=7JTR>nnk4~dmWvZUix
zfWOciY!vv
z5XTRQc6j-NA(x#e+(<%|K{Slu{3l{zn(U0oBrTti-Ia$#>BBQ7#xYF5V=BfSFeIff&r0ApwH7#pd*HxAHOQS|
z13VjXbV_|kkidN4+?s9=Y#MH`S#f#Dtn}d>qLvCWR#k|;p73^wWW2FBMvS*zeQbSWS9a=Y%hwhOQ*kuTg)CKxkCyopPjiOyh$I%OGAEGQ>X0WMe$Dh%WUIbAyeQ_f>F%DYyWFI4`bn$B^uu@gcIw%z(2=SjkR%dI`eFfbw**y<@f
z1s}Z-B6}x&2ru+nc?&5z%6M5@1Kxnr(~aK-3nxJM@XyN(cUbUTYJm^nWw)A}QJ8p(
zdDS>!3=)94ET<$-FMzCYvcdH-|#5eyJyT`NkAy>y`UmodHuu62P<|)
zy!g;5I?;
zK#kc1HksP^MrrfJakwHfwv1sfHt|2I+oG?mfFXAE{_bX7F{v;YMQA#T$ef;lT4F(X`~=1IKJq7
zLb?2}k2j~WXHL$!buZFBOXNuPrl4lqP^_ewx?5IFV&6uT*z*&D
zBWy7SH*gwmzRUbGZC|*w#z*4|Pf=#J@D^V(o1Z`C>EM>6X>1L-CX}}n5M)iFYSGajQ>OtrJV-=A=IUKzO7m%8>ddz)3HtGJqmcdohC
z`dJZwR1lUpqx{k%`b`fF>1{#1uRbdp6w}|X+NCxwVTG%AQgHk{-J(j;wlTTq+0BZN
z>B8^N&ncI4N#dU!Ju-2SgQcD?OVx06#5aOCYB`E~_>t0O+$hb_+|wEi{RbB#LMUdBe9VpDSvP|(6E~HI$vA3`34ZR0{E?Z3am`5{l<~f089X&jy>n-^z}~xy
zw0)XS+r$k9IlC#J1vX87l(*DY5f6L$S$F26u!wF-(d&0=rE2Au2OcPwOTR37U+W}a
zq-m0-=WXph^QqhP_OTxw7aQFzuf~l0^TBXXO!-V)rjZ?%NqmRx9rx&n+O?PE{^sncD{c$i7m{F119y7s_5
zZi5XEx8OHlX=T6=WqrIsHie5cz@
z&C{!Olv(J<+F4}q_a6V*rjYkCx}@u}*=+A^wKI+G7asiR$)v6jXu4wMvz)!>D~9s<
zFr#fNDgWDPWejayVEmOhtG1Y<7E5CiQ9LhoTYg{#LJEssoqNM~uDnVneUOdj8BhC-
zQy)rr<)^;!F&JLX{8FZzT9sQkMKSGUl|ai?M3t@_JXoX3-Td-8HkjXifxapFGMB||
zbJ~l_h#>w-|7UsIG522^b96Ha%laF^b>BQ9jOG>A^dgEPNf{FtGu(0Wv2gvEZ_^d(XBSxiGohMVW?i46uzA5<
znE#@7MD5W#`G}6u7P}iI?=3EvU`bzBH)i9=@n)zpS@hf(1(;%6T)T*5~qB$;9i#ijY_uxzFt;458fy
zwE%MJsJnoYQVBd6L=*7Sa^%Hlii)iq_&Mhh2&fcF`0a|PWt{zF*XgwC|5Zc(Lxr+E
zg~88)f)mW`0;!^(^Lt(M$sQIY%;!tIW;NW*
z?u~c5O1^O;4WZ8z`7}`F;>{Oorq9)!X!axGX5436ekrYfPB>ga-{H#ZmyIK8Qgwaw
zCU?xk&7WfrBUe2PuDbqJRO!+NmyV85H~XdKxiOIui&}6fTqc7fT!$_4+9Ynri#Z%r
zUNd}EUV9_6aqOzEf8nX9kruw64T8-R#jy<8vj#N!Lap;HMtP_0*9CD*6wK@Yh#u`t
zh#y!#YM|Cv)^I*G2ogWR{~pV57=*Wql!c;lj|HFB8vRa8?U&oc$|gBJEiT0%n!?
zr!kzj2rhl_Yxza*V?*h1W(j}mbq*k0_%T}zc19&pAE%9RCRVAHV_x$@Ld(rm&Ls;*
zuh)_p)@IhKCGO;&4K+*T#?)H2Br{~{F+3J@4{w;;(_PEa^EGHnJ+I)BH6Q=iv`g6<
zR%)jub~FVxS(}BKX~dVcG#_B2;liCVXk?0bG1AH}c*W$gWYu`K=F_P+yT!De_8K*8$8EjT^O%)
zl=RJcQ6ZiL(|jz$2lH{Qz?VNx+LBT}TG+{cNyN2(KSQWc){#fdO0B7)@0U5FV{I;-
zggHirZ1`-h2vvR`^_t(azOLXp0jH;gzNs8^-fU0*ykGRdz(4=c^ef3qYwusswY=(+
z-AUYhk37`TGOw5&W2OC2%sRK2{geN89Ft#K>qMmtVT}LYlhI4LTEQdZ9RgM?D26t;
zVxGAu7<}Ww-oi!NiA3blM2{YwjGXxRj3p`S<56v~qt@0I8c$ER)0sc6|21J<_?qNr
z3WwQa0p9ZtE_dx8NM)6at6RNnTr!QgL8c@Xspb3SY%Do|Ij)$-GkY3Yz^&+PGHm*6
z&PPaPBr8m>w|b2jJ**R6lz(J6VUm2iGuM9Z!cuo#>PKZ7t3>V^v9Ap;kQ_;+_vfc|to*LY(d4JJrbhQ@OUKg+#AFJ~og2(#awjv56flP7x4}
zO>_#M(KS{V<>Y!HnQp(bKlLTa1i`=_BmT89zWKdZVKYK%IexdNePj}6zAc|%l({g!
zUGPSOYlc5(nZSP!RE%yo{3;?u6Nb8OH+`MbrOT`69d+M`);(`$&rt7VrveUwc@h2R
z_1d&fM8d{*29ZS}SP4-NDP&mbqB_=@r)HP&viSp+q9ybbJMQcQ`%=Z?uPIH3X%f}^
zb1Id+9!YTUf1oyge7dS@?9kzvmco+Paz*Z;n1flNm)I{n>F86>?n$Zs?AYTtmZ`;E
z_(srKr+7S1C@a$CsrC9EhtF3R20H{A&+f(hfiwo)=)UzIJ0+L=g_h!L0@oVa7+2Fn
zJ@Q`)G`&whR-5GO0-v>;h;@%ZT7qUq}n&mgg9N&?ZZ-AM&1otT;b>$rv0h>z~J^Pz3#g!W5>;s
zSWVn+KX^ISs^{@b%Kkx~>x=?dsG;$)eZ+o(4PLbvP2M=lux2zHeW3C?5GikE?Byak
zmHsp0q&F?u^0BrYnjWi1s-w+gt%7-_K0SWZ{^aGAp{Zr#JzWObT7xcj5h@O+XdMQL
z8OrPC(bCIclr5lTB_Qtulgg^DihlAI+og97hjcE
zeYFX`;BA(aD|>T|Rex~J(8728@JvTyX~UZ0Zl%>{<>EECNpaa+-jT
z3jSqQYVR=3X#XAuL=Ha-2TH?Bpg7vCE=
zo=U~-V4R~C8}!rna2fxqh(Sg6o%#L6qwx#HIwftd>#N#nRh_6~~#|(`)VA$^6$M4bBO<*hy$J{yS^)JR
zRX{@TQUcNqAV^mcLFpx62vrD(bV82-1Zkm3kzS
zH)H>?#~K-HuQm7HYkt;u&b?Oigr9rF760$EU37H&jmAeS!E)aD==xE_1-X0;*W(>1
zxlAg|&LiUOkpJ;vGtb9T7b5?38I2k`)(wNN^UWXod7PPlob)`+2vvt|5S
zJvh>>Ar4K%yb8Tc$YOSbXBnV<>A$hlc>xfX_L^HLKit2DDyaChm$fdBetsJBMRcME1r}9tI0joa+#z4$
zNJ?Qu4cD}d;lqNZk$KMd{XSB9x)fDvL49qKCSOv*59sH)gP#O=1bzpZFF}~)nztJ_
z!}LOZ^@BUUUw*eu4yU$e=;JPQ+pJe1Z}ZjehuTu$;Qjyr82pV41KgdNcP>9Suh3QQ
zCAh#!TWXdvnpMd-9+oNYVTJJ9Ak@Zr_!JcqP-M2X`*7g?uJ!bLm8DG{o?$OvS|pO)
z^$B0&{r)7SU>)ul`n?hAVV@!XiHo&m*dfo;K8YFls&4FYwn?_xt#t*|c-pX`rIk#^
z(8t?7dH2e{>@E@UWsx6RbAm6Yo)oT|nwAJ=V11*-LIv{1@el^a*}#ipNgv_SoGer*
z*YMM6fq>n&D0x|DBPUL+7Ox!)+9sFfnhPOmTO$9v!bX~DjCzA
zEOh&p=EU?ch$b?1YPxM&90%?*Gq=EqKE%cpqtUbKdq
zVH(-L_nV_?TUg-?fD8lBilckTTTfd^}UrNr!4D=`C$O
zx*<~}CU<0OfJsLcoB*j(EsKHengxeZ0$g~)0%ljv?R@F)5xkb*L0{_~yI(8~OoM?Z}nSrgr
zc~mK4A(r~dPI{m;IdNr#?32PG5!r?*#inb9wn#i^i|rQVJ`qIzH#8WYBk17g#!(uY
z`6hS
z?=b2cy9tgOLD4>O(=L%>ZvIKpFRA5ANy3W;Nn4;NY73dRaH5_vpiK%DDG^IK{c6S4
zr94*Xd+vG6v|RPL_Lr1_Z@D}~5h9rMf2udcIu{L5|AAOG&7ZBY{8gy<|COJ=2I5F>
zNaond_9rV@k=e>IXR+QS;YE_vt;fV%gQyf;qK*EojDcXofA4z#BTCcr%hpW#3`|lT
zQ?$ZD#SI+o#5$b#f?c+kY(3!*e1kv;m?*l+!J@^&`WA0_PI#yp8E@xAv|uErCsgrlt-<
z?oP7|pCypz9An%b*3l>Yy9T@)7(o7B;z`ec(B$tO-{r9v@9)3UCSxLdo2b4m>c(`N
z89oMbcKag&+VQzO^mnCS{EMQ7-Q%#v@Y^*7SkZ>XA)hc1Kk-pC;{v3oiTRaq_Hacw
zhN0(6>1LO&`2N*jt}8&C=!j=W`z33ev?+ghZ<4&c23qc}(;jE+^yQLp-Es`WNGcFY
z7__#jR>_B?_a|9;pN*$W7{c9XO9Oc&Bk43m4d#ri8Wp
z!X&RhvW@+&{_%?LJ*h-8l6xtPp`LBxOejpUEgg<@fBgT(e{|DG
z*kSX8D(-ovnh#bz$0P$XYT*W)$SLHvTOBd8F~07&Q;vDWNS`GIzFYOx6K*fAnVMxN
zu>PpLacN3armW(xK_Gg@yl+E;f6E?2kF8_^A>q+;B4iJ0%z+L*13Jh@h5|6Afh?Jj(72u?2KrkTh=fhzKK|yC%Ujn$fjWi5lJ^tzV&Pi<&26!r%cc$V6
zk_a)N$#(dm;ov)8XK6V@VpaW#Z)fGz5~5oymvQ%E&*)u@+SXqbE>VJ#Gjg27c9>W!
zr^XCv^(&sluN9Y^-tOjys=6N>@;#Gr-%E5xQXT2w9(WAQtuB$crYo&uxQDT^LipQ9
zk`BIQ#9wr!Jl+OTS=zAo9oc@Ov?$02hEopB@iVcoj##)oi-kN3u}7FfnL;0ii6aab
zf5IVeDXQJ~cky?C5XmI~!qOnQuu^pAflU(!1EA=Zx7}HSQ)8AK(LjUJ@8Q6Ko#buH
zkJt*d6#pQIzCSyPvng1zV+!&-@WKp7o(!pr*Wpe@Pp7im{l{mcYv<&Tgaa-&^Hlk{
zy-{RXyj!^&IsbgVePY7}yt9fV#K=!|8C4kW?K5pb*kt?7FpV2yPOHgB+Q$us{)K;t
z5;9+c+IHV3N;ahWpP`{(z&-_5xTK8wOFYGD?I?ul?)J=e=Pn6`TJIp&Wp+BvUwi>r
zZR?_L>w^s`jsDfmA(YcW@DdOqg?xg!`lsOE@{J#9vYk01?Dd@!N_BWdE-fJTd2^M=
zabs{vh7hdz;!Ew1gn;eBQUMNtQ{(^P#d1!K?a(^m;zCJ7l`e{LTFp3&gT+xPz%_b;
zP)oOe^DD5zrke*0V1unCV&dGlNn#pXTHsA09(d~!A;Vji=s=adIf36lk8y@pYI`>|2|p*2e!MGMQ7X%j2*kH
z-2=No7@YtDC_BrB-ld;+-QYwDxFBbeyV)iannX_w)@`Zco)ij-`0cPe0E@Tpe7|<-
z2Fu-lfs7J(Sa>6!MpwR8^5^=(05{}jgDGtmcV%V&UKun-Vxr8J~}&RcNVJx5%_?U*3had4_^GWKDFL<>l7
zXw}9sz&pImG8VDOU8Wjjbvcx{(O2rDAh||RE
zsz=lB$?AF%>2f+j7zu;XkD_v7oj>mesrrSv#r|F@kNIMc6n@4>l{$Se<)xVWpeDCr
zZi&1R$T`SSOW^NVl(K1hlXJPxPD4Y~$O&CD&P`T5Mwu-5}MWSZ*gL^@8VVVgYT05llbQ~iSrv>3lrUpblD%iPhR(p$)LF48X0E{uQv
z0pjuqFIZfh-0j#$Z`Xfg8EoOpb1H*Nv^}Js|X+kPzZU^7!;~ZnBI=4XOm&95&L;XvQ
znZo{6T*37K`BeTW4`M*$s6D8G>qbWC7Ij@U=Wa
z`E6(^r|_J4CBnI|yRf})(PK*6Wjdosv0>F~f(5B@&7?c~L~4lNlfo@*dt2{Q-<*hv
zJipl8ad5XzrNlW@ulDPf@>jPK4v&7&AR7{D2PRF;RVG^2>#dnr1aFIZ2G$d#L$6)^
zC1Me@?;ufia4bGOYGE-a>k+Z1ns9W;LODyRRj1kSgzpaLkK;)B?o?d$Gh|@tt6`p%-k>W3b>bk}NIECx)Xf_CUZ#KaBfkQiX
zx*dyY_t*?E+IxW|RAJoJo=
zQ`rlv?OMrI4P-SO@||!Wi7FjRWn*ODeEfbT*^JWr&#vJD+R*!=!^n9r+kLSEaPD)9
zP|Wfj$}w5zJN<*BcCf)VF-Q(L*7h(+@PK43XQL^LszUQnZt5TCq*%WwhrF
zDkr85&yCl3N8)oVjuA1OHzTavrMXn@GdC~HMsZ$%F>@RlsKor%eB1jDu@nFd73wKT
zMF22jUUzqEWhM-L`}P};7k+PVPfbHaT>Q1a|36(z>rIjay=*{5IGo^JauS5?Tu#um_eLGBm9?T<=hKd(12CCyw4
zPy(zo&qK6BHjqp66&7X&G#D^aPbB=rW*PdV(o7|yDFBU!Q-z*|<$-j^pWdBjfg3WF
zojTjpBT5AKlLtU|31dp?&sIay-si*5@2Ps%;lp)7ozaxZZ@Z(eDXTmVH~-|uDjZD
zLy0ILLCtv|q{LvYRAFdhkS#O*W1P*k&5Z&Ox%*C2YKLo@LQPsrCXWkky
zXjt9SZWAoRA2siFViNItTsX2)UJ?S@&G=^4$0=LP1$r``he#?Z1DfhS8XwGCs?61k)&9%*mAPEN9wu^A9x{^{&
zovN=moM7382Z@2*iqdcv5?5btbp}K=(H=b295ikiC_*Bn|D5Q-0EN2{S9UQ$w+!Sfvi``I^?V>D2NWx`ybdjBzAy>reh
zy;J1zm#1*=44lM)`-thQBGtGx*x)L4TsB`2Snsi;?^%$M`+@eQE1Hj($g6LqT#Nf?
z%D=ATq2T6|U}hJidi#fiVZ{TPTQCbwb|=aiVTyz;{}efCT^Z=j)@=CNc)*gH=2Y!Jg4fEG?1h
zZrj6x@TlNwysUKh*;(Fkl$-rYi{YwIpv_0^L40H{ZM2&I?NfP!Xu~^aYiG~V^HSB
z#@_jxktin+9c`7l{m1$eb6;O&1L7~yKB6s9S?q6G>VoP7TO63sF&5__DYI?y-
z@9sL@jvEwj=%iyPmyh2o3k_NYuBMG($2`!-yiOn;{WON@vIkmJ4UXP2
z@^R1LpA89qRebRwyuwZ#lw*SUu=P0M3TT+dVIW5#iFbLWctZHLEcJ%6;$gq2M2Sj4
zK_5NUb3Ko`WA`L$=2QCKIlu2&ie7
z5exWH2&f@UzAeIgy3<0)TCe1L-hXk)Up2eO5E;^L!4$qq{z(G6&aOE$QRSeVu3MWh
zik3(buUSU@EZl4BQi-n3&JEiwFTM48TF(Ionrfd>`@G_+-l?Jl+f2xG&urU6&9kG0
zn#FQGKRmGa>o^QO6UwTjnK~%$zO2Y9eCjj{ZaAIkqXx(zO3WK99JR9z6GuU1^14IA
z)e3y4N!&$$1^X6NZCeb7RGqwCT(!+nb
zs+F?o>1ko9FTgrT5u{hcJ?3QR?AWBqHNXx>1fm@l+*M;&;%=)(wwyQ&VDdsfr5yH^frCcKf02h`{?
z>eJ>bBaRY!LzTTVMf#6d@O-ohb2)HepRSn9US64Ds8f2UO*XE7?AfQQKuOkaEn#3y
zc=I@5XMX_ibUfX0M)-cjJ+)nfWW=a^Ya(1
zaLo@htE9kfsd&$7aNn4f-yC~*16b>&EmX;Iz}CR&I-=GiQgf|9td(WS?eY$UmFRX0
zbwVV6G~G{j5-QqmrSpXyilXL3-NI!dH8Cv3X!mGD2bG1+jjqjVJong>SE_NaBGdUE
z`_L%@ZK|(#0{pEUa$Bn3h|l^TU*n{c+B^>Cw$78%Lk2;-k(`U-OGj5~Qv*_e34Lx|
zFf{wfOcsyw`+(!p)3eEe2lJ_$JoYcY@9{0Ow`;-IH&CypsmC%LLZkKRyJ24a>W&aV
zTnuq@F0O~TbBgzCGBgd6vx{r$`xM?zy291ARo;#H?Z_}(K?RFnNe7#~J~DP>qXG8i
zgj!0n^J~Jq{F7FXjKwj&C{6z8gGTa{q=4~&LEeKI0IO8@2lhKC
zka7p?%UQKOEue`d!z4MNx3tQRrtSM=r
zOYX*C9$qbs&Q#7y$lQ()wucjLSvLUa03JqD^~wsv;552;K030L5Zv{5i&PZJVMZv0
zGQC$TFV^6!J&wP76)P(%OO~kyx>(x`&s
z{|x}i{(J31fjIYCgvU$=wMq^eTH36V2kk$jecZ^Oe1@=Vfbeufv-6UvY#egTQF)gqBiRv9JI
zd=Crh{CPjKv~U1n=T2`vYzh7Juw~#(y@+NlvSHn<3b%ag#!tubguXtT8Fc2JJlCx8fhmMi!6GI0*^r9|Z=8U_X~48Hd7Za5V3KWR
zcth?FFKmM@>3;%_hw2exyQ`uj9US%z4S%$Q-}Un;C7HH%r>*x`f8;g*M4B}8ISSUn
z>QoTcW!NB?lQ%;9l9ZN5QHM!cQ;!)=`(E9^!PdTUb|auC>?wa8_yBo}wnOe%0O1#4
z9-v|Hf%#k#FTTk0)a?4z`>bjsjzWU2wS7M#jh_Kc;VB7pn)`Goeg~35d8Vd6Tk{QY
z^MT1u?)0U={xOUEZtIy1^(=v#U6i~vvK?QWM03OWm$xa8u;k%mV3$Hok@nVCAHNzL
zM}>bUhkpm6!*Y*3Grl+j@26|LnM0(r4vKmGk%-63oDEQT6E|EyJC1c_@AazUW#z;brZ{AjakA&DtOO;TXr`
zxo6~ye|R@QJCJ|iX&bTB&cgbWWgk{BifKhb?hX%U%2l*Cv)qucpMg7=Ao#DvbdQ6(
zWZF`@=M5V#8jqS5YAvk7a*Kh_YeE~$QleGE)e?loWUoH0m1{gu4jkF0JRNC0X4*fu
zfCr@O??@B^AbhW>aF!o3>&P)GmH>_C197X|5yj=uuP3Q)iRuyD&I_zx}G$(
zrM`OS(+uVxz|W;?Kf6dX{9Zny!xaXU2f!OIHj~_NE~&JKgQy0?)R@O`hDAiMW7`2R
zk!*EnZf-VreU+Ymb89n}s1y7XwW$2*F8tq7S$s&0`E!3h73lKGqnbPuE;0Ut({@h=
zz!7W?DStQmJ29;O(*732>*@b&}rG
SaybS3R32z36x@IO>i+;G%~R_D

literal 77640
zcmd?QWmHtr8$N2$AR(OsLk}^4bSOP^hxE|WASESA4b6arl(a}lcS^U?jdY8YG~6@B
z@AqH-_;A;{AMRau*34nfnSJ(t_Z!dqyn7$us>-rBnB3Mgz4fiF{vFYjU>FL7if&eFpht;NN*t8ACW%0LajG`W1
ziYJC-zwrG!^JF82vj^$~L`}%hVk48>uJrIlBJSZ@Z<}Qn6V_C|EZ6Yz9D+?-)ATuB
zO$TpnK`N~vdl)(WeS?NeGKk^mO=}3M++z}SAEVD7G`M*FzWTG#E&si|h}#DKzQDtD
zNy&d-YkCjw!b?n}4nK(xv~~dBy*CJHPjDa(00NZ4|Q!Wlrab
z=RZ;eQR)5qsYGgzvBu^NCGZnf?*7vUA2;P}_j<7JT)hjwaUpAF=#k(v+fi<6!|~Q;
z;RNRmYmSuvXoHV?HEJZ5qP=5;AdEDEPTrvqwoKZyR$GMmPj?lClS!-z_9e?MY_0z!
zkts2|)D`w7?r%w1@l-&7eABsAc;$80};+sv1SzY%H>!I~2kL{%M
zY2QlfxA5$`Rm@r$H@@)$ImtKD6vS%jzCl4pYrN>D}A!i!-&s$4Yu0M^L2d0zQxL_
z05fP*cK_@dSWlJKs1s(x)-sRmSmT6$8tJGd
zgn{I(xbmyRUPkbA$R#p9j{Q&+U*qN){KMVdaazLl1jMSKjvY-3A0ZnkD5j%Y!G?_F
zV#tA***gCk#BMWc&unj34}9wod<0!6ODaxDH(9pksJnN_lJMA22yWxr#|$4dGnKsW
z-M^hYc8!Te(kxM59=J~B4IL{oRZ_x8^QO>iX^w3wPK#m9Y<$7z`l65-ZZX}k?5ypf
z%}rmH*fr1ovP=GBQS$KBdl&Uo=}+;8hb|+Kh3txgC|Pm>@Jwl_%T2$&xOxAI%Ga;=
zC>s--;)oBv^x5RhcvRT9-T%C6&p@G|ru`)4+|^R`{p+DT29f51l)iH1_wH5&&jHh~
zVJy&V$$NPTZjtVPo7U{6$H5@B*X_t5d|9(^Il7H%G(9WNmylKTg70W!-~;b7alQ8x
zI;F5thvy9%@!HDSjSVTI_4+B+)>B`8G_hB9%QI(aLQi(5H4{2&o%G%t>kVHhDe-!^
z$1x{&M9iEIlqf#haWL&~4BF)=rYrM6V`p%kDs>?*_%(0$e7=>&n;NtkFF%{3H8>RFQI!L8p}=_QT5=Y3jM4{Jo)V4Fa)Bd^SQ?DrIUWw0k~>I_8%P|2c{UroXS0{Q7U
zuJS$9a~)yhh0~h#!RK-6*x_GrRV!S`*rPuO&yallEdOl7NSo83t!?Caf^Qw-<%Usp
zk+I7B1tA5omIQYFY>Ev>p~W;-95a-mmO0H^uf+)kO~F?0*P8rDn)h_MpQzi8hMlfv
zZ*n;re_2*$GGYd&s7U_nNbUP^eIZlw{L0a>udNGHcH1omP>kZ;h06CQJEQR&DbIwu
zP&V^U-Z6~XZ(Gi!;*2FeQ_#4-qXVX`vcwr@NJZqHn6N!L;xGLOmj2|*Sx8dy-Nc5y
zzu5p<@5-q^@j2hYHw-776>9nyr$`w7cTrm_1%vZ$N%8OP=`ja6z~U7P^FHySyc`{=
ze4C(2#AeIN0=@I@$w0{q7M^7!D@EF--IeV~8LsOnY%Cj<;NphU5k2n63mc1^M=>SIgKhIzHp}rp9Lm%5>JQ9s$F8T<7J6$FCogw5
z%{yf(h26}3kGF3W!ki2U@OIa*>FwLScbd77KPXxe4tYiArc^xUY{B+jJ^Y|r7yL}<
z-FGUznc0etk=z`Dt3=YR5#C+7xGV}5f0^hdoSIo%{z+4T+Ni2(6?e;5uH6%=|U>XNw{=}Hpi
zyT#c%=2sj&X0ueXK(S)Y6`dXAbQ_(XRstJJ(6tE@*vOA!xVy@Ol`IB%-)nO&wW0MF
z6cuH;sFST(Fo0m#U^SV+t7%2~PJv?K*)ME`6xJK@Ka`)(3fqVZM0=BaB}!$bff?|^
zW99RqU-MJ!yoJ-!(DWd-tZV`rEPK-qkN-g_j=B$a=RtPk%{s&~A!6OW`&XI!FK~iC
zfBQLTUw2?aNrlUqH__m3qMU~nR`K)$hOGyXi;l-#oG(WQ&tH1*Jb)17@+4{KOAB>z
zb`r$rn0@{7p>srQ%<*GBcc=HuYDq9LeOFzFT>OxUvOUojX$zr(DkAC`);@uPj#^7*
zdLJQxM)KkiRAPEV!4RBx6*i7yJqvkMykLW89u}e$+l6umMrFG1%MYRP`9L~|Xo8dO
zT_x(iDW7>#RKUU@BRFD=bL@`Xw9FS4Ak8Ra)7Rnxc4PcMYX%K__U$V4o?
zV=acMe}Z?Nq%fx$OL~2Zo8Q^7?wKgf^CO2SE2ydq!pGPm?Pk=5Qu`jT3s;vmG*R@u
zw&TIUO8m-QkZw`Y5A77P5uB3eQ&VQ`3WDb*Yif1no#629%BksVVGc%u^}b0>XFVB9
zIG`>VVP(vHZ*9;5A31*#pD#4s)EpIThhw{)9~<>gK_q6!QrqvJ7p(MYx0d#gjQm8`
zpg0TCg)&qm4(8{9+onN%mK8-}Z5JmBo=yr0x}W0vru&mL4CN!hc=TFgkt4rOL_8gZ
zLGm9{n?k37^irtFqVJd(
z5OL9gl6Y_XeeVB`NfVf36xv{HIp1{C`zh
zhO+uhM~5U?G1!1Z*3pr3@{JrwLWG(rS&{q27_$tbq=bVz8N1FPYGJ`>w+|mK723T5
zii65Tk_Y{9mT5VyRxV+eRrIE&CIgRoH{i#tZ_JZ#($lFIUhS~g*Vha9T?v?VMVNvF
z{^wTiYnxkJOT{${S%rn+E8WpNmII`JsklrQdi!QiEWI4;c=H<}5fOf*Or5q=wpv(N
zSnX0U#pd4L+UB=xgRLlP(J+uqG_{hN8vZwH!iMtyrOjUxL`vZYLxGu!ii!dvmbmqr
zBjT7;M#jfG-+cl`2fiZ|8Ovg6lNDVKSD}E|f0-(U4IOrzBBLbG|F5X5EIL3NI-dZo
zlr;PhvNLC4Wu=Sj{aZrwjYyF)0;>A*MPipKC@AQqhlgu!-f~)fhP#JJe{|;0l9V-_INJNLx@KOT(&n?rPEUmlTh`{N0
z$^;~Ifv^8)zlr{h9yL^g01*=i0?}eX4V+!I3gsTs@f@g!+<%yui*SREWo}udOWS
z`&}0|3}O6!F})fzCJT)(Si@Efik4Z9bon`kYGEA31{A`H18dUMCiC?L<`cUQ`aD1Q
zQFVrsaCtye-A**fC^m|^l#RP@`F*J@&*|Vd|5O@Dh+?2kMQJ^Ef2}6Y&cR$~mhe+|
zSKXnxz+7!CiK`04;!t3xO)idphrbbTfHv4reYE`E>Z9QueF|z5gVgXi
zN?B>L#Am6?TPM7lnyQq;&aXW>R#rY5Ewt9&x9@;79Lg;#{+oA+CW?VfU9}-Ebtq5O
z4P=>uq{3H+Vw8qdHdVuA(9Y*$f+!I#&ySzVzbLKqvOO`Q$HkwzT*?^Dj4DzPi8T5M
zMk{gTsQ|yH>m6dxo?gXdbUEhv9Nr%&^iN_jTd909!M)Q7OP{Y#?S(4an0fDkCkVy+
ztJf@eIg>k=t6xx)HiV?1%~fL3n>6
zvjIWqG`(s)J1ysWKuDcp@a)P7GF!91>U3fj-{~b=@>WzhrC^~k`C`@7C{;K-w<_fP
zty{`;wa8FFBrfDMStifUH==y*?gUu3b!geE=<;$aqJP(P@J%OJSAAf@ZM;J;gHn9%
zgkW%(ue8pOlGo9ELQ=uA492E1?r5ns3+9XRO|U+5*cvrGcCT-vF;O(-cwQ!I!7VRHIa<3zDsxyB-U3bmZsj^jCXa<3C8@%6ElkEDPeZgWNo=LB3*XT$kNv(GE`NDNaYRU>cbxqo&>yToo$7X}h#lwXX<5aIHSPDSQJ8)+n(j;dGcoA?hz+
zMxFWf)${RC{Mu2Hks5ZyT7Xw{ne7C5HBFCdm-0h%R?oAtt$3nt)9rRmM@REv(~Dkb
zPb>P6@Io6;JJuCM>sWVEjTKXsu!r;65_ed@S)_$e{kpqD1V*P=>)y)p?hC(1TlWnF
zXfM#Ap_z5(=~cT;R_t$S;aC6?PUYfDnB>HD*!&ATj*xpCaf(Oo)gBQm0R=0eu6d6g7+!91fa!5YxsdS4`h_WznP8~&<^)p)v
zhwun8x{5h3_refY>Xbcq1!ef428|gmPHX-v{5ppm{0Wn)w_`86x@Z$^va?r0t}>?M
z&V;PUJNK*IevW#g)vfAw5p{dXBFe*@LAXbJ@ET~hz$*bspIx+C=lB=_hOS5&QU#w$
z(?{@Cmc%8mGy`DFu95TsG&AV5W2+V@0Y`Du5_6R=GLkE53;
z5X9#}t7t%g=oe(9=CttN2G>9(mI-MO_@JpQNY@^aA%~_apa-x8{MWq_98nA&+Iw5i
z#bsXMPH;QEfH*J2?o4%dF+}qIcwx5vGWfCb!BiQDCqyu{7m_QWoS~@CLq*6_BB0#J
z{;-a+j&i@pVso?SDMW_|x+ML2~wVwnw$CfdOg2ik-`s=6O7Py)1%4&5JS|
zUc#Nw5>NZcXqWvjx9uu|qme$aHGa?LS77(O-}#7x33`n2H)0YvQ4CN+Jf4(?u#Aa|
zq_LO@whOp4R9ARjay(QiHep6sXe6hm_J`XVW$hMhMeI#=zK?A9kd@xs>5O!ap}!HtYT5y7hb!mC)f%%lY4friXzSi
zYmTiBh>i5wq1qq~76*q_1#h9pP;uuj
z-(~8qrelWYpCfxBhK4dfT3w6grk_pIsF)g1avMx{X^Rgpycj^0Cb$m5s~rPaliSg9h~Edd4e;1IDoMFczvc`zs&D?dHjkz
z{gb5~9
z-AfDuT?GEk2^1X9^0}~|KYw1km6uX#e9^1oCt+j5a{d?|{%vIBixU5QhY1vRwr0KH
zDIR^(E^0S(%(b#?KnTPyWk`)kFUc9W@I@E?M&D6f##P|Rh&otY0^MK>_{jeUMzrtp
zEz8j@f*`xx-ny@D<9HVW6y
z@kk%iJ{SVQ#b_TKJ|p-yhu}|l8nU2tG$2~|C`9WE)^ZvH79LaGC5>5if)_Z=VfL!g5RHP{2%
zY>tkOzFm_AAVV5GpaO%ID+cc#LVz9U9xxZFG6MZ?$nlW^RM=BwNZ+wZnwPxuJ5UbL
z5r;cxf*`3N=l39387Y%WI*0)7^d1CEBmi)(n7}4|4-bBTVat6vlq8VEmw0RpC;&Zx
z2b!hwd#uOE2_q-a>J%%5e)kWHJz_CQiXeXyX2+)hka^VZXd0l(aiK*jz?l(xTz7M^
zbACSTuM7}%U(h#Mf_&&QFBDL@-OrmN@!L3aZYWS6xvyc-#^BOE0954k9Q`gd5Klnk
z_n%FA;Z6s`?Z}@QeTKD+H1Ue8gNU;gvQhzV
z+=L_eziy)a+K>-XtBVjIfu=HIK;^Q4y8-pR^7e*zuXL<957?Pw(y9Vx$j}ALa3lf=
z{TmYj91kuPgCqgIfJVRDArG+ssx{-@Zh1^cC!)gyS@{9Aa_*l#FF*tsKpb1Tp8!=n
zAu;jcQO0d5FqU$-6kRH@#CM8kk$sN>FS0i8(sqlfV|}bITjE$0Py^-h^MRA-bA7!NWoB`x*4b`)JBD3Ch7Wq_390zrU@x9H(VHja)P#Q2
zNy*c|z3Kw+9HFy({|hEYf}w|u~kfCABJzse#-0s#(njy(JkdylylsNDaE
zeFP{lI4d_d2!PdhDGv1*JPqZ5Gj&B#DFCJeuD=u-L|SMA>6E|$iCyyl62$HdUfZDr
z0g!Z#wt$5eMFeSt9bZ2HCR`P4lfa)I%L?pZ(9qcIZ2!639|hahN|myOflwt0Hs~;r
z0lDD{ETdpzVgk450Ez-Id{qKD9v!?brXwgO@b_wjAqCx3X&i70cqT(1KzmayMm4c{t)2x!S80iXOG&jj$VOaS-*6C#i>
z;gUed*7}S66w{1~Nv(B+ChhV_6ayrvlUud}9F3>pm(MCa4YH3&8MqW3;6gyi{svee
zRkhXunJNPBo+OdP_vaPb=f5?=hv@n2@Z6*5LrG>3V*B}v#KBAuRdz$uyY+c}-Gd%tdD|U5-r{&t
zOZVKEj%j3vzYlfDZ>s-61j95y&oLdUzafkRAwYq&P&CVTAZhKz&pFrOGV5=212X@B7O=p%9PH!Y$koaJjW)l<1#nsp
z_837bmbU9_!Cz)`RKTLb6{G2eF_#T8x2ZV7)X}m;@$N$D>;k5bm+lH+81wLo<8Qtw6=Pj_d
zx^e2af9km!D;p|BhfMqp`^_oh=W*huqj^eWV`D#)hkb$*js22au4h};ti&(L-o1M_
zkjxVT5ReRDX>p=Ruf3+_+8&q>uE@_j88^rI5DE;CGanKbGJw1Sm=?eWBxe1Az8USO
z)GyuKVtdVjd$mN;E=@3ZyVaGJB8zvP&
zdwF7f>sIZ!I20m&Wx8;Cb2`dI9?9*xuBdElZ4Cg|*$ApYyi|~%zN}z;
z0f?Yo{9IaE8bw9y93+0$hI@9kA+EyuE~~!&J+SJTvG2R@Z3is2?UXb`O&WPeeg^Ia
z>y-xr;IutnsMqWxI4p96?R&Fkd=s>Id%b9Nv_42F;PiUf_lK*`aW+kEPR;}5q7aZ(
z@$Ov%-1>JonF#!cWgCiOl3L0}Q6f_^au7g=yyR;y7=euT2Lha*1F77x>4ezO(C`Wn
z&T1eD0|4CJhvd3EO!k=DwnWM)v%?gqw(IPC*9`|%I7dAXK&A5pcw`{
zzwx7X<)PoHhd&aWr<#3*Gj6Xoe#3c&*U>t}_u}P4Dxr=Lv18gB0JBo1=-N&ujfVlZ
zQ1jdH@C%U)d8lS+IA}w2d)5ujA3dHfGegtJSGEB54~~v+Hf
zz*2u)uha3ST2};F`)>*#tP*xe7B^Ly6Tlv)t*)Q`p=Ic;zV#H9Sy#EdI`(`d|3c5G
zintO$z%NhttuBAKcAcFqV0QE}jhXB5RVQX){CP{OF2Z*_DYkW!W*m!`-
zq@4O;IL%|BH+f`>H~;#qTYUZ3tm8%{kfGqn&!|J)8u5^(u5J&&E+GvFC;$b2-5Rh8
z-aR0>{l~2}Te-Hjx3d5;OW{x(U>gJqjstN>aVM`LV+JrM!1V!=4d5KRno)n&w1Teg
zDSGjfqk=RD9PuE=-eR8(r)aS<<(Do??p~Ve`*n#<7=%$JePFdW4(J#5W3J9_wmK4x
z#wSM1_-dJi48W*sASACT+}zwm4twaqMvX~;qs~;>3IZD&R$(&P*xKlKD`Mpc?gK?f
zKsW;+FF@k|$-AxE%GGPmjoc%dY6T(d8$4*Lwx*^OV;pU)9AL6l*@zLclSbA06rfBf
zy*MDEwA*_CJh|~H?^jSucBStlx5C6yvFZpxV6$;T#qaP@y8n$A(iI8d5Aq{{!sfK)
z_8RHK8_NeL&PO6XO8~_ky7S5d~_S;+PI61hN1H
zrcwY9;f(8DD?sDtMD$wP(n@+nPq06jKV;kBSFNd!3YPBw$gTn*-S=L+Jo^^y*O76v
zmEp4JdwLKX?GuQEF`v_h#Wk9nB^u9*t$d(hH0#1{z8L?kuC6Yjr$;92zH72GQS5UN
zZVZ%Fh+gwEpt}EZxo|3G^lFO%*pTY!8OyrtDH2M`6ALK^}g-^;KxPcxnhzrrw!%cwTE
zWKq*4pCw;o8^*wZ-_~ZK%1`~46Xws<7UlxZp;aD>T?4`V0s(sIRSp&tj`PrYk0=OT
zszAp~gQJ;cJ4I^i?nn>SRL?-4UgK2iN_p>-3g>m%dQZuzNeP6FRuu+qUdG}_-CjSN-wiiPiq=?yrW
zlTE#bY%QI6Azd0B4C$9Di>2?^sXGbTm&2Ki2Cjezb40KF8$s
za|lA{T=svfGo7ZW`;Er~JdL&a$uu{$STeq^55q7Sb;P^OM!REIxq;=>H^~*}7tv%>
zkr^g?HRMS~1FhVHyL0cdVXsg+r;;&CkNSZ?G_~P!PxJLbNqz)8sr|&#JTmOVA_M|LISe8dbxv@7Y*p2el
zrt+sQ66a@8R4{#wVEz5tpajQenSS4uy5dlUoKVCpBWyA&+fLt8JY!x*e(%kOp57Dc
zg|mm8{NRnPY4*}R+pz`h4r##yMq%;^=gmyv0&?RH6hZe;dnGc5rWNAn&FAFor;!`g
zbR4n3L$-im*Dm(6dLla*&FSZlPepzb9=BM1%%xJo)C-9RIToSMBO7`$13glGiOR+$-C|jb$r#FexWGF
zx3u%%55%5+)1ncPaXLtaUL$?~m^!;
z&{d;b?bH4g)
z`o@C?1;w+ve30(u!Tyi>r>vKY18N3Bu?-s>xegQd5n|QR78TSMiydezzSsReM-7e=
zTZST)FBz~t$ur+mu59kBQ27kovHd)X-x4JJ!>Dy6x1!db*B#i`z8<4-p3N*4X*hRa
z6obUlp}NHTrX;G>{LuQmeh9{&(>;ay$U`m*Zhn7bIYxo<<%wY
z&4%CiD%^wZ$_-C1;{4R_k-@ThRVP|T!=U7!1wz{FX`S}jWM9ASHxJm>!NEzwv56!O
zD=D8ByX_yzj&4ZpXj?9}B#(sr$XOX@{6+OD?yRE@?0ZQ3euD4k{Ny4?M<_g(jYL&T
z{Xy#YO^@b*QI*eY@jPo1d9COl+8D*|^KHuPetVMjG=&N}q(k0orR3
zA}sGOIXvIt|LXoBF*7M7bs1B;=+g(TK^ensI?9FGD8o4=vkla~5q5&GzIFBZCb%y(
zN#dhm57ja!ismd$RClVbik!&m&aH?a&%5gfF9ojV9GB*6cszQ^U-Xs##9R3}U;Y_WQ0w8ci@cl?r4Ns3ZQa#E`DhN4n|aH$7o*nyXx7pf7doCA!P4?|KN
zeS-E+gIJPQoGhJDGcM?i_cJ;ZGp6K>-YeW{L?86f8`GblMIQ|gUi&Q51fN~f*ky_g
z<~B?)%*{%gpUd3j3cOwkoUVAuP`u;#!&puxDutC4iSs;zeds}COJiU7*
zjorL{o_Bmg-EaqZ05X-A!mYR5NmBF}HF31L1+QhrBBufYY*??4xs4?3o0b+PiiMJI&8_k83M}V2=DJ;o4sx=|1bffnAl|=lxugUp}E=
zr2%=k4XY3d(qxZToBk>%yF^TkYR5>iRg_!q94P3PR=MU)y8Fq(#{Nk{OWeg{CaJA`
z3^lEql&%jn-GfWITk><`4K^(9==*}`OVmOaB=
zFWmRq=^Z|L)Nh?zT#@m~M9jzt|A(2Qhu~}tO)Jf|`BpwPOzlL3dT{~T#3MDEB|TO{
zj8`-qvY<_@?a*1^0P}~Umi;Im;|E&=SuwG%8MXdaXy?i<=fm%w6320P>rZ_dBHwzA
zxrr%1u1~zk9oHO@@vh29zj#*}ym8=Zg_Z2UuT)i~IVrU3z`_K0xdT}IE?RXp|L8j%
zS+Caq{#`{(1s*8r|6%5L@~sB5>g|OkbJ?7A_VaS50%F}mam(`AI>G=u3DM5z05v1c
z<0)-r^0*G!O^5w}#*@{JbGSw2$i%dY78ecY=g^R?>CxfFz1f1(hu@y-$?s)7yJ^l%
z6OANpQd-lTsL`0xi@ddF!(yvh*5og10ln2d)!wE^DF0Fsm*B$ro#4kFZTYhEFA_8-
z5!wqVy6cB#L|2>0wh#>y-n_!~$O~4R?4}tNm23Iu?MI%C6+wzMDS0!`KiN{b*TlzJ
zW^-7S-Tg%cj}`NPNN*8;-k|mN!_#f*Dg%634&AlTSD^!Q2f?(hj$
zqb*h81c#N`3t?Lq!L~J>kZMS2=DX@ATU@2^!ywz~)Olqk?Fd6#owD{cg`*ZQEt`92
zWTEzf4=AN#?cu)3`Qf1IMC*@gJAv|KtwQaxzC`6&1nSHSS-o0YKKng|o^pd=k0RI}
zUpT{H1IwYbK&3O0ZQ;by&fL@3kV1J(63Jckoxc5*l;NXKHG{SA<03lZNpLo}zx}ut
zz=m$87x)#U>_aRb@xHc&Qv*KlQ^G^-=g`a#wq_VDi=HcwKM!AjBAxR*bwbI5|G@u;
z!}3e1Kn;9+#z)BakksEm_eBPJV62sgQz&J#k1Tn$nMMLuwBNpLgwI)A&h%sSI1CJq
zGSzry;>mNWMkC3aH;#w?oZl_JJzMDMUD;PSgdQE1<9?p+9TI;9b+!8tABJMMJO8y^
zwTLog@)5qW3-iYv^ZXs!!Lk5#R^pds9+J3{WiBIjV_wU_^}5H+9E|;Emub5t!`(2U
zD?&~%ZH%R)Phd%uL(vz;PYU-1URRi)Ua9_i*L^G&&Vi1lKrTmf3ogeK7fc@e4@rk6JSW$*
zFmu?^tAnr4grZ(Ce?(uNGQwOR%<_^%Yg+Qbq$(9`JA4G@WE@4ky8A{9_d39fFmL)P
zYQXCdUH?#P5oPmXYKdebUUp{CD5`v+u5V>ZU&-4*d3n#|I9X|^n2ph6>Se7ZBcX@&
ztDiq*@y4KPew|v*7XH!pCG$f`Tv|y8Z#SxZf$rDN1sqZA&OT^`S|WvTB;rIVkYc;w
zy2o30yZ}0rGU5$eemw2Bz2@iQV;yfn#Od7BImpYdt@gRlJCeDV&=1)v4|27fKQM=aR
zB5X93%D_XB5NEOg#iFR}K$!EKs5iQW_Seb}F^Uw-#jula4y+9i30PT{ER?B<7|wIN
z0z5-?g1ol`HW4kK!bYBwt3ERekN#1Mh86OrUfI2#dW4dKIT!Yf#GC(^i;xY8N_{YV
z88hN7Juwl*L0GEv#at($#kr^61njwRf2q2!=N;o|SeUz(llkK}DLZC!Zh97A4*Blo
zz%jdWpIK7ssDOR+OH{DsBsi0K9xcAi?m+Beaip`mLGbCG$&`-F4uWn(^yxQ(1gZtu
z&Spt$PUVdg@W=+=XgXH2CN6QofFXAVRY;AqIj@WwvCca}j`w79)#Z`D81!@Q-7%bkiYU97e7%rkCW_ljn||5N3O|fKUU_-e-0W-+Pd?J^{=5b>1hjD;1uW3
zkaaE}O9d8$qUY1mDKaA8sqj#)*w7F0^{?RQpTnYm?w($jy3o*1Exp2;
zZ{x1QD!~0XWdzre3S!bzA=-v_^9pQ2`>(QV$QZ@tTT{f;&)={o^ex(D7K}@kCJ^Oap?0|Ll%gQOt8G+JaNRmjp
zq#7!x!tOCtwC2WrFL0iq^@|JlfnMV?5lTABQ#{2Z#PpQQXUNRNLv#F0scVBKu$DWQeP<6gEGjvg?}GO+e{@
z^XR2!iW(kYV(Q`l%oIDcq}WZ(+*8yh2nR1=omR6-o84^_?YO475X43rOt
zB@G{f!Hn?TtmTpy>4IHQ$A+|-AwFX7JN<7t$J-0%(C;@)l-YFC`dt;02yWTW@lCD)
zwq9v(w*|MNz{=1elalVAq~9<-A`aZXnGo!mD
z2F0xohB5W-`uFJcb#G&z2>(*C_G+3j{O^%=U?U>2r|puq0!d}5dGooeD3q|YcXL$%
z1wpu~#(Mp25k$Ou9JHL@@pg(MRl~Tv6o#PO*J>bCD7b3D()ZY
zHhqW-iX5c0V|@Tt4tv`l^hi|RTL(8bTXgOu-IDR}C94Nv_7qqqc&Sux4|JE4kq|b7|!!ZT`6X!xP-$sgY{~hXk|SkJI^=j
zIZPm;`0mBUuz4qrCxbYI7Wpe=^IczpW^2iFouCIXTADHw>q@)A1ewepNs)zo+%dCH
zXM^oXr`l$;`t{aq^6jC-3eRh}44N@(^5WL%Xv*kQbakt677;kR=_$&)Kly+ywINm&
z;X#W6-Nq+$Us53Th3_vDZeq+7*M!9C9Y_|hq*x!p(c|Fgz!7*mYRSuE`rjO7K%vlQ
zEN(Uzz;g$Rz$GirzSfd_!R?fOGvid1`fihmy9U8EzR91(t_kmFBuh`sf)|1nG?!oF
z)Jn;GseK)a7cCRI^xb@21CczO8ogG!y5HQkaKn7ph@MW77#9~pc;f0feh>5hEl%jj
zEKoDzxCqfnh=_Ekj;TOTfa`pCz>^Rer4&+z<_SST3fLs2cN2fgktU9oQjSmxOwoK{
zc$D%e%T$71t?`+-k+PGSR8(*%e(QRmb&~2pmow#60*zy3#*I^|1OS=`T=WoJo2bb8
zcu$Ok&v`k8h%QSk@$V}S`e_FP-d@uhaF+?vk~8uWbW$9ztj%GbR=aZXhNDD(&g*cD
z#oMvBkhVqh4w3)((}`F_zz^5KU!0a?#LkE~IvBq6-7^`ncjmmy^_E@@{S_I>-d>Iw
zSLAXlo}`*M!#EZ*_SDn(g$2Ja4tQ=}VYu$vz|J8nKP4lvhgad3raemRL0H>LA0Q?{8!y1ak{M@PU0jk*wZ(`R=)JYNTxk|gp}
zh=_@3N5~B@(DDh%cdUWEe&)Ukr6PY!kfQJ@BQb!>-BA~ophE+qVYZ0KZ6}th?F_sz3Z6jv{-@NO?60x#bzlf
z(xu8QGse~!(EV0ADYFglpan|bn4erM%U?`f0n;Wi!4nw`2pUgEY5bA*-)2E{iY~m?fXfB>i7LDAW1!)mpHsK{Z&+C{#L*3S9d>>Z4xkL
zY!e0T7GDv2_nO>gn)1VxzsLK8Z=|+6Q^@+;qLIo@Ovd5(-Nr!A`~6?&0G%;XR)z8y
zn!XZ#NPwfQrlu~JH)wnB>wHz{(0y4w)h~Lbz04f6*~Q5?k>{Q|gfaMgna$-1nIpv2
znrF#~N9INWiGAyqLOg}&GPvcL)v;|~h~*FePqROS2|qk8$*Jca2-^-Cz_2utz1;d?
zoxAiwVSW2?)L#Av&{GXF`bclePj88@_f9Gwp0gNJwc0kEjXoZmRS`&szMoalnY}CF
zz{ptv1}_J;n|@Kl!W|{bt66#c&4h@EA;^5Dk@3#FVfdzqQ#=Y8@u*dtnt_CjJ`V-?
z(Lo9GWBM6MUki50Tz0#HpF9jqJ&pG`-wh7FwA99rpf;DZr+*v79>3~Uiq0cIN=JSC
zXkm0pBhC#pcBEy=9=E{xZgY`TEB
zBdO!dO2E_-J$Co{vTJmy*^wBG+DX=|HZ_1VB@3KbMZsUj>4u?KCTTb09!R>CN)>*b
zRhQ#9JJ4lcSH#l)MYJ65c1dT>o(%YZHZdLr0|6ZWNcRk!*b{3Cv)IyYZ??%QTw`60Qk|qXtpxEefT;7;34(6b&YBfJ)6wkeg@sLj>Ri(3u)3FK`+Cx
zB%}nW@Ru~D0(+$bdH!X8fB@vtr~1(6?xb(1bo)oCZ;!;o0v&xXEb}C#evLcae1F3_LcIPV
z&1JVg-POtGvZBp!>_CH3?%LD-+W{sX``yi^xsEX(C6)YMa%r1*`-QCyv#&TUcTz=ZY~I>A0P~*?`H0z@;*u5GbW~+$
zFN7?|IV{$E70TSJRo@5Kr+Oag&5s1m&&gO_OKgYG)l!RByg|{d+_f}vX5@>hD~0oI
z>lu2J>|+HuYTqSd*Z9bv8*{Zb~Ca
z525g_&}hmJO(cgpL@_o;uNEHXGLQjJuZ-v$4gEhpiTLv{YwJbji5WLL1LHy5$@W>x
z#+2P%gRqH84ej{I;d?N}Wm@kW0?U2orj-Xw0(Eja$HWhT<&eOe*KEK
z|7x-!DPanK;+>9@rvt^FLV2lYq;P5S;o+e96A$&3X~2C_4h9@QSo(436*zfnvGmg`
zSUa-QKXD0NTPt+36|&)Y*B)Q+uI9bVv3884}=8gIDLPQz5CqQL=fpUSGD1CDKQO
z-?Ml8Tlx1J;K1@&xP9lfe}CAentZ`10e%FeQ44^qU;yhPAk4Wyox_sLAr2H*bENI}
zL#ArH=qYe>%ZuzWrl~_c!J#-jBIIW7_5DlsDT2GNoaWIXB&A@m0q`VOY?AbgZw4bZ
z_OO*Mg9&ho(yLvrolg_oA~neqoqD>Bf^=W%oJN_Nd!xnMC_>SHGY^1#{Cxu>BUchk
zB50pUadpK!rUUef2S}tS4V-c%13xSkBZd7ZAt#FgZ?~tzb$6Yc=;v3n4YvvJCs2v4
zyh%6u4F{HsFt^2SCdZtqYQ)DBB_;X(FYew1n(DA?8*fI*5JH(c=FCHxNlxaWL1fOH
z$e0jODf5tdh*U^2g^Z!hGm*%gDH+NvbKkxXdfw-G-*>(1S^xj{t@V9p|8Ez_!d94*;5rv{Bm*YB7`WxOzS
zKYl!lm~<$Ew6K$SpNBb*T9bJQ;!1rq8zWC{B7~^i;r{
zXmGW~iRyPU&plrdZ{R0$3*z1Z%L^_Fpa|VGG%e!E!`M(CTRva>6u5Sj4~&~`&=%--
z7OKe9W*0xJE%+O3>`Q2sV<7qV0FRD=hbQ=m1!S7{xh*s&rKC8Bwo0yZg2KgZ@=5|s
zn?N?lY#)3AOvPPi^)7~ot-rxn9_3J
z7@^O#8<7nS3qzW-#Kc5h`N5SMp_MOL?$zobMJ@z^W_O+?B~mgf>iOY3V<9E1a~kv^
zuAe$0*dIGEv9tSTXY;{TE@iR)gXFRmH8wVeweN5mbN-=^ZIP($w>=;jd;!{NyBW7}
zF;LE~o?6C(srFA$Ij7XsW#}6eYPCPs%v-_O-
z?C^pmmZ^mLZTAZL7rZ*%3&K`}NBj^iMY|EDUoX
z0pg09#07J6))yCjQl8!QTc7zrpUi!n6gO|cU__tE~$1s;Xu~6^~ao-D~bGr5WJF
zoLpR7;tNdzD{hj|B
zkgy8M!i)}X{TxKpken4s(4;IuJ
z(%UmGx#cla3r=ha`8HqVace=Bg!I)slAk+^(`A}Wb!D+KGI~PaJ$d@Hk+N*|;GLO)
zKp$RJ?AKyP4kV%K?(S}i6A3FW7Ioj8GQj0YfmzJZDVU$FBo2#@Zw9GqYFgSz*N3e$
zQmgf9DCvK5b5nfnMCg
zm9sNdW6tcV8xmVG^|{WJD%U!+O4PO`%5{UTbHuDETKdu@(p$F>`*j?xZ18qr#*CmR
zAa<#Yg^}giHg;eI|JvM4PWCvNpb-)xZ#1jl-g;`8S>!c3YQn9FsaR#e#2qCy%z-i$Q`ZtN!AMWThy6Yp?|e_U&cyuQmd^
zH3F)1H3pLFIV~-!1L@1lcWP>CqR&_!C)0yF>FDgVhbunss0PUDjSMla)t{MBgS$}M
zw>vzwQReV?^oVfD%CJAA;6NY4venJRKAIpQRRtppF=1siuU=s=XfdNk&N-tYpkl>9
z8+O*fTCbokPh#ywJTiiv2@v59Va-jkBN|oC^RIb
z92+!Z`!la=eq*7P4F7;U6%7p&Ou`rea}f3m-=DN#dY6=(>*ePCK
z@V{~M=5VBr^(iXC9OGJ|v$uMxe)YePsr&DLSKrdYLW2MH&QEQS2D&VFo4bG>9NDM1
z)^SD}B2Z<+9AvtE=MH#7K$eL|n(|!&4P8o5%3;&MJ2t
zlb4Pc!c>^xX4czE5MH`ZLU=HYtQgwaa+E#472
zmr>Fnda0Ii$=@PKSNW@CK@~*$*|(lbZOsKMFV-;z+itAbN&YTs#m&?4c&GNB9=}_?
z0j|TotScbplS5)?B;y5By#mVcxM%1K+ibbHtRuue%Dyqt{^sKDlxHy`QFR9xv!Y{KfEiHwF
zg?V0{>{we{D_rW-xioqC4oq+U2=F3sJ8xVN+U!fTFcmsu3#(LARNt(Q5)ytBCQ?j2
zB8PR(#XdTK^Tt7UvAwm1$Fd!C)c3)+iSXg2MUxxe4mUmC4r1N9@6AswEG1Ib>vY%{!JWcweJ}*$4$^UnY;!a}fU{=6&0_?zwscGIm;LIV%ad-KO
zhF-LZ^|3vLYX@
zQE@~Xy_c6(Mn;A$nVT5g2Nak?X1sFsKh40LQY2Mob7XI5yZgAU!I6!LH
z2hF2)f_0Bf1A2Y(q_LG%0Bl&`90#N9H-zir;*?<_0msk8%p4LPUR4Mf57rStynigD
zzwJe+uRee;&X3P)0z6fb$!$#M=(zLZzXo@4%r7#j&?GF?LeDraA)ZI!wSywIFnrs&
z#?6=*A6tk%?TmzGK2yh23`X}bns}mJ*hfka{!UzerWf3zxGi7;&9Ixru-6?!nuwis
zl3E{nkunagx{4y)UjG}?I71bm+#z8i
zV#yVT8RuFt5K{?*dyaf^oL{*O&u9_nwc|m5VLs?s4Idw6|Im?|&BF7RYCjD|MZH*yusE@gSd|1KGq*!UqQH4IachmnyHxtlbSZqWe&gppi2
zHE|*iRKEdDJ()KJy+wbv)~O53non5ueg_D^j#8RN0Oue_03npRy1MHCNau#D`|kAKLLW}Q
z`9n@!Lj$=4C}Zl%l`As(`gGu8j}JmF(`p4}+5Oh>k#anGEc+RRId^R?Gm{;K4{`n_
z{lX{9qyxpyQYy)hIVDKUfR-r0**P#AwxXDdv75d5x7_AI+1Xd(vH-@$*x5NcwFLH3
zRw1D%Y5_CeHk8LbGc(>MM{f!VKCtb!b#y$c9Wm@fJsQcWRUtMoM`YIetQmR;CAy|I
z2I4N={ny-1S|!`=t&$`9)bpvXQ{vvEbi#SX)7MIkPDy)5J$|pFb*Z;@MiVx(5e#ZnYf5vzb>_RXMm8kt*ilZKdE6s;+Epb}x`^HEdpfk|
z(pqol+j)=MZIt^AWcPaf`QoTPCRTE~Ph}yebuOYzYh$5o=5lC_g)ibsbThzV5`i*d
z4a+}!sf8e?1WJhAu(UM(*^?L7@_t~6TXjt6!|GAVgy5;H56>RK6pnfXYvq}Z`@&Ok
z@F$Tk9Pl1+)ul;Aw4vf0lI`sQx0J(+X`p-F8d{vmcyT^|+WO@ue+jn^=sVr<%Yi$H;)F)TNnMsb3%13aNbIn5YOI8Cn`<
ze5c9tQd0NhWaQ?ki_GmaC<@XN*>ZQjG>*jdwK)mLwFi|9I#C**t*^cvGia<2pnVQ;
zmIhg=_@!0n5yt7%v{z+a6?WoSmqc3+Vnf!1=lh5D9~JNTq&86er#jM&cr&B%+8VKv
zUH(09mzc9{TN#{sJ+e)6L)n}iI-dsyTENi)Kho$W>cgHMZ3K!{nMFima?gMXs(5@v
zEAJ-7Ng->dGiM@r+~@oQf`VR#U!I&Kov}&GS>CgyB^}2L*1Us!IN)}siG}wC-XG&P
zXp*@VLheny?jbjx^XeB&shrKs<1{EEGSJzddoNB?AIZ`S3*(or
zk}^qtm8lCP>v|4}4ZnYy)+Kzr9%9~O-p(}qY5AXv-07(GS?uPHYqWh;
zmveDvv3PL)xJJ}BV*0TgY%Ps1Wflpg8Cr?u#BR_pUdb+gxFLwgda-5xjd%r~*bf4S
zhyD>C;(q>g3}4|IU~9P8%AmpEV;uacbcw-w$UYLJR&j!d(=_a|#@Pnf+eqv_I^N^_
zy14)BJxL$qg`F(|oQGqDnMzQP?#!7p(|tu@V9atH##PH;@h$-V%QkPNYv}|i4LQj)
zP&DFEN`iYVFv
z$BiEQMQrRUV3$rMvuQYejt-XNkfDbDA;P6&_T{RLDZ)}mvzkwK$B^^r%G+qO@lh0cAn3Hx^7;Yy+>q1W(r^UK%b)MBesFL?i$
z@ILp9-bN5>z!vl;h!B)VQ>;9dEFEI$xZHNU$nUjBux#KBrqvq2?=WM?vksk
zt8PDJ=wGI%2mI_UaLCWe%>@(*NIX)WsRHm}Gh?v$dGL==xs2K%+7Yy_!Tm=`lfZ7k
zhU9e_Ig~$}nVKyV!8uUz7UCkSl}%NOWwktep(yp*Ija?3v9mv~3+DOs-S%JL@;$=Y
z(_7{5LzA=xI=yD#ys%?SzFRyO^<(tXn8%i7_G`ufLz
z&9ICfAP}~Lx&?NP{!s*+cszU+c2NSp-mVjl0!57dc$rE~d2`O3R>wHSCHuNyWP3nDu4x*3l@t}R}CUMPzS3WV6z(mH+W>jPGHKmEoxywy+M
zl2~hNZu*svc+nybEO4)af`YRZM|gN40W-Y#m@j@5=I?&Zec@}thU(T@VuI09i2Cua
z@DNkGfn?kAD(b!~tqnb;&TsPHVg~oh3bU3-ztPSon;wvX`Kd%%^tJaXo9YpV#q0QL
zFwtdv3RwDjRle4u2C$OuUI`&+jl&;l(AZY(2AC8|$H!)4lm2fma)|wV$#p6$mGU7BakC
zEVw$KN+GclW%I(qa1YOjRf+x)A)0FDQ>svK}VDqi}LdgX(ufPbDkOf-t$v}
zk>qHb1pWhYDSa!Tj`B}3Hyp5zW}~CYs_v+u`AINDaKO&$W6ta~J0rd*VGy+X`2Soo
z?A5&t%p>@CK)U=h9#g^si~@RQ7hEUXQcL6n-;=`xEF_Iz&QJF$dWPi0$cXO^m`+X3
z5s|&1!%88|lQs8*^tMmIGA|WZ^_>0rfEUkBS^W{;(0@fvZ)I*_da|te&g4RANmD-c
z`0)Js*HMYqEJyfhYD8jUR$lfm5?8Ym_MD3YV|>bnWpAySVjD@nCkb2q$3}tyWqbZx
z%aXlnR)#ERS+RH%)P5rgQ4hR1djCr_xa}mfJH9BwF5fcx^1>>;^MqN7Huli69n&yG
zBfJ;59xrf}cpnXvFyS0*dH6i4D|e2Pli@>A0B1`n?Qy-+6
z1wO9~AAVsSR2;)uH@k12@Tf=5o~ajEZJ(aizd7%})tNP?&Kb<((G=WV&4}6fGhKe<
zcAw*e-$Si7ETS?ZE#!h8dM1}25iT+%@-(FvGG)FaWoPG1y8o`P{XDbuTlSul@|79v
zUthg_;@5updFqscU#3NBK84y9aUKG{QMF*EvCxh@g44>!qo|$j4#lmO68=0FkUSR2
z%{MqsZQ)IOhYAwQWw5eRmRvPdSd&6>J^v3)9q-rc#Qx+?m21|7Hgk1gH++12O4z?N
zPFfhe8c@lt9dp|Xi;|h3Ia|QRavVDO6Fax<<2R{uWmg;kv@@j8~cY&ocJk&x(FCmUc~&@%$6={C^Ku*mqIG*`p=#i@^wyErXSXNRb&2V
zKSdonf2D9@-N{yq6Mr#xYa`3{i;TjS#(jl?%{Y2h9!#ya(zCosaZ4_jPVM>hywPix
z^|_s)#u?1D+WvWwamp;7d67^Z_3YEJERRhN$XkVS7z`NWO5nfd?v_I3Qy>Uu@0L;-
z!_z1g;#7Kd`12h}X=k+3hkI+28&>(=1#)r?Vt;SIg
zC`kUZMVU&1CoW)@ZS_!AuFv$-sbb|gVbTy{2w2o)OVyMSxrF6K?$7Sb;px=&%I)M2
z&x?Ekjn%?6);xo`Ra+?tcNZd^+V<&ra1)S;4bLY0P^@8Vt?L7%6G!tJ?!)k(ogOGX
znboBPB}?dn@v^%7`3}KPL41dd2}NqC?6(`sSM$U?;8ZK_F2s!qWvGp*8mKC5Yp9m1
zsVW};=W8zo%-H1V_T!o*DJeAMl)r5{&s9@u<(eJ!^zb*7VXB1xMcx%01M(DD+T7*_DV6zsMc0G
z`xM;++yYEDerhNnJku3>#xh#e@iav5N=}M7{Tc;~VmMIZ;!{@+C6-~SIG5`0-h$`9
z+ySg2SS>pfFbKD1U;+J`6Og)D+@}N&dM`XYeAYT5Je(xBc6E@~w1NEB`x(idp&R|i
zan2+hG1IT#ycq^^ejL?mh}X`yqE6TtW!)Ln5YJZ6I<{Q*&ATn4Q=EwVR^lnG5_8;`
zt6e}m^Y+|>JJY;h#}+Ej^tI5A5#lF=goJM)+{j)012a!|_s1zH6jD7BEY)Hzxj>EL
zl5-G5Ap0=b8qR(NDh?fr(zPcLaT;)8MPv$$F+?YD7(;mIz;0_j$E8ik5fl14F=%*Y
zBzQbPpyfGKHhA&9DMkj^`wy$lHY>k9{x|`!8=Uo|-?%@7J{b4~CGe*{K&1gTZf-Lu
zuL3sVpRTzI@u51G@p!qG#fi^$dQp1s?}RK&re)28qeVh^2$kcgfmIE`F82!4D7_k6
z*7)1U5O;y1cBn*}&fwZ{2u0EWAGg~Zcv*WwE*XK73Kh>jwYQ&dVU?UCP?cCxkA3>I
z2!$Ph%xFMmVBcQfd-AN+Hx7fAX$+sE;htK@?
zuYQ_)i*3rWg1!o2EKsx6djUn?T13WqJHYvVosltyVi_X96zz6H9s4;GazNviRFx5$
z`o0kRd=25YsL06UxClc;mfK@T(5CC_w?Lhphf~Eg5cDN<`fBJs2mD%OT>pC~6tgB0
z870wo9y<7U)X-FWi)N(6Z(TP@`bs_9@`G{iYZEl~b*E63iR9E&Uoam~MlMF&g@16Z
zvw-T?o3zZ~oJQ`%qM{gEVP#884mmm(Cgi$qt8}tbm*Ijc5RZ>g?sg!(II;1$Hw7`&6ap4M$2XN6Ki^)C
zis_{@=j7nzG#PJ+FVO)*P-RE6^EoC~?B5vVmkM(4S};!K7ZR@cv8TN;oO>8kMKeG$
zbFKN|8cY6f!t;jg5srbJS-zwuS?W?cC%#{H`n@ND>#4;XTjwh;pLW(9(y;!K#6$i3
z_B`Qn&Sx^F!t(kh@57wm#zpT>-MXW}nVwRV8=S<0eRoq*#owHSC`Z$8Aph>o@k~a&
z(wJLE`8GsNR)whCw
zuYM16Sc~z%8BKd_;kp|_V3mKB{?>;n?ILve$dMQc*R!ZQ_(hY~dbRipg1+phNbm2%
zK8AfR;B38~mG;>LOOLqk6`dN#<4L|XAsYZ
ziM<-C>b=HW;JacGXk{5Ftx1-5gx9A(eRYvnfl(@HkoGlvr+(`wb$ZxMoK;(R!2sp
z9C|deqwUjJrQJTJ71z06s>7<(e0ak@m5SUfgiIUVYkKDQsHK{BWdk@U6kn2}XIEZJD2llA?nW)l9!3QNPofSZ3kO&H{wAay5!yrrLy6pe-Luvim8
zMah;Nkw)kI(E}isuPz@oe3X35BJQhlBxmXi{>#`xH&KV1MoD+YsO3|rz7_{@8!-D*
zsvo;UQxW0F`TG8H=bg1HPZXt{Rgc_iOu0g15-nKnCn9*3%TU%O`lb9qfvGq6)viCN
z<>$Px^zrvd*pEoJ-qm)M>EO(KQBqg#+jM;^j(@nf>ofJZqlMepf`x_N`KxucgScMG
z67(9GNipuf(@wDvBgOS_g#6N6ppApZbMJNfNyZDY=c|?UT}d;gJ+F29*0PW+@}CXz61=wGJ+Lr-B5b;cbFY(%OX8
zEmrDh%ABLDtQ0dZ#YkVJe?8UKtHe)r>ezhPIM(RVvC>7Nq>uEkUgpGM=+`5EB<7yP
zn4Ws*ySMKF`HL_=g14HySgq`Y2bubzTf7lpzQi40UhqK6tS6qOu+xB^^|<5^Xa22-3jU?{+YL<
z{rzd>ox+sY2@bfe)Gv^-Erv|G`l=tE-S7L8Q*`OPJMW&dQ2(Nzt_F-Jc5RZ0@|^9b
zq#yk`(OP*^_)Qi@(nXbcEL6rVZ;t;e%#Y^@N7tchpG
zDqA%ae?+!u-c@RJFsmp!>}y?tnL%@>`|gEn!uJvR9q4a%Y`RJF+-gocvdM>psaB2m
z2P3W86BeEem=FdEeA3xDqJ!*yS1*#MU6;K|ooC+lxu;vr)b>e`zK{B2{9#s7{BLTk
z^1N74)rWgjKhS|Jm*693yWUR+?A5Z7NO%eiE0f-iuM=
zd-)2xFLUsnljFfQ_z}z(Uyr`=we=%oKT|hHo07SK-^KLk;N{Hm`75g9#X$#b=GW_C
zi+jAgjeWiJQQqIi@PaXG^@7gppo6PA?&rhO*bTJQWQ-50IP$gA1`6h{NB60#lCFfY-!8fjn7Bm^Hney0c4@3Q8!g?kQjWA62`3rxR8YKk
z&+Yej9p8b)GYyCFy4}YQ=cgzZv7D$NzJ?oGS^xhI;?{W&e&ZPzaP0J$ADnhv{xifa
zS)+MED0i)oky@dqEQpkR@Ul{M`cXpufUJPAUhQb=<**;xDtfmhbnx~V@Lg@x%yyG~
z#K2yxsb+k$R4MiYMQj-qDv3BSOq*__TRzF9x5#{ty!LdAh==5tG57qg=I5z}A^F8r
z?#uGky;_%aY8zUl8P2`CE0PweoLEQf8&s{Xs-r?*Np4V~XRuDj;jUlalPAEwthFrv
zslV8#k@D7ao}-Um*?#^#^DXDvlQ{Jf&m|6P(`JpRvZUbQ9~QbB88-Hpv`F1Q;=Fa_
zn*YUx;InVz!cOhYqD-K{ytiG1I3h8H20v7C=svem`fYw(8u*pL_#CI;fLpox|J4u~Bp=7s}HNV|o)9Akv-
zz;QDJ4WF?`z&+Y|7E3NXqYP66fJWvSrffLy?UjRr-GF4b@%T29{SO#v7b1aE_OCGf
ze>a-=ui)(e3bkFvjUwF_
zsHJwjHdk^6{svU+P5tUsI}j~7tp6-nknYaEbyAMjk-V110kB-UR<3-?=Ur1kM~9V-
zS(@r{=+rXLw)o6~L^P6Y2)TS%@1I#=aQiNhU^ram`}gm`o5c8H9|oQjY6mIi$B%n}
z8W?@)&yBHZPf`HE3b?M6PZmJR#&6Ni^vvZu^}})o%g%JeO0T0xNJ!(cF&Af7L#?i<
z=>Q6w`6+`xu|YvZZ{EBq1U;ZI#6jV7#Dl0%rKY|MbClj4YMlaW)Ba*dT!_@6i4SSR
zK!7CBhiVcct=pTcX?5M8_Jd+;BM>+oi#85=k)I!#+bVf-yQ4$0D**AK)?SjMt)8o;
zZ>2VmlLn7@rUL|wl@Ro8Lf1lQZew);RdEEsCO-RdKaKm!5Y%Yfz)RD}sF+#`MS-JN
zDo=&S;~YTqm6Vwo1e&kmVs5CRrfXMC0nq5J6kybjFJJf|_^jKN3}quZG7Hh!LOUB&
zjo&_^kB)jZ$NqK2*!*4EKwJSOgea?4psbEta={9ZgBsv~%ERiPG@Hc$?~~XD3P70_
zu^DmuS853@?a4|=>57II4~f!@Gsd7EJQKhzHX!0La5vMf?<_v!KR!PSMgu`!08Mf&
z5caQ=_}y1&94sLVRp)KSk+kXQ*;~UPVr3i$u!vy(PF9P{
zzzz(6to3o7x0c`uQ;);K_d)0SpI8>?0Yq5*J0|eN&#&2@(BDu~zizdPRk9pPdn!6O
z2q4ido;|1%_@QduE9IDqiIfCYDD;`I-Zw4`>%~P(j>hf)a4t|YR8>!p7HY?rfbeg$
zWNk8SI+)K3;x|_`HRYiAW>)F)36ZR_wbK|p8Kz^XJC^PObqKuy^gWO`#)L@jf;d8;
z-GDs&OS=Id=f#gY%aF~Ou#(#NE2S|Zo>73|JAmjw69%YcPC-#$(h!MlG7hu;y_lPf
zRTVsKL~Go*bqmJ-qPBL!MQ?g{VL-pA5U`;z7+VMhi_MgTAqlVe#%v{&QM{T3XBw@FLq2DwbEe{
z>Vr`B65#yxwwD*6q@Mu;4;0@7Dk~R?-?fM@C~vq+q3&=&WPyvvYNNpl0OlqX3_`y}
zU$Cy7XUp-RCEw58nf_YNo)T99)~;TGB}{yEG>oPWfVS{h_!Y!1iNG0GtO;(%c2{i`
ztlCeVoe)j}FdYhIOW`C#b{?K_RH+qYh1?)b9;I=e&PJADH0d%sqJrk#L8CVh8t@1y
zsA)Tjv=g8t;)9*h9uOT=C2-^c@WgBr|#q|sg%fC7}y+}AAN
zzIi@u@IyC)>;e%d4BIA_Ujr=c;dFx!&%pFhCbZVtQtI07g=nW}tJEKHO@n)9{Eu@P
z^}Mqv*_dzCz1?;}eC3-buxO|-FORh>SOX>#Pc8s{@ZDRZ{*9`0^7#}DWTkX0R&mL>u+md{kDA#unag~1GyQXLEPrcVaosI%V8~`i4RK*
zRsnAupVvLU8e4`MD%q1bvbpXnP?!5uUsX|JB4=BN6pOJ+#5pvC2Wp}M^
zUe)=3-o*cD&!^gdxwN_Ib+m$|)QrKKr>}B9H1#bD?{2;GE#$T&Nk9~oz6){G(LLl=
z9e(x8Tjz3RBO)6gr*t#vdt|+?hhDr5Zzz_H?5e`g(R`D@b<`pCz3csk$Y#N-!X@l&
zDwf9kIfQPvM-g5Wbvbn8cDZD+x;4u>IztZ-~H2fe?@s}`P23!1!9MkDuU;p`?<@7eMBbzGto~|U`wBS#)
zfn?09*&`|QOBcHAh6wh`YVT#_YLl)^*UtC){?-KQ7?SmBX$_vcb?<&cAKy{dftrU!
zDphKhCOVdc#j&sTE-Kx-A)pdLR3&!fjZWR6^TK<#G~Oh17HbJsvF18|Iot4Xzts)U
zM%?ntyLB`i&qeQHS&P0~_6eH1T0#Xu8U{x#>7PjpcdN?WlE@1@)pMeO;MH1pPEwE;
zH+>KpL;0Y;lhZM$1|Ja;8-s>1rT6SQ%L1K|cz`ml>Mk`G2}_j(PYjXQhbM$`2+e)A
zG+ybhL~)A%y3}80H>Y|DB5G`haV}24&3Xea@y*>RDY9iuB5FLH+Oa%nta(iK80J-Mi?(CQwak{-r5UVStyu}GNYEb}tBMbany@pE&D
zjM7s#k9S?vAN__kH!pc_T1m2fR$F4JBCkgUs2EMpnR9|{WBGT_QO<$TQ3h!p5Sm+iggBlZR=NrE`*F~;z(=V#9OHC&7KYcP^u%2D%`6n%e+Ukc0H<}daHqpqiX
zzx3g$2EWaXlC-GNYQxK^W0|H9A31cV+_=LGQRx6uA^?jn>Td510n7~#jr_>rOMOBrc8mhd|
z!qlTRJGP)Dw5P27=C5m4WjO0j4)@a%3Xfsq$YE0o=TUxg%8f`mwCak*$JVW+VZGbQ
zmAbmq=Zc@2^r$g>t5kayeC|cC`k+$MF@oWGCOd;un)fw?_i!hS0H#vi#)}Aea{1V!dl|}B~o*lM8m2gq@?D+OjMpZ1au0=8H%F5c7KYDJN=)#YRuhS+3M(7FeEO@5+!bn#
zI`NYblG$xcYZ~1Lq9>e!Y}B!wx9x4h1G!>_9L<+eEoI~{uJHjK>%^08e$U3QM15H6
z8SSHwtZpkitt1sG4E<0XZ|Q*_#jRKMfqYFk`Y@Hn99Q~{=_F_OBVV!^JQ~$**q<5W
zn6kK${yddiwm31Q<_>+>(*|~Sbn`hw&x1z@!G=*cN|Ha
zPWuR#lpBb~Q-^4rIH^gdBk4JNT}(;y4%r(kmhW#3QXdfAZ8v=5?|J_qO+)L`fSGw6
zt)3I#dk)hBp&J-j&u<-ftb$&?GBdExjbg=m?S$zAz4Q-TXXyx(hg?lBz&g3{UC
zD(N|{JoToYj|`RYwz7=JF@{pUnO{1-bmltlnWear=SIQjs>AEENs`Gu)s?LiE
z%kDmP1%`q0wHk`_f%Xdq?Q(YMp)m{NSM+|FyY>^t`kk~$^B*z~RxgRC$a74era7<=
zn--OOvtH0|5#Og&8H71|R6p@Go?0JG9n*?#5xE
zdw+q}U{JTq6wv{0(ZB!%ZO-i)H4J|R^1}4p<}M&c0|<*5
zuMy#=p(`^cAO-Q&6=QC9z
zXoCo@HTB2i1&`HEpznng-(;{kM
zrfP>1=z~}>3WU0ioE&5r2j=E`n!)C2skOFX6v-9=0mF5G6{B(X4eX%E&IarUDi^ph
z6nZ366@C!MtQ3iWDewq2<5GWIcD!zrV2JF7KyW==pheho2(aQz2dNy5w7!Rj6zBqJ
zWFA)<0vCZD0Me%UV$jGebgplCxwO9fswwIVuU_CZQ2xh`^$n2#Kzaex&}@JK<8wOs
zbwTt30Q%HSUYEWxkdLG2`~!KWhdX0lB0-G#bM8Mv)b%Us>QzX0c~MPjQxGv?E)e1-
zTtc{vF-Uk{tsND}T#!&+W@&lZXh(B`#llF9($@hI(wG=5si=B7Vz_Mmm$3(GB+?Mh
zZO(Wkz#$nR6h89n!yk9R43KkC*-kSA#@j
zx-ms^i5+s@w2E)D2L=Yh;nUdw1_5~2J>@q&j9@9uc@#Z1CE9h5J5NwOHX_l4BqX#WC))Rzwo9TJ{KfBjPDNe1Ktjh_tv`tsYv}RDNJ=3MvL8s
z^=UI&8n*Do3#ou3H79LG;cMqsumk#g@xB#v8~gsN+NogI3L~i&0Ml(PO*PVJfiYIy
zR-nKEFlM>R(Yz0SC&F0`pg4xKjEeW!AUme1mBtc1gDh#FTz0M8soH-rb0CvJ25y`3
zF4#t&|ABT9wAZ7gevhM~fWpJfFF(6G$qrx>=JxuPk9$D}^`BWf#LfMCy!LNP;CxY@
ziJ*|sf;F5+#t%Ve?C3YpN&g=((g9`%K{m4!#T}tXhoS5YuuqA{E+_dfil={qy#FRb
z{x|>p{|!LxEpd4<^FvUYb#L8>9X&IvirHF3m+hq(&mGr_^*;e?lXnWgj6UbA>aLFn
zQs(F9{CKnn&(k|3^2c*S4X&xn5uDu{C+YNcWL~E|=vg}pVe&~E*I|PE
zGm&k*>PnlD!oVwh5}a~7vF`Q{G=2MVbneZQAG-Un6enM&-AZCC*C$vLb)Bm=5?;))
zwx-QcHvd_vHjC|btB7CfID6;GH^)@>d``&(tu#D*(YB;*k#w*#R?5vU$N
z8+JNyXoUovOSV#RG@$(WoB`;Ptq4&@qsrgjuBoF!Qws
zBTDUEw6*l9EHoxrdy-A7-{$x~ScLSRhE&dd!+IOE9?=akh6CY~DY<#^CWU_2>eN(E
z4_t7>HTs<68-vpAGr2|_ad+e>3_biZu_qG9s^p&0d+_>5#WTfxk5_n?`>k<2
z*Lsgz@|V8sH(uAC2tiny%C^B*m>mwnWH*RrkXfO5$mE;Sem`MTq5Ay~Mem}*uMchu
z)xS$P_t85+oc_Ui`qZ*0d1eMW`fnlLhgO%lq|CI~S~_*gs?TWZs?F9GIK=J>O6#I8
z{eMQt7W$M7cjpQU3&jHxc*pe|j`n`IdxW^qPF1YgP!QI~f2q&hww3|32WiL&il0tJ
ze-S>{J)FlG10npNgzKN=M4vIJ==)(Y(x*u<-$rN;UnWm`&Zbcw@P_|pYi3GbZbHL1
z2HH}R)Wf7zY8aA_393)7``nH@us7~`@TULg&m!j-j#bX>x1ir^;P=2Jmi!wltBO5u
zpwu-VsUM6~iy=fSbqjb$MCOg(ay$dH9NcEv9D7DNUNj;!^w>ZkN+<;8o!4eSeAnfg
zp0y=ev`J05V;UO!{cNlmfHKPG!rz}vP9+JI>np5@uFrZm;2-SHQn%sAqln=AB|ppZ
zAt6rCLZ9ZxOIBJWMyVz6W>>!bxj)J%m>eWThaMVYf)X|r2|u+R3CS^fSi()ka$;Fv
zR$fS9S#hzwI|@V20i^**#g095bP6%cs$ys@JMdVQL@KfOpM#c?O(;RptU0#&267>x
zh|mrwpf@`h@NVU}hTxsc;vXJQUVHLkj8(8Gc0OWBP*CHOIwfO&o4oP+;ChuY@@x-x
zR^`;J;E1DvRVQw;@z5mQGiCglitlgynCZQ!j~E4(X5br7d`o~lM_^!@FIR%J^V|4j
zj`svt&yqQO&FVOZ2gJaaYUz*rh{ncMYMfRxIBy+wxb--gRb#NG#)Mi(m0;-ix=6-d
zekUI7@(fmr`M?{o83lbcjPw#QGZ$z_`=1J097BNuR9Xbe8JED(R~N5dtwwn-1OCXD
zLP}G_`z`(Q^FQ>zhK=2l?F7Qddft6`);ngPqw3r(T5}I~_HBXwg7JX|yZZc6(G>n6
z>*p)Sey#N+Y16V^IXoKa*4U}ytJ)+prFjs1i`J|D#DhUbJKvW&E#
z%r=lki^BeHpo$$wUbve0+yNAYg4h}VARI8}3>m(!q4>_9Ts)!Kt6h$NY7G(wV}AJ*
zF$#$}SDp=QmN%=9aVAI$kErN47NErYp2~+mZ_gPL8D3ArazRtw*Uwql8UiEOm~o?n}mc`RdijSrDd&vuSgotcbmXL(zN#
z2esf0k}^Oi5$ISh^Mrems_~+HCUqo8J1yQSL!=MkX$<*c(!-A-nC<+`d)x({Vhqiq
zsrL$0nwzaO1>BDzp%5ERdwgZR1w95eL-;8iU2lz_{;$<3QL
zZ#2UEScTN}j~-j&9`?VA#vue9{ORjg`Hu_Y`mR6Ez!7==lsslz8>@&xfn?rb2>;C^
z4KW3W#@o9~H{GN*C)8XflB3Y^YY4H%#KZ(p@$DO@DZ9v4RY@$>g!&&4n?=1yZ8fDq
z6Oul_(SJn{bOa7zY;`=LRtN+d(C@1-d0Rmgg79P!#8r2kcncfo1bl%?r=>5NDBcT=
zq|^4V9YGWFR*zti=pzK4yCCVODCkFz(6MaPjFpg)T
z3=;~P=A(i@agLo@x2HM-p-K=+mR$JeN!)&!KgI-3<6MDg_3Tk<{zvcL35q)XQifzf
z6l!k~LAqRoLO-Rb(c9bGM@!xl{R5}uH6Gz9IrrRVuq^IQj|IAB6*
zaT0P+lV84k2zm8x4&yCj5bYg@o*qT=?@!OA({&1nw%LV{+%QswE{keC<+pqlaHAO?Iu-(`#f)v7^^!ob}rE;ked-`PWdavcrX{|QE~
z5vuz{pS^VgkzlSBP52Pv&*m_zdA5RT96=&(Ih^Zm@e?M*DDXUHHp1hxC}U)Fd^}eG
z>Wh`;fm|LckD(Gts1nRXTOuCfft;Zn%-?BY;Y0Hr7iC9kcNoKcFt(7!`POktqu6oE
z%Vu+J3Cg{FPLv}CA@wRJ7lgJ^ZaO;3KGGes|KD15^Q%g(nk>r-o=ApsLrY-YLj%ZA
zn4_quD4O~`R4IVsCi_A7lMG)gsKyVt3-EFbrAqj5WHO+fQQMA7ay!A?cJP3RE+SG1
ziH3v*-2@)M;p6V^xI=G`9z9yJ*sg@5-^RrThY(4}1!)LluxX2dElteM4w1MDiU~Nv
zl^y6c;2MBIgHSW1LLd&(v@sHd_uVJWYT!ie)Yq@Sfo|rbNG&8U%7bb^MMY&=H9_(o
z)Qd2Ous_OYg$ahrLk+vo=@s8L1ftBU=bi8O?`9C8R*{uG1oyF>%!ExUb@8G3h|ai9
zQH=*%b>uiFLx}uEI877=NEymyp|WY+F^E2+lelXO8_q0bPUNJ}Ie*(bzpyaTTfmcX
zZ%Suy7;ecBNXzLA%dFDKmoG6WaY9vef(cO?-&+&ZglWv2ngUP?1{6MP&oYn#KCcoE
zc3hd%{Ls)o;+h*;vl-sTAL3kaaayR*pJvy)EE6WspQ7lV?ScRI#rnqW7G
zMH+JFuet!!-m>eIW3fFk-n)M-FQ#NH1e-anuR~D3T}#{XaheQ~@f%>ITVO4UjN=QV
ze>a*%yjw-&K7u(S8mCEBKWuP10u!Ow2C3BW0!oRJPEdi{F)JQ?k?j#~4{Ti!Zz6>L
zf>|Ufka*^AUu6rJ$ts!2TAIn~GzIkY2@ql7xb}%cXaQzE8xiZ%eXv=Rb|+LD@!eq#
z?1$Qrx0zZ*?$nCN>BKp_`;Hr57+fxqf3yx72rb=itZmCs9AktcM4RQ4F9XN*8JY+R
z3{1NnTGF^}`qBAQ;;oen;_w8+iFW8A0RcBN*^j8PxNZBL2@GsNWK%$AQ$Rkfe`7P6
z8_>e+YlIWg+uuo7FN)K#9``?mxdmI$;^dbjA^ZPhr!M?uo-EAic7_Xs`Pn41Gq%{I
zc$eKF@OdZj?~T}hb8*h2A!^@1JUE*9{?|+J2}{9R*MoUQTi))Bu}f;(%Ou2UVlr|1
z5YM%`Su4qS6AB8-AmfqWlmhSB6y-qg<8(<^S9xZjwEHCZ6i5Jsaz%F@6TE+eez4T1}UaD*DmYV#EnIC2%3Fz{bb<;QT^8NakChc~xMF(n(dxAvYuZ+p9AO@z!%VNWoh7<9
ze%lW_K8bNX6t#8xxbcz1i|@maw3dW^349k?{;?={VWGU6rVa|L{pf!$(&AtzVTsb^i1Z<^xLPC$F#)NHRPGJ
z8XG1?*mR;)1!JWjdR#TQs&Ma})WJ)y4bFHrnyI&We7CuFF}hr7A#1cDt%j`h51rT8
zQRBI^O4}CF*9Hy}iS8XA3ydzA%pm0=GSQI7^$5AZV5Y#xQ=hp>zPbK;Ja@L^ikcl{
zyS3$-t4XHnSQkA;XAmRz5IQfH2P)!(K@u|xg|*X#UOmDdU+kAYa1c8M(cS%*M(ATi
z?yzLVfAuC4=*r=7d6#SQ()Wfm!RM6V7s66cODYTlXs?{Jmtl5PQJAEAALTev4U_Ih_LXnD*1+*fpoBMgdIO_abCe~mEOxS(
ziC(_rqSpS^&D`gA*_FDG9nMX}E_e$VT6s(+=qs8^%vfSdZTI;{DVy7Bi2gY(
ztul6~-IbE$XjjhnffS3=u^%6uTE!-Ili%~;A2(IcwQ@YFpskQT^ub0~Wid33Dx6k!
zc>vCZ{s?tikU#4TUK;XN2p*ruA#c!ax*h-C5)ToVc}hw4aT?@G&weXMQoLzPgp%aw
z@8OL4PfVKBXUZmHBfIe1kX(E}e8BUCz;}nw)%WU@%@Y(8;~(exQ)%i~)yBTgdc#V?
zj)@(RSGg)Nv_U$0VMYE>>H2s@oMXqCqpV`@pA1_)cc=Y>iIcNap!@SAJ=wng^ofN-
zSDsMRM5PpMXjlRT3rRB%14nk~QAY*8BlB#hTON-d>Ir}SBIoct
zs|l%s6@z{hlO>j$+Knmn!k<3g;H=(rBgw0e2$;IxT5$&pJn20&Mk*`m3&6t;qCoT@7SyS4lb7jf)^G&&(;;L$(*hOL6pUy{)
zT{(B}%ZbUC2S???pmJ-daxlq@$BS&FCsNhUW{cIYIi_1SBpO(g$Hv~UIvf@fq8fcp
zlsaaDiOeQMc|Lp1u`lm7BWqCMeKN*6*6^sPT9A5vggux5ZUtQLx`u`dO$`lM$k7C-
zBm{YyG!Vunq?e3Cr>u(wi_haDuM$SN>8TL$Aehry6nBL|(teGy9$+gs=%RL?QV6iff%^&xJy%l6urT{dlHCC
zfQnL*i01xbnDV0Lt9|tPd^(+PHb5%4eO{C3CV!jtbzX5Y7wNDskpRHAl<3
zbIlh3(FD5wD)Js{j6(1cPO1;s-ht&^=f0YUT3r))9FqJylrR6G@8e670wMcqT6CJG
zr({1Rj0MoU9ObZdF_8G8))f+Ba89r(MdO3@(WSP1^NG_DYb&1O>-ztTyf=ZTvU~r9
zd!9xOL?IF-Lxw1nF)A}jhC-%fPMI@gs*ofUcF2^>B|?QvWenRE${d+958FJRYu%fk
ze!p|h`}v>qf6xCtpU=Aoo9({uwbr$+@q1ls-4ZgpzZ`w+stUU}F~ja*=RCLBw3;W`
zK+r~n6n=MP$v~tb5J~6u_sgz>iuy0X>%I`q=MCkz(QdO^;=aIL5UYc^-mbq`ANs2)
zoe2e+w-%N<*9eg1t@;`(If<6xqOFZ#P!l0s}nvF>lGIDdiBlhRO-hWD!xpKEGlb#
zn(kVVn(+3OsyBb7{8j3(JgjXCe=02_;&SY~!#T>9tR
zn;vco`~=&KqGE9XItE~MM@18W5=afeqg9c9>Fj7#N(jN+2w&`TKy7cAAzd$xlsqBb
zNb>rQx*g*d@rjuatQ${cGLNX*mQa<4^03$~QdR9d>Ux*~2(!-$iXT351XAXzxYp&1
z@$IunekHG}zIR*DH;v1xw3SCC=uJYYZl|_vTJW^r8fDvUWI)S|JuCm#I;YG0RBM&2s@agQgu^PaEpZonyL8>
zl~FVet92R*TpX{WjSUc;T&jgDQ0R{&n}7oT>_|Io)i~fHh<)?(#TY%7ZBPjTi2#TK
zqi@_<1#ucdq6R0A?qpuhI-#{$=8}*pr*WUO`eUva=1RhSuj}b9smPtqqY3D*6D@ck
zY}~g$#6R{#*1gMiRa!W_slqun|KY|Qj_AAj-RME+3K>GP&~-n?)+#i^XMV^N{~Yma>nE)jd~X?ZPN%3L+R
z(IIl5|Blh&n08ocGmo|?0B8#KDunfyQojJ9vnpCS4I3{akOs~CSW0P$UDSpt;Kn06I=GuV_;ZUJ{Q4A#%X`u`(TzHbE~*u{WbMX2&;
zaA-C_$BZZl(D%X4;HI#+4TTx{VvGY&>=O%06jTT7KzP13`phIm(Fiwss;ii3S=A)G
zM4
zS=OtM0S_kikC=)vDUR2sCef$`33_P}=?`d#1f{o=#Sic~HHszfm%hhxndoCZ`%Os6
zwYNA}bEnZB?N4#kWskLT?#eAFwX082^H^M9&wdf+OJqC2J$@!ST1{4F%{8;w^;l%Z
zTiD82p~A+!lkV)c49cu9!PvVyo@nxWcON09bRET+2HUYe5q%`e({jP>-NWT$YkQA>
z3=mCJ>dut!{HdsPw()G@5Aon5Ee3xp&D<8)dn72pbtf|4NL7L%ehJ&*ugwRpU4!*%
zXfFn|`UF`e{vNcYJQU#f!%Ct!(7aGKH0jOjde41jvCEke@FKKPVI(LyxE+p1AME6t
z2;kfnh_+!@;v^JGWjIY}CfFI;ghMy-m7M3889c}smq7=-o+>ht4g+01A^YsH%`Nmv;}%&m39X4Hc^@x{$O+EtLY-mKX_C^)&i)=^p{Nk7VcRV?t;abh!0?(+ef
z!V?cXsM$R53O6d=+SQ#`sM^KBF`&O+BlTsN2TcIY$-Y?5#EEofZ{yS!zNjcVzDE>7
z6|&5|6h)qEg3IKt1mUZG`!Du5)*gvby?T`%V4oL&Q6iTft>LjBZNiiT0k}yddf(f;-4;MMYk;Ba0ha|&Kp3?3dg!{q9qz(3Me(1<
z5b}
zeftzZ!RttZTt(1>FYIXaw%{1sju*^j3IYOJ&Kjyi%B??qXwPl_(DiS$GY4A9wf-1{fbP@kV?96I@!#g97|Bdu2VvMpPX$XCC
zYi3B#H+bLi$
z)Z>Tt46p$sc-0t_?7$GkS|T7&yAe7zkB~$xRRlm3z>AP4`inn~6=7#_$4$z|!sxa?
zCnbkO64#SN;`;+De9NvslxqV}s^HGd`QEet0le?u(4(o8Q>RbYgZV}`8z8a4@@oO9
z-WNDI7F2F&(Ug_|3rhj-{hH@!g)#_t|Ju9*t(e_?@bqIOb)Uc!Dn%8mkgr*QU61jr
zhj9vMr^N{<+k6C(6Ku&Og#5~p%O(Qc0&&2u!+D_Y8AQoJP$fGF8{$m#@p^=>ltJe-b8T4-%O7`bmze(xZS4>H
z$M8df#h4H&3?R-r1lJ;waD;h#0<0(Oa9_HG765}@C)082@^*#T0qv=r0NFs~%{@bf
z!jMkU%CSC@6luG2$q&b+kqL=3w9gOtf@Ud@SwZXQ(8W93bM2gA{U&Vf^zy}vyO3-3
z0VTJ+6FEL8dBVxX4TK25#)U4QBVolA-FwB
zJVZB<&i&yim;}#(B%Vf1VlW%iU@%VHnKpyIn^)q|UTaqQliOe&^Jh~?HlpO;oxubM
zm}0=BWk{f{y|!-Mx|?3$VdI0{bj6o7biJ)+hQ4!azP$^CKwCCJChMqd01Hk5#3T^N
z%n$2O-C@NfAHZG+u18Fq1C_$U$dAr*IF2@ug8h)h)|QF$G64+okTXKVN9jIrX_8V?
zca!vN%NYvcU*Q1yN{T#4Ok`UfUt0}aUUqG@h5f7=a_vmvehrht1M`4|6oV2+39R`l
zjl$wp6Nuwc+D8=9HHP4XqY7n6aoM5(YH>InZT@@>sAXho+A|D!25^zkeLT=j6;J{Y
z(wIooL68K{z+t%g1>B$ocoPp(Qdw2i4N*|nbBnYtv=z}=10-u$XP>$q-y?i1jE*2I
zz`+@THL%D4-N<165(%D=e#^WiLi`aa2r7|!3bBGr9}?U<;#~x2$0UyDsn%A
z{2C~LeF=Lqq3UPlYGGN((K+?uG|Uu1x=7G(rXAyH{@1^WvjeXPgY>XzcJ6NPBcZ)AE==!z0oBfQ)8(3b+a
zHDO`=8yK}4GWGK)4G4I_FPIz%9BB2N?w!H?&YQ8KB-8}(@RQ(REbRx0A(?A{o8&`A
z$$tMjNxrb-%Eb}-yG+;Dp2v4l_YTj>_CSNGQmUOVU0=A@xUyY*^K)=$+m{ig$sAh~
ze~!b&vO(`txewOnhz=jqTRuiDt+IMVr7UQQub(?TKJlby$L0t8HdUIBh|F7tUUQ}d
z?pNLGZ8XYh`O$=P7ngxtrE@2br@d}bbHw8
z^wTouTove*ao=MuIuFxBo?~mLvix2yOWJO(PLC;7W^{k{v3$4flI|x8k6FoW#y&07
z{3Vbs!CMoKWM;En2>S%pirU+DANT}&oWV|EcFAdJ{QzMYf;^(l!caE;T^}S7U%={o
zjz$8xDO-+1Rrkyx~B|L~_&gd>l?Qgkw;h{W7Ge%Y`c-uK8t#{1QlF
z9+LeZfZi_zGA4bs!<~nDo%(TXd}}@2JTdlXXlE*46nI-YF^zI$JUGac@1@V^PT63!
zM7QrzUgqj5+-66O#*?tjJm}%_&?e4ZVdbvvGw#TX@~fSinhspwD<~3$#;ud}C8Y;QT!5B>e9k3
zF-KQ2)|Jk#dx|o)j#tSXc?F%KzkR)rY$q%X4U@D>L
z=j~0L^px}XaQ`4v%V&+k+njX*vt(Fuksu67MS^gE*pyuFPY2kxjo)eF8rszWOvD1{
zKPyy^fXdckYctp)kL~TX&wsC{OYd31B8O$jdUm6|meGCBnwcU2r4ky@gqjXmu+ayZ
zR~9PYiL98F#~`EI^c9;o{NX=tcyXQA6<
z0U*$5x*-n1a1W>x$pTvjQEWMY5~ip)WE(ld!*LKwBVa`+6O-toEt=m7hMNJE3Bj$g
zP!)|SfkDQfUOLj#LMQ40S{()XNM
z85!laQmqEdfyQCpet|0|iH)Zi+#0o}#UhpaP`+6M!q`fweRcP#5(5uO+Bh6IP~Lo!
zOY2lo(8t8<&q+B1d<5hWwj5)uD8&Vyw5jC0v3)oDbFcgiKj&i>hk6JxpCv4qRRx|+
zt(F`k?Aq)c^7tTrD(JR)6D!AKuOljw#(R1LYwiy%aJM`u3u84rh9}=#5`Myg)wEVi
z!PxCc8J$u*?Zs=8rN@*58H&$eRlKB@dvCfUlxmM;CgW7$+NPqas}=KBonItU^egHs
zh92tL?xNjqw2v)fZSga!m_wcFv$8e6zw^BgMMsXtl4Py&I}4gl_;c8%ieGf2ePL1M4&8PuJC
zy8+R_mvhHas$ut0)l;~n7|ZigQsigDlk65|&Iql%V>H_2c2OcKTB0b%KmF7>6Oqx%
z_0)s7clXE%rW-E{UqxH91e)DBdg}6w7jX%xPrB)`m|dralP&IBI~*zVZjmZper?TI
z#>%>Xztt%x+9>YLQhRdGm4NqM$~GLvs!^NyF9
zNa?|dW?FDKo<^PI$2_|Do*SAjqWeq=@#amn1Jf5;qbkIMjY_IG9&;CjKF*-N!2NhC
z+;{&8hmPwe`hxdYxlNb9SZHchFAb%*e++oM{P#-(@%M|jEs_Iio-l0`3-oUKURtjI
zIHC8WsnF!2@CA`G!EQ(V-I&jPFSdEiogTLqvh@N}wDK1HFgcc}#KkR2TY^BEgXpx3
z;~Zd~u-
zP3!r{e#d$xC_?Bsf0SF9AycxhFs@$M|FPEmUg{E}@7^zmvkxm|CI;;x6R($3GTzgb
zx@sidoY4D#HH3zm-&pCs#}1##Q+1^gw}+E0tKvK?_v;Jr2I8ftFQ1YZ4~Z{)74%V#
zaiQ)+UP!WG%{E{hMXw*bOrzv#<<5NnKEncN9?!-6Bf%XDD#aV&?ufR(g;n3jrLJze
zV60ml{*%paeq81hGiN#V*LR7LQ69*
z3iE5HBU@D*IJB}K3?+)m^vZ0iu#}#nJAKS=9AEI%xWEJd0x!Z?XhWGkQ+R((>?9Vw
zf4Rq6`H@3^U_{hnhmKRds@!<(v@9(@n*^jWM#kwEdLB`W&2{TLkA2gh$~Y>N)veO+
zk+pravVF-+c7{ulgFZKM+g15>WRI3D!&1CQA!$nU(39xupIXGQQ(`eY`7wIj`S&~-rFx(xp=u<
zT_ivlw`U#HbKB8kAeS0`e)7q}x33Cg$HsDu_yy1CmEPaV+M6hPSpNGmQFvfcNNG7M
zb(cFK-IR8pQsdOunNXWiH;;JAFC%kjEOSS1Y?CV45^4A6YaaU(e!>fKil+nxdm_=I
zKXuMB*tP`cU+nOJGge)Mp+_6VDgT-NPX1YwVtba4fA#^Ye36Rp
zISEF*yyFB(JxPi0`j?88+2`RI5`6GKaSnb%4l)c;t^dfO0J#1kpY=wj#`}+KKMtoGp)R1uQ#VwNRMBHE@DG9r
zKou0;rEL^SLDdujt^foA4kgu@sdIYU1wgtEs-(EMc5PHiK{eS4{*4+W6u)C7QULal
zz(L)UP%w<@qtNSLFDaw{y$haKMlz
z9PlBC4T%+j_x>q~gGxB)9|RFtzaW7NT#4#ON##+&&z?OPaE649feBX14B~=lw^8E;
zyaL^V;;m1pl-bPhH*yK^87hVPpCgyHhlx)-L@}82jPXCU(b(Jq>V;kS0b&4D5k^8i
zt`eUpm*Sh5!suK|@Ds2j5nwn)(Cb=!GZa3qB72V}#naQrH4*=K#TQ)!b(biHN>O1!
zBZTJT00RR2isT+0L1Lfnf)v7LaMfbG+0C2a^|%9YRDo~a_d6<|e6sSK1jLo6p_xHG
zE~!)u6+*+6`y+b*1Ni*=YXsauO)E)6F&1TZDUl?1LQ_Z@9dxV*;$+sRa)+6>r%N&4
zvm?hYi=o0mNK((Hw17&x5ax%ZoEAF*u&+Z<$sF*I!4*CTP*H&4g>eO_QVotI31R8L
zkr-hlPlozXhqyrqL=L=}nb}WBJ)D;!XS6Dqp@G`dFuLdgY=W^eb&!&!`v`_!r%sVT
z?_Fas-_3OVz&TLAhw9m(yd9KlKU}99hJk8iQME97!+#$#8~|PiDw;0Mjv{Oy*y@@I
zz?}a?35dn>uKyOl`X|bGh>q(z@Vg;?f?!$J!sG!c(UbfjH>9(G;KH&{x92Mb735HF
z7z0cVt^BU)Bvk++fddfM0fJYkR&3TL2$LJ3U9u2}mJ_kcw1Qxn5g|#a@agV-$
z1fl|;A>soVjzDv$-wcOeK&1b$tEgj81poz=Q00k~S@S-iqYNpH;VJ^P+9&uOSTRf;
zFzMf~_3~FB>wnp~C6
zeDr8ng$lm|86Y>}iiise41mB8PNHcgiou+lfKGyC6W-^KV1Mx96d(ui=j$KK8+RPe
zDif~guqN1?KvF9?3wA{i{}?nX$l8GOvd8RC_Hx4Tr`qYIXvG&hw>@}YAEiVqXz-WJ
z>((1t4!tILnN6V@ws9w~A3Y$y5C7!A;rPtGIO*V)hm4;#ata)?Oy+?UAL&ELjTw|ZU?>FaYg#=~nshXnB
ziBm}6Ot^$o{gs@Y9HN@6z=4lbO=&-llT}JEf1ZfFDoXxhyjMBOl|K{gm%mg;)28Sn
zyf`9Hh;qBNaR@^5k+JuOg))USByt7C!w?>v$uNz;R-Qqef$#aN_
zxIIrW$93{=D_3iOZAbE{X^M;1v+d@mo311~Sn3#>_8mBA7}j1`Je(dm5M_~_ll89Z
zsi}T{eeS;0Hxn-VEDJrN)p!f4dp#B%mxqeCRWH{WEr~QaXgJSKgz;XmB-Safa`3LW
zM$~xBjL)}Bp7eNYhZEFW?40k+j_zMuo*SR+kqq)$N(l0DRuB5BB7a_%mFy5MK!FPG
z7ijQ|MP2?EODr$hWva!Xuc2PCEEj^kq*=P$S-T?ALe6t|_Xnzvg;p`EFDh_^s9vH|
z9aI}sOHp4`7Xb?Db9gIAOD6!~fSy(E>Wo`(iOvj4mik>Yp@fOXS(}d4395<;0i_0b
ziFJ%Ev#*XS>-Sr&&M>b1nlfH(nWLCG#_-dit)R-AR(Z1edqe(WR|G@HN|+!)|L3;_
z&*jltcf8Yp8==tNH;PHGS0hyL=OXLHs54~?-zjq62|tK>ts_F*$@I2r{;>Y(+?qaq
zUR#5K?U61-4F=toeow!2>;7+E*_}n7GN|1xLbaPLGvC<+ofLGQOW@bh6RB)l>)K-B
zm}cGe&H19PPT$I|3eE8L{@^1mL-91VKnrKKKpDTO6AF33xPl?*hZaWNs}yxp2QO#+`HhxZYjI6M)L0zKh6I0adt?aO)<=e`Bhk83}$yBf^VG+BOLth+ovLaS4lTUBYt
zF6>~2cUsxP8zWvts3`i`N?!E7qCO+kd3@@%Sl-7{jZxd-R;6c+f(Lj@pp~^={mE>J
z6(-^Q;?U*nwbT6z9+Ot{v}?UPdW;#7V8ZwxsACTW4kVq&5`a?$=v5SALyFA=ULv-v
zGn3-*R^6GfAF<`JgcJ1s=%9c8uevj??%^K?!Gw^GTtDbK>2h$Te=dSGa+2QvfWHhJ
zE)z$&admXgza9Di%P%mJmYN9w@qkPug8vI$U>bmUqzS_)^sh7Uo20)FTA$V57g?XC
z_5c5#)%%YWIJQ!w2kr=oKNzWTi3>8?XR2OX6;-y>oK##_GJic=^(tDd)XrZGEUHyg
z6jSx~xw-JwhM*%>(I0E{un!OCWITPl;T@m5W7`^PngKAKwnT;&HN81%Ibd>254
zny93xkHK*2RnQ|`2Jt;7HPQgm3ChND(#G^K-n`hC>yLV|Xp&IC&#?!vJ%9kxHEx{n
z!ac%-hO+^TS#q*Hs0$ak82)8_QoVrk{XX0&@;BT_2MZ_>OEvF2@|a-XuGL*9`swHg
zmz6_$Yplx?rnQ+L#JU#87!`Y{pCv!j($g|<9w&F4)x?ic6IRRgiDRd^&#Z_^xDZ(m
za=97|lwbZ(QK8ACoMSgY9-MIM$}cVYtl~osY%ZVph!-5v?A)yU2Pgua)zyP0jwOQ%
zR83(qkl>ULlVK%u2B@HBD#GlC{vc~i{)t!>qz;FsNq+#Kz
zKn;>6SU|~6aAzRiD}pJir%Y|!c4C^9z<7}ODfOoHV$IxqOQ%?^iulh2TK%rLw&h0h
z7`ObI&og_t5V+j+LwdNUkb>9!$PM
zLa>)O?jqF#^#?&G{Hk6CeHFv(v~==?IOuB<4A!rzNjgDQE2L^gb;I-NuT*u~V(DQY
zt!CBU)hjw~H&`mdrM_J_|D=iSFukDTLV;-eM+d*Y?{TSVCz^WujV~VR>}~(9yL!zz
zoWSU^+%!7u`XRf#uEbEJ=l!YZ)`HLe+WXv1iwXV~H`7xy#Pv+le%wmy@S2J9(dz0_
z&87V}N&-j2+{5z`ysDl6uVZsD2j0ei;iFFvlGw@kIGFr+;0h#7@KjBiCb^H8*Mk@U
ztUt+Ngr6(OomqI;#H-gcQ9VAnT)tEP1Ad4idZ78>K(6(qP$=Q%TgMq@+H~$oPsIwM
zQrGI9Q_*@K%MQ}=WZHDGR75XEa#`v0RvAUv9aOd%SiI~|UZKTA^zKWF=_y?_=FxNY
z^KZKNc6NcyMvgwGyk>|3RU&YNyE;f%kk=8+IYFKu
zFhqa?J9vLA>YP#V25%%K=xdTHD|jSYL0?^6lH0j(THt&jy&}0j2{1z76@TynO;mCZ
zBGG9O)7h66v$V^7ny9Vrv0_?uHz5u@HhOLQ6V6_rW8Bi3;Q6wUt?!~fPkq{)4TkvH{tmdnaqH-Tw(!vrcH!PCxNeWA{)&3sHT
z!k-gLXr0&a;3*S~26m>$h?E>`65md4+q=-@MEuTVXGZ6c9^E7Bv0!I8DJ%bTVhvxk
ztiQS|eXX;?d1;hZQ@bDT4Ekr2v?x_q+uLhrs+*q|WtBK!k9YsK?8uR`pI;!9K@fr?Z#PrZCt$vXFAck#-SSmH1A
zS7)TbNheRcL1xeuO1KxSnWE2vhf5AZXQU8^wOyrAy$Q1|o!**$XE}ct^H3e$G6j{st
zf<;~EZ<6YE!}`6hzOf;ozN68gzDsguC3Bzev&nw{z6>($W`$87K70_e?cJf&uuNDV
zkNNXK_;MZ=lPEU02D`xmU4!V&0)ea;FRy#m5W~!Za}6KB?U=ShZZ&>WCVA8FlcM;q=ROxPBNYa55;*N+&lIRcKvIwu
z!yI{#9`N;17f32r9LF-9VowqydR!q(`yO0{|04ykX58nEX>jJ?%PwM1G?SQf59T?x
zJ}Hw4oS6;9QRqhgRctS(d=3-5X_18tddq}0biyBNAHKMRT2UEsSxKN`-P~Df2o?neLg`M{?pF;yP@a{+s*n_<%^r7F*9L6iH3%MiBXaB
z_sEq0B;;kxdb|Z@i$cSKi^8yuV9)h<1tVri6*s3o`|pMrdAFMto<=H0zL=Y2`GJ~=
z;Pd>Y$Q&B%X6Q{c;;Uk{pg^@4TV4qd^N_`0=+;mEF=`$hFv
z8{99=66-vbEVhGl3Hg{nO>vkxY~J8>G^C~24VOhJD`vC65-`UKyq_pg_5UGNhu@iBXGt<4uJ-wCxQ+(p0jAso-a09ujv`s
zRCAuh_rS0$VDd@V-w-t9%aHsTPBJi1@?p}((JTU;dYp3##uA`XcBg>AuRp~UI4SOf
z$=YBLXR$*soNxZ)7Gcu_LjoI!je*n#P!LQc$zNIo+sUT{3T7()k~yOoPCCV29R>q#
zI{4=6tU-d4NI!r3PI}PNPq4fow-12(k}%xmA9X=uhmEG!NeHSIX6!;7xWiiNCi3SS
z)H&zQ8&hIho+QsC=Y#YU(;Vi&rN7&(biCW20YaP?i(EcTdeMZfTX~YZjVTQUkVQ9n
zO|PmIh4aK2HE_@YeDDL-BUyZ;pV8A%@iz+A@6PZ-D-85t=#v{?~L?Ae6|JKk(
zV+M%P#W=HAy3VOCBwkW6AB(9fP#r{mr+?LxswWCD=nX&JF@^vK6{rhP$L|?)1v)bS
zp0SNKfAbs?VUiew`y!XXOXdfDBuRuLFcC(Y9_jjx_n_Jaxe}cZkiQLl^XB+-35DX9
zK_`@{66L`@&jthh1=f5Kw!ruW;R;wi_!j>4Ljk?Ay{q7U4oCsE@1e%QPN5-rv1lmR
z5Ri_4pbi`z4_}FK`l&io!S+3Mt}f`OKn)Y=joQE>lvqNB=ouLm<`uWvWi;4#4
zrG<
z#~di(eIO3{a>LI3NdZjwwP3!dSTm3qRByff{@G5?d!^&S*-~;Riq;
z6kI~u5+)nm$>|i55kiJ&!x)K!>4Uiq0Un%Uf$3)C0g=J<8ca6niKZNQ07U5bOo*H%
z`h$y#*-$WQ>(Sx5+-!V{DYZXkzJ_~4=AlI}dFYA6Wc{}dg_-qmvw))#E1BOV%mg8~
zc=5MHensj(;g5F=cn*@Bm%&8QDL^pA7{Vf;F9CS4u?i;xJi?)-0ZS%H4m7X>o|mxe)|Pk>?nzB(A%b#ulE0U$Vc5}b2K$!dCJ`wY||
zy5q()>#BwS@s4SWF-flM$j4v`2Nb4mDZK(ZVDdhP<&e>?a#j*|aQebPjrIbQb+!8Z%C
z=2d4j1!Gl`V4ID^7pX$zTEko;E%igy`N=;T$(G@Tvk}0&ykMk`;lRLR91D2w0g@0X
zVDv{e@I+u0Gv>j7c>}X6i*=mjRX~^XVr|oZUv*&?WIzt!5isV+zyj6b!Ul3M{~MvZ
z2-X0mO}d8jTu4u4F^EvW&z+#ptv8f(1!9i-`V+haKyNE
z_xvuM!kU$c_Mi2Efp+~>@mHC3oTjC!ls7&1pYx-T7YzODVB$^98_xaH}^>|ve
zf3$m&v{BvjqBubta8ap=cj))6R{=AQ_O8z
z>tc*(bzqYQh^`p060i?RjyBi_K};fm?}5?h=9EMp#t-l?Mq{Vm0v<^d3oZ-dB+Q-H
zQtwx32?P{jj4eBTVo}l5$zn;!%EQUG$B;Dtj8=}T`_^WYc!`2*cLF`^7x>mjmbN?Z
zC!csbs@GTSmo(ouWUjX|p+r9Jjz2iSYdy4lZgtjF!X%$4ZmR#Wlt95d^}70?^$JxI
zA-a2c$VaD@p@eXmC(7BILetpw32#Ju|5P|_?pxw!Lcs!8K-x{>=Q0f;yBo!A`eq$l1)hbjO7LmVHPshU>)jPUoegD0vMvnE6SQ1a#)T*~(D$2cihvrzj`A*Is
z&U5_^=+?;Nz>JgI9MWtD@m#K-IM-GlxweoqMR`2cNK3bytxuot8aiF%x+0by*=pFg
z;>W<`iFw%@0TK#~f9qIwvMiE7f|e>GX{oq4TV9gGhO{{dj~__Ul1i>NC&c%Bxs&8c
z1bu^%6x*=31<*ycV*yoYXm>9J3fGrT~C=W?qF;&sIIR8J37)A5GC&h9qUn
z6S>a*qXlGbMXsU4iV=~bd6lhB_||?p0;3OCXu7q_-@#<5QSO0r`Yr(_T)RgyY?lRS
zc?+t14J{b1N)UFLMjPKA;1_R;p78#mt&_KPSXQGeOW%5-pOd{ds<%1zWY5gLeAmTe
zqD*V|Eku_a85Jw^`U|Slr$&aT^hxBt+IcO1_n)o2nA#q!%hnSY={|b-BBOrK*H)Wo
zi4_JPM=NVX)AI?yQqClnLJANRp9*jlYy=O&aGii`d5yM)vNItX;m1_8N2
z4UK>%O%bROBn+wOxh*LXECaM&VwSz1?CmuB@^|Hq?ir6|x9F?gPendSesKLIWXi)h
z5IEbMn^7`VWmB%`m~-3Er*CFJOS@|hGQ4#q6Xmx*%w4qp_4VXwioZmg79RDTI<2qS
zL$Q%ch&DF79S-o6h@eB0(-@=@EdDi>5SWvD#=y?dzbC@tL~f;eUUrVd=0*esTOAT9
z?>};FKtw+yzdW#3H-4Njdwh&LQ0vSW-G3tOh7C3n0AqI{4m@N^5J~_Rl=*P|!+^#o
zbEB9EQ^0|syokvHHQAL@RrEf0bxAT9y;o6rl45nse5CByroiU08Aqp;(20_mGu5qA
zUc-4V-2NJxFRz+78+-Qw7~EobGEYNjiPobgukG#hG;w*PCirIRgm=_IjTS~GLpQN5
z*yrxTvqsHWQ*-=I$L8>nzpC;4ExCl5f>Y5FVkThwT+0a5usuTg{DPpcyIDAR1tSnv
zXC<>3&;x#rEX(h)Ae06A55ZrJXX4ZgWT<|R1$^&INFFw{ZwvXvmkT)ybzAj>*A&U4
z-6OIp%0Jy=e2Cj~v1ozupoT;@Y}f_~gE>w2ajFO(hxw5n60H8<)>tiJ<~5RN@&2@t
zjvV{~KW$FoET>gW`!(-$aPttn>Zd?u^1Ex`8gYZ?Vxlsr2r+stle}597^glh_`#Sd
zbq2i$t^nol&IvRy{CwKnS1xMmG}(Pxwzi<=HG890Y!<$%ipoVaZ$w3@`Nt1qTWg%B
zBDa}0N)JGmU|%g`-#7i}fvNXxH`81R-y`0xj&O2uXSqxqu6D^Asn5zT;n_}?&V90z
zJVv*z|L5Yi9%BG}&YKPlLFW99Uu71p^LRU(&$DoOR=}2&M}H;6e3@`
z{7(jJH|6A3kN@aue6P)&&S-qwJC{w6*KTN@Z6IxIYI}9H{cLkjk){4XR>7$NM#cuZ
z^f!~=#`ajYKc5iYhpHo7jQwXO`Rqn5?Pl0gna<#ME~$mL=i^&KJNka+&N;6Y!$4Y4
zeFFGykf8xHOkBt8UuGV|GKP>tOLPv~PzW@z>m$nLU>ODQ8}MMffba_sAv5Dz
zI!v2xGv7Dox;gL8Q$LMo^Pdw88Lk)hP0}m#{^<7K
zMca~N9b~BNM!*U3*cxXNa{ZHX>{d8MdwNm>7mC+v8JE4voqv+WtgY@mM}1EvO2
zz14gW-K4iI9)Fj5+turO^k-TU`Wz`#vkuqrU5YLVxu`tar?sZUe(~zFwGif(&e|mV
zZUMs?>8o$H(ubBO|IqIW<~pbz(PXaPto9+Rs=(5p-_v-OwXJt;zSqOR;umvv#f^~W
zqKAiT?V{P4zYrq}q_#LmXN96KR-ZilnIcxZAjy0`X-dqLm-2Jgl-Pi@^p+A({SxjFFRPiN-)1HR}FCpyY|_BqC>waX#FF;4W^9y;?s=X9nB}eQ+{fqu5C7Qcu)jg>KjYp|@lrPvAkBWa)w(Y0V;ElfiVoTI_x{K};
z!rEen6TI_%`YXFa*WA4~+EN7l2a>xfA9$ZQ=uYx=1JSES9JwSa5
zq*gZ#!OS?*!BpwPo5?wvc{|!
zlTf3X5&H0_wA7X*YRVB=skcm&pWUUm@E&E}8*i=<#PVx2gw$#V)))CsUL~~vCW!$1
zumaeuWh8-OMn~!iG{MR2bPQt~^f60?E;XSZJut$`>;wz~?BsMMdLaMR!=HzHodd}A
zq^#AYP$OvAMa=hC9`2asVs_G^yvHIR6rZikB(j(C931}`u^w;{@FK7i^L-d*^uwRA
zqz@Q$OZvl~6qUrt5*Ft9Sm`a4_b{?jo|Bs3g8@=fj%Y}|)h7*zi}?v$d)i@0QuaLR
z@e(DaSjd2I?Y`e1Kq>gkRSj$R8cd|@oy(Nxc!3x&I7-r0n6azGht~O!U%slzMzHkWtF9@o8c^GB;B8@VN92?k;qfb#4=%Ifqwy6pnn?|0-b@B
zMJXlav=Jk4j{r@#t1X5AT_~EV%X0HFs&Ei3>wlI?r;Xiq)i;mPEpMFkxHUC!tA6i
z1>(}dKzS}58ri#ktn}(87rBQ0D-%;oYZZdL3Z^F+K$S8=RquFA`F8gU-X_CajejFg|x`RxFGz%qDyP*V0PHg#x%fk$NPhp8!-FERg(
zMtkSS;@5-FBj^}89F;0o`}CazgOA=&2da(|Jyu5v>iK8!O4!Cy;bihu-Q^zwgb6zFgu3
zw?au`KNayPbzx)6wTx30I8lq6qqBD1D<>08*~}ZO#J+cE#_2L9s@#KXS2NYvy4~{o
zaUEwg{Wp={@LQGG(+p>qXTC(iU(s6KV>+HxMWLgqS&b=tBAQ)K|6?sM7-NnK%qbi
zOg7q3_mcEL40!|SuB+vtqivcttClwFd`e!$-Ad2f!K9$*jCwIs^9;1=wd>RUNg
z2M5|RZ_y+XPG;*FPYvn1X9?6Ea}0ZKmeJbfORjAZvH##6&YQM9%lrKz`&-jJs;#W_
zUwk-SEoFftr!Z>cu66yA>wTyS=l;l5!^P0w!8lB2t64gq$C%_*ZE4OGSM3iq-QR@!
z8(&}0E2y@DQS_0k?K^%&G~Wi36fiZwDD_M<8*_Clyy^4n|#eRk2h7phW0_WMWO
z%aVebh!iX1lW~R&$$y`DcKf3`y=ktKO{9t2-PQ?nwu*yB5f&r%{0@aVpYLQ;;_ZX4
zCY*mGTsFNUl{@Wi)VXKpZcVXe^G2Dx#q)m*k!3Tl(Kou8Q-0RXD@!d-y=^WhJ9tvg
z)bIWAWQxmO9mi<|Uq7yW%rAB+R+XuzxOeX;uT@54|2>|vu3haq`CrW5e{sCse6=lJ
z)9Mn(f9TrCrXtO-{_&*4XoF)B17m|0{(gipZ1={Zn<<&=`-*PklwMfrirL
z>P%;@&>t{(b*gy$wz<_i4xDWAe#e$pGqqPSu~+(i-7oImQ;fUq@X>Jh?%fRxn_7om
zWm9B`H~rI%+ft9Gz12RLpmKcjQlp+}oLbNHHE%*ITV9{Y%njcp&Y5lB349TvbTu;m
zPfhk@Divw~74{@6Yj6-heL7L|*NXyzW5^AG+Q#{-A8J~=cjmoUq5n>G2UGxfa7Pb?
zJiNvWBRMQzACab>c5;*b6P80-WroX>d7s?Kb(prNX1T*Qrk`rX4<=lx(j2$vxKg#>
z`IS_PPU5#8#@W@Y_E*AI2YuR`?{)j~yE@#ClnIw@J@|S={XvQbpM#@g<)c$ou96w&
z!*yG=Xpd!trWO$HWS573-nrDM1s*Mvt>N}Z?1YJy?>6+t(~p?%XKNvKfRvHF`hKAk
zbP?73kr6rP)_TPnN~rZBY&|Pq3oeZG@b9+qAr6RNcaGTJ+P-A#vwFuoPN~cbvOR~sY;l#PFH#G(C4=oPw;bhf28-A~R$7X-Zav7hn`D@S0-rst@c{4U1mV)Cu
z8SX;F#FjR~=e}~9h?@RhdoAw#hxg?sKI{%HSKD5y9|EL9xuu_Z-%%x#E26G%)VpJO
zbXRYgM!Ec;m-M7&eD&=H!|=_w8MsMJ8IaZ}TmL%=rO_gysg~#6%%1SohTh`gJ6UgJ
z^1h@=ft7Kno>dYX_~2-rZ2J4q-1e)66U9mdfht#R-=QVb1BHCmIu>3FDcgR0r+I^8
z9EYINI#
z{;~ohh^&11B3@Z|VSz^3ZN5kQ5<_=)y;AuwD~r5O=ZZ)Er%F4I>Y}OA?H
zi*#$}>yNlB=I*%%@rUNzncTmb^;asvddjo5rJK&v<1_Etkbchc+)pfGjd^$RS?UJ=3huAf>=^2c9K|B
z{>&BR-otAs<8RV0s)5ufkb&2o)c^FQ*8M$FtLD7&L2pCFqmRl{P4~+;gs{ket;2#p
zaP+X@-hrwEaPIDiVq}uL!;O7gKd0Cb0((*(J!Je}KBAw;pWM)SP}n$0=*!n%Li`P;=IT!I1s^|6kBI4ay{2F<~
z#ytOAID6);X9EQOnFaEi2t|CL`utT>&$31ajj_~>_ieSla}{CH;qh8rM0I47oxvu<
zwRt=Qs%PFGcksI$RJRLX`&fmGC{^A+s>Md=eBol^n`gI2VOj4(7U61A)vs&bvj5&f
z+T+o-0pW$F;m7Sd*WKgq$1|NZ4Q{hjbG3h6-2!fgc?b-Jm#s~&Yifam#z7|MgFvm^
zRxoAteU57rF$>cYYmYpZi}DzjnAX@=8+cbANO+{j=y83uh`QWQP_jO1VQVuexV+dZ
z^nFH{&BQ7z>f8snh(RLpozKn~BX3
zgWd3Dw)BoZK}F(YTb~qPn%9S-f4zPGK|Z7IMKPNoK{?}#dD_Zi_VVoP)*BXC7v5bN
zoH+ZTW(w~Usofl_Gnn+n@x5T9nZ^Ti^}Dm2U>f4zUyiS@W%{tf8p_LS$0RQiMi8;v
z$22LOd#>OY;2IU2RCZ;JzrjI&Ec1j944y(O5MMT^sFL3-`!TuBHB!k=l?@
zFH~LT*CQ~z`P&0!e&LS8Z90ZY5gEj?J&k@!CW#T>IH_;ca3soJGq&*_-JQAnMzCP6
z+n|7_adcgR7@xewDzjn9scl0?BctdOS_>-*q8`hNXs6yf=a#&4&N3rM%h=TotT@89wL)O{j?ZbE`
zxs0ko#ise2`R5WI!YJwf#U-&HVP8%vTG%SF*5EieE>Z3xu|Ve0zH+E&X@IBT%8Lqx
z%||c1H!&j*aY|KmiBn3^iBoMiwt!#6rQYE8twbK6_j&_9$|d>(iNa!Mb4wj@;8#Q^
zXmL%-t-BU;=IV-KA@7@7etkPYpZc|>-6&fpN$>cidP2vG))pf>c28CRr~M~3OBd>6
zUJAu!j?D@844#*44pCe_H#$@yVzp`0fnIs3bLu$fs}`5b*(22b%LFNvj_Ay+vJ
z3mOtMIn;Vns1j_$RUJcr@GLd_cfJRsxm9YW8eO7ZB>>^9T#d(wd&+hiJD8j5z9`kp
zoD~`VL2tT^Yedl$=iNxFPS7)a*J!XA(_`@^U8@o+={ob%MUzP$S)Y^x>g=|XUnuXN
z+C9K#`Bg%=cG}vzDY5<9)R2<+()@18_O9jJK+TT+d#C3L+hdD5UZ{5C-ZyEOYtVn=
z8jK*~YWK-tLk6$^vwlo8S6fb5`*$TA0iG=YlZ_TZG2=y3aRqY%Gl
zSFFOD@(cp!L2bID{!~xuIy4QFbmH_lGLi`7uOluo9g4>jjYgnuyD&I&_H)s|&d!Oh
zKrOn0@~ZD_)Fk^vP8gF|F%@6!?Bb<${~W{Eb9ScAV$_%?yYWE2buhm_U+0yVi>q`G
z((!yv^ak#)&N;r9wn+H0L@e3;Hd{5J+_#%XqyMTve>t7FLky1V_?1i%et*M}wDkJ4
z$CuJ4ZL-O0Co2EE$&rG*fi|PBe&foe_u~0zZ
zY)BG+DQXw7@N{Po`4t!AM^7oNY+~3iuDYast*sT$tDedD3-BYN(f3=crzxL{_ppLysdtv^0^Hi{m7pk&Xh7C2`2l0*}R*e9U@(P
zm;ah>{NM2oNT+lBf9C7_58S4w5}z3B1*A!iRjXnU%Sb}tfE*z1&KP`UFF^7Kt>qB4
zp6Ef13OI`$7cnm=h!LaVlj)Uufxh|49ywX9|7!1z+G&?jL=)XX;p*zIPJ;w<9);7Fl8^i*rTi7M^|PUk**6DKUm1MCwC9aUW5Qd*re8E%RuQRglTL
z_e-LyV-34pmtXUE6y|*4?HC?7JY7ffawep22l**#(2clO;#$DVSz6$YiF#RISTnug
z+$v#V;eEbJ4v@V(r%%cl(hTA-S!0xQFdi
z1PHd1-9j~so8EUdTnG^Sa=NK`&}78b#&hO+aQGnGdj;>Sc8>-rHMMjML_N7ZTYF*I
zwMfmia8rAZzzg-yi@r2l``=sKVVWe9@?qS@ioNG4fyP4n64R^V0&Q-~D|9h*rcN);
zCy1AOR~~8A@3{V^X0z_2655Au{o{kS;ULIJ%`+r>9s`}%|*!kT0K$gKBugPsD
zTQ4U@P(Q-LMx9Ar_tnb3L)WIx1W*fKa+}sPzvh+FxTB~kp`b2NoiTRZXK{aUHJp7>
z_@uxNjmDP2fRiUqT(H|@mQFmBKwpz}s_@yZtPeTGmbXG=-j_;hxkUM2^l$K_7O{vJ
zc{cp*HEZ;%ZwJ*yt8b1O2^>5n^ZeA8(+hf0#~V+-5Z6t>Z{A!Yu>J0=NauIfYQ9#k
zP~q&Hs@4J?T&#+Cp+HH>RXQN{CC;V;n?z8Lt?qW8T%FhbDZV`|aC4(p5uuOwr)iA8
zDwlDpRZXsn^tnyVZzBN;DGGn
z*k|(e!~zubUnnRh;(Wrjf0zU$$vAnKJsIgW9!vdT9{q}>V5dL)>N#uQoFiVA+ej|S
z-;^Wt-ezWgNL93QGjSLJK4;~{@dK6wSCpy$;OU_D{kAn+XC`f0Q7hab>`3hBpRV
z!+ZGGbV0Ae&h_`QBwS7U4uRQ+XuAd3#wkD&LexXW5c#oEDvpIvuKQEq@rL33W;
zGfO)co`?O4)5lpdFN8_B<0WRJ>3wGB3qDhAq};*JEBQqG&oDDei6!A><>o)792!Q@
zA5Y+p;fmgvs@BO~mRC#;&KZxV232)OL3PW~;3*@nR!xbYA4{HLE_wMOVoz-9=X6Uy
z9wOpRLU2RUb&ZQy=kx|ueP{+eba+E=Ao}9$M5@2
zMJF`$Qec_u77rA5U3QLI{ZZ>`1FaUD)q1C%P*@LtWMQGxn@BAGlWL6jE{huQiPgc}
zA=@X`PrXo>Va``!JWyeiAFWQo!kM^Oc00IF&Yj@KqRn$i-i)#$clMvWGA_ZnOqwEE
z{~*lL@Pf7zZzhRsGm%#F5ByvFK()m%Xm+&cpZ}g%*BzKMacnDef`(xhMKmfwgw_VQ
z@)=dqxBnnu2KLJ>Ro0nu`u$Pm_MiXz-=viM1wH(Q+A%>_07yy40>t}GKr8W?8J7Wc
zCdVYQz;yM|zh=kMn4*tT>&d0ZB2-!YI{6oMgwcF=bat%SUC*%R>Wz|*vm%6c~1c5adGi~OY+b+pRlOy-cBkd1E
zu@ke!A))$v5wsX$1&I`STIg`nhfUBq`P?tOplN$aAAX#?ezi8
zp!BMsn4rO=3P3?1B_DG8qjuO-KUN%e{aSMg*x2N0>84_sZEzqUBCw*4G$8ST6%{#D&z?Q-?(iWUdt{!HGj{Vuxl
z!jlaQ(CztI=`hjoPg45**)%%&R`ZLC?=Qomb^%w6;tY!
z+*T#*@iSj4E6NkHa1`UtY@8ELt3renFJ6E?uszapfZllTt;7G6wKG8zO<;j3aWE6M
zT%D;D`bp;qhYBTRrl>567VH;&z`3Vuoh(udkV9by2ajSb1a6;Ty`y*}3}Cb~?q$}X
zwM&%(9e$(;xsO*&uwX@~Sxp-W
z$P{R9h<(p`XOAiD9}9j`(p$o(7nl{(uTxUqRR1tCu7}o4FxoRq4e2)so;EGTeKYqD
z6ewnClx4NEgUHAHFG>YVS}XNWyP~2K8)GcM3ghUkBO1QzMm}*Z7>P5&Llf$$t)q+2KFF}m6C4`mI}<&0tF@PP1P=%i{$bRI!{{7S`K
z?k7R6Zb5l%S$KTmE+?j!B23M)doh2xIr@A~+nl%nps|1_fhNX%6&2=$jatG=(ObFu
zWc(Y^>gS=(MBwcPCJSq(Y7UnUSTxj&TzvwRnP;@h{`a0Zc7U`b2@{`PQL<`@#Jl?DE3TJs{-vAa-bB~{}(pGU6D_3@Pox$MmQ{mAzS
zp^=PNH>>(GGjQ05G;sgPo}+Vf#V{K;v*YE?ld=7y=J3=nR$z&G`A<|ZlxwcpW4l74
zM(h|I-X-Ut82*{y38wRFy_tLrB?7lgs~#nYPI4ZNdzzG9Hg0=Wa{OW7U?JLMO6ss3
zf;bxidNCq<92nz|IY63h76D8;gIu$06rD|i!l7R
zFT{UmWNxfdepiamI0k$bAHV_l%PJ$KN!AYDW*l<>ExEg$A*y5#+3_tnKKEGgDC4{wwU#{U!
zfO2D8oT6H4E!RTN=?v)f&gzJ-wEI7%bVJm}&jaQSd#t=iQg*w?vyr3hMs1%g>y47B
zGG_oChYv1IF**YT02
zE6d7GNCWQffSR39--Z0`I
zk3SeGkMbQ0UqN=pTNVXlQm;>3yTaE#(RICB`{D%w#s-D@(uX=%E|s-%Q!*8VQWP0o
z(q?)b5=|Sy!(S&+Y-nTwiKsF>Gca)bgy2nc=F=a`PLbTsN~k=kPx)gwC9rEOsy+CS
z`|Zi$Q>Ct$xh=1^%=LOXlR-@HZNr>P+Tp^Pk8`ygb^ioS@j`e%RcJloXJBAxclbv1
z@#;;L3gSmva{iekk#!QxP97ola?d=9iS>vPiv~4P|K1mdkuvJar{HPH1hd+FM}k(c
zvuyu63woUi{~*4%!2u`FC?S&OUqsX8J7-chG|M=Q7$q~Vp%7c|Ohq3_G&9qjnP@mC
z0@6|sV*b`1c)K3FiU=eW)DC&p!d7)QrAlSuP0ZZ{juQ|nqk_x03AUwt(HhUd&Q3?
z4b3nld4^SO@`r6x1vYA-fN_e5R=rmj8p?iUvzafV{yw31I%_yp7ZY)>G77zjEi9`=
zu27V2GRA6f9?xm(ITVgxW)4_F22V0Nj6z{0s;$)5aWJYKm4xxo=`)F+G=uOuQI>=#
z_N78Y#{%!z741ta7!IX_%)YT_hEHwf$Bb3dYt!@8wz#L`5)q}3gg@nzZ|5%2p)*4WHkw#`R4WR*bB1
z8%tdsBjyz+yWJx(T>po(TC0`U3t^1KVW%^M6~@df8t#}virs_nOus{DXT~q1o~@q4
z_9z%(uG&gjXUog{z%B?);_Pjypm?7^w)29mVU6;UT~(zx)boIZx%0T=jxXhqVo@#Z
zMT`ORYg?om(7sQs32|&+&sL<5joYDr9W$#?A%
zSNEt{n&ROLUeZJO8`kheXAFIWoBK1Nk1G&5zPDm7!E4_zhFCuw<
z$yI&sw06-4Ye_OY$MG(MUlx7$Y?{rR5n7H@fX=_0eq4G)E_I3>?=-17Zi$GzT$ily
zT;YUzEhS`rljD7TJ3iy*b8;Qta<4A{p4b`WaY@SmsHDzGwOE?dS~py(m}y?d|x_tE$>+(@Erb{mUcb
z8Uv^bEvFIT;*UDm(HAIe;yj`4dbc2PB!nAu?=DVEF$fbne&b}x=0@$j4vvc%u)$Mo@^Si+JTC;59ywg1Jk1vqnB)vF_$96>!9Q8BJ<&%wL-U(eBJuDIAO$TpxK&ks5Qg
zNTj9-Rrz(dE`NJ?kz$f?CIq%6)5Za+YR9iK?q@TGS0BVb!0^8gg(RYtH-wdK{Rl@0s7jxNhRMN+NQw8HKo_4avy(!M?ncvOb((hbX$r6vx>mD;-
zdeOzU$|j)ZQSLW>Zd?Q;%KcHeW55XN{<+q$m{2@LGkI|FK~>_C74Ij_WLdp{RG;~)
zNU-4(bMG4**#u`_n>PpJKA-mFCDNpQQ58OOtx+MBLgQ(^>V-yJ!2vYK>(QfZ?L3=MAYi7z4@&{?t%u1}TIN9v3h45vsX
zLhS6~aaX=AEyriw9XIkvuIdclCN;`gq82Kx(+Q-Swl@0g?;z4heC?&X8-
zv28iC6rbBrKD}y*(00FDLERHADk8Enf97U25~|?+D%M$s=MBA3e#v&qou$`zqK-Tn
zM~!`K@|33O9XHDOZ^VN!iT#r$B?H_prCH(ke`Pz=&Q*%YH16fL3Xi0G`qY4Ttv!q{
z!*yaRhDff!haL*#52^Mt<$I=o!o#(TmFZU~=R9aLQlKvcQHF)474D#F_3zDU)8;S!NNUf`gk>uYY)|jH9F3vx<613zs)ir3ugH#8Y*@qB6QL#@tx5!4MDvVg;Z*WNb__nfi3c(k(RR#{5?TTvp29Us1B
z2(DJL*-+e)VhQ~{%#lL3Z1;U7jqP#yqmYk`YdJxylrHLy`Gp-h*q%HQdAkl-zSXb2
z;+BawRRz=;HNTHMdpu}pzT3$_TVl*Mp{EZ+UU3Bm-Yth}G?*v6M$-p&{ztGgBi}NU
zhiH0WmbhHoQ&UFSz~9S00!d-v0E8xmovpd&;)j|fsdiry@;L#$Y=8-zCr$Y(&r~@k
zS-jre3+bL_Uw+NbuK^$Lc=Az?vxq?3)*w+mf1&|y?Jz{d0T(%OkpNLNqNefE+rbOb
zm9j+b1`fgOi?E|(R$5k-y*~yv=2{;;kar*yNsJH?Smk;#ufrE@4LpMjytjj07tfUT
z3X3t`aWBI^VE6k<1rj}wdVb(>*f3So+do{Te4S!d$QTKlzsWU`dqgaq!k3RC@45q-Hr^*u9UXj+Fgp7(IG8G}w7(&QNk;9LzVY`3
z<6rv5Ur~t<08G+KXMZ(m<^~|n#88v20ek^cBm>s84!M_u97lZdutt|$svxt+LvJ4P
z!Cf1UQ#?F8?+DmmCfEO`AoO1{)iP~UxTBbH4Q__ZwKX#VKr4zmtnrIxTrYSHW;HO$z#AC4Oi
zwCiCo#ebeJmi&(RHf5z{vHA+EuaA7DYhn7+V{m=k#+C}G*bY&ITiB#}WfA8(C2O3E
z)dlL1sjk5hSFZ-R(0P4&%mu9Z@|ENS#l({SU`ACjVitVl6`8d)K;|FI@pn`2*6V`&MRMio;TJW>h~lVo5F1HtafiJrAX)
z2+olT9}D&>@^^L*+yoXR7>xt1qpS$_(wXxv-ew~yI(7x0
zJComY>#{u3pLHtm_+mrrMH`)7F;oNhUx{UBrtd>Ov&V?ZJ$agEG;QP(;CvXAYD(}Z
zVi@4nLJ8D$C~UrMxseAv{S@;~7g}B|e*bVqVZb+uMLV&YFkIzkjlXY-gm)@t7y|20
zrGO}#Ji7u}xkr#ZRZE-TIA^p&sV3oFS@k^_4Ann#&ay|gFJ3Ha?*ZF}^ARSxWXd<}
zF5c8ZubMLGJu}H&)<&rMEWNk`2{4i&8hh0!N##00BZ1+8TW!lrL$bGvL0PUCqEWe@r5lb}owPee6U~1JBPon-+JZ>_|{@hQw{TanQj54xG_UAmEpU(Iiu=3Q7j+3-5{#QyWM_Y$u!dHkdS
zRVAwq+KA8X
zIN~`o9QDwEvAJxpr(UZeh5&5yt(QXB^9%bF(?ui$j@wc3;R~zNXJF3QeBnR1)gOaLTy^eJpOd;Qm~46Qyxi
zD7=I(`xaRKsZZ*Cd&`$IYMRpD9pLW_z?df%-;TtgY@X-5@s+i9ZsGc{z=1HZfF|v>
zU4>dXJi(|oZgqs?LESl*agp{3*Ch;`7d3|51L37*6e}8t3&a*cBQfAr8PoX}6i(qKr6p_Vj^94~_Ov(XnS)!`0
z;V~`BjyWArne!Zi3^YEky05fYEZN_`*MPZ*ag}~w
zrYs^CHW`xd$$GppoG)@Wp9jE^NW*c8d~3WUTV!Gcq`1a~Jv3wKGd!rdhXgy0a|-Q7cQm!QGzeU(2s
z=e}|8>Crt#zwR1E>HhX!d&yjDu3bP?lw{DK5H6|Vdgq%YzK+}HNV)&|=+PU6wuiaHv-RrV
z^BwQ{(?m@F=&k!NqSU6>RPG-<#c!Ez?*qwbR2
zxF`+hbl0J!QOi{M_due!j|tMe!d{|7I!aIfSh-=lE2566E_5T|KA>d-RFWq4
zAT$gm^-|ljZ{~ESBiX%-`XO@lEID$u+WT-LZ~Tds42>TC(ui3p?=ko)(%ba8vy6g;
z7!{fVTrnw4$9-|e7c!3IlT|{ik~r3g!>w|yjLXkH-NNPRbu@Vu@39c`_^r+#COQW7
z@yw>f5fbw+i>DWS%r-k31>T?x9FR$({Si#CbRFGnk=Z+~=ZZCyd?qx$KwevuGfX=#
z>CW4|@@H<wIx|!#gtxPowJumky+@63jga$19w$~-MYq4yf?wK_y|lzT
z@cS_h1G~}~x9NKFkM^PhGsZ|rB;ge;iY$nMwd+q{>`y*-u$o)IWAQ5vP5?)LHD9RY
zCQ9znNs-{~!g+>4+;%yan+V!G(wZtH)X)WcZqkz9_sc(vCT=}Q=i62<4{9l3$b;Jn?ODXGn*k&O`kJ5HSd}ug)^o%)lJ?iNJ-HI_>rvii;P66q~MBS{~-S8GDFCxx}Bz1I%f;mM#Kqfx@XkqI9
zVUZLmD`t6!pIu-mHB|jVq<3g*w_M%B_}W7b*JZr_fS~Y;?hUbPnn+?K;Yd~S%W$KC
z{e@2MDfXjXk}94qM8}_DoC@{MPdB>v_##aHh~g<6~+
z4Gxwbbx(bgwJrSMw#<_3`yT~w{iFKfS6=M%dx$4n?Dod0p5#3fjTYp%R(4hn+`mI(
zrAStV%bqlsy?CwayL7*Nz;siisyC~8N>N@B2b{N|>G5hxSX9nHI5@Y=n@mGP;}stM
z2_GK(j-#<2dX+k}4zDj|u|ttX-#F8BGK<-H*fU}3i;Dt}Rn9k7Y_#022&mn8?;*^}
zqMBV9v=fO*y%4mWJ!}O7gey8ZE>u%kz*>gj!-YG|&sXlLv^yQ{d6+62fJN<-Mwcfu0SSjdFRWg
zxJ2jV*1_@ml-;e61VTXu1oPR`H|VYf5TB}#nX6A!M1mRhjLeP;^=1VN-eT0j_i$MF
z5Cx;W_rX~+^hzSAnH+mTE%kQay2v-lt~mFHfGep*FegJZv_O5y+)@MGVV^xelExIC
zA%{PCyq(bMYx%iGbyc#{)+8hmulxNaU7nI}LYl_&#`2a-uIM+p_5-}c5j~vl`oJ0t
zMXBx6Gvu4kqkGM*-weKlh`>L^1u<;o)fLu3*KF*(qI&FaSPY1IvD5Bs=U>U24nEF{
zB$Is1kjaw;ueYgk`i3<-JRr1)6wW4
zxfvkR3;UBDvY?G7gWeYGr~EA&j`$V<+L1AxIG@!}M8^9A;fp&F6Jv9hMY{+&tRLA5
zwgzg3!9j0LPt1Hk$&{klG!v7u%(3q)(I^`05(OP}`g_(5hkoJtcM#UoNbCjP@$feF
z#S1!^p!6_(sAiNPlIc`KlkMVf{_o?X`$xTuMWYlQD%OYfwA;(&zS#AvbgL2(XK;0%
zAjRh_(?H=8F=Wf4XiS463kW-sb0g}uveo)!qAVuEY#5nY>99Y^my2j|zn*?3{n?Z>
z>2>i&ZtjR<01cPozVH#8tHZF#Dxyf9@*B}&v?r#Y5kJe0QvG)kJ7(Jn|D?ld#pC;D
zol6_V^_Fz_TgNs-^Ez(s2oXj$E9UW^m~<}o6+$*3(;JS-=EODyHi|0oIh5TpPG+~#
zbO|fCTs{hjy`u)4PV)99)05@Tx-W~hDG>3y-zVEgY{YzUlA_&U1aJuz>m4CI4o%HE
zzNI3Wyh-Fz_?d~Z3EG>hRPB30CaqU$*{it37pD-;Xc}pgE8FChrGfhehokR#DcWa8
zYFryeCORA1YCdW#$sfPjKCxi*D}3HPEg1<hYO^t1D}W{@Ez6`FX`o
z9l@L)e~69+qjhcqVK6+7dG*xzjpsI2k7n{8O;`n*y7`mrUKI7Q}N)>F+u4J~f#7BC2X?N}EI~
zTd#j1gu(@bxT+?fTTqds@g~1ol#I+yVj}7|nxr!xCh1XMA3DAS|YzSl4i5@~qEq-^h
zbP4*h=@}WX?d|EZlqRO9L$X9ajxij2WcuA*$0^Wp{^JJ?DjTC6=RfCV^z=x4uYXaA
ziso4J^yj`WE{;;5laQB3rSLg|)6$0^5WMxhIUk#zmd+9J?Hw7RCyp}RiUF47N<(91
zW%W5~L(+$I;r;POgD~n}?}71D&{s@Shl@>6=}-Dh!0Juj7j#K-V~dN!&AvDMOF!pp
zFu|YI7`-kI6nTidhS>q>7n{5j!0^*ui|T;Nl{}1B1VGt_fe?+2xCQuROu{>W4R>=&Wy%-
z{Ev&B$01wlfKb4);yCfKK_C!h5j;}~8O}MPcji^g>E4h0`vnyW_@AW>{m1kQ)yL`jOtAi<*2>Gi{A`Q0i%=FJp
z+*rUa_~QTYi+%Cr4uR>ix_GF&f5fj#hm&_3YYfY`lWKY$n;~tHBs!9r@}VH>xwZtn
z1nu&S7^s0^e=o$H!~5Jk1iw>29pRHzWg|!l3}>ZPpPe4etvy7>Vk8osoNp7*_Jh-3
z03pdawVY%4mPG9sH{6GJufr6+jCq%2e}tpIp0~+
z5p)SWd{b#?PM_KdB^0g*<0oJTyZm%2@peSt%fqA_#@<16vs>)l&CfCaPO4pVf+4q>
znP!e6f#i(Q$(YKKlOz$UhNWEjE~ayhR>80_KA!BXlT+|Pc2%3|$vD_x0haWyyhs?O|fBay~GqJTK=4AGKq@_8+
zE5vDJwM&6Q=Vhpi9lA1`PkdBqO9%U^meWG7V5;x~ximpnfstrb_!I(*PEBeYIQom#
z+PA0KY})N1UGL_q%HH;0_x(`)_2RkUZh=FK8{bBe{s>3N3x!(%pf
zi}j$LL4WJVv=HkrX<}Uykb_jT48Cc#rBQLGbzzolf24N_ndu&I5;FLsxxb%`-Kb(a
zRsW?(dVx&t*Sj{;m4$$oWH4wA^;)~5o=+-e4=?jmfccKRhS=yzbvka%SqrUR9bJCY
zy|=w0=4FYl{B+G`DO8s|wwK4v-}EkjYw$y!G4H@b3rga*#^DKPrnJhk0M`L}+%5C*
z#>y*CH&&g#^efu3!u0S4{0gt_7v$+JAz!bbevL>jGr5;#LyV8@Oq0u>c$vu$c^{bG
z-=M86nto-I%)zCjtav7lKkO0z*7cMqZE-LmX=)N9Ya}F88h5EYJy^L}N#Yh`)knYH
zP1t#}D5NjqsxAFPnc4HCq@-8)iDj18#*|6}2gJP7>{c7~W6wStS($X9;g?YK)qBhF
zYyB(4=*Lq=H17hE5+XPT@WG^be?v@vU`7A+oYYXa?$hoeD@QJrH9D1Fw_dyl_3zpw
z5_~{PW7~a^Y~k=yXl#t{9R{Az#jw1W=v&5F-E&u6dMs77S5QDPC>(KUY_3Y0+PXjY
z+_vOLZ}c@v^7wJb-i>%)Z#V!TDh}zxD%Yc+)f7X+QXFWszoFJ9>tW$tVhbQ$huiAXP
zC5RrEKAVNI&!H=jCw8-)4$6IjdVg1-S9{GUvU#%C+
z@AiuPn}YZ5ZHX#-@UXUMc0z_;vFndq51mD3v@(XNtGtq|$W8v9%<~Bq0E&VoDR=}x
znb4UYsw}#!O`08iVq)F*0TJP#3L2#fa|Rk23;<>&2qr2D-{upDjEp|N;NZtNHpfOd
zMtrlU$N#0db0;?M1C?S0CAg6iWe1U1HvlB_O{JwF8$aX(0)84E|IKz$QDWdpcsyxb
zo{78g&N})tkig+oX-fu`#YcDx-jmFHt>?R46*GkEqD++7nTfC-7s)kdQ$WQOK~B
zxmc$8nDJBHHy%yR!D9%JT|Uu~YlFiM<9aG3A&i|6L|~t?_#lBL+0~-(6b{dO+c!+v
z<||)GJlw90SG5*f2|~KlbnZZVr9QEJ5($$fIX#08w4Up8Qju&|ED~u0;dmsBo{ppl
z4b!LYrF<{rl~xmd+=OUH9?0Z#S^{P0FzK4i5R|8QI4kZ0v|;-;^$SMh^>qlyswjUm%Z8s8;Zs_R6ACQ9yw35<
zyjat6>Ik|j^0DTUf*5a;4dygQ1SjF$f?p^$n)7^;@ed#REKv72M2QgPVrZRPu=|wa
zp+5687&Ocab_w&{MHS*I44KdI%ABHU>HGBoAyV%bi-tUf)sAn@N}NmlcpPqR%NzVp
zsQjipm?BO{&J;NVmkvW84_%GSr)xh<9xUU=OB|Zaae3Sp)csI9LtWJ}?5WimIawxq
z2Q_m$PUtKbN6rLxi1i2dit_)(b`CE4l>NjZ5YBTw?~8+t-NI5j5)g#W?<65dMPFaR
z9sF@CcTU4s@ZxU3Bir|!97yKa;LJLns-^S+HA~gAE}Yd&|MP=|fhjGcC<__nz*7U{
zz)HrTfZrr@u8;HufEImiZ2a-Pyx?E8$upj}=XLwUMqL#EOYP<1@t6F80dp@L98
zAWtN4k4@fk_~Kd)xe_%26ipxWvidi&%~Af_q)IXvZep>L)v_O%ZRXF*DD_MBIr-)v{ypvCCfvc3)K16JmF$M^$*mr+*HtPz{7x79if=GQPKi(
zI0kW@$Fi$FRL}?mUT$$h;>ZBgONL@S76#+|_04*kP;#7@
zo<4J~Uk3{$?*JwtM84$${zwmAWdL`sK`_W(NP=)y7{H|RuodPgQEqBoUMRBQOW-7v
z#q;A)Jpsx*U|#-Yn8f_qSdU@beThRRj{NHx`0pMB(||n~8j>HjJct0yqI3kskB2Vt{NR8(Bw+>B32=_!bn
zRF0Fhir=P$HZ}^0+#X4!r>Dc%N<3_37l6>@=gYPa4|*Rq$pCtHSZe-OQ)5O@0_cqv
z2Rcd>6acspDf90qS?ZuxRoIS~75)pVm8_4xE2&+53b3^vcK<7RwuXH!({e(!^c9k53RFoZe|87O&F
z`L#fha%&r#HK2XqbGZ@=#
z03~~S3&s<27(W^s8sd5W9CEZQ1`ww~K(=I1v<%K1HB?>$xEMcT47m9E{HHvyS2sUo
zs#sRQRP;fuKnMbv^tWIj9IAh$i<5lu$cg7MGjnx10H~g{Of*XPG!#GIKW00046B=v8gHR{M-!?YA03}6edZX
zI@d)*9+QxfF%U}OCkrem12E9&r&Nwy@j$H7{R=2q-e$SR^Wy^6FM!caU@pMmI8aHB
z$_QmZf51WYKg{y?*TX@ee<%<2tPU*{5auBMpKE~XEKWAaLnu1UpmFt>pXv#0qTfta
z(jC02Alv@?GB!Kx{i3+ev_ET&iNQ2sZ_j4wb{x@V3LCyn30$`NO7`EE7+~+erTo24
zG%XYZ7!NcC2HE^z7M1<@4irs`0(MFHBbAcO6G3JWq#iV85YJBz2Gj-uj@8-x#;l(K
zZvf!>*Z}+1ZlK%o&H(FoK$C;b_3|Km&-V2{1jcdcchID{-1H+obR7
zUF28&?ziDiauMnvQxvtX+(a!FWAKLK?zBi7x5GClPVG7;S|Dw3SQ6lXU8Hb&Xkgar
z140t~Cxn#*W(BDJnHs1{VkNaeW6s2L*Q+)hmTY(yDE0A78STF~9n{WNHJSRm<5wrY
zRaG4?9Qvhb8F~ii-0fQdSSu$dm&y;JmI%e@8myOr0Y6~PEWpEm>*x1|{!x<76G5|h
z{(0CANMk@=uWVQyNPDdYYt?W_mEVp-%m^KgNvfhUD@y(E_Iw_0maIm&)#LO(Jp%-GPFoGaQe3w!-3fLsTLJZH4{egnb9V
z2eSJ$(ffB+IljpccP$TmO+Yu8}D$i>iOM=HR$pNRO
z1M&f&Kjc7M;Nc&-)9`I076Fz#`S=o)@?Qg)+>{RH4uBy61eEx%i8p>b90ZEPD}QoT
zN0hG1{W5Z`?;CF%RgPq&I@rx_7CMWcGsd|p)w0b-5QYMAtQU9O=a#gw#)YIOM+zz3Jh8vh%<
zWOgGZpbzW`VByttO>@`n)hQzj%lb}!j^*)c*X^0n!*jAluRT_g)3lK?ud_F9`?GBy
zr6ORR_^z(5R0CuXL7X8M?h9;qJbbMUg#)cWz%+3PCDr{_MU?M*6vG|aEHzpH}n3nFG!6}m>yu&9@
z8)F8y6$Z0r(K0(=8CX~OyG`jv%)@2O75l?R3#=4nZ@J|{C1Csf?OP&7rR9+6_-AnA
z*|Z)S5m%55xo41w@AYWDGKF*`VcQqgPqTH-^hTHM1pK=bIrlul!ND$v&rD$;X#UkD%9_+(8$D1Bmn>wZ1MNpf48R;`Y+q&GKP|m11B6n%~$X$
zTs{~C*j-7+&rhV~c7y%(>(^9i3e?aN*^l|O{RbAqi85FHpDxt3I3o(yWK=RA>0VTv
z~V2PTqQ2Z;q|mT0qdqx1b}h5g+ewv6o0RbDM#H1{Mjs&5}fIrzLQEU6D4
z_Pd_QsW5JPe9(MjPwsbVf`~@gI@5CRdVaVxQVx`bmIQ(@EmA!hP6TBAHz%o#kiZcB
zTvwL{*x%S7p>ro5*c)WhBE_H^R`>&aWCzwI>3)BVs;ycPobK-h&E+ois4PM0wP-y$
zRxm0LjIXZ}(!3*F3KMRFr%`j68S%e&)-2KQ%M@^y1>ulR)i@aW9bWjw7~Sn^0cR&p
z&d#1&S?;yFUkmwn0f%A)yyZ6M;ncqupepC{4qIPfH3+Pr7Xtila%u|l3h)KMlOK9h
znt#y_vbn%O0mzE-e;o^;Pk(Aox1GKZp`RySpPZi7y^;mk8!T$VLD6^-U6&i|{$MRo
zoB^j=u2}&CnLL64gI@r>>C*C8Zp_JG5yB5aYAJVEF_LrtD<5zq7_vJ3teQEAFuHw9
zaknjFJ6920>a)QN^!PTC^*rvcwiub1Oplh^CMPG4+ELldOuL=}js_!lq7PRiFu1td
z%E-&>E=)yuZbnJh0|P6p$EZsh
zPvoXc3osjEF0l}Ol&hb&JqqnqMxjG`PEN2i$H8RPehhTMCf6DaX%
zq$8KpZAw;38V*)BGaT{&N|eTJHU9m3|2s?(S*`9!q7Ilfn(xm_otJzs;t~=%0Epyl
zPyxzGfMEfZAFM_u^YKQ<>u@k1JGbPoO|am@G+FJh5eQ40b7;Cb0q9>#Ov=(myQ3rh
zfIWG8XOe?6Rwc`PLv;Ac#^C(;Ai~PBQu2aO5R`dolhV>k#!Kco?!)0z%|kio;m_`>
z!jLC;g*IU4Y3e?ieg9P`M%_KOskCu0JCM(LO{0llc*xd>Cr(tyuxB>kueH+MK#F}h-tgU}&lIu!
zzG$rBEN%XkouQwJ0P{>!`*{s9r9hZXNR;VnWSs)zp)&jMq}X}$370qG;$W24+3GKz
zO5ZWbdvi}Rvz%+VkwsU$CVqJ@^wm=ho7(b+mtH0WO(A4L59{9(+r8LvPtmxtAo>QsQG#?nB;GSG^r&AK6JS@eEYTRE3K_0;zsj_?n^vM8Ll
z-m0zx01J?6AcLl0+%o&$ocS+1cXV@sN(o@0^3q)v5*~`yFu^GaE2;EuXYcmHs(B=4iL7h(o)Y>?ukdobX~}Gm
zZ~Am&&ztHlTzJF>+P6f~ak`Y%7W+$STKM?MNaHolq8DG^bN^cb`%gT}A
z%_;oL6^c6}AFCBa%gLdQxO&w{#fMmeUFq`Gu3VoNwk8`NX^T891if|R_5DwIHZ_&j
zx>pT-2HUb&GF${R=+W;isRHXFSSbpMA`K$`lei)0icNcTw&;`wX$ED*3QU6X{*I)6AMO=T^6=
z7aY<>^I*KpSM8b|R^nB7BG*$=a{tD+RGzZ}1XiP451CYgGv($(LueTSk%lfC2GylH
zosAppr)%{*2=785r;$BrTAV?R?*w&tkL`KUZ%F$T*^j0VmwFyf2bk`AVgeO`+?J!)
zhKffDiLKFEl$oke@hqh6JIl$DnOeg`>-!{s*nIvtW4t4k+l-K1s5bDh$(2MRWMgb)
zdC~QU?+r2Hf`(GZKxvt;71^-~w};QcOGBON_?gA8G{Rrr_T;2@M0GUkexHuD@JxvhVV=;57@imZyGMMcOG0WTYLtw%kCwQ`
z%TkLY-K?FGtTFkmK0T+F+?{WUbV1*)a&AtkrnQv87NV#%lURjm@*Ui*ftY39!xH<2
zYqZDBmiW`v&dai-^fj3pds^!88!M93!epe55-g=p$I3q@l+c`_gfupS#*`<>BDPU9
zVg+h5vYY*=mEfjaH)ainzMcKTrIYNsmi~H5N-6f)o4Kk=abE-n;X(14Mp0gg5M~eV
zCvR62=JvYv2Jda;t?_X~F@Gr{B)J!JhH=64)5>~wtV0dnVcOiirP_)HQgCpXSUY)D
ze(-iTH-zEyKVH2O8~Xb6>0|QAV7C4bQG2s}#XN5I?|C|?3(8!`g9S2XZ5nDDtv!(N
zP-|A06|9W6sP<{?zOfD)yKKFfwp$$dkaLf?cxST7s?*UwZfmfd_NG_$L!>_E0=1iWgXuLv&zZMODD;Pa^iv#>9_?KGT+i;A*GVI@I^1-%{SJu@
zGzvWI7EdnH>3d5`k&?kP*;n^zUtgmu&x6rMq$PzcQH^j(a!U7u=aA4iYaUO1WqAB9
z#R+Nt8nH+@1POB?eVBxbT7iyQ0YuG^%SJ)nE=m2C6Onr4XuXY}&)1VzfKTwpuVp@u
z{WRn&XHq5Bwq;zSjrlw7%WE2vKJ?mOq7c!Gg$vek|D#8kb_ZLP{-T{r_r|Cea4846
zDY8bGV;dw_TOTQ-aZN79@xDoKp1!m~)v@POtg3o7^J4!EW5_?dTVy1iDH$&5v)RQ{sl@m`G$&)n~wZ*+a%!tnxO6<+oXr
zp)9t1;>t5{;)?S-_JQ~3c&|#WDSvsON-f&&5=@Qa7JaZV!oI)sOV^rF*V)UhEI>wb
zZPsyv(->HL#mh6US{58EhM5rMGOaep-=0~o^!>yZvEhx5u3pr};b)P~2-9B|K?Psu
zrObL`))qURX_+0h4nOAhQdQhMlJwf%Hj*{4Voy6>nADtBpT{=!mcl2e14oW7EW+3A
z^$ncij@afFSLS?GAvZL{_Y4tUu&`Zfrtq&#$aVkG@p1P`sH`c$%POo|D&mX75dEth
zB;R6|q95Vv3!TlY3ablx1rFMBQFr{T7KW{~<1-T9HsQ|k5Fq;;cOa=*BO~ydF`H`^
zCRXIn4}PzoCw&_;{F$Hchfo}MB{VuGo;jxs(1tq$lv?Yy^7hx?2D{IE*j(;rg}){IWZpUH3}fPb=4SFeeXrdPNLmwU7K
zF6etdG6&c+=-`~Z*Ff2@B*(*&*)HquRq)BtNrhxk_QKuZQgfEqAy#n`?IauVx`W>L
zxdrR7nOD*lzJdr@QPj~!E
zcxK}7OB?mBZqilcB}aAWb?(%wacS?Wob2oW$+Kvd#SD5^;rE3}>CF~RpK`Mp4$xV(
z$vN>4S3Po1?dT9FvYqcLav?$Ft@QaR#x?z|!XbI+XxOz#w;?lX=Vwt`SA@Qwt0M_K
ziSBE?1UUE%2EE$kA%UMogVB}FKbhQWPp$8_Xw7>tDgCA22l&$&t)X
zCBujERlb>G(!Aob)*FAR_mctDeK@b!7iBJa;3!(7Xu-1lvnN4tGXoM|iK*Sx3!f|!
zhHrI6pCKZhn3W~_ZscCcTKb+tuIA;_NL$xD7_tzIuI^(9uV%N9Jziqb;l}H)t`KsvEbh7=d7*o5
zU>>t?G=g}0_XO&0?I7fE?Ce*w-+Mf7zoZ1L!O4ALI5ZszArD!#;BQP0bIg?RGoX)Y
z;DzgfPgGG|?8-(LM(Y{?JkSbCa$q`!RG-Rn>Of(oSBh+
zqiTTD372_7+%G785EGXk6|*!6nd1Fgn4+H)a?cvA
z|27Yhb*&&rA;Xick@ubwNWO7G
zPe~0eS4MJ_#aiJn)8clFd%_t9TnST%2HSV}#rd;a7n(90H4zjy5X?OT;+ZrlcJeCr
z9<8jJ8m_LZsb)6{*MN#mBgE%@R8J{)7}$MO@00
zz?=6M$20bSLR3|H4WDRE#5T{8bC?AZSs8aFURdz#?xxd;RG@4){d+*+ilsHUuW{oIIe~B
zeorwstAj{~BJqDSquJ}19ns`k&%XUeZI#G$^0K8_{O^ZqUgiu0t^=Ez0-Mj1VF5;%gS+fy}94!8%u~9B)jfI6CH>ZpF$B~~dNwb932=+&|
zo~tcqCVLOj;q*$(RpezZkP&F%3|GsK=kQC9v}gU;@q2V$w!1>0xG15}^GT(x>=4z++r8km`5H7zpW@tbN<31oon_nT4MJc0)YT|I&
zBok?%BH#%Mojk|4h6q0+xaVT*YmYrGf_Nv#$ArbjzyT>9ESUiW5fFUxnBa{w(^Ia2
z$9&Rn`Qsc@t(948^o<5=%n_lrT>-%x<|~yRS&|?HkO}Tn53rLsZK9(-OJmOTwPw9n
zG?uHtuqcHqXIWV)s6HXQZc6Bkw8!Ae>e6#K#^o_%6q*52&5HA>O@DGL4r
zIs42lr_5lBn=;QNgxZ%vw((hTY&lLnsl83!m@;f_M!Un^Qd
zuQG~=GQ;T$Q==XVQ%f=3oR?*kPwq+=N0#)A%;zz8kx#tHSq!n~lsklN_+#rb^9*R$
z5y@7wk_H!AC#i1=N{cpLTB0j9g!iGp=oDm5Yk+gD_9U$k_gojqq(X7@RA+hcsXl!3
zu~p2VRjBQ%i0#na#Ecs${pq8KHJoLqgU;yD#VLtjvY5_G6N8d&GMF?{aE~+DFq?0Y
zW~*`|146;3F7V_mN_ys^XGvA0y+t2hYjM_zg?d=gI`h3}Lm&?|ZWAX)#UCe}8`-Up
z)1AL&D5-4SxD6xw&{P<@9Y?;|oSz2Wk0zH6fBb~sfZXQ_v&=@G2o5u$a~n}eJF~ji
zZBiHAsk3r(Vv7kP^k+c)
z1vgYAY>HDHcVuX5SD`P(qwlAuh~19zP8aJ9Gc{ywj=Qidl47q!5iaNq{gn6bbynCY
z_Ay;hBEPnMfeS@WfFc8rz}-PpSC^Q*@#rzonFrW}!k?F!&4loRIqP8#;Dkzo=51_}-TN!Ia5X>0Q)X4dmtqr2*>*
zn3hGH6scz*Q7D?C2iL?Agh<7{X6l>ef`-WO6od2Gsk**_lGrGG=l0$n{c4B`L4Kz(
z{aLY0Z=tS|YHJ5`rh>R%M2U7#5FYh%Yv4Txn~sNvDvP)WD1>jl$3|xszm~1kkp_De
zC54Z9d}cWC2(6z&Td{nJnsISPPSFO*J0!fIcb#XJ-;boGC8rD(C}_Z))SVE=Muon$
zONbCQqKqll2^ZV+47kTQ;Nvou1gB`%)W)+X!Y?D60g`Ty?227h$(Z@mY<_rXpJm8I
ztQuj~e0`7_-Vu|cyINYHoWCPfrreUSaOr+C#k~U*NnV5iZ
zAVn$UCl_hd+V@KB>1n7<{#s?g9ICdEH&P)6CN6D;3!M{?`%}guyKJ>NGSE;{Yl4#C
zL%)3Yj2-ht?JeVHAK!X@?7#Iq4n&<97UsxA-M;f1yOcIq9XwHiUsJg^pJu_l7kF9I
zxWSqk9>x(TB-%QhAJV6N^juEV758C?Fp@K}p--^Y%*Z41Q1sN@=QI!PRx^l3hWhr3
zj@{B4Gv{GAu=sL9*0s;5lA=Y(%6EkhmXpL&ls}XSD;4Pj2=^mOOtE)2%`u3a99jyoED&
zmX1b{DblRUe6O(>YFFKV+CAi$ALCc?`+6>M;HUYUL0re3*E{F&8)3rzN{_Hk)@6Zn3vI-_iMMuXD?@A!2wR$sX0+I
zcEU$zAOYH6!oydAlD&}$dBGrJ`-gwfi9*EAX{^pG1xr0{65`XN>GcGny${V5$sgkJ
zt6yEF#p9a#HK+7%TE3|Kirj@!_Mtki?Ja(|vmFaH8b$~>=vLB=uktJ`I4KMZ40?pQ
zD{jec(B;?bTF%+Z-Loo|iv5
z_GcSYYS9m@NmJC1HdIo7R=BOvo#(Mr3Hrq<&ST)xznd_NQ{|6|w9A;QwZpfOtAt=W
zm@X_b%*k6On6!OC=#+s)EC?nj$
z5pIlf&2V$t&Tm=4B)yo9sc$sQ+}>swxvPyZWI0rl&&Q`)g=(V(mM_WTG1~wJr$r{DcD_caP>sP$w(YV-=oE}^v
zT}y)=ss3Ikuc@yn)&`6kGH#lE`EssumUYEMcyBB-X&}+{7&+IW{-Bee4&_Bhg=j$r
zWn6VX_Z~X8Dug^tYan{lng{H6HeSu+!%i#Dg#sVn-`p1esN1K}Z$b09a{X3ZY9{?t
zP4h={Vxq&A6Lt1WI1LLs7F{pY8FmCCKQg<$y;RkPM7$dIF0aPm_(!`ejvWRp*Dnc5
zxAJd~eR(#6zZ4X{&x2q)&$m{+UEkVT{nZ08P->N!Zm0YH#me=kz6ciLQlt-)Zna9>
zR^@#!
zXSdQA^E=pa5*YqZbEeK5BQg%V*ZOw#^vySAKX@Wd#1qabdsD0z_tOt_*mz1LKC>F1
zngTENyvxLJ`0}=zmHf?~P1;R1ho&VP!s(v25qYOXWP!l5BKr>|)yX08nAmg)0;nXf
zb+bd)peh>E-5+yn9PiYQHfF}Eo1=-U(+kdL`qdJpN
z)t?`UR1v{rZAdjr3`XkJos}dxD=NtvKx$vkh*Optz-KyXjAYg|lrgfSaUZlpYz%Tj
zt$oc9IS|n(7Jf=*Z*&YfaVxdb%Ib0fNuN(FB6${`^qm~(E@IJkrMbAej%#Ul?;M3N
zS?qtP9Emyq8mA250lJU6-o<)6$i
z-6u~@zEV?H2P-Pl($XTBp)oQt5}I*z$C^i)P@AFQ5}Bp;5_Xt(6DoBQcJvXNrDB+&
zrNl2T8d?r#LSF<*iYn4tkTUF;!+NP~!c9$0gP8)jxs#B8y@H;dpT}oqMX3=~FqhQ6
zE%*$fg2>F(z2@#9I@L~CqiMe2P&J|&NPZS?2Y>J=6iFIlr_|b=V!w7kW;_|}5|L7S
z%mDGZv|W6LZSq1gD1m4}weKf$_No9~eTZ_=103dp9~n^4Zs`pXh=7L(ROAX0Z~)9|
z)B(EV|BJh~fU5fI)<$g%q(nlHMnoEvkW@-S5HV<^yITnrqy=e_QV}pgQc93+P!JF)
zVH479kgjj84fy`w`<-*|INvzqjC=1M2pc#1x7Tm2xz?J`GoLw^uPQM-J(~hxhc$&$
z%uMTWk6^`qysjcQMk>P8?Dtkjg!rYbjty4ehgQcX4A`4?8xs`pr&BRc??c`w=&??H
zy22GNTb*~+vPUrJLW6Mxv3Oi&Q5&elnY2f7>%!OI?1;SQEF?JFFcLciUeF
zQX+BwN-z&oz~O3&aH#_Z_;RROZ~Wm`Sdn*{d1$+V->aA(&yNUs7H+l`+lXf5&-Er5
z8d>ZQa%Koygb^1eJZ+lgl0crD*xA#G*3@9srS
z^0uGmna;f$@?y&a1#llqW$>XXjNhw#pzb*SdEQz)P7-%L23Io?<)HeA9l|;Js
zqO~_Ntf)oW=UN46C#i2uuU=piIwZBSLeTMzJO~8SR9~hC1Xp=
zV3=4+Qc`g5k=J8riRtB}Tp4lQkN)HY0^sN#VvE
zam)~R!nK-H)GYqe4Co?PKxap|IWN8yfuvY$8O7mn&z!dy%Dd9J)Jx-n4#Zy)`lB`bC0f*b@cZa#c5lx%s
z^Zyv}!6(&}i_I=25w0T5^DW{nUK^cWXvM1nyh(ubb-)I|PpHV;VUQ|u$-i-sMV$AM>VDRqd7}N9e&d&U4Y{J5EDBIi*68&%8BEuu3
z8G==tcC-x?Vo$}r#9aE^SajEZb}moZcr{28iuzn9Cqb4jh`u?ZMWPS?Umrf+8s>Y^
z0(X1am(b^cRy-r
zrckeS1AgnCE6~Bm$k^{VIz~E-mEqA2-7Z}{sXF%i_piKeYlG3|gmutPO1x1Bfa$z#
z?rDt2opg3h55~hL(%+WnXQ`LCLNxn}SFe2RY`oUGV}%^fAOR~wxnQT0nW^cWmPAnz
zFqt0r`KBJPtqm=gUMIzoLQY7M0ZpLaXp&cAoJ~nAXatic(u+du7#SHst)@EwX)=b!
z##xqKyd#aV6((Zyl%DGt+P2=_tB|Dzr4SU!f~s5x16Y1fPBKvw%vYXJo_)mSzBi>A
z4;YlcMga5RPB3&5clGW~$g#f8zAWXM4GRZu#^NSw{tqJ~BkboHkIW&xe~@^0oYh^7c6fN$|8RuId|dyKiTD~Nv_)j$yXvyLSbakS
zF|m|SRS>xYDDY503#4lVwe$)k*Of;oi`7APTvKwWm^@TeU}^2@szd6?#{zw|NVx^c
z0P@<0ca{qn)KpmVv;Qt?!}JH8REUV14}i_&dT!k1<>Lco8l-Xll5@ly%}Z}7Qcy%(!|2Ti=G=3x^3Ov
z4WPjvo0%D9(_J~*spW7yB_#z?g!H=k+cH74FSb+F`KhAyD_GBqw{n%P4s!zKIQW
zU(8N2${HBZ>s#wv3MYLmvx1@Bs)asPKSM=BQ=P>Qoqb!^6uGAp&bHWpwRMvC|Jf{|0zqANoYuAg;`TN0b<^3xS=-zI0fojz1SyU8sF
z{-rxMNY`*_y4QV#FX_^o`Ky07R|nREPM1iC`_7_ux4deka3UQ;Ub=h`t#FVH3OQj|
z*qGw+Xx*Q%B)UFS_83>CFi^`eC5E)TKZ}bD3?hp^3_yE2SjY)3=YRYHNYoE_Ujj)d
zIA+6jEJ;HpYtxL(%#ZBEl0qTvdr(nF9Mh#?;7PwsFwJz(q(x5xH
z_^C93lFxYdcXH@lW~fK7-BPa$E%@FT1>IE=FAyOkZLF!4RTTzn`{%dHnZlWpHRP4+
zuC~T3gWXkfeCk1>cA8K>JG9+w%@S^XX%gsfEb3d}Jay{Sa;>abd46EvQJ8S9<8RVX
z0)yP?)2Ab&qrn}B@Bo}KiX`c!YrQkq#@&gDajq2jH{8|SO7P7#@1OR1$N}1*cN8h;
zW2m+rXPnouP5$FHj_q|H_w1Ac@cS0pnQNEc;i>8so~+_Xp^m`xPJXQclDj%G78CX9$zMKbHUvOmygom3U4)c
z80;v)Jc`D_1BUR!kHp@C>AU3~EB?8K{Mw@rm`o-Gko-me$<(Hs`pu!eId=Px=06rhjv)|B9R({e=rB
zcc2yg1`aHbuN|(3pi}7UC@Q43f2sP5v>Yi6^3?!2z2wvdBy~1Lr@gy7==%83p+kqR
zjbC0YBlLU%Na`r`;gCJ}aDK>bLtV7%K0_0Cy&cqAVK77tj4&G9e}js?;Ob#-doA2X
zgZb>4JPalPz*nzcJqZsl&yS2Gt;P)@ph0NnzsB~=_Ndkc^Thk}_>O_~@r+MR8NoLD
zx*kE@S*Ktc2VHJk*M^fAFy0#du&yW4}
z8VYk#p7#+E4_u}L5A-|00IkD+H?YT7;6G2Ev*Q
zAoL&3k;19*a6kkq4?=;(!--p7txk-;l&=hxbf-WH-f-a3x-J5EiP
zFB5PDIDWdW+Fkj8QDwI2`Rl^4g_HEf#q2!g)2k^ryjT>!Eoz@XDOk+Vp?uFkv`HIu
zBUZ*kF)G=GfiKy)*}+3!LOiGjpO;*U^c-^D#TRK1I{6
z!6h?8%*XFGbGgT#%JrV;u{}Ji-5nnXy&SQM6z;Jr>r(=qDp8}efmZ~Y8cHe!5@XB6
zr#5J+_A1Fs37$k9(R>EE%Sa8k4XnZI0blKV6&+7j(s6}%X2;1t8r?o|kN}3`yBw20
z+*G#Xeh)sHJGV8D?2Rn^T1nYg5SB~jGVA4eaAtE>1SEQLW_e9r(bZjK6RDmm%=gxB
zexEX@=X1V4^7HOF3o9D0=Lc9?<(gX0FhGJ`C(Xl>Gv_SMy;+!f`KI>46@jbmY`@Dx
z4dyihh=0B#SD~#lacU5=|EyPd>h?A5*gFa)qHa1mqz11|h}dpCsG!q~xz%QU^W(5?
zLv7$p8qn4CGU5pfZmuU7C)3}hmb8@HS?U+-yejqckC3f>P`i0(+Uz%rOYfGxLgH1g
z3Et??eyQy3`$Zam2d|WWkT0gf(o&7y$s)Zh{Z26J7VjBPB-}nxc
zofD@vOY!)sEPd}FQVdnkz3pwZntsj_E*mzbKg?lr?{UQgY33Xr_23tYm)_qw7-HhH
zp-K3Q?7fkj91-5x*BVt;cx2cO+T(Vbw}?6yR7%G18vT2e$6^>^(FWT(lg$SNs3M;r&QKmphal)l9P}bT?ZxS&If9wW82+-C9I*~VBCe7*
zb4XVLEYH5MAWGr9a_cUALx&-^Fw5yj~s>fetjW+@!yZ!My)}yY1
z&CIQ|WtgV&%t8DG+1UdQb#rsPag+tI+}~w?98{(YeObImhcIKb?xpF#*w)v4YMHY3i;kpqC*|oiYnGM`>?AhT7udJjvEfRUK@XCY|@fyd+Q<@5v^Ed
z$W>vAt6YY+e5+u>2$4-#7*xl!kaD;r8J4)(RsF*+ym+|tK4NALC
zZ!1mLD_I{s$O2x7Ke@7prkRy^z<%~mo3bio6rFbIDXV@=75m#ye4V}&@D@sX3b5){
zTqO6xl8bCEW00Q<+o%HalwSOU6>N??doL#D+KPAomm&}}7DQSGWph4qI8*j(x}E)P
zPoQ?Y)YZfaO3ZPU_N)ZFTTu}Tx&(u7c1=kM*#6AA;KWo~W`rGV|wQm~FIiyakMXWN<)w@I^ej=Xxap^InI
zJ}<>isq(kYJ7X1tr#=C6OurqAoW${#*Io$sCYB-U`sZp
zY~~Y}iv3W+Sn<}zjESM44@w$CWm^D!L__=xSPzONlvHNpF`+54@uyA8sr_bTWF*QT
z0|)ZjxIQCttZ>k0*NBUaC(@ug#zyf5MH%q82%)?mlxRMO@LVZFIG
z_-o#nPP}@N?cRrt*q@ezWND}X<8)T%Jg~HWrA~e+n`69H_
z82>nF>(mNC7Pe!$?~^uP9H?RT|FcB2XiV%VqR2{?dXMN~K`aOk1cKtSM0}E_S(+R4
zz5n1d&-(FZs+dTcn6L=+*zOnTb7lP0cb5&)<(WRHXZs@DtPGj8>(ef!jBIQ{K!+u|
z4j!2<-SPy5Mh$ppgHUZAW*Vwb;nMFR0L91Fhgih*dLSpRuCZ}QcXL=*t<+OARCJM|
ze`DH3W!Hz`RO0;hIZiFt`~;q?cC|F#qP^faBTL1Ir2@t>Xwq2HfH1blZ;-8Abvy9%Sxue3?*%Cb55^a(N9WvC76k;d#EA`^YGsQv
z;`~)5z78-aQqHp;%WM1bL*CSbQvKV;`SVK{E_22q?i8u~I7Vx-;aDAsJ$}V4!v?+c
z9H$_xfAh|_{#A}d|IxVx$rvKrXw^rSG*n$?15WD%&mb4cy9soM$<>eKOCG_|$
z+4$^2kR4#`<~=p4B|$9!GU$n}CN)y}G)Z
z4-Wjb@$1{{@zv<(HVZYeYYFt>)5{WgY6ah?ekw_SMXc~bU?trLX4xfCA&o~DDiN!gJh&b%)6msdU?<3`(B%5
z&KFLqe9Jp%gE_>{Ui|3ZAX)4S26K&QKJkgOc+V<+6kJ-T37I$KDSZ=QYjok0*Xz9>
z3*NYkax_S~K2TdS50uxS95fPjDA*L17)cOuT=F8aJ9_wHaXG76m88XO`<8m;+1s4I
zwn!}mJ|r{!+AH%r9}~g8rV{^(t7+A1nS`HqZEv#{FZ(~bP9jdWV(hpt(xM}_m8P7I-Qbj^G_my^3BmL@w4{`jB&I0D%y}va4jk~!hHP)B(m^3$O-)Iz?MO`7BDThknAUrX
zlLHW@Vw`$-j8j5N#y6MD0G}a=n&x4Hrkj}%0|SHK$dPMZJqpYWNw$6a(zTW-Zl`1X
z8}xlv6gu0mt#=8k$=|;cyIyzC?d)62)KB3{qlA3P{EfjHeaSiLkFNJMVYu|{RPln`
zxO82GK5%hhHWWYmeo|}bb|;PMZ^&qvVQ$iB5T1M5H%lF(-f*WwW2geCCZ<@$>uPGX
zcOczAIW^T6=wV-seSx4>Z*OnoQyyw-rYEIPP7*IliPrucPS2M$VYKZa(F=y{Ja
zksQgh?yZM(_~rWBC6{G*V~3y&Rw^VJALA;1Qo*BFeqeQN%?(m~g{Jc{SMGt+F}vbk
zygt`J?X`}@k+iTQhlp>w{=KYF?Q7!?M(n2M=H(O>uz()+tMIAN0{{**4nIoNgb7yR
zv^tii3X5@TiUQ)`!enU%Qsb=4?Wkc-tZCpXZ3O-as?5IEE+Wh5Y=Hj=u2sA9K^pfV
zLzp2t-lHhR*Q_mdz`2NW9K|&|)3uBLv?@?Tv~Q{3OB|)pn}%Ps0uu}-X^|r
z0yO|-HVXlz7t5`;ug)<1B-^c7xMBO@sM|1txQAcOWPfSDJrOt?!OR^R1XUUhw(oQC
zjXoH0TX1-*Thx8*2-o|-T%n=hn;U)Jg2SvsgZF*zD|L&^4*d_zQS$IwtYWx)%Cgti
z%oY^GMV~}l1wD+)VbE6ZJYldmoP-LsF%8l{vxi`Q*%xqE{}Lpq2JsJod%o%?dcpKf
z6q3()eDMwNDXS@XgLw=A`ZrQk+^MGU1u#o(fbXXttd|3&S$r18Qj@&Ku`XU|FuMX&>>?``*Fi?2gN<{faPg@uKJTH4y$%Nw3jLpDjdWW?wZ7R)Xs
z=A)i%jQz5o@S3h}%Rp^ionFU#b^q;0?T_$B?t^L;E3brs_$t6wQxOxx9S2|99+NxN
zLnoRvg8XY)9`9bTVt_6gW(jfF7F&nLwt0xLmB9_UrInMvcsmC_sur;e9T3U~cq)ngwOOM#EZW
z2k%qdFj01B_!@kGIi&C`HyYo9qeG+h`Ww;?4fqDx|AxGB=c4q>eUA9o{y;7oMv#Cr
z=2(p#==BWnLoiQ_5mDsJ<9pr!-wgWSAeg=aH#lVw5T!N1m!veH2;uRSz6K;t5Fqs!js8bWIucUuN6
z-8LvW=nB0LRT@FL(NOC6Togl;JlK=mnFuI*B4s!!I2@^JTcDM%#i_+f4kjc>5Q0I3
z7Em={GtkUdoXyli#1v;t$a27p@Qs7@&KlrX@KoELt)`HP+qReL)E&DafO=10P*R4j
zP$lQ#!+laReE-jV|I~ZOO8jdNI}q&-F{K{C?np5(Hf|dVjFh2|5&ax}@#^?H2*j*%bf1zA!bIEL`B|
z(W8P|P+|yh!X}quqDU;Tw!5tmn#&@hG(tX2eSLjCEL>pX$7#QV_p&l+A|AB!dDLzM
z49Sh)^5y@28T12)*No4Lr)a;Mr6pANZ*BB5?%ap04w->OaZzIIO^!&bw`n4wp=bIo
z^$xdBZrs{$p|D;X2Gt9GKv5sW5icyDI6`{i_&Hu0uXVeQ4BZx0Wzi~B^rTsA%@Txw
zGrzE|Pet5#A-19g)c&hphZa$h)!)gEj*dk5hYD6k;)KBE+_~GZP+c-viQ-R>j9cEZLJ)hlLB9PiF~FS}|M$BYcmzb?rLZS_6<
zJ!*O7of_Wb+y?bexsMa~ay^QuSO4hBnX;Fb@>>Z1%M$KO;+6L_)jogpUCpC8)Kd_z
z!k<)FHGIImm_x}$_4v(s{)pE<$_yI3U0uQZN?_41(2AVF(|7#dUtdmZY2-pXG^A{}
zxOAIGU~-frlOXTCPMK(T;&YQP3T2fI`PdPmc=B0#S|z9t0dzV;T7vT_axL4vj~_oq
zF0~;FZ5}*E_EE3mkSA2dnMYA6u3C1t4l_^p0c?k5!a0);|aO4l1oxgACnQD_S2
zRI~*6lFwM_Efkyc|B3o&CVQIM6U;1!@<+pB)O^8k+L3fiOT%wtIw1%A!pJO)RvORo
z*C?pxVLq+jRb?)iYIyV3?4o7mzDa+Za-q6g|4)t+hTsskt!c!q{XB2N)lyGi
zlV>9*Oy9kDn-@i46S&k`ylii5{kvjxX>jE8%hOg;8&wB3h^*Ah7T7MHUF~aeTOHfd
zZ*t49>vtK+Oc5r)>f|*RMGOCQh@H;}o$K%Jv?UImO`w{7$>HmMg;4Yl5h^oo)|RGh
z0s)T6-lCYCjkTrudbW&T^DE1L(!`q}o*|8^AcWk~@9HKARj8~4Dh2@_&N6uX4MAKb
zSCo|rk$LkLyUL2*oF5M$KZGrU_4%9WFV~IDY=aGo_MH
zdXi=Nk?WeDg6C}S7r!Jiz7Z2fHT5c+t65WDG-p9V#g5a_`bDO2Onp_9&;0swP<^cU
zr>DQuIdY`kRQI{KiXDI4aJIo|UWe!I&q6zB;=Q|Oy~RONb?zg|9OW}D$wQj`7zP^_
zLh(My_yc|6HktNKQ;LLmwQSF%sy=ZVx_gmpd)N)lPC@t;VlJGY|6Fek5uO%o7G2UB
zpO}za`<^CN1yD!*hSzf)HQ9*a$yoF;g_!N%*(y||2Rrv
zNpBL(V)?lqRjqtXPbiTRa&yy@pTBP^JTq|Q+C|1Mx>fhgEG+ftuE}tBN@|GwRFY-?
z^2c2~Gtc^vyEN(W-P&35gLRKDwDppwou_#I>OAdWFFsp`q$VC|Q%e>3gt3cmd{3Zz
zadA_Of?bK9ZjK8d_q}r|C-=V3EoSa(I6*iwn7bY%$k^#kT~b{w17%R4b_+hl#s$sI
z&1;*RM|`QQarHz5N>`2p4S#2#{1NzJ(F&XeK4tJH%Sl@+w5Uu8vLlj!1E}^8T5Q9X
zMzIHL_v=HqydG{I7{W@3%W9Fys=fc5*e*O!oD1S#yPpO}dOT^Zc|}~^#Y6)39wKq)
z&LksqpR(s)dQkN7VeSOmkyTfPoa87mucr)N@enQG&^#6B6Qj>DYkn?HpW{IyrVNX>CNYW+1~&%xUcOQkwBlww2N%>SvA
z3yfnD93^1aD#yZOHz;*RDZVz}4uhlChQbvnEFp}48z5*xq!)q%)mLE21_ka1RdG4$++q^O7tAZE->9L-6zfWiV`zvJ0tZbOa
z39k>0de0}6#d~@9dljshH|taN!+{{e_rfZmE{zY5uaLtC5rN+koWqRv2q^j@BPqGx
z!^6WJL)HI0H#aH=m8+TT`y5wXEaH0+95Glk(&V~7+0a5QIn3+ikin?iI=efqn5Q~5
zG0(;Ecd_c-ve?0^>}*`+vd{36TCOsjV!R|1uf{IZ6BpFkgg3;vCxcv>K_>VTiHg1}cCCk6E3!FHtXLWVBHcjsL`a*!6FLId
zD+=6SlfGaY$}j^~Vsj58YL6-DuS%O>n-pv?11xuixVQ*ce&tzqmFJkX*%tNUJ5`;$
zZ3|_29KNf_V!dhC??YT3^m%olY>7B?b+D*^gHzIDt-IfNakA@sXD8?tq1dP4`Z5-Q
z8Yq1Bl&?kP#LmvRvTSH~;17T2wOs4_^{Z#jd5iT8FpK|YDS7dD`p1oRvA**X%9@0U
zJ!37cy}-oQW4@!
zWvM($_DFjY;+>pG&ZP>hpTlC$=-%hsN8>E^t?Wzi9-2PViPR4)O4EPb#oD3Bb!kCt
zJTqbD`AG~14WZc)$Tbz1yL92g1+3@8GCHo3Wd<{d(?WQZH(qyrklYXvNiH)whcxqT
z>7m@$wsA>G!LSAAnDV`|=&nubmyrHiQ{+~gaO0Az_VES_h1c&0!c9M<8J+`$DOeoWi`o`Vkw#Gj+OR@qO~!Y-|i>5
z*JIYDg(r3^F?siko*D_Cdd)sZ$H0)}zES$DB{FuaxuJM!P_-aNdH(Uw)0R*96T=Ll
z2$qeIKfqYAKvRd4%zU3(TZpFhZ;5t%fkY~`wL@>;ng8g*%b#b}%uT#GEWPaCmZ^76
z)!aGaSFe4VjlQflYo95brupsc7X=B4dj(d?t{XQdDNFyTNFTQ!pR+J~OE5Ta-!`}G~qa}KUb
zYmUk7fztt3D{>nNR<8ufYIbFk+%;HJ~s|D9^$L!j^yzjfY1P`0e5u-QiFQY%V9xC`w3G`@$+aU|+BeSEy^s?5N=zAeBS7b^=g&MQN}DRQ>|1
z9lU!DhqnfAE1kO;h=)Xxv28po(4Raa$WH$
z_g-R3szlFKGw9Y~`+*%OXh#h_OM&ZHh}t(%RM_GWAW$2
z1b7gzb0{STmH>8c$Q$4vd^#=O{wUaSOv9swVW50)=78F{3snD&^#H>F)&pU0z}omm
z!Fqz#6a*kUFg<}A``RC*J2tR)$0+c*NCK{1yLP|UG#VfzVt29tMgof^MD1Cc1nAGM
zk*5Y$A>6}2mW+Y690g){jgEo^QHP|bb0YHFx)=){9qwT`X-l+11Q&o>w!dsol9CdE
zXiGE4u#N<&%~}z!_V(@D9lRN~|38A8F*P*zf=?)mgn=F|Hq;zc2SB{-Tz+T|UYLq;
zLo|n$<2Pw2-;vO%bMJ9zgXmIE#f;~YuowYS=dBEqm+l%b^^-@nXQ43fe*iSWfw^L2
z#Ee8JW{9^u!J>o;+trNDXF?w!rVqtf5vn~%t|cKYeUMzo6&HO18BhuoyDge2iHlIW
z7|{OiwnL}33#z(_bXCm>!d;+6Q5IWaVo7r6h0{8<+_6>oPTf|Yu!BKdS)k`?b)N32
z8)=Gjo2z3H0!7xFw{HjGrJX)Bd~ZucDGll*L2Ts-p{bm<{9g}`!Hz!UeHWa70!)Z-
z{#0H!5)mPh>APDWUV>r{mAbUURAWIO_jF;R6KKsV7G`F8P-;@kzK;3N(vqsSc2h7V
z-;dAt1fc38A|oB0o$a|dHa2eDzRhP)jqg0ucNK0D#XS-d5_aeQNr3vbpk1wm%84>R
z|BSVD!3EF(0N$=+DKQ^A=DJ!uqd~Cv41A1;kPw2vz(7}V)ifn$(59mHpc1a2mg94q
zGXw=PlItSs0ghw>iP;K1_+qGXEGW`YIX_?~fKU1R$?E>WB)}uT$j**{O3nWSAnJvV
ztbX<*u_nAm^`vK%6B}XJl;z}(pt*vn2_4;tw=F*cE8>q_3-b2%cDT{GYATy2d0tzd
zKpIx0YZtvvPfvyGLV(8`;lLfrg7=moJ+J(Ee*SR9GXPx-fl{efQB{=$u`et$b>NEu
z11`EgrtCEcH7GBDKo$Bf+hJ4*>M~Ly2{0x67i>hn$TS8A^+SY4C{XiWoIij5qjA$I
zB=!sp3KAN5YJjMW-DxF9#*i$*5OxRXS9XmYe-u_TgxwAWPCz1A05uq~t|G-iA{rJi
z4+a@Rfj_SSWv|r}Nozf$`S2?G3syEZ42US1;n*-q0I-C*TdSRDnwo)>N@Q&^o4P(x
z^xpDnXK6Fk*StbSLGi20Bx#!>mNI0wBcePA1_xR*Fk)bz2W+3(3O2%DG=U3his*k-
zL>8H}83b~X%r6+hJFUB8DeId{r7Tk*Cwrcj<_BBzljw*DD0Q1sTADO~I4V>X80N2z
z*M<||p|emt5}fXVJE&`rDiJVIM(O57@cTfl3B|KBb`~2L3Z6riMH8{=?U%b!@7B*R
zn+~4-uC3G5XLI3WUS%jXrDmR`-p?Gf{9bF{LWnI1f`Zr$Ofr8gH4X_3!3Kw+viIoQ
zcj<$uV`3HU;ng{aAU}Y@sc7|wRThC))l^0L4_R5^sMs&SSETKVc>(2q5wJm}JAW92
z4ns@n!>)V;#czn%s%f7x%o8N?0~I3my~#{u6mW}VoLaT;NliTk4!h2_rpdotw70G{
z$Ea?7&nj>e@R)WFY&fT0eCN<5ahrfV>pPdOo-Vq$MxXYibzI}t%|lpho-0>V!>Edf
zE^W$j;n!@~`P-QUrz~Q!tu3fT_v;*GiORl%)so*Y#(OvJ?b8CG+Erh9`(%#yI%<+0
znuPnOwVKbyDfbTA?-T3OpVIwp{q}`Arn^a{qsI^Q!YXa$@-`8HYwC
zq7S)up8R+DXN=5!-R0wM?UujU^x8r$%CEb#gJ1CC+F{DL?VrR#C>!?ZBciYYAemul
zAzJxOGU?%XoUL;`QdcyNZj^0wu1Wfn{qUHM*jwdp6#S{^f=FE&5b8)dobB=q0`S@iApYd7N*
z+UB@R(5Syv@0+fkSt7ywZ>*QjiUa?n&m!3a-R^6`^RwcA=-T$%9U7!LI$}9$^63E9
z_I_@3=|RxZLi(P{wQFAnevglr&%olwt5FH3l)W{h|HSPt9*7p$+SmNE{ZPGO?qKQ%
zQ+=lgai6a$RUs@W2TF*T`J;RMj-Hnk>
znx;X%tP5vs{YKk9erZXMRefXf8rOrzOfXA-TC?291Hw}plQev2&#rVV<(qb15LtI6
zBp)uMbUp6w$>kMf-1MvpSWpQM4^clxP_%(xU@I`IK_%!Q9F^N7{3liy1HFFb3A#e%LQ6p)5

WI;T)ca0#%I1Gns~O-ER@-H%_F~V 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 literal 76523 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 R7mffwO;x=+MYkXP`XBByOeFvS diff --git a/e2e/testcafe-devextreme/tests/navigation/list/etalons/List with search (fluent-next.blue.light).png b/e2e/testcafe-devextreme/tests/navigation/list/etalons/List with search (fluent-next.blue.light).png index 22cf2373d3ae9b1cab520b73226c5d29bf6796b8..934ef4069f8dcc7a06c85f794468586a844d4b65 100644 GIT binary patch literal 35745 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 f76iU5jzs1rBWuedL4VHX;89zOC8w From 795ae793e55b6b84fc67d06b40054e614da38aff Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Wed, 2 Sep 2026 13:17:34 +0200 Subject: [PATCH 22/25] Tokenize colorView --- .../scss/widgets/base/colorView/_index.scss | 85 +++-- .../scss/widgets/base/colorView/_mixins.scss | 12 +- .../widgets/fluent-next/colorView/_index.scss | 97 ++--- .../tests/base-size-markers.baseline.json | 4 +- .../devextreme-scss/tools/review/px-audit.mjs | 10 +- .../tools/sizes/lists/BASE-SIZES.md | 96 +---- .../tools/sizes/lists/base-owned.json | 337 +++--------------- .../tools/sizes/lists/theme-settable.json | 317 +++++++++++++++- 8 files changed, 459 insertions(+), 499 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/colorView/_index.scss b/packages/devextreme-scss/scss/widgets/base/colorView/_index.scss index f226a5938c2a..fec9bd50437e 100644 --- a/packages/devextreme-scss/scss/widgets/base/colorView/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/colorView/_index.scss @@ -1,17 +1,38 @@ @use "../mixins" as *; -$color-view-container-width: 450px; -$color-view-palette-width: 288px; -$color-view-palette-height: 299px; -$color-view-alpha-width: 292px; -$color-view-hue-scale-width: 18px; -$color-view-hue-scale-height: $color-view-palette-height; - -$colorview-palette-handle-size: 28px; +$color-view-container-width: 450px !default; +$color-view-palette-width: 288px !default; +$color-view-palette-height: 299px !default; +$color-view-alpha-width: 292px !default; +$color-view-hue-scale-width: 18px !default; +$color-view-hue-scale-height: $color-view-palette-height !default; +$color-view-hue-scale-wrapper-height: $color-view-hue-scale-height + 2 !default; + +/* + * The handle is a drawing, not a box: its size is interlocked with the ring radii of the + * radial-gradient and the inset shadows in _mixins.scss. Changing one without redrawing the + * others breaks the handle, so these stay fixed rather than becoming knobs. + */ +$colorview-palette-handle-size: 28px; // dx-fixed-size: diameter of the round palette handle, drawn as rings at 6/7/12/13px $colorview-transparent-background-color: #ccc; -$colorview-handle-first-side-size: 36px; -$colorview-handle-second-side-size: 17px; +$colorview-handle-first-side-size: 36px; // dx-fixed-size: long side of the scale handles, drawn by the inset shadows +$colorview-handle-second-side-size: 17px; // dx-fixed-size: short side of the scale handles, drawn by the inset shadows + +// Design sizing values (parametrizable; fluent-next injects tokens) +$color-view-label-hex-margin: 10px 0 0 0 !default; +$color-view-alpha-label-margin-inline-start: 43px !default; +$color-view-alpha-label-margin-inline-start-rtl: 41px !default; +$color-view-alpha-label-width: 115px !default; +$color-view-textbox-width: 69px !default; +$color-view-textbox-margin: 1px 1px 10px 0 !default; +$color-view-alpha-row-margin-block-start: 10px !default; +$color-view-hue-scale-cell-margin-inline-start: 19px !default; +$color-view-controls-width: 90px !default; +$color-view-controls-margin-inline-start: 27px !default; +$color-view-controls-margin-inline-start-rtl: 25px !default; +$color-view-color-preview-width: 86px !default; +$color-view-color-preview-height: 40px !default; .dx-colorview-container { width: $color-view-container-width; @@ -24,18 +45,18 @@ $colorview-handle-second-side-size: 17px; white-space: normal; &.dx-colorview-label-hex { - margin: 10px 0 0 0; + margin: $color-view-label-hex-margin; } &.dx-colorview-alpha-channel-label { - margin-left: 43px; - width: 115px; + margin-left: $color-view-alpha-label-margin-inline-start; + width: $color-view-alpha-label-width; } .dx-texteditor { - width: 69px; + width: $color-view-textbox-width; float: right; - margin: 1px 1px 10px 0; + margin: $color-view-textbox-margin; } } @@ -57,14 +78,14 @@ $colorview-handle-second-side-size: 17px; .dx-colorview-container-row { overflow: hidden; - padding: 1px 0; + padding: 1px 0; // dx-line-width: room for the 1px hairline ring the cells inside carry, which overflow: hidden would clip &:first-child { margin-top: 0; } &.dx-colorview-alpha-channel-row { - margin-top: 10px; + margin-top: $color-view-alpha-row-margin-block-start; } } @@ -93,13 +114,13 @@ $colorview-handle-second-side-size: 17px; width: $colorview-handle-first-side-size; height: $colorview-handle-second-side-size; top: 0; - left: -7px; + left: -7px; // dx-px-nudge: centres the handle across the hue scale, counting its own border } .dx-colorview-alpha-channel-handle { width: $colorview-handle-second-side-size; height: $colorview-handle-first-side-size; - top: -6px; + top: -6px; // dx-px-nudge: centres the handle across the alpha scale, counting its own border left: 0; } @@ -117,12 +138,12 @@ $colorview-handle-second-side-size: 17px; .dx-colorview-alpha-channel-wrapper, .dx-colorbox-input-container::after { background-image: linear-gradient(45deg, $colorview-transparent-background-color 25%, transparent 25%, transparent 74%, $colorview-transparent-background-color 75%, $colorview-transparent-background-color), linear-gradient(45deg, $colorview-transparent-background-color 25%, transparent 25%, transparent 74%, $colorview-transparent-background-color 75%, $colorview-transparent-background-color); - background-size: 16px 16px; - background-position: 0 0, 8px 8px; + background-size: 16px 16px; // dx-fixed-size: tile of the transparency checkerboard, drawn by two offset gradients + background-position: 0 0, 8px 8px; // dx-fixed-size: half the tile, which is what makes the two gradients read as a checkerboard } .dx-colorview-alpha-channel-wrapper { - background-position: 0 6px, 8px 14px; + background-position: 0 6px, 8px 14px; // dx-fixed-size: the same checkerboard, shifted to sit inside the alpha scale } .dx-colorbox-input-container { @@ -164,23 +185,23 @@ $colorview-handle-second-side-size: 17px; } .dx-colorview-hue-scale-cell { - margin-left: 19px; + margin-left: $color-view-hue-scale-cell-margin-inline-start; position: relative; } .dx-colorview-hue-scale-wrapper { - height: $color-view-hue-scale-height + 2; + height: $color-view-hue-scale-wrapper-height; } .dx-colorview-controls-container { position: relative; - width: 90px; - margin-left: 27px; + width: $color-view-controls-width; + margin-left: $color-view-controls-margin-inline-start; } .dx-colorview-color-preview { - width: 86px; - height: 40px; + width: $color-view-color-preview-width; + height: $color-view-color-preview-height; } .dx-colorview-alpha-channel-cell { @@ -189,7 +210,7 @@ $colorview-handle-second-side-size: 17px; width: $color-view-alpha-width; .dx-button { - width: 90px; + width: $color-view-controls-width; } } @@ -201,14 +222,14 @@ $colorview-handle-second-side-size: 17px; } .dx-colorview-hue-scale-cell { - margin-right: 19px; + margin-right: $color-view-hue-scale-cell-margin-inline-start; margin-left: 0; } .dx-colorview-container { label { &.dx-colorview-alpha-channel-label { - margin-right: 41px; + margin-right: $color-view-alpha-label-margin-inline-start-rtl; margin-left: 0; } @@ -219,7 +240,7 @@ $colorview-handle-second-side-size: 17px; } .dx-colorview-controls-container { - margin-right: 25px; + margin-right: $color-view-controls-margin-inline-start-rtl; margin-left: 0; } diff --git a/packages/devextreme-scss/scss/widgets/base/colorView/_mixins.scss b/packages/devextreme-scss/scss/widgets/base/colorView/_mixins.scss index 3c01a4e7d145..632c56c5c286 100644 --- a/packages/devextreme-scss/scss/widgets/base/colorView/_mixins.scss +++ b/packages/devextreme-scss/scss/widgets/base/colorView/_mixins.scss @@ -1,18 +1,18 @@ @mixin dx-base-colorview-styles($handle-color, $handle-border-color) { .dx-colorview-palette-handle { - background: radial-gradient(transparent 5px, $handle-border-color 6px, $handle-color 7px, $handle-color 12px, $handle-border-color 13px); - box-shadow: 0 1px 1px 0 $handle-border-color; + background: radial-gradient(transparent 5px, $handle-border-color 6px, $handle-color 7px, $handle-color 12px, $handle-border-color 13px); // dx-fixed-size: the handle is drawn, not laid out — a transparent core to 5px, a 1px ring at 6px, fill to 12px and a 1px ring at 13px, inside the 28px diameter + box-shadow: 0 1px 1px 0 $handle-border-color; // dx-shadow-geometry: lifts the round handle off the palette } .dx-colorview-hue-scale-handle { - border: 1px solid; + border: 1px solid; // dx-line-width: hairline outline of the handle border-color: $handle-border-color; - box-shadow: inset -5px 0 0 3px $handle-color, inset 5px 0 0 3px $handle-color, inset -6px 0 1px 4px $handle-border-color, inset 6px 0 1px 4px $handle-border-color; + box-shadow: inset -5px 0 0 3px $handle-color, inset 5px 0 0 3px $handle-color, inset -6px 0 1px 4px $handle-border-color, inset 6px 0 1px 4px $handle-border-color; // dx-shadow-geometry: the grip is drawn entirely with inset shadows — 5px bars inset from both sides, each edged by a 1px ring at 6px } .dx-colorview-alpha-channel-handle { - border: 1px solid; + border: 1px solid; // dx-line-width: hairline outline of the handle border-color: $handle-border-color; - box-shadow: inset 0 -5px 0 3px $handle-color, inset 0 5px 0 3px $handle-color, inset 0 -6px 1px 4px $handle-border-color, inset 0 6px 1px 4px $handle-border-color; + box-shadow: inset 0 -5px 0 3px $handle-color, inset 0 5px 0 3px $handle-color, inset 0 -6px 1px 4px $handle-border-color, inset 0 6px 1px 4px $handle-border-color; // dx-shadow-geometry: the same grip turned 90deg for the horizontal scale } } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_index.scss index 8ec8e22df34c..ae83634ae0c2 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_index.scss @@ -1,76 +1,52 @@ @use "colors" as *; @use "sizes" as *; @use "../../base/colorView/mixins" as *; -@use "../../base/colorView"; +@use "../../base/colorView" with ( + $color-view-container-width: var(--dx-color-view-container-width), + $color-view-palette-width: var(--dx-color-view-palette-width), + $color-view-palette-height: var(--dx-color-view-palette-height), + $color-view-alpha-width: var(--dx-color-view-alpha-width), + $color-view-hue-scale-width: var(--dx-color-view-hue-scale-width), + $color-view-hue-scale-height: var(--dx-color-view-hue-scale-height), + $color-view-hue-scale-wrapper-height: var(--dx-color-view-hue-scale-wrapper-height), + $color-view-label-hex-margin: var(--dx-color-view-container-hex-margin), + $color-view-alpha-label-margin-inline-start: var(--dx-color-view-container-alpha-label-margin), + $color-view-alpha-label-margin-inline-start-rtl: var(--dx-color-view-container-alpha-label-margin), + $color-view-alpha-label-width: var(--dx-color-view-container-alpha-label-width), + $color-view-textbox-width: var(--dx-color-view-container-textbox-width), + $color-view-textbox-margin: var(--dx-color-view-container-textbox-margin), + $color-view-alpha-row-margin-block-start: var(--dx-color-view-alpha-margin), + $color-view-hue-scale-cell-margin-inline-start: var(--dx-color-view-hue-scale-margin), + $color-view-controls-width: var(--dx-color-view-controls-container-width), + $color-view-controls-margin-inline-start: var(--dx-color-view-controls-container-margin), + $color-view-controls-margin-inline-start-rtl: var(--dx-color-view-controls-container-margin), + $color-view-color-preview-width: 100%, + $color-view-color-preview-height: var(--dx-color-view-color-preview-height), +); @include dx-base-colorview-styles(var(--dx-color-view-handle-content), var(--dx-color-view-handle-border)); .dx-colorview-container { - width: var(--dx-color-view-container-width); - label { line-height: var(--dx-color-view-container-line-height); display: flex; align-items: center; margin-bottom: var(--dx-color-view-container-margin-block-end); - &.dx-colorview-label-hex { - margin: var(--dx-color-view-container-hex-margin); - } - + /* + * Kept as a whole declaration on purpose: it also resets the margin-bottom above, which the + * base rule — it sets margin-inline-start alone — would leave in place. + */ &.dx-colorview-alpha-channel-label { margin: 0 0 0 var(--dx-color-view-container-alpha-label-margin); - width: var(--dx-color-view-container-alpha-label-width); - } - - .dx-texteditor { - width: var(--dx-color-view-container-textbox-width); - margin: var(--dx-color-view-container-textbox-margin); } } } -.dx-colorview-hue-scale-cell { - margin-left: var(--dx-color-view-hue-scale-margin); -} - -.dx-colorview-palette { - width: var(--dx-color-view-palette-width); - height: var(--dx-color-view-palette-height); -} - -.dx-colorview-alpha-channel-scale { - width: var(--dx-color-view-palette-width); -} - .dx-colorview-container-row.dx-colorview-alpha-channel-row { - margin-top: var(--dx-color-view-alpha-margin); display: flex; align-items: center; } -.dx-colorview-hue-scale { - width: var(--dx-color-view-hue-scale-width); - height: var(--dx-color-view-hue-scale-height); -} - -.dx-colorview-alpha-channel-cell { - width: var(--dx-color-view-alpha-width); -} - -.dx-colorview-hue-scale-wrapper { - height: var(--dx-color-view-hue-scale-wrapper-height); -} - -.dx-colorview-color-preview { - width: 100%; - height: var(--dx-color-view-color-preview-height); -} - -.dx-colorview-controls-container { - width: var(--dx-color-view-controls-container-width); - margin-left: var(--dx-color-view-controls-container-margin); -} - .dx-colorview-container label { // stylelint-disable-line no-duplicate-selectors color: var(--dx-color-view-label-content); } @@ -89,24 +65,3 @@ .dx-colorview-color-preview-container { margin-bottom: var(--dx-color-view-preview-container-margin); } - -.dx-rtl { - .dx-colorview-controls-container { - margin-left: 0; - margin-right: var(--dx-color-view-controls-container-margin); - } - - .dx-colorview-hue-scale-cell { - margin-left: 0; - margin-right: var(--dx-color-view-hue-scale-margin); - } - - .dx-colorview-container { - label { - &.dx-colorview-alpha-channel-label { - margin-left: 0; - margin-right: var(--dx-color-view-container-alpha-label-margin); - } - } - } -} diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 527b27f815d2..44258c2489ef 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,8 +1,8 @@ { "openKnobs": 0, - "unclassified": 142, + "unclassified": 78, "unclassifiedByWidget": { "gridBase": 75, - "colorView": 67 + "colorView": 3 } } diff --git a/packages/devextreme-scss/tools/review/px-audit.mjs b/packages/devextreme-scss/tools/review/px-audit.mjs index 9e63b2999f33..f2f444660278 100644 --- a/packages/devextreme-scss/tools/review/px-audit.mjs +++ b/packages/devextreme-scss/tools/review/px-audit.mjs @@ -50,6 +50,12 @@ const split = (line) => { }; const ENDS_STATEMENT = /[;{}]$/; +/* + * Tested against the code half of the line: a declaration that carries a trailing marker still + * ends its statement, and without stripping the comment the walk below sails past it and lets a + * later declaration inherit a marker that was never written for it. + */ +const endsStatement = (line) => ENDS_STATEMENT.test(split(line).code.trim()); const nonBlankAbove = (lines, index) => { for (let at = index - 1; at >= 0; at -= 1) if (lines[at].trim() !== '') return at; return -1; @@ -69,12 +75,12 @@ const nonBlankAbove = (lines, index) => { */ const inheritedComment = (raw, index) => { const above = nonBlankAbove(raw, index); - if (above === -1 || ENDS_STATEMENT.test(raw[above].trim())) return ''; + if (above === -1 || endsStatement(raw[above])) return ''; let start = index; while (start > 0) { const previous = nonBlankAbove(raw, start); - if (previous === -1 || ENDS_STATEMENT.test(raw[previous].trim())) break; + if (previous === -1 || endsStatement(raw[previous])) break; start = previous; } diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 54100f99d619..7787499295f1 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -11,22 +11,22 @@ and carries a marker saying why. | | occurrences | |---|---| -| a raw grep of the layer | 768 | -| …of those, inside comments (commented-out code, prose) | 13 | -| **in code** | **755** | -| — the theme can already set from outside | 460 | -| — nailed into the shared layer | 295 | +| a raw grep of the layer | 778 | +| …of those, inside comments (commented-out code, prose) | 25 | +| **in code** | **753** | +| — the theme can already set from outside | 480 | +| — nailed into the shared layer | 273 | ## What the theme can already set -460 occurrences in 396 `!default` variables. fluent-next already passes 436; 0 are open knobs nobody turns. +480 occurrences in 414 `!default` variables. fluent-next already passes 456; 0 are open knobs nobody turns. ## What is nailed into the layer -| widget | inline | geometry | local-var | total | +| widget | inline | local-var | geometry | total | |---|---|---|---|---| -| gridBase | 50 | 7 | 18 | **75** | -| colorView | 35 | 24 | 8 | **67** | +| gridBase | 50 | 18 | 7 | **75** | +| colorView | 3 | | | **3** | ## Places, by widget @@ -149,81 +149,11 @@ and carries a marker saying why. - `scss/widgets/base/gridBase/layout/aiChat/_variables.scss:5` · local-var `$ai-chat-message-regenerate-button-border-radius: 4px;` -### colorView — 67 +### colorView — 3 -- `scss/widgets/base/colorView/_index.scss:3` · local-var - `$color-view-container-width: 450px;` -- `scss/widgets/base/colorView/_index.scss:4` · local-var - `$color-view-palette-width: 288px;` -- `scss/widgets/base/colorView/_index.scss:5` · local-var - `$color-view-palette-height: 299px;` -- `scss/widgets/base/colorView/_index.scss:6` · local-var - `$color-view-alpha-width: 292px;` -- `scss/widgets/base/colorView/_index.scss:7` · local-var - `$color-view-hue-scale-width: 18px;` -- `scss/widgets/base/colorView/_index.scss:10` · local-var - `$colorview-palette-handle-size: 28px;` -- `scss/widgets/base/colorView/_index.scss:13` · local-var - `$colorview-handle-first-side-size: 36px;` -- `scss/widgets/base/colorView/_index.scss:14` · local-var - `$colorview-handle-second-side-size: 17px;` -- `scss/widgets/base/colorView/_index.scss:27` · inline - `margin: 10px 0 0 0;` -- `scss/widgets/base/colorView/_index.scss:31` · inline - `margin-left: 43px;` -- `scss/widgets/base/colorView/_index.scss:32` · inline - `width: 115px;` -- `scss/widgets/base/colorView/_index.scss:36` · inline - `width: 69px;` -- `scss/widgets/base/colorView/_index.scss:38` · inline - `margin: 1px 1px 10px 0;` -- `scss/widgets/base/colorView/_index.scss:47` · inline +- `scss/widgets/base/colorView/_index.scss:68` · inline `margin-right: 10px;` -- `scss/widgets/base/colorView/_index.scss:60` · inline - `padding: 1px 0;` -- `scss/widgets/base/colorView/_index.scss:67` · inline - `margin-top: 10px;` -- `scss/widgets/base/colorView/_index.scss:96` · inline - `left: -7px;` -- `scss/widgets/base/colorView/_index.scss:102` · inline - `top: -6px;` -- `scss/widgets/base/colorView/_index.scss:120` · inline - `background-size: 16px 16px;` -- `scss/widgets/base/colorView/_index.scss:121` · inline - `background-position: 0 0, 8px 8px;` -- `scss/widgets/base/colorView/_index.scss:125` · inline - `background-position: 0 6px, 8px 14px;` -- `scss/widgets/base/colorView/_index.scss:162` · inline - `height: 20px;` -- `scss/widgets/base/colorView/_index.scss:167` · inline - `margin-left: 19px;` -- `scss/widgets/base/colorView/_index.scss:177` · inline - `width: 90px;` -- `scss/widgets/base/colorView/_index.scss:178` · inline - `margin-left: 27px;` -- `scss/widgets/base/colorView/_index.scss:182` · inline - `width: 86px;` - `scss/widgets/base/colorView/_index.scss:183` · inline - `height: 40px;` -- `scss/widgets/base/colorView/_index.scss:187` · inline + `height: 20px;` +- `scss/widgets/base/colorView/_index.scss:208` · inline `margin: 6px 0;` -- `scss/widgets/base/colorView/_index.scss:192` · inline - `width: 90px;` -- `scss/widgets/base/colorView/_index.scss:204` · inline - `margin-right: 19px;` -- `scss/widgets/base/colorView/_index.scss:211` · inline - `margin-right: 41px;` -- `scss/widgets/base/colorView/_index.scss:222` · inline - `margin-right: 25px;` -- `scss/widgets/base/colorView/_mixins.scss:3` · inline - `background: radial-gradient(transparent 5px, $handle-border-color 6px, $handle-color 7px, $handle-color 12px, $handle-border-color 13px);` -- `scss/widgets/base/colorView/_mixins.scss:4` · geometry - `box-shadow: 0 1px 1px 0 $handle-border-color;` -- `scss/widgets/base/colorView/_mixins.scss:8` · geometry - `border: 1px solid;` -- `scss/widgets/base/colorView/_mixins.scss:10` · geometry - `box-shadow: inset -5px 0 0 3px $handle-color, inset 5px 0 0 3px $handle-color, inset -6px 0 1px 4px $handle-border-color, inset 6px 0 1px 4px $handle-border-color;` -- `scss/widgets/base/colorView/_mixins.scss:14` · geometry - `border: 1px solid;` -- `scss/widgets/base/colorView/_mixins.scss:16` · geometry - `box-shadow: inset 0 -5px 0 3px $handle-color, inset 0 5px 0 3px $handle-color, inset 0 -6px 1px 4px $handle-border-color, inset 0 6px 1px 4px $handle-border-color;` diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index c94da4089bdd..beeff3605e4f 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,11 +6,11 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 295, + "occurrences": 273, "byCategory": { - "inline": 143, + "inline": 126, "geometry": 69, - "local-var": 58, + "local-var": 53, "calc": 9, "structural": 8, "mixin-arg": 6, @@ -18,7 +18,7 @@ }, "byWidget": { "gridBase": 75, - "colorView": 67, + "colorView": 45, "scheduler": 33, "textEditor": 26, "htmlEditor": 16, @@ -47,10 +47,10 @@ "toolbar": 1, "treeView": 1 }, - "unmarked": 142, + "unmarked": 78, "unmarkedByWidget": { "gridBase": 75, - "colorView": 67 + "colorView": 3 } }, "places": [ @@ -699,164 +699,43 @@ }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 3, - "widget": "colorView", - "literals": [ - "450px" - ], - "occurrences": 1, - "marker": null, - "text": "$color-view-container-width: 450px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 4, - "widget": "colorView", - "literals": [ - "288px" - ], - "occurrences": 1, - "marker": null, - "text": "$color-view-palette-width: 288px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 5, - "widget": "colorView", - "literals": [ - "299px" - ], - "occurrences": 1, - "marker": null, - "text": "$color-view-palette-height: 299px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 6, - "widget": "colorView", - "literals": [ - "292px" - ], - "occurrences": 1, - "marker": null, - "text": "$color-view-alpha-width: 292px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 7, - "widget": "colorView", - "literals": [ - "18px" - ], - "occurrences": 1, - "marker": null, - "text": "$color-view-hue-scale-width: 18px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 10, + "line": 16, "widget": "colorView", "literals": [ "28px" ], "occurrences": 1, - "marker": null, - "text": "$colorview-palette-handle-size: 28px;", + "marker": "dx-fixed-size", + "text": "$colorview-palette-handle-size: 28px; // dx-fixed-size: diameter of the round palette handle, drawn as rings at 6/7/12/13px", "category": "local-var" }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 13, + "line": 19, "widget": "colorView", "literals": [ "36px" ], "occurrences": 1, - "marker": null, - "text": "$colorview-handle-first-side-size: 36px;", + "marker": "dx-fixed-size", + "text": "$colorview-handle-first-side-size: 36px; // dx-fixed-size: long side of the scale handles, drawn by the inset shadows", "category": "local-var" }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 14, + "line": 20, "widget": "colorView", "literals": [ "17px" ], "occurrences": 1, - "marker": null, - "text": "$colorview-handle-second-side-size: 17px;", + "marker": "dx-fixed-size", + "text": "$colorview-handle-second-side-size: 17px; // dx-fixed-size: short side of the scale handles, drawn by the inset shadows", "category": "local-var" }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 27, - "widget": "colorView", - "literals": [ - "10px" - ], - "occurrences": 1, - "marker": null, - "text": "margin: 10px 0 0 0;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 31, - "widget": "colorView", - "literals": [ - "43px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-left: 43px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 32, - "widget": "colorView", - "literals": [ - "115px" - ], - "occurrences": 1, - "marker": null, - "text": "width: 115px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 36, - "widget": "colorView", - "literals": [ - "69px" - ], - "occurrences": 1, - "marker": null, - "text": "width: 69px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 38, - "widget": "colorView", - "literals": [ - "1px", - "10px" - ], - "occurrences": 3, - "marker": null, - "text": "margin: 1px 1px 10px 0;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 47, + "line": 68, "widget": "colorView", "literals": [ "10px" @@ -868,79 +747,67 @@ }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 60, + "line": 81, "widget": "colorView", "literals": [ "1px" ], "occurrences": 1, - "marker": null, - "text": "padding: 1px 0;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 67, - "widget": "colorView", - "literals": [ - "10px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-top: 10px;", + "marker": "dx-line-width", + "text": "padding: 1px 0; // dx-line-width: room for the 1px hairline ring the cells inside carry, which overflow: hidden would clip", "category": "inline" }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 96, + "line": 117, "widget": "colorView", "literals": [ "-7px" ], "occurrences": 1, - "marker": null, - "text": "left: -7px;", + "marker": "dx-px-nudge", + "text": "left: -7px; // dx-px-nudge: centres the handle across the hue scale, counting its own border", "category": "inline" }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 102, + "line": 123, "widget": "colorView", "literals": [ "-6px" ], "occurrences": 1, - "marker": null, - "text": "top: -6px;", + "marker": "dx-px-nudge", + "text": "top: -6px; // dx-px-nudge: centres the handle across the alpha scale, counting its own border", "category": "inline" }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 120, + "line": 141, "widget": "colorView", "literals": [ "16px" ], "occurrences": 2, - "marker": null, - "text": "background-size: 16px 16px;", + "marker": "dx-fixed-size", + "text": "background-size: 16px 16px; // dx-fixed-size: tile of the transparency checkerboard, drawn by two offset gradients", "category": "inline" }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 121, + "line": 142, "widget": "colorView", "literals": [ "8px" ], "occurrences": 2, - "marker": null, - "text": "background-position: 0 0, 8px 8px;", + "marker": "dx-fixed-size", + "text": "background-position: 0 0, 8px 8px; // dx-fixed-size: half the tile, which is what makes the two gradients read as a checkerboard", "category": "inline" }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 125, + "line": 146, "widget": "colorView", "literals": [ "6px", @@ -948,13 +815,13 @@ "14px" ], "occurrences": 3, - "marker": null, - "text": "background-position: 0 6px, 8px 14px;", + "marker": "dx-fixed-size", + "text": "background-position: 0 6px, 8px 14px; // dx-fixed-size: the same checkerboard, shifted to sit inside the alpha scale", "category": "inline" }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 162, + "line": 183, "widget": "colorView", "literals": [ "20px" @@ -966,67 +833,7 @@ }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 167, - "widget": "colorView", - "literals": [ - "19px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-left: 19px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 177, - "widget": "colorView", - "literals": [ - "90px" - ], - "occurrences": 1, - "marker": null, - "text": "width: 90px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 178, - "widget": "colorView", - "literals": [ - "27px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-left: 27px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 182, - "widget": "colorView", - "literals": [ - "86px" - ], - "occurrences": 1, - "marker": null, - "text": "width: 86px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 183, - "widget": "colorView", - "literals": [ - "40px" - ], - "occurrences": 1, - "marker": null, - "text": "height: 40px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 187, + "line": 208, "widget": "colorView", "literals": [ "6px" @@ -1036,54 +843,6 @@ "text": "margin: 6px 0;", "category": "inline" }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 192, - "widget": "colorView", - "literals": [ - "90px" - ], - "occurrences": 1, - "marker": null, - "text": "width: 90px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 204, - "widget": "colorView", - "literals": [ - "19px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-right: 19px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 211, - "widget": "colorView", - "literals": [ - "41px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-right: 41px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 222, - "widget": "colorView", - "literals": [ - "25px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-right: 25px;", - "category": "inline" - }, { "file": "scss/widgets/base/colorView/_mixins.scss", "line": 3, @@ -1096,8 +855,8 @@ "13px" ], "occurrences": 5, - "marker": null, - "text": "background: radial-gradient(transparent 5px, $handle-border-color 6px, $handle-color 7px, $handle-color 12px, $handle-border-color 13px);", + "marker": "dx-fixed-size", + "text": "background: radial-gradient(transparent 5px, $handle-border-color 6px, $handle-color 7px, $handle-color 12px, $handle-border-color 13px); // dx-fixed-size: the handle is drawn, not laid out — a transparent core to 5px, a 1px ring at 6px, fill to 12px and a 1px ring at 13px, inside the 28px diameter", "category": "inline" }, { @@ -1108,8 +867,8 @@ "1px" ], "occurrences": 2, - "marker": null, - "text": "box-shadow: 0 1px 1px 0 $handle-border-color;", + "marker": "dx-shadow-geometry", + "text": "box-shadow: 0 1px 1px 0 $handle-border-color; // dx-shadow-geometry: lifts the round handle off the palette", "category": "geometry" }, { @@ -1120,8 +879,8 @@ "1px" ], "occurrences": 1, - "marker": null, - "text": "border: 1px solid;", + "marker": "dx-line-width", + "text": "border: 1px solid; // dx-line-width: hairline outline of the handle", "category": "geometry" }, { @@ -1138,8 +897,8 @@ "6px" ], "occurrences": 10, - "marker": null, - "text": "box-shadow: inset -5px 0 0 3px $handle-color, inset 5px 0 0 3px $handle-color, inset -6px 0 1px 4px $handle-border-color, inset 6px 0 1px 4px $handle-border-color;", + "marker": "dx-shadow-geometry", + "text": "box-shadow: inset -5px 0 0 3px $handle-color, inset 5px 0 0 3px $handle-color, inset -6px 0 1px 4px $handle-border-color, inset 6px 0 1px 4px $handle-border-color; // dx-shadow-geometry: the grip is drawn entirely with inset shadows — 5px bars inset from both sides, each edged by a 1px ring at 6px", "category": "geometry" }, { @@ -1150,8 +909,8 @@ "1px" ], "occurrences": 1, - "marker": null, - "text": "border: 1px solid;", + "marker": "dx-line-width", + "text": "border: 1px solid; // dx-line-width: hairline outline of the handle", "category": "geometry" }, { @@ -1168,8 +927,8 @@ "6px" ], "occurrences": 10, - "marker": null, - "text": "box-shadow: inset 0 -5px 0 3px $handle-color, inset 0 5px 0 3px $handle-color, inset 0 -6px 1px 4px $handle-border-color, inset 0 6px 1px 4px $handle-border-color;", + "marker": "dx-shadow-geometry", + "text": "box-shadow: inset 0 -5px 0 3px $handle-color, inset 0 5px 0 3px $handle-color, inset 0 -6px 1px 4px $handle-border-color, inset 0 6px 1px 4px $handle-border-color; // dx-shadow-geometry: the same grip turned 90deg for the horizontal scale", "category": "geometry" }, { diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index a835dbd05a99..107d217861f8 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 460, - "variables": 396, - "injected": 436, + "occurrences": 480, + "variables": 414, + "injected": 456, "open": 0, "parameters": 24 }, @@ -1370,7 +1370,7 @@ "9px" ], "occurrences": 1, - "marker": "dx-fixed-size", + "marker": null, "text": "$pagination-info-paddings: 9px !default;", "variable": "pagination-info-paddings", "kind": "module-variable", @@ -1771,7 +1771,7 @@ "14px" ], "occurrences": 1, - "marker": "dx-fixed-size", + "marker": null, "text": "$slider-label-position-bottom-padding-bottom: 14px !default;", "variable": "slider-label-position-bottom-padding-bottom", "kind": "module-variable", @@ -2076,7 +2076,7 @@ "1px" ], "occurrences": 1, - "marker": "dx-relative", + "marker": null, "text": "$validation-summary-item-border-bottom-width: 1px !default;", "variable": "validation-summary-item-border-bottom-width", "kind": "module-variable", @@ -2382,6 +2382,295 @@ "setBy": "scss/widgets/fluent-next/colorBox/_index.scss", "setTo": "var(--dx-color-box-toolbar-item-padding-inline-end)" }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 3, + "widget": "colorView", + "literals": [ + "450px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-container-width: 450px !default;", + "variable": "color-view-container-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-container-width)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 4, + "widget": "colorView", + "literals": [ + "288px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-palette-width: 288px !default;", + "variable": "color-view-palette-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-palette-width)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 5, + "widget": "colorView", + "literals": [ + "299px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-palette-height: 299px !default;", + "variable": "color-view-palette-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-palette-height)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 6, + "widget": "colorView", + "literals": [ + "292px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-alpha-width: 292px !default;", + "variable": "color-view-alpha-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-alpha-width)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 7, + "widget": "colorView", + "literals": [ + "18px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-hue-scale-width: 18px !default;", + "variable": "color-view-hue-scale-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-hue-scale-width)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 23, + "widget": "colorView", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-label-hex-margin: 10px 0 0 0 !default;", + "variable": "color-view-label-hex-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-container-hex-margin)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 24, + "widget": "colorView", + "literals": [ + "43px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-alpha-label-margin-inline-start: 43px !default;", + "variable": "color-view-alpha-label-margin-inline-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-container-alpha-label-margin)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 25, + "widget": "colorView", + "literals": [ + "41px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-alpha-label-margin-inline-start-rtl: 41px !default;", + "variable": "color-view-alpha-label-margin-inline-start-rtl", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-container-alpha-label-margin)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 26, + "widget": "colorView", + "literals": [ + "115px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-alpha-label-width: 115px !default;", + "variable": "color-view-alpha-label-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-container-alpha-label-width)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 27, + "widget": "colorView", + "literals": [ + "69px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-textbox-width: 69px !default;", + "variable": "color-view-textbox-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-container-textbox-width)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 28, + "widget": "colorView", + "literals": [ + "1px", + "10px" + ], + "occurrences": 3, + "marker": null, + "text": "$color-view-textbox-margin: 1px 1px 10px 0 !default;", + "variable": "color-view-textbox-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-container-textbox-margin)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 29, + "widget": "colorView", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-alpha-row-margin-block-start: 10px !default;", + "variable": "color-view-alpha-row-margin-block-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-alpha-margin)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 30, + "widget": "colorView", + "literals": [ + "19px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-hue-scale-cell-margin-inline-start: 19px !default;", + "variable": "color-view-hue-scale-cell-margin-inline-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-hue-scale-margin)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 31, + "widget": "colorView", + "literals": [ + "90px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-controls-width: 90px !default;", + "variable": "color-view-controls-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-controls-container-width)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 32, + "widget": "colorView", + "literals": [ + "27px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-controls-margin-inline-start: 27px !default;", + "variable": "color-view-controls-margin-inline-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-controls-container-margin)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 33, + "widget": "colorView", + "literals": [ + "25px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-controls-margin-inline-start-rtl: 25px !default;", + "variable": "color-view-controls-margin-inline-start-rtl", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-controls-container-margin)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 34, + "widget": "colorView", + "literals": [ + "86px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-color-preview-width: 86px !default;", + "variable": "color-view-color-preview-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "100%" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 35, + "widget": "colorView", + "literals": [ + "40px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-color-preview-height: 40px !default;", + "variable": "color-view-color-preview-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-color-preview-height)" + }, { "file": "scss/widgets/base/dataGrid/_index.scss", "line": 13, @@ -3800,7 +4089,7 @@ "3px" ], "occurrences": 1, - "marker": "dx-relative", + "marker": null, "text": "$filemanager-splitter-wrapper-right: 3px !default;", "variable": "filemanager-splitter-wrapper-right", "kind": "module-variable", @@ -4635,7 +4924,7 @@ "22px" ], "occurrences": 1, - "marker": "dx-fixed-size", + "marker": null, "text": "$scheduler-appointment-collector-height: 22px !default;", "variable": "scheduler-appointment-collector-height", "kind": "module-variable", @@ -4910,7 +5199,7 @@ "15px" ], "occurrences": 3, - "marker": "dx-shadow-geometry", + "marker": null, "text": "$scheduler-appointment-dragging-shadow: 7px 7px 15px 0 rgba(50, 50, 50, 0.2) !default;", "variable": "scheduler-appointment-dragging-shadow", "kind": "module-variable", @@ -4926,7 +5215,7 @@ "12px" ], "occurrences": 1, - "marker": "dx-shadow-geometry", + "marker": null, "text": "$scheduler-grouped-appointment-month-text-size: 12px !default;", "variable": "scheduler-grouped-appointment-month-text-size", "kind": "module-variable", @@ -5134,7 +5423,7 @@ "18px" ], "occurrences": 1, - "marker": "dx-shadow-geometry", + "marker": null, "text": "$scheduler-appointment-icon-font-size: 18px !default;", "variable": "scheduler-appointment-icon-font-size", "kind": "module-variable", @@ -5953,7 +6242,7 @@ "20px" ], "occurrences": 1, - "marker": "dx-fixed-size", + "marker": null, "text": "$scheduler-workspace-info-font-size: 20px !default;", "variable": "scheduler-workspace-info-font-size", "kind": "module-variable", @@ -5985,7 +6274,7 @@ "30px" ], "occurrences": 1, - "marker": "dx-px-nudge", + "marker": null, "text": "$scheduler-group-header-table-cell-height: 30px !default;", "variable": "scheduler-group-header-table-cell-height", "kind": "module-variable", @@ -6001,7 +6290,7 @@ "16px" ], "occurrences": 1, - "marker": "dx-fixed-size", + "marker": null, "text": "$scheduler-month-date-text-size: 16px !default;", "variable": "scheduler-month-date-text-size", "kind": "module-variable", From 2c135c250d4cdf6cac4789678c8c3ae0bd1af509 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Wed, 2 Sep 2026 14:07:27 +0200 Subject: [PATCH 23/25] Tokenize gridBase --- .../scss/widgets/base/gridBase/_index.scss | 24 ++-- .../widgets/base/gridBase/_variables.scss | 8 +- .../base/gridBase/layout/aiChat/_mixins.scss | 2 +- .../widgets/fluent-next/gridBase/_index.scss | 16 +++ .../tests/base-size-markers.baseline.json | 4 +- .../tools/review/nested-scopes.json | 2 + .../tools/sizes/lists/BASE-SIZES.md | 50 ++------ .../tools/sizes/lists/base-owned.json | 110 +++++------------- .../tools/sizes/lists/theme-settable.json | 70 ++++++++++- 9 files changed, 143 insertions(+), 143 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/gridBase/_index.scss b/packages/devextreme-scss/scss/widgets/base/gridBase/_index.scss index 8a59bf54afba..595c40637b1b 100644 --- a/packages/devextreme-scss/scss/widgets/base/gridBase/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/gridBase/_index.scss @@ -22,7 +22,7 @@ position: fixed; left: 0; top: 0; - clip: rect(1px, 1px, 1px, 1px); + clip: rect(1px, 1px, 1px, 1px); // dx-structural: clips the a11y live region to nothing while keeping it rendered — the NOTE above; not a size clip-path: polygon(0 0); } @@ -52,7 +52,7 @@ } > .dx-pager { - margin-top: -1px; + margin-top: -1px; // dx-px-nudge: pulls the pager up by one border so its top edge overlaps the grid bottom edge } > .dx-#{$widget-name}-rowsview.dx-last-row-border { @@ -304,7 +304,7 @@ border-collapse: collapse; border-spacing: 0; margin: 0; - max-width: 10px; + max-width: 10px; // dx-structural: deliberately tiny so the table sizes to its columns rather than the container — the fixed variant below resets it to none &.dx-#{$widget-name}-table-fixed { max-width: none; @@ -421,9 +421,9 @@ &::after { content: ""; position: absolute; - border: 2px solid transparent; + border: 2px solid transparent; // dx-line-width: thickness of the invalid-cell ring, drawn on a pseudo-element top: 0; - left: 1px; + left: 1px; // dx-px-nudge: insets that ring by the cell border on the left bottom: 0; right: 0; pointer-events: none; @@ -471,7 +471,7 @@ .dx-#{$widget-name}-headers { position: relative; outline: 0; - min-height: 1px; + min-height: 1px; // dx-structural: one-pixel floor so the headers block keeps layout presence when it has no rows; not a designed height @include user-select(none); } @@ -547,17 +547,17 @@ &.dx-state-focused::after { content: " "; position: absolute; - top: -1px; - bottom: -1px; - left: -1px; - right: -1px; + top: -1px; // dx-px-nudge: pulls the focus ring out over the cell border + bottom: -1px; // dx-px-nudge: pulls the focus ring out over the cell border + left: -1px; // dx-px-nudge: pulls the focus ring out over the cell border + right: -1px; // dx-px-nudge: pulls the focus ring out over the cell border z-index: 1; pointer-events: none; } } .dx-#{$widget-name}-filter-range-end { - border-top: 1px solid transparent; + border-top: 1px solid transparent; // dx-line-width: hairline placeholder keeping the range-end input aligned with the range-start one } .dx-editor-container { @@ -946,7 +946,7 @@ right: 0; left: auto; margin-left: 0; - margin-right: -2px; + margin-right: -2px; // dx-px-nudge: RTL mirror — pulls the menu out by its own border } & > td:first-child .dx-menu { diff --git a/packages/devextreme-scss/scss/widgets/base/gridBase/_variables.scss b/packages/devextreme-scss/scss/widgets/base/gridBase/_variables.scss index c1b6172d3926..827a651f1eb9 100644 --- a/packages/devextreme-scss/scss/widgets/base/gridBase/_variables.scss +++ b/packages/devextreme-scss/scss/widgets/base/gridBase/_variables.scss @@ -1,9 +1,9 @@ $grid-cell-padding: 7px; -$grid-texteditor-input-padding: 32px; +$grid-texteditor-input-padding: 32px !default; $grid-total-footer-paddings: 7px; -$grid-command-select-column-width: 70px; -$grid-command-edit-column-width: 100px; -$grid-command-edit-column-with-icons-width: 80px; +$grid-command-select-column-width: 70px !default; +$grid-command-edit-column-width: 100px !default; +$grid-command-edit-column-with-icons-width: 80px !default; $grid-command-expand-column-width: 30px; $grid-command-adaptive-column-width: 36px; $grid-column-header-indicator-width: 14px; diff --git a/packages/devextreme-scss/scss/widgets/base/gridBase/layout/aiChat/_mixins.scss b/packages/devextreme-scss/scss/widgets/base/gridBase/layout/aiChat/_mixins.scss index 6e992a50baa9..956994ccc337 100644 --- a/packages/devextreme-scss/scss/widgets/base/gridBase/layout/aiChat/_mixins.scss +++ b/packages/devextreme-scss/scss/widgets/base/gridBase/layout/aiChat/_mixins.scss @@ -44,7 +44,7 @@ $border-color, ) { .dx-ai-chat__content .dx-chat-messagegroup-alignment-start .dx-chat-messagebubble { - border-width: 1px; + border-width: 1px; // dx-line-width: hairline border of the incoming message bubble border-style: solid; border-color: $border-color; } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_index.scss index 99b1ecf94140..01b39e8e3f5b 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_index.scss @@ -21,6 +21,22 @@ @use "../scrollable"; @use "../overlay"; @use "../pagination"; + +/* + * base/gridBase/variables holds no rules, so configuring it here changes no CSS position — and + * this is the first load of that module in the graph: the theme's gridBase is used before + * base/dataGrid and base/treeList, which are what pull base/gridBase in. + * + * Only the four whose value the theme already wins on are passed: measured in the browser, the + * rendered min-width of the command columns is the theme's (50px / 115px / 93px) and the filter + * row input padding is the theme's 40px, so the base literals below them never reach the page. + */ +@use "../../base/gridBase/variables" with ( + $grid-texteditor-input-padding: var(--dx-grid-editor-input-padding), + $grid-command-select-column-width: var(--dx-grid-command-select-column-width), + $grid-command-edit-column-width: var(--dx-grid-command-edit-column-width), + $grid-command-edit-column-with-icons-width: var(--dx-grid-command-edit-column-with-icons-width), +); @use "variables" as *; @forward "variables"; @use "layout/cell" as *; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 44258c2489ef..026b4d5cc164 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,8 +1,8 @@ { "openKnobs": 0, - "unclassified": 78, + "unclassified": 58, "unclassifiedByWidget": { - "gridBase": 75, + "gridBase": 55, "colorView": 3 } } diff --git a/packages/devextreme-scss/tools/review/nested-scopes.json b/packages/devextreme-scss/tools/review/nested-scopes.json index 7bf8873018df..3b5d3b5b542b 100644 --- a/packages/devextreme-scss/tools/review/nested-scopes.json +++ b/packages/devextreme-scss/tools/review/nested-scopes.json @@ -255,6 +255,7 @@ "dx-datagrid-column-chooser-list", "dx-datagrid-columns-separator", "dx-datagrid-container", + "dx-datagrid-content", "dx-datagrid-dragview", "dx-datagrid-edit-popup", "dx-datagrid-filter-panel", @@ -279,6 +280,7 @@ "dx-treelist-column-chooser-list", "dx-treelist-columns-separator", "dx-treelist-container", + "dx-treelist-content", "dx-treelist-dragview", "dx-treelist-edit-popup", "dx-treelist-filter-panel", diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 7787499295f1..6152d929180c 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -14,30 +14,26 @@ and carries a marker saying why. | a raw grep of the layer | 778 | | …of those, inside comments (commented-out code, prose) | 25 | | **in code** | **753** | -| — the theme can already set from outside | 480 | -| — nailed into the shared layer | 273 | +| — the theme can already set from outside | 484 | +| — nailed into the shared layer | 269 | ## What the theme can already set -480 occurrences in 414 `!default` variables. fluent-next already passes 456; 0 are open knobs nobody turns. +484 occurrences in 418 `!default` variables. fluent-next already passes 460; 0 are open knobs nobody turns. ## What is nailed into the layer -| widget | inline | local-var | geometry | total | -|---|---|---|---|---| -| gridBase | 50 | 18 | 7 | **75** | -| colorView | 3 | | | **3** | +| widget | inline | local-var | total | +|---|---|---|---| +| gridBase | 41 | 14 | **55** | +| colorView | 3 | | **3** | ## Places, by widget -### gridBase — 75 +### gridBase — 55 -- `scss/widgets/base/gridBase/_index.scss:25` · geometry - `clip: rect(1px, 1px, 1px, 1px);` - `scss/widgets/base/gridBase/_index.scss:37` · inline `margin-right: 5px !important; // stylelint-disable-line declaration-no-important` -- `scss/widgets/base/gridBase/_index.scss:55` · inline - `margin-top: -1px;` - `scss/widgets/base/gridBase/_index.scss:86` · inline `padding-top: 1px;` - `scss/widgets/base/gridBase/_index.scss:91` · inline @@ -54,24 +50,6 @@ and carries a marker saying why. `padding-inline-start: 4px;` - `scss/widgets/base/gridBase/_index.scss:224` · inline `width: 3px;` -- `scss/widgets/base/gridBase/_index.scss:307` · inline - `max-width: 10px;` -- `scss/widgets/base/gridBase/_index.scss:424` · geometry - `border: 2px solid transparent;` -- `scss/widgets/base/gridBase/_index.scss:426` · inline - `left: 1px;` -- `scss/widgets/base/gridBase/_index.scss:474` · inline - `min-height: 1px;` -- `scss/widgets/base/gridBase/_index.scss:550` · inline - `top: -1px;` -- `scss/widgets/base/gridBase/_index.scss:551` · inline - `bottom: -1px;` -- `scss/widgets/base/gridBase/_index.scss:552` · inline - `left: -1px;` -- `scss/widgets/base/gridBase/_index.scss:553` · inline - `right: -1px;` -- `scss/widgets/base/gridBase/_index.scss:560` · geometry - `border-top: 1px solid transparent;` - `scss/widgets/base/gridBase/_index.scss:645` · inline `padding: 5px;` - `scss/widgets/base/gridBase/_index.scss:646` · inline @@ -92,8 +70,6 @@ and carries a marker saying why. `padding: 10px;` - `scss/widgets/base/gridBase/_index.scss:894` · inline `padding: 7px 5px 7px 30px;` -- `scss/widgets/base/gridBase/_index.scss:949` · inline - `margin-right: -2px;` - `scss/widgets/base/gridBase/_index.scss:957` · inline `padding: 5px;` - `scss/widgets/base/gridBase/_index.scss:958` · inline @@ -112,16 +88,8 @@ and carries a marker saying why. `margin-right: 7px;` - `scss/widgets/base/gridBase/_variables.scss:1` · local-var `$grid-cell-padding: 7px;` -- `scss/widgets/base/gridBase/_variables.scss:2` · local-var - `$grid-texteditor-input-padding: 32px;` - `scss/widgets/base/gridBase/_variables.scss:3` · local-var `$grid-total-footer-paddings: 7px;` -- `scss/widgets/base/gridBase/_variables.scss:4` · local-var - `$grid-command-select-column-width: 70px;` -- `scss/widgets/base/gridBase/_variables.scss:5` · local-var - `$grid-command-edit-column-width: 100px;` -- `scss/widgets/base/gridBase/_variables.scss:6` · local-var - `$grid-command-edit-column-with-icons-width: 80px;` - `scss/widgets/base/gridBase/_variables.scss:7` · local-var `$grid-command-expand-column-width: 30px;` - `scss/widgets/base/gridBase/_variables.scss:8` · local-var @@ -136,8 +104,6 @@ and carries a marker saying why. `$grid-sort-index-offset: 3px;` - `scss/widgets/base/gridBase/_variables.scss:13` · local-var `$grid-ai-assistant-confirm-dialog-button-width: 50px;` -- `scss/widgets/base/gridBase/layout/aiChat/_mixins.scss:47` · geometry - `border-width: 1px;` - `scss/widgets/base/gridBase/layout/aiChat/_variables.scss:1` · local-var `$ai-chat-toolbar-item-spacing: 4px;` - `scss/widgets/base/gridBase/layout/aiChat/_variables.scss:2` · local-var diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index beeff3605e4f..a7f7918cb1bc 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,18 +6,18 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 273, + "occurrences": 269, "byCategory": { "inline": 126, "geometry": 69, - "local-var": 53, + "local-var": 49, "calc": 9, "structural": 8, "mixin-arg": 6, "media": 2 }, "byWidget": { - "gridBase": 75, + "gridBase": 71, "colorView": 45, "scheduler": 33, "textEditor": 26, @@ -47,9 +47,9 @@ "toolbar": 1, "treeView": 1 }, - "unmarked": 78, + "unmarked": 58, "unmarkedByWidget": { - "gridBase": 75, + "gridBase": 55, "colorView": 3 } }, @@ -1107,8 +1107,8 @@ "1px" ], "occurrences": 4, - "marker": null, - "text": "clip: rect(1px, 1px, 1px, 1px);", + "marker": "dx-structural", + "text": "clip: rect(1px, 1px, 1px, 1px); // dx-structural: clips the a11y live region to nothing while keeping it rendered — the NOTE above; not a size", "category": "geometry" }, { @@ -1131,8 +1131,8 @@ "-1px" ], "occurrences": 1, - "marker": null, - "text": "margin-top: -1px;", + "marker": "dx-px-nudge", + "text": "margin-top: -1px; // dx-px-nudge: pulls the pager up by one border so its top edge overlaps the grid bottom edge", "category": "inline" }, { @@ -1241,8 +1241,8 @@ "10px" ], "occurrences": 1, - "marker": null, - "text": "max-width: 10px;", + "marker": "dx-structural", + "text": "max-width: 10px; // dx-structural: deliberately tiny so the table sizes to its columns rather than the container — the fixed variant below resets it to none", "category": "inline" }, { @@ -1253,8 +1253,8 @@ "2px" ], "occurrences": 1, - "marker": null, - "text": "border: 2px solid transparent;", + "marker": "dx-line-width", + "text": "border: 2px solid transparent; // dx-line-width: thickness of the invalid-cell ring, drawn on a pseudo-element", "category": "geometry" }, { @@ -1265,8 +1265,8 @@ "1px" ], "occurrences": 1, - "marker": null, - "text": "left: 1px;", + "marker": "dx-px-nudge", + "text": "left: 1px; // dx-px-nudge: insets that ring by the cell border on the left", "category": "inline" }, { @@ -1277,8 +1277,8 @@ "1px" ], "occurrences": 1, - "marker": null, - "text": "min-height: 1px;", + "marker": "dx-structural", + "text": "min-height: 1px; // dx-structural: one-pixel floor so the headers block keeps layout presence when it has no rows; not a designed height", "category": "inline" }, { @@ -1289,8 +1289,8 @@ "-1px" ], "occurrences": 1, - "marker": null, - "text": "top: -1px;", + "marker": "dx-px-nudge", + "text": "top: -1px; // dx-px-nudge: pulls the focus ring out over the cell border", "category": "inline" }, { @@ -1301,8 +1301,8 @@ "-1px" ], "occurrences": 1, - "marker": null, - "text": "bottom: -1px;", + "marker": "dx-px-nudge", + "text": "bottom: -1px; // dx-px-nudge: pulls the focus ring out over the cell border", "category": "inline" }, { @@ -1313,8 +1313,8 @@ "-1px" ], "occurrences": 1, - "marker": null, - "text": "left: -1px;", + "marker": "dx-px-nudge", + "text": "left: -1px; // dx-px-nudge: pulls the focus ring out over the cell border", "category": "inline" }, { @@ -1325,8 +1325,8 @@ "-1px" ], "occurrences": 1, - "marker": null, - "text": "right: -1px;", + "marker": "dx-px-nudge", + "text": "right: -1px; // dx-px-nudge: pulls the focus ring out over the cell border", "category": "inline" }, { @@ -1337,8 +1337,8 @@ "1px" ], "occurrences": 1, - "marker": null, - "text": "border-top: 1px solid transparent;", + "marker": "dx-line-width", + "text": "border-top: 1px solid transparent; // dx-line-width: hairline placeholder keeping the range-end input aligned with the range-start one", "category": "geometry" }, { @@ -1475,8 +1475,8 @@ "-2px" ], "occurrences": 1, - "marker": null, - "text": "margin-right: -2px;", + "marker": "dx-px-nudge", + "text": "margin-right: -2px; // dx-px-nudge: RTL mirror — pulls the menu out by its own border", "category": "inline" }, { @@ -1587,18 +1587,6 @@ "text": "$grid-cell-padding: 7px;", "category": "local-var" }, - { - "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 2, - "widget": "gridBase", - "literals": [ - "32px" - ], - "occurrences": 1, - "marker": null, - "text": "$grid-texteditor-input-padding: 32px;", - "category": "local-var" - }, { "file": "scss/widgets/base/gridBase/_variables.scss", "line": 3, @@ -1611,42 +1599,6 @@ "text": "$grid-total-footer-paddings: 7px;", "category": "local-var" }, - { - "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 4, - "widget": "gridBase", - "literals": [ - "70px" - ], - "occurrences": 1, - "marker": null, - "text": "$grid-command-select-column-width: 70px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 5, - "widget": "gridBase", - "literals": [ - "100px" - ], - "occurrences": 1, - "marker": null, - "text": "$grid-command-edit-column-width: 100px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 6, - "widget": "gridBase", - "literals": [ - "80px" - ], - "occurrences": 1, - "marker": null, - "text": "$grid-command-edit-column-with-icons-width: 80px;", - "category": "local-var" - }, { "file": "scss/widgets/base/gridBase/_variables.scss", "line": 7, @@ -1739,8 +1691,8 @@ "1px" ], "occurrences": 1, - "marker": null, - "text": "border-width: 1px;", + "marker": "dx-line-width", + "text": "border-width: 1px; // dx-line-width: hairline border of the incoming message bubble", "category": "geometry" }, { diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index 107d217861f8..b2571eaba22f 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 480, - "variables": 414, - "injected": 456, + "occurrences": 484, + "variables": 418, + "injected": 460, "open": 0, "parameters": 24 }, @@ -4356,6 +4356,70 @@ "setBy": "scss/widgets/fluent-next/gantt/_index.scss", "setTo": "var(--dx-gantt-view-min-width)" }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 2, + "widget": "gridBase", + "literals": [ + "32px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-texteditor-input-padding: 32px !default;", + "variable": "grid-texteditor-input-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-editor-input-padding)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 4, + "widget": "gridBase", + "literals": [ + "70px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-command-select-column-width: 70px !default;", + "variable": "grid-command-select-column-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-command-select-column-width)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 5, + "widget": "gridBase", + "literals": [ + "100px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-command-edit-column-width: 100px !default;", + "variable": "grid-command-edit-column-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-command-edit-column-width)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 6, + "widget": "gridBase", + "literals": [ + "80px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-command-edit-column-with-icons-width: 80px !default;", + "variable": "grid-command-edit-column-with-icons-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-command-edit-column-with-icons-width)" + }, { "file": "scss/widgets/base/list/_index.scss", "line": 6, From 3c2503d1922af19597e3b39edf9b1047214ff845 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Wed, 2 Sep 2026 16:52:32 +0200 Subject: [PATCH 24/25] Tokenize gridBase --- .../scss/widgets/base/gridBase/_index.scss | 54 +-- .../widgets/base/gridBase/_variables.scss | 27 +- .../gridBase/layout/aiChat/_variables.scss | 10 +- .../widgets/fluent-next/_public-tier.scss | 4 +- .../widgets/fluent-next/gridBase/_index.scss | 31 +- .../widgets/fluent-next/gridBase/_public.scss | 26 ++ .../widgets/fluent-next/gridBase/_sizes.scss | 30 ++ .../gridBase/layout/aiChat/_sizes.scss | 8 + .../tests/base-size-markers.baseline.json | 4 +- .../devextreme-scss/tests/calc-budget.json | 8 +- .../tools/naming/derive-registries.mjs | 21 +- .../tools/naming/registries.json | 15 +- .../tools/review/nested-scopes.json | 6 + .../tools/sizes/lists/BASE-SIZES.md | 90 +--- .../tools/sizes/lists/base-owned.json | 414 +--------------- .../tools/sizes/lists/theme-settable.json | 440 +++++++++++++++++- 16 files changed, 657 insertions(+), 531 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/gridBase/_index.scss b/packages/devextreme-scss/scss/widgets/base/gridBase/_index.scss index 595c40637b1b..2bfecdc94676 100644 --- a/packages/devextreme-scss/scss/widgets/base/gridBase/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/gridBase/_index.scss @@ -34,7 +34,7 @@ } .dx-#{$widget-name}-important-margin { - margin-right: 5px !important; // stylelint-disable-line declaration-no-important + margin-right: 5px !important; // stylelint-disable-line declaration-no-important -- dx-fixed-size: legacy compat helper class, kept for the Foundation layout below } // for Foundation Responsive Framework @@ -83,12 +83,12 @@ padding-top: 0; &:first-child { - padding-top: 1px; + padding-top: 1px; // dx-px-nudge: lifts the first submenu row off the menu border } } .dx-menu-item { - padding: 7px 30px 7px 5px; + padding: $grid-context-menu-item-padding-block $grid-context-menu-item-padding-inline-end $grid-context-menu-item-padding-block $grid-context-menu-item-padding-inline-start; .dx-menu-image { background-position-x: left; @@ -156,19 +156,19 @@ .dx-overlay-content { .dx-popup-title { border-bottom: none; - font-size: 16px; + font-size: $grid-column-chooser-title-font-size; .dx-toolbar-label { - font-size: 16px; + font-size: $grid-column-chooser-title-font-size; } } .dx-popup-content { - padding: 0 20px 20px 20px; + padding: $grid-column-chooser-content-padding; .dx-column-chooser-item { opacity: 0.5; - margin-bottom: 10px; + margin-bottom: $grid-column-chooser-item-margin-block-end; &.dx-#{$widget-name}-drag-action { opacity: 1; @@ -193,7 +193,7 @@ .dx-#{$widget-name}-column-chooser-plain, .dx-#{$widget-name}-column-chooser-list { .dx-treeview-node { .dx-treeview-item { - padding-inline-start: 4px; + padding-inline-start: $grid-column-chooser-tree-view-item-padding-inline-start; } } } @@ -221,7 +221,7 @@ .dx-#{$widget-name}-columns-separator { position: absolute; z-index: 4; - width: 3px; + width: $grid-column-separator-width; } .dx-#{$widget-name}-columns-separator-transparent { @@ -642,20 +642,20 @@ } .dx-menu-horizontal .dx-overlay-content ul .dx-menu-item { - padding: 5px; - padding-right: 30px; + padding: $grid-context-menu-overlay-item-padding; + padding-right: $grid-context-menu-overlay-item-padding-inline-end; } .dx-menu ul.dx-menu-horizontal > li > .dx-menu-item { - padding: 8px 5px 7px 5px; + padding: $grid-menu-bar-item-padding; } .dx-menu ul.dx-menu-horizontal > li > .dx-menu-item.dx-state-disabled:hover { - padding: 9px 6px 8px 6px; + padding: 9px 6px 8px 6px; // dx-px-nudge: +1px on each side of the resting padding above, compensating the border the disabled item loses on hover } .dx-menu-caption { - padding-left: 6px; + padding-left: $grid-menu-caption-padding-inline-start; } .dx-menu ul .dx-menu-item .dx-menu-chouser-down { @@ -677,7 +677,7 @@ .dx-toolbar-menu-container { .dx-button { - margin-left: 10px; + margin-left: $grid-toolbar-button-margin-inline-start; } } } @@ -692,7 +692,7 @@ .dx-#{$widget-name}-search-panel { margin: 0; - margin-left: 15px; + margin-left: $grid-search-panel-margin-inline-start; } .dx-gridbase-container > .dx-#{$widget-name}-rowsview { @@ -716,7 +716,7 @@ overflow: hidden; &.dx-empty { - height: 100px; + height: $grid-rowsview-empty-height; .dx-scrollable-content { height: 100%; @@ -817,7 +817,7 @@ .dx-#{$widget-name}-bottom-load-panel { text-align: center; - padding: 10px; + padding: $grid-bottom-load-panel-padding; } .dx-#{$widget-name}-hidden-column > * { @@ -891,7 +891,7 @@ .dx-#{$widget-name}.dx-rtl { .dx-menu-subitem { .dx-menu-item { - padding: 7px 5px 7px 30px; + padding: $grid-context-menu-item-padding-block $grid-context-menu-item-padding-inline-start $grid-context-menu-item-padding-block $grid-context-menu-item-padding-inline-end; .dx-menu-image { background-position-x: right; @@ -954,12 +954,12 @@ } .dx-menu-horizontal .dx-overlay-content ul .dx-menu-item { - padding: 5px; - padding-left: 30px; + padding: $grid-context-menu-overlay-item-padding; + padding-left: $grid-context-menu-overlay-item-padding-inline-end; } .dx-menu-caption { - padding-right: 6px; + padding-right: $grid-menu-caption-padding-inline-start; } } @@ -973,14 +973,14 @@ .dx-toolbar-menu-container { .dx-button { margin-left: 0; - margin-right: 10px; + margin-right: $grid-toolbar-button-margin-inline-start; } } } .dx-#{$widget-name}-search-panel { margin: 0; - margin-right: 15px; + margin-right: $grid-search-panel-margin-inline-start; } } @@ -993,7 +993,7 @@ } .dx-#{$widget-name}-filter-panel { - padding: 10px; + padding: $grid-filter-panel-padding; .dx-#{$widget-name}-filter-panel-text { @include dx-overflow(); @@ -1006,12 +1006,12 @@ } .dx-#{$widget-name}-filter-panel-checkbox { - padding-right: 10px; + padding-right: $grid-filter-panel-checkbox-padding-inline-end; } .dx-icon-filter { margin: auto; - margin-right: 7px; + margin-right: $grid-filter-panel-icon-margin-inline-end; cursor: pointer; } } diff --git a/packages/devextreme-scss/scss/widgets/base/gridBase/_variables.scss b/packages/devextreme-scss/scss/widgets/base/gridBase/_variables.scss index 827a651f1eb9..8d631d9aa12a 100644 --- a/packages/devextreme-scss/scss/widgets/base/gridBase/_variables.scss +++ b/packages/devextreme-scss/scss/widgets/base/gridBase/_variables.scss @@ -4,10 +4,31 @@ $grid-total-footer-paddings: 7px; $grid-command-select-column-width: 70px !default; $grid-command-edit-column-width: 100px !default; $grid-command-edit-column-with-icons-width: 80px !default; -$grid-command-expand-column-width: 30px; -$grid-command-adaptive-column-width: 36px; +$grid-command-expand-column-width: 30px !default; +$grid-command-adaptive-column-width: 36px !default; $grid-column-header-indicator-width: 14px; $grid-text-content-margin: 3px; $grid-sort-index-width: 12px; $grid-sort-index-offset: 3px; -$grid-ai-assistant-confirm-dialog-button-width: 50px; +$grid-ai-assistant-confirm-dialog-button-width: 50px !default; + +// Sizes the shared layer used to pin inside rules; the theme owns them now +$grid-context-menu-item-padding-block: 7px !default; +$grid-context-menu-item-padding-inline-start: 5px !default; +$grid-context-menu-item-padding-inline-end: 30px !default; +$grid-context-menu-overlay-item-padding: 5px !default; +$grid-context-menu-overlay-item-padding-inline-end: 30px !default; +$grid-menu-bar-item-padding: 8px 5px 7px 5px !default; +$grid-menu-caption-padding-inline-start: 6px !default; +$grid-column-chooser-title-font-size: 16px !default; +$grid-column-chooser-content-padding: 0 20px 20px 20px !default; +$grid-column-chooser-item-margin-block-end: 10px !default; +$grid-column-chooser-tree-view-item-padding-inline-start: 4px !default; +$grid-column-separator-width: 3px !default; +$grid-toolbar-button-margin-inline-start: 10px !default; +$grid-search-panel-margin-inline-start: 15px !default; +$grid-rowsview-empty-height: 100px !default; +$grid-bottom-load-panel-padding: 10px !default; +$grid-filter-panel-padding: 10px !default; +$grid-filter-panel-checkbox-padding-inline-end: 10px !default; +$grid-filter-panel-icon-margin-inline-end: 7px !default; diff --git a/packages/devextreme-scss/scss/widgets/base/gridBase/layout/aiChat/_variables.scss b/packages/devextreme-scss/scss/widgets/base/gridBase/layout/aiChat/_variables.scss index 03c18025cb6e..fd8c7db6b7e4 100644 --- a/packages/devextreme-scss/scss/widgets/base/gridBase/layout/aiChat/_variables.scss +++ b/packages/devextreme-scss/scss/widgets/base/gridBase/layout/aiChat/_variables.scss @@ -1,6 +1,6 @@ -$ai-chat-toolbar-item-spacing: 4px; -$ai-chat-message-gap: 8px; -$ai-chat-message-content-gap: 4px; -$ai-chat-message-width: 280px; -$ai-chat-message-regenerate-button-border-radius: 4px; +$ai-chat-toolbar-item-spacing: 4px !default; +$ai-chat-message-gap: 8px !default; +$ai-chat-message-content-gap: 4px !default; +$ai-chat-message-width: 280px !default; +$ai-chat-message-regenerate-button-border-radius: 4px !default; $ai-chat-action-list-item-text-max-lines: 2; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/_public-tier.scss b/packages/devextreme-scss/scss/widgets/fluent-next/_public-tier.scss index 5097a05b0fc7..d05a4e37799f 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/_public-tier.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/_public-tier.scss @@ -177,7 +177,9 @@ .dx-header-filter-menu, .dx-datagrid-drag-header, .dx-treelist-drag-header, -.dx-ai-chat { +.dx-ai-chat, +.dx-datagrid-ai-assistant-confirm-dialog, +.dx-treelist-ai-assistant-confirm-dialog { @include gridBasePublic.publish(); } diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_index.scss index 01b39e8e3f5b..2bdcce817110 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_index.scss @@ -31,11 +31,40 @@ * rendered min-width of the command columns is the theme's (50px / 115px / 93px) and the filter * row input padding is the theme's 40px, so the base literals below them never reach the page. */ -@use "../../base/gridBase/variables" with ( +@use "../../base/gridBase/variables" as baseGridVariables with ( $grid-texteditor-input-padding: var(--dx-grid-editor-input-padding), $grid-command-select-column-width: var(--dx-grid-command-select-column-width), $grid-command-edit-column-width: var(--dx-grid-command-edit-column-width), $grid-command-edit-column-with-icons-width: var(--dx-grid-command-edit-column-with-icons-width), + $grid-command-expand-column-width: var(--dx-grid-command-expand-column-width), + $grid-command-adaptive-column-width: var(--dx-grid-command-adaptive-column-width), + $grid-ai-assistant-confirm-dialog-button-width: var(--dx-grid-ai-confirm-dialog-button-width), + $grid-context-menu-item-padding-block: var(--dx-grid-context-menu-item-padding-block), + $grid-context-menu-item-padding-inline-start: var(--dx-grid-context-menu-item-padding-inline-start), + $grid-context-menu-item-padding-inline-end: var(--dx-grid-context-menu-item-padding-inline-end), + $grid-context-menu-overlay-item-padding: var(--dx-grid-context-menu-overlay-item-padding), + $grid-context-menu-overlay-item-padding-inline-end: var(--dx-grid-context-menu-overlay-item-padding-inline-end), + $grid-menu-bar-item-padding: var(--dx-grid-menu-bar-item-padding), + $grid-menu-caption-padding-inline-start: var(--dx-grid-menu-caption-padding-inline-start), + $grid-column-chooser-title-font-size: var(--dx-grid-column-chooser-title-font-size), + $grid-column-chooser-content-padding: var(--dx-grid-column-chooser-content-padding), + $grid-column-chooser-item-margin-block-end: var(--dx-grid-column-chooser-item-margin-block-end), + $grid-column-chooser-tree-view-item-padding-inline-start: var(--dx-grid-column-chooser-tree-view-item-padding-inline-start), + $grid-column-separator-width: var(--dx-grid-column-separator-width), + $grid-toolbar-button-margin-inline-start: var(--dx-grid-toolbar-button-margin-inline-start), + $grid-search-panel-margin-inline-start: var(--dx-grid-search-panel-margin-inline-start), + $grid-rowsview-empty-height: var(--dx-grid-rowsview-empty-height), + $grid-bottom-load-panel-padding: var(--dx-grid-bottom-load-panel-padding), + $grid-filter-panel-padding: var(--dx-grid-filter-panel-padding), + $grid-filter-panel-checkbox-padding-inline-end: var(--dx-grid-filter-panel-checkbox-padding-inline-end), + $grid-filter-panel-icon-margin-inline-end: var(--dx-grid-filter-panel-icon-margin-inline-end), +); +@use "../../base/gridBase/layout/aiChat/variables" as baseAiChatVariables with ( + $ai-chat-toolbar-item-spacing: var(--dx-grid-ai-chat-toolbar-item-padding-inline-end), + $ai-chat-message-gap: var(--dx-grid-ai-chat-message-gap), + $ai-chat-message-content-gap: var(--dx-grid-ai-chat-message-content-gap), + $ai-chat-message-width: var(--dx-grid-ai-chat-message-min-width), + $ai-chat-message-regenerate-button-border-radius: var(--dx-grid-ai-chat-message-regenerate-button-border-radius), ); @use "variables" as *; @forward "variables"; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_public.scss index 82a0c2a97abf..34cc68b1dea8 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_public.scss @@ -4,13 +4,37 @@ @use "layout/aiChat/sizes" as *; @mixin publish { + --dx-grid-context-menu-item-padding-block: #{$grid-context-menu-item-padding-block}; + --dx-grid-context-menu-item-padding-inline-start: #{$grid-context-menu-item-padding-inline-start}; + --dx-grid-context-menu-item-padding-inline-end: #{$grid-context-menu-item-padding-inline-end}; + --dx-grid-context-menu-overlay-item-padding: #{$grid-context-menu-overlay-item-padding}; + --dx-grid-context-menu-overlay-item-padding-inline-end: #{$grid-context-menu-overlay-item-padding-inline-end}; + --dx-grid-menu-bar-item-padding: #{$grid-menu-bar-item-padding}; + --dx-grid-menu-caption-padding-inline-start: #{$grid-menu-caption-padding-inline-start}; + --dx-grid-column-chooser-title-font-size: #{$grid-column-chooser-title-font-size}; + --dx-grid-column-chooser-content-padding: #{$grid-column-chooser-content-padding}; + --dx-grid-column-chooser-item-margin-block-end: #{$grid-column-chooser-item-margin-block-end}; + --dx-grid-column-chooser-tree-view-item-padding-inline-start: #{$grid-column-chooser-tree-view-item-padding-inline-start}; + --dx-grid-column-separator-width: #{$grid-column-separator-width}; + --dx-grid-toolbar-button-margin-inline-start: #{$grid-toolbar-button-margin-inline-start}; + --dx-grid-search-panel-margin-inline-start: #{$grid-search-panel-margin-inline-start}; + --dx-grid-rowsview-empty-height: #{$grid-rowsview-empty-height}; + --dx-grid-bottom-load-panel-padding: #{$grid-bottom-load-panel-padding}; + --dx-grid-filter-panel-checkbox-padding-inline-end: #{$grid-filter-panel-checkbox-padding-inline-end}; + --dx-grid-filter-panel-icon-margin-inline-end: #{$grid-filter-panel-icon-margin-inline-end}; --dx-grid-adaptive-column-height: #{$grid-adaptive-column-height}; --dx-grid-after-inset-inline-end: #{$grid-after-inset-inline-end}; --dx-grid-ai-chat-message-border: #{$grid-ai-chat-message-border}; + --dx-grid-ai-chat-message-content-gap: #{$grid-ai-chat-message-content-gap}; --dx-grid-ai-chat-message-error-content: #{$grid-ai-chat-message-error-content}; + --dx-grid-ai-chat-message-gap: #{$grid-ai-chat-message-gap}; --dx-grid-ai-chat-message-icon-size: #{$grid-ai-chat-message-icon-size}; + --dx-grid-ai-chat-message-min-width: #{$grid-ai-chat-message-min-width}; --dx-grid-ai-chat-message-pending-content: #{$grid-ai-chat-message-pending-content}; + --dx-grid-ai-chat-message-regenerate-button-border-radius: #{$grid-ai-chat-message-regenerate-button-border-radius}; --dx-grid-ai-chat-message-success-content: #{$grid-ai-chat-message-success-content}; + --dx-grid-ai-chat-toolbar-item-padding-inline-end: #{$grid-ai-chat-toolbar-item-padding-inline-end}; + --dx-grid-ai-confirm-dialog-button-width: #{$grid-ai-confirm-dialog-button-width}; --dx-grid-ai-prompt-editor-progress-bar-height: #{$grid-ai-prompt-editor-progress-bar-height}; --dx-grid-bg: #{$grid-bg}; --dx-grid-border-width: #{$grid-border-width}; @@ -40,6 +64,7 @@ --dx-grid-column-chooser-padding: #{$grid-column-chooser-padding}; --dx-grid-column-chooser-padding-inline: #{$grid-column-chooser-padding-inline}; --dx-grid-column-separator-bg: #{$grid-column-separator-bg}; + --dx-grid-command-adaptive-column-width: #{$grid-command-adaptive-column-width}; --dx-grid-command-ai-button-max-width: #{$grid-command-ai-button-max-width}; --dx-grid-command-ai-content-padding-inline-start: #{$grid-command-ai-content-padding-inline-start}; --dx-grid-command-ai-icon-size: #{$grid-command-ai-icon-size}; @@ -48,6 +73,7 @@ --dx-grid-command-edit-icon-margin: #{$grid-command-edit-icon-margin}; --dx-grid-command-edit-icon-size: #{$grid-command-edit-icon-size}; --dx-grid-command-edit-text-margin: #{$grid-command-edit-text-margin}; + --dx-grid-command-expand-column-width: #{$grid-command-expand-column-width}; --dx-grid-command-select-column-width: #{$grid-command-select-column-width}; --dx-grid-content-focused: #{$grid-content-focused}; --dx-grid-content-padding: #{$grid-content-padding}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_sizes.scss index 94c740786820..58b562f5755c 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_sizes.scss @@ -150,3 +150,33 @@ $grid-hidden-border: ds.$border-width-10 solid transparent !default; $grid-row-border: ds.$border-width-10 solid transparent !default; $grid-link-icon-min-width: ds.$spacing-200 !default; $grid-editor-input-border-block-end-width: ds.$border-width-10 !default; + +// Command column widths the shared layer used to pin; the theme owns them now +$grid-command-expand-column-width: ds.$spacing-300 !default; + +/* + * The same expression the theme's own .dx-command-adaptive rule computes, so the shared layer + * stops asserting 36px while the theme renders something else. + */ +$grid-command-adaptive-column-width: calc(2 * #{$grid-cell-padding-inline} + #{$global-icon-size}) !default; +$grid-ai-confirm-dialog-button-width: 50px !default; // dx-offscale: 50px + +// Sizes hoisted out of the shared layer's rules; values match what it used to pin +$grid-context-menu-item-padding-block: ds.$spacing-70 !default; +$grid-context-menu-item-padding-inline-start: ds.$spacing-50 !default; +$grid-context-menu-item-padding-inline-end: ds.$spacing-300 !default; +$grid-context-menu-overlay-item-padding: ds.$spacing-50 !default; +$grid-context-menu-overlay-item-padding-inline-end: ds.$spacing-300 !default; +$grid-menu-bar-item-padding: ds.$spacing-80 ds.$spacing-50 ds.$spacing-70 ds.$spacing-50 !default; +$grid-menu-caption-padding-inline-start: ds.$spacing-60 !default; +$grid-column-chooser-title-font-size: ds.$font-size-160 !default; +$grid-column-chooser-content-padding: 0 ds.$spacing-200 ds.$spacing-200 ds.$spacing-200 !default; +$grid-column-chooser-item-margin-block-end: ds.$spacing-100 !default; +$grid-column-chooser-tree-view-item-padding-inline-start: ds.$spacing-40 !default; +$grid-column-separator-width: ds.$spacing-30 !default; +$grid-toolbar-button-margin-inline-start: ds.$spacing-100 !default; +$grid-search-panel-margin-inline-start: ds.$spacing-150 !default; +$grid-rowsview-empty-height: ds.$spacing-1000 !default; +$grid-bottom-load-panel-padding: ds.$spacing-100 !default; +$grid-filter-panel-checkbox-padding-inline-end: ds.$spacing-100 !default; +$grid-filter-panel-icon-margin-inline-end: ds.$spacing-70 !default; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/layout/aiChat/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/layout/aiChat/_sizes.scss index 4552c41dc0a7..b012bc6de07d 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/layout/aiChat/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/layout/aiChat/_sizes.scss @@ -1,3 +1,11 @@ @use "../../../sizes" as *; +@use "../../../../../_design-system/variables/ds" as ds; $grid-ai-chat-message-icon-size: $global-icon-size; + +// Values hoisted from the shared layer's fixed sizes (tokenized) +$grid-ai-chat-toolbar-item-padding-inline-end: ds.$spacing-40 !default; +$grid-ai-chat-message-gap: ds.$spacing-80 !default; +$grid-ai-chat-message-content-gap: ds.$spacing-40 !default; +$grid-ai-chat-message-min-width: 280px !default; // dx-offscale: 280px, the width the message column is designed around +$grid-ai-chat-message-regenerate-button-border-radius: ds.$border-radius-40 !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 026b4d5cc164..5ce035db846b 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,8 +1,8 @@ { "openKnobs": 0, - "unclassified": 58, + "unclassified": 9, "unclassifiedByWidget": { - "gridBase": 55, + "gridBase": 6, "colorView": 3 } } diff --git a/packages/devextreme-scss/tests/calc-budget.json b/packages/devextreme-scss/tests/calc-budget.json index a9fabad9d34a..903e8e4de13a 100644 --- a/packages/devextreme-scss/tests/calc-budget.json +++ b/packages/devextreme-scss/tests/calc-budget.json @@ -1,18 +1,18 @@ { "dx.fluent-next.blue.dark.compact.css": { - "calcOccurrences": 358, + "calcOccurrences": 359, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.dark.css": { - "calcOccurrences": 358, + "calcOccurrences": 359, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.compact.css": { - "calcOccurrences": 358, + "calcOccurrences": 359, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.css": { - "calcOccurrences": 358, + "calcOccurrences": 359, "declarationsWithDeepCalc": 5 } } diff --git a/packages/devextreme-scss/tools/naming/derive-registries.mjs b/packages/devextreme-scss/tools/naming/derive-registries.mjs index 8cd01cc8dbda..dbda7323caf2 100644 --- a/packages/devextreme-scss/tools/naming/derive-registries.mjs +++ b/packages/devextreme-scss/tools/naming/derive-registries.mjs @@ -337,7 +337,15 @@ const OVERRIDES = { * metrics came out unpainted. The AI assistant is a Popup whose wrapper carries * .dx-ai-chat .dx-aidialog (grid_core/ai_chat: wrapperAttr), likewise outside the grid. */ - '.dx-datagrid-drag-header', '.dx-treelist-drag-header', '.dx-ai-chat'], + '.dx-datagrid-drag-header', '.dx-treelist-drag-header', '.dx-ai-chat', + /* + * The AI assistant's "abort the running request?" dialog is a standalone dx dialog + * (grid_core/ai_assistant/ai_assistant_view: createConfirmDialog with elementAttr), so it + * renders at body level and not inside the grid. Its button width is a grid size, so the + * component tier has to be published on the dialog itself — the reachability gate caught + * this the moment the width stopped being a literal. + */ + '.dx-datagrid-ai-assistant-confirm-dialog', '.dx-treelist-ai-assistant-confirm-dialog'], /* * The dragged clone is created as $('

').appendTo(container) — the container defaults to * the viewport — and the placeholder is inserted next to it, so both live outside .dx-sortable @@ -1052,6 +1060,17 @@ const OVERRIDES = { 'adaptive-column', 'tree-view', 'node', 'select-all', 'sort-index', 'error-message', 'popup', 'overlay', 'revert-button', 'validation', 'input', 'progress-bar', 'prompt-editor', 'after', 'lines', 'title', 'ai', 'operation', 'list', 'button', 'content', 'text', 'header-row', + /* + * Opening the last of the base-layer fixed sizes: `expand-column` completes the + * select/edit/adaptive column family that was already here, `toolbar` and + * `regenerate-button` name the AI chat parts the base layer sizes + * (.dx-ai-chat .dx-popup-title .dx-toolbar-item, .dx-ai-chat__message-regenerate-button), + * and `confirm-dialog` the AI assistant dialog whose buttons carry a fixed width. + */ + 'expand-column', 'toolbar', 'regenerate-button', 'confirm-dialog', + // the last of the base-layer sizes: menu bar and caption, the search panel, the bottom + // load panel and the rows view, each named after the class the shared layer sizes + 'menu-bar', 'menu-caption', 'search-panel', 'bottom-load-panel', 'rowsview', ], // dataGrid's own deltas on top of the chassis: the group panel and the edit-form buttons. // `group-panel-item` and `block-separator` are compounds — one anatomy level each, not two. diff --git a/packages/devextreme-scss/tools/naming/registries.json b/packages/devextreme-scss/tools/naming/registries.json index 49ad105b8441..9ef9265a2cd6 100644 --- a/packages/devextreme-scss/tools/naming/registries.json +++ b/packages/devextreme-scss/tools/naming/registries.json @@ -332,7 +332,9 @@ ".dx-header-filter-menu", ".dx-datagrid-drag-header", ".dx-treelist-drag-header", - ".dx-ai-chat" + ".dx-ai-chat", + ".dx-datagrid-ai-assistant-confirm-dialog", + ".dx-treelist-ai-assistant-confirm-dialog" ], "data-grid": [ ".dx-datagrid" @@ -1991,7 +1993,16 @@ "button", "content", "text", - "header-row" + "header-row", + "expand-column", + "toolbar", + "regenerate-button", + "confirm-dialog", + "menu-bar", + "menu-caption", + "search-panel", + "bottom-load-panel", + "rowsview" ], "data-grid": [ "group-panel", diff --git a/packages/devextreme-scss/tools/review/nested-scopes.json b/packages/devextreme-scss/tools/review/nested-scopes.json index 3b5d3b5b542b..73c4dd36faad 100644 --- a/packages/devextreme-scss/tools/review/nested-scopes.json +++ b/packages/devextreme-scss/tools/review/nested-scopes.json @@ -233,14 +233,18 @@ "dx-gallery-indicator-item-selected" ], "grid": [ + "dx-ai-chat__action-list-item", "dx-ai-chat__action-list-item--aborted", "dx-ai-chat__action-list-item--error", "dx-ai-chat__action-list-item--success", "dx-ai-chat__content", + "dx-ai-chat__message", "dx-ai-chat__message--error", "dx-ai-chat__message--pending", "dx-ai-chat__message--success", + "dx-ai-chat__message-content", "dx-ai-chat__message-error-text", + "dx-ai-chat__message-header-row", "dx-ai-chat__message-icon", "dx-ai-chat__message-regenerate-button", "dx-ai-prompt-editor__progressbar", @@ -268,6 +272,7 @@ "dx-datagrid-nodata", "dx-datagrid-revert-tooltip", "dx-datagrid-rowsview", + "dx-datagrid-search-panel", "dx-datagrid-search-text", "dx-datagrid-sticky-columns", "dx-datagrid-summary-item", @@ -293,6 +298,7 @@ "dx-treelist-nodata", "dx-treelist-revert-tooltip", "dx-treelist-rowsview", + "dx-treelist-search-panel", "dx-treelist-search-text", "dx-treelist-sticky-columns", "dx-treelist-summary-item", diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 6152d929180c..7ddc5324be93 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -11,89 +11,31 @@ and carries a marker saying why. | | occurrences | |---|---| -| a raw grep of the layer | 778 | -| …of those, inside comments (commented-out code, prose) | 25 | -| **in code** | **753** | -| — the theme can already set from outside | 484 | -| — nailed into the shared layer | 269 | +| a raw grep of the layer | 768 | +| …of those, inside comments (commented-out code, prose) | 26 | +| **in code** | **742** | +| — the theme can already set from outside | 516 | +| — nailed into the shared layer | 226 | ## What the theme can already set -484 occurrences in 418 `!default` variables. fluent-next already passes 460; 0 are open knobs nobody turns. +516 occurrences in 445 `!default` variables. fluent-next already passes 492; 0 are open knobs nobody turns. ## What is nailed into the layer -| widget | inline | local-var | total | +| widget | local-var | inline | total | |---|---|---|---| -| gridBase | 41 | 14 | **55** | -| colorView | 3 | | **3** | +| gridBase | 6 | | **6** | +| colorView | | 3 | **3** | ## Places, by widget -### gridBase — 55 +### gridBase — 6 -- `scss/widgets/base/gridBase/_index.scss:37` · inline - `margin-right: 5px !important; // stylelint-disable-line declaration-no-important` -- `scss/widgets/base/gridBase/_index.scss:86` · inline - `padding-top: 1px;` -- `scss/widgets/base/gridBase/_index.scss:91` · inline - `padding: 7px 30px 7px 5px;` -- `scss/widgets/base/gridBase/_index.scss:159` · inline - `font-size: 16px;` -- `scss/widgets/base/gridBase/_index.scss:162` · inline - `font-size: 16px;` -- `scss/widgets/base/gridBase/_index.scss:167` · inline - `padding: 0 20px 20px 20px;` -- `scss/widgets/base/gridBase/_index.scss:171` · inline - `margin-bottom: 10px;` -- `scss/widgets/base/gridBase/_index.scss:196` · inline - `padding-inline-start: 4px;` -- `scss/widgets/base/gridBase/_index.scss:224` · inline - `width: 3px;` -- `scss/widgets/base/gridBase/_index.scss:645` · inline - `padding: 5px;` -- `scss/widgets/base/gridBase/_index.scss:646` · inline - `padding-right: 30px;` -- `scss/widgets/base/gridBase/_index.scss:650` · inline - `padding: 8px 5px 7px 5px;` -- `scss/widgets/base/gridBase/_index.scss:654` · inline - `padding: 9px 6px 8px 6px;` -- `scss/widgets/base/gridBase/_index.scss:658` · inline - `padding-left: 6px;` -- `scss/widgets/base/gridBase/_index.scss:680` · inline - `margin-left: 10px;` -- `scss/widgets/base/gridBase/_index.scss:695` · inline - `margin-left: 15px;` -- `scss/widgets/base/gridBase/_index.scss:719` · inline - `height: 100px;` -- `scss/widgets/base/gridBase/_index.scss:820` · inline - `padding: 10px;` -- `scss/widgets/base/gridBase/_index.scss:894` · inline - `padding: 7px 5px 7px 30px;` -- `scss/widgets/base/gridBase/_index.scss:957` · inline - `padding: 5px;` -- `scss/widgets/base/gridBase/_index.scss:958` · inline - `padding-left: 30px;` -- `scss/widgets/base/gridBase/_index.scss:962` · inline - `padding-right: 6px;` -- `scss/widgets/base/gridBase/_index.scss:976` · inline - `margin-right: 10px;` -- `scss/widgets/base/gridBase/_index.scss:983` · inline - `margin-right: 15px;` -- `scss/widgets/base/gridBase/_index.scss:996` · inline - `padding: 10px;` -- `scss/widgets/base/gridBase/_index.scss:1009` · inline - `padding-right: 10px;` -- `scss/widgets/base/gridBase/_index.scss:1014` · inline - `margin-right: 7px;` - `scss/widgets/base/gridBase/_variables.scss:1` · local-var `$grid-cell-padding: 7px;` - `scss/widgets/base/gridBase/_variables.scss:3` · local-var `$grid-total-footer-paddings: 7px;` -- `scss/widgets/base/gridBase/_variables.scss:7` · local-var - `$grid-command-expand-column-width: 30px;` -- `scss/widgets/base/gridBase/_variables.scss:8` · local-var - `$grid-command-adaptive-column-width: 36px;` - `scss/widgets/base/gridBase/_variables.scss:9` · local-var `$grid-column-header-indicator-width: 14px;` - `scss/widgets/base/gridBase/_variables.scss:10` · local-var @@ -102,18 +44,6 @@ and carries a marker saying why. `$grid-sort-index-width: 12px;` - `scss/widgets/base/gridBase/_variables.scss:12` · local-var `$grid-sort-index-offset: 3px;` -- `scss/widgets/base/gridBase/_variables.scss:13` · local-var - `$grid-ai-assistant-confirm-dialog-button-width: 50px;` -- `scss/widgets/base/gridBase/layout/aiChat/_variables.scss:1` · local-var - `$ai-chat-toolbar-item-spacing: 4px;` -- `scss/widgets/base/gridBase/layout/aiChat/_variables.scss:2` · local-var - `$ai-chat-message-gap: 8px;` -- `scss/widgets/base/gridBase/layout/aiChat/_variables.scss:3` · local-var - `$ai-chat-message-content-gap: 4px;` -- `scss/widgets/base/gridBase/layout/aiChat/_variables.scss:4` · local-var - `$ai-chat-message-width: 280px;` -- `scss/widgets/base/gridBase/layout/aiChat/_variables.scss:5` · local-var - `$ai-chat-message-regenerate-button-border-radius: 4px;` ### colorView — 3 diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index a7f7918cb1bc..1722ced313e3 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,20 +6,20 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 269, + "occurrences": 226, "byCategory": { - "inline": 126, + "inline": 91, "geometry": 69, - "local-var": 49, + "local-var": 41, "calc": 9, "structural": 8, "mixin-arg": 6, "media": 2 }, "byWidget": { - "gridBase": 71, "colorView": 45, "scheduler": 33, + "gridBase": 28, "textEditor": 26, "htmlEditor": 16, "cardView": 15, @@ -47,9 +47,9 @@ "toolbar": 1, "treeView": 1 }, - "unmarked": 58, + "unmarked": 9, "unmarkedByWidget": { - "gridBase": 55, + "gridBase": 6, "colorView": 3 } }, @@ -1119,8 +1119,8 @@ "5px" ], "occurrences": 1, - "marker": null, - "text": "margin-right: 5px !important; // stylelint-disable-line declaration-no-important", + "marker": "dx-fixed-size", + "text": "margin-right: 5px !important; // stylelint-disable-line declaration-no-important -- dx-fixed-size: legacy compat helper class, kept for the Foundation layout below", "category": "inline" }, { @@ -1143,94 +1143,8 @@ "1px" ], "occurrences": 1, - "marker": null, - "text": "padding-top: 1px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 91, - "widget": "gridBase", - "literals": [ - "7px", - "30px", - "5px" - ], - "occurrences": 4, - "marker": null, - "text": "padding: 7px 30px 7px 5px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 159, - "widget": "gridBase", - "literals": [ - "16px" - ], - "occurrences": 1, - "marker": null, - "text": "font-size: 16px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 162, - "widget": "gridBase", - "literals": [ - "16px" - ], - "occurrences": 1, - "marker": null, - "text": "font-size: 16px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 167, - "widget": "gridBase", - "literals": [ - "20px" - ], - "occurrences": 3, - "marker": null, - "text": "padding: 0 20px 20px 20px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 171, - "widget": "gridBase", - "literals": [ - "10px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-bottom: 10px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 196, - "widget": "gridBase", - "literals": [ - "4px" - ], - "occurrences": 1, - "marker": null, - "text": "padding-inline-start: 4px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 224, - "widget": "gridBase", - "literals": [ - "3px" - ], - "occurrences": 1, - "marker": null, - "text": "width: 3px;", + "marker": "dx-px-nudge", + "text": "padding-top: 1px; // dx-px-nudge: lifts the first submenu row off the menu border", "category": "inline" }, { @@ -1341,44 +1255,6 @@ "text": "border-top: 1px solid transparent; // dx-line-width: hairline placeholder keeping the range-end input aligned with the range-start one", "category": "geometry" }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 645, - "widget": "gridBase", - "literals": [ - "5px" - ], - "occurrences": 1, - "marker": null, - "text": "padding: 5px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 646, - "widget": "gridBase", - "literals": [ - "30px" - ], - "occurrences": 1, - "marker": null, - "text": "padding-right: 30px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 650, - "widget": "gridBase", - "literals": [ - "8px", - "5px", - "7px" - ], - "occurrences": 4, - "marker": null, - "text": "padding: 8px 5px 7px 5px;", - "category": "inline" - }, { "file": "scss/widgets/base/gridBase/_index.scss", "line": 654, @@ -1389,82 +1265,8 @@ "8px" ], "occurrences": 4, - "marker": null, - "text": "padding: 9px 6px 8px 6px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 658, - "widget": "gridBase", - "literals": [ - "6px" - ], - "occurrences": 1, - "marker": null, - "text": "padding-left: 6px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 680, - "widget": "gridBase", - "literals": [ - "10px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-left: 10px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 695, - "widget": "gridBase", - "literals": [ - "15px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-left: 15px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 719, - "widget": "gridBase", - "literals": [ - "100px" - ], - "occurrences": 1, - "marker": null, - "text": "height: 100px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 820, - "widget": "gridBase", - "literals": [ - "10px" - ], - "occurrences": 1, - "marker": null, - "text": "padding: 10px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 894, - "widget": "gridBase", - "literals": [ - "7px", - "5px", - "30px" - ], - "occurrences": 4, - "marker": null, - "text": "padding: 7px 5px 7px 30px;", + "marker": "dx-px-nudge", + "text": "padding: 9px 6px 8px 6px; // dx-px-nudge: +1px on each side of the resting padding above, compensating the border the disabled item loses on hover", "category": "inline" }, { @@ -1479,102 +1281,6 @@ "text": "margin-right: -2px; // dx-px-nudge: RTL mirror — pulls the menu out by its own border", "category": "inline" }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 957, - "widget": "gridBase", - "literals": [ - "5px" - ], - "occurrences": 1, - "marker": null, - "text": "padding: 5px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 958, - "widget": "gridBase", - "literals": [ - "30px" - ], - "occurrences": 1, - "marker": null, - "text": "padding-left: 30px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 962, - "widget": "gridBase", - "literals": [ - "6px" - ], - "occurrences": 1, - "marker": null, - "text": "padding-right: 6px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 976, - "widget": "gridBase", - "literals": [ - "10px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-right: 10px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 983, - "widget": "gridBase", - "literals": [ - "15px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-right: 15px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 996, - "widget": "gridBase", - "literals": [ - "10px" - ], - "occurrences": 1, - "marker": null, - "text": "padding: 10px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 1009, - "widget": "gridBase", - "literals": [ - "10px" - ], - "occurrences": 1, - "marker": null, - "text": "padding-right: 10px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/gridBase/_index.scss", - "line": 1014, - "widget": "gridBase", - "literals": [ - "7px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-right: 7px;", - "category": "inline" - }, { "file": "scss/widgets/base/gridBase/_variables.scss", "line": 1, @@ -1599,30 +1305,6 @@ "text": "$grid-total-footer-paddings: 7px;", "category": "local-var" }, - { - "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 7, - "widget": "gridBase", - "literals": [ - "30px" - ], - "occurrences": 1, - "marker": null, - "text": "$grid-command-expand-column-width: 30px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 8, - "widget": "gridBase", - "literals": [ - "36px" - ], - "occurrences": 1, - "marker": null, - "text": "$grid-command-adaptive-column-width: 36px;", - "category": "local-var" - }, { "file": "scss/widgets/base/gridBase/_variables.scss", "line": 9, @@ -1671,18 +1353,6 @@ "text": "$grid-sort-index-offset: 3px;", "category": "local-var" }, - { - "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 13, - "widget": "gridBase", - "literals": [ - "50px" - ], - "occurrences": 1, - "marker": null, - "text": "$grid-ai-assistant-confirm-dialog-button-width: 50px;", - "category": "local-var" - }, { "file": "scss/widgets/base/gridBase/layout/aiChat/_mixins.scss", "line": 47, @@ -1695,66 +1365,6 @@ "text": "border-width: 1px; // dx-line-width: hairline border of the incoming message bubble", "category": "geometry" }, - { - "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", - "line": 1, - "widget": "gridBase", - "literals": [ - "4px" - ], - "occurrences": 1, - "marker": null, - "text": "$ai-chat-toolbar-item-spacing: 4px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", - "line": 2, - "widget": "gridBase", - "literals": [ - "8px" - ], - "occurrences": 1, - "marker": null, - "text": "$ai-chat-message-gap: 8px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", - "line": 3, - "widget": "gridBase", - "literals": [ - "4px" - ], - "occurrences": 1, - "marker": null, - "text": "$ai-chat-message-content-gap: 4px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", - "line": 4, - "widget": "gridBase", - "literals": [ - "280px" - ], - "occurrences": 1, - "marker": null, - "text": "$ai-chat-message-width: 280px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", - "line": 5, - "widget": "gridBase", - "literals": [ - "4px" - ], - "occurrences": 1, - "marker": null, - "text": "$ai-chat-message-regenerate-button-border-radius: 4px;", - "category": "local-var" - }, { "file": "scss/widgets/base/lookup/_index.scss", "line": 10, diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index b2571eaba22f..d489c8fb71c9 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 484, - "variables": 418, - "injected": 460, + "occurrences": 516, + "variables": 445, + "injected": 492, "open": 0, "parameters": 24 }, @@ -4420,6 +4420,440 @@ "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", "setTo": "var(--dx-grid-command-edit-column-with-icons-width)" }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 7, + "widget": "gridBase", + "literals": [ + "30px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-command-expand-column-width: 30px !default;", + "variable": "grid-command-expand-column-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-command-expand-column-width)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 8, + "widget": "gridBase", + "literals": [ + "36px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-command-adaptive-column-width: 36px !default;", + "variable": "grid-command-adaptive-column-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-command-adaptive-column-width)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 13, + "widget": "gridBase", + "literals": [ + "50px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-ai-assistant-confirm-dialog-button-width: 50px !default;", + "variable": "grid-ai-assistant-confirm-dialog-button-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-ai-confirm-dialog-button-width)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 16, + "widget": "gridBase", + "literals": [ + "7px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-context-menu-item-padding-block: 7px !default;", + "variable": "grid-context-menu-item-padding-block", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-context-menu-item-padding-block)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 17, + "widget": "gridBase", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-context-menu-item-padding-inline-start: 5px !default;", + "variable": "grid-context-menu-item-padding-inline-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-context-menu-item-padding-inline-start)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 18, + "widget": "gridBase", + "literals": [ + "30px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-context-menu-item-padding-inline-end: 30px !default;", + "variable": "grid-context-menu-item-padding-inline-end", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-context-menu-item-padding-inline-end)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 19, + "widget": "gridBase", + "literals": [ + "5px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-context-menu-overlay-item-padding: 5px !default;", + "variable": "grid-context-menu-overlay-item-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-context-menu-overlay-item-padding)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 20, + "widget": "gridBase", + "literals": [ + "30px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-context-menu-overlay-item-padding-inline-end: 30px !default;", + "variable": "grid-context-menu-overlay-item-padding-inline-end", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-context-menu-overlay-item-padding-inline-end)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 21, + "widget": "gridBase", + "literals": [ + "8px", + "5px", + "7px" + ], + "occurrences": 4, + "marker": null, + "text": "$grid-menu-bar-item-padding: 8px 5px 7px 5px !default;", + "variable": "grid-menu-bar-item-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-menu-bar-item-padding)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 22, + "widget": "gridBase", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-menu-caption-padding-inline-start: 6px !default;", + "variable": "grid-menu-caption-padding-inline-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-menu-caption-padding-inline-start)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 23, + "widget": "gridBase", + "literals": [ + "16px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-column-chooser-title-font-size: 16px !default;", + "variable": "grid-column-chooser-title-font-size", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-column-chooser-title-font-size)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 24, + "widget": "gridBase", + "literals": [ + "20px" + ], + "occurrences": 3, + "marker": null, + "text": "$grid-column-chooser-content-padding: 0 20px 20px 20px !default;", + "variable": "grid-column-chooser-content-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-column-chooser-content-padding)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 25, + "widget": "gridBase", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-column-chooser-item-margin-block-end: 10px !default;", + "variable": "grid-column-chooser-item-margin-block-end", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-column-chooser-item-margin-block-end)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 26, + "widget": "gridBase", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-column-chooser-tree-view-item-padding-inline-start: 4px !default;", + "variable": "grid-column-chooser-tree-view-item-padding-inline-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-column-chooser-tree-view-item-padding-inline-start)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 27, + "widget": "gridBase", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-column-separator-width: 3px !default;", + "variable": "grid-column-separator-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-column-separator-width)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 28, + "widget": "gridBase", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-toolbar-button-margin-inline-start: 10px !default;", + "variable": "grid-toolbar-button-margin-inline-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-toolbar-button-margin-inline-start)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 29, + "widget": "gridBase", + "literals": [ + "15px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-search-panel-margin-inline-start: 15px !default;", + "variable": "grid-search-panel-margin-inline-start", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-search-panel-margin-inline-start)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 30, + "widget": "gridBase", + "literals": [ + "100px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-rowsview-empty-height: 100px !default;", + "variable": "grid-rowsview-empty-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-rowsview-empty-height)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 31, + "widget": "gridBase", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-bottom-load-panel-padding: 10px !default;", + "variable": "grid-bottom-load-panel-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-bottom-load-panel-padding)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 32, + "widget": "gridBase", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-filter-panel-padding: 10px !default;", + "variable": "grid-filter-panel-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-filter-panel-padding)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 33, + "widget": "gridBase", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-filter-panel-checkbox-padding-inline-end: 10px !default;", + "variable": "grid-filter-panel-checkbox-padding-inline-end", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-filter-panel-checkbox-padding-inline-end)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 34, + "widget": "gridBase", + "literals": [ + "7px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-filter-panel-icon-margin-inline-end: 7px !default;", + "variable": "grid-filter-panel-icon-margin-inline-end", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-filter-panel-icon-margin-inline-end)" + }, + { + "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", + "line": 1, + "widget": "gridBase", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$ai-chat-toolbar-item-spacing: 4px !default;", + "variable": "ai-chat-toolbar-item-spacing", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-ai-chat-toolbar-item-padding-inline-end)" + }, + { + "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", + "line": 2, + "widget": "gridBase", + "literals": [ + "8px" + ], + "occurrences": 1, + "marker": null, + "text": "$ai-chat-message-gap: 8px !default;", + "variable": "ai-chat-message-gap", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-ai-chat-message-gap)" + }, + { + "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", + "line": 3, + "widget": "gridBase", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$ai-chat-message-content-gap: 4px !default;", + "variable": "ai-chat-message-content-gap", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-ai-chat-message-content-gap)" + }, + { + "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", + "line": 4, + "widget": "gridBase", + "literals": [ + "280px" + ], + "occurrences": 1, + "marker": null, + "text": "$ai-chat-message-width: 280px !default;", + "variable": "ai-chat-message-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-ai-chat-message-min-width)" + }, + { + "file": "scss/widgets/base/gridBase/layout/aiChat/_variables.scss", + "line": 5, + "widget": "gridBase", + "literals": [ + "4px" + ], + "occurrences": 1, + "marker": null, + "text": "$ai-chat-message-regenerate-button-border-radius: 4px !default;", + "variable": "ai-chat-message-regenerate-button-border-radius", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-ai-chat-message-regenerate-button-border-radius)" + }, { "file": "scss/widgets/base/list/_index.scss", "line": 6, From cb4993f03412f978feb6678ab85b36f6fe6cc575 Mon Sep 17 00:00:00 2001 From: Andrei Kharitonov Date: Wed, 2 Sep 2026 17:40:37 +0200 Subject: [PATCH 25/25] Tokenize the rest of colorView and gridBase --- .../scss/widgets/base/colorView/_index.scss | 13 +- .../scss/widgets/base/gridBase/_index.scss | 24 +- .../widgets/base/gridBase/_variables.scss | 66 +++++- .../widgets/base/gridBase/layout/cell.scss | 4 +- .../widgets/fluent-next/colorView/_index.scss | 7 +- .../fluent-next/colorView/_public.scss | 7 +- .../widgets/fluent-next/colorView/_sizes.scss | 9 +- .../widgets/fluent-next/gridBase/_index.scss | 6 + .../widgets/fluent-next/gridBase/_public.scss | 6 + .../widgets/fluent-next/gridBase/_sizes.scss | 8 + .../tests/base-size-markers.baseline.json | 7 +- .../devextreme-scss/tests/calc-budget.json | 8 +- .../tools/naming/derive-registries.mjs | 10 +- .../tools/naming/registries.json | 9 +- .../tools/review/nested-scopes.json | 2 + .../tools/sizes/lists/BASE-SIZES.md | 36 +-- .../tools/sizes/lists/base-owned.json | 137 ++---------- .../tools/sizes/lists/theme-settable.json | 210 +++++++++++++++--- 18 files changed, 338 insertions(+), 231 deletions(-) diff --git a/packages/devextreme-scss/scss/widgets/base/colorView/_index.scss b/packages/devextreme-scss/scss/widgets/base/colorView/_index.scss index fec9bd50437e..08b624b7c753 100644 --- a/packages/devextreme-scss/scss/widgets/base/colorView/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/colorView/_index.scss @@ -3,7 +3,7 @@ $color-view-container-width: 450px !default; $color-view-palette-width: 288px !default; $color-view-palette-height: 299px !default; -$color-view-alpha-width: 292px !default; +$color-view-alpha-cell-width: 292px !default; $color-view-hue-scale-width: 18px !default; $color-view-hue-scale-height: $color-view-palette-height !default; $color-view-hue-scale-wrapper-height: $color-view-hue-scale-height + 2 !default; @@ -33,6 +33,9 @@ $color-view-controls-margin-inline-start: 27px !default; $color-view-controls-margin-inline-start-rtl: 25px !default; $color-view-color-preview-width: 86px !default; $color-view-color-preview-height: 40px !default; +$color-view-alpha-scale-height: 20px !default; +$color-view-alpha-cell-margin-block: 6px !default; +$color-view-apply-button-margin-inline-end: 10px !default; .dx-colorview-container { width: $color-view-container-width; @@ -65,7 +68,7 @@ $color-view-color-preview-height: 40px !default; margin-bottom: 0; &.dx-colorview-apply-button { - margin-right: 10px; + margin-right: $color-view-apply-button-margin-inline-end; margin-left: 0; } @@ -180,7 +183,7 @@ $color-view-color-preview-height: 40px !default; .dx-colorview-alpha-channel-scale { width: $color-view-palette-width; - height: 20px; + height: $color-view-alpha-scale-height; position: relative; } @@ -205,9 +208,9 @@ $color-view-color-preview-height: 40px !default; } .dx-colorview-alpha-channel-cell { - margin: 6px 0; + margin: $color-view-alpha-cell-margin-block 0; position: relative; - width: $color-view-alpha-width; + width: $color-view-alpha-cell-width; .dx-button { width: $color-view-controls-width; diff --git a/packages/devextreme-scss/scss/widgets/base/gridBase/_index.scss b/packages/devextreme-scss/scss/widgets/base/gridBase/_index.scss index 2bfecdc94676..9b25a266e382 100644 --- a/packages/devextreme-scss/scss/widgets/base/gridBase/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/gridBase/_index.scss @@ -112,8 +112,8 @@ .dx-sort-index-icon { padding-right: $grid-sort-index-offset; - margin-left: -$grid-sort-index-offset; - width: $grid-sort-index-width + $grid-sort-index-offset; + margin-left: grid-negate($grid-sort-index-offset); + width: grid-sum($grid-sort-index-width, $grid-sort-index-offset); } .dx-sort, @@ -130,7 +130,7 @@ bottom: 0; left: 0; right: 0; - margin: -$grid-cell-padding; + margin: grid-negate($grid-cell-padding); } } } @@ -315,7 +315,7 @@ } &.dx-sort-index { - width: $grid-column-header-indicator-width + $grid-sort-index-width; + width: grid-sum($grid-column-header-indicator-width, $grid-sort-index-width); } } } @@ -500,7 +500,7 @@ .dx-sort-indicator, .dx-header-filter-indicator { - max-width: calc(100% - #{math.round($grid-column-header-indicator-width + $grid-text-content-margin)}); + max-width: grid-header-text-max-width(1, 1); &.dx-text-content-alignment-left { margin-right: $grid-text-content-margin; @@ -511,31 +511,31 @@ } &.dx-text-content-alignment-left.dx-text-content-alignment-right { - max-width: calc(100% - #{math.round($grid-column-header-indicator-width * 2 + $grid-text-content-margin * 2)}); + max-width: grid-header-text-max-width(2, 2); } } .dx-sort-indicator.dx-header-filter-indicator { - max-width: calc(100% - #{math.round($grid-column-header-indicator-width * 2 + $grid-text-content-margin)}); + max-width: grid-header-text-max-width(2, 1); } .dx-sort-indicator.dx-header-filter-indicator.dx-text-content-alignment-left.dx-text-content-alignment-right { - max-width: calc(100% - #{math.round($grid-column-header-indicator-width * 4 + $grid-text-content-margin * 2)}); + max-width: grid-header-text-max-width(4, 2); } .dx-sort-indicator.dx-sort-index-indicator { - max-width: calc(100% - #{math.round($grid-column-header-indicator-width + $grid-text-content-margin + $grid-sort-index-width)}); + max-width: grid-header-text-max-width(1, 1, 1); &.dx-header-filter-indicator { - max-width: calc(100% - #{math.round($grid-column-header-indicator-width * 2 + $grid-text-content-margin + $grid-sort-index-width)}); + max-width: grid-header-text-max-width(2, 1, 1); } &.dx-text-content-alignment-left.dx-text-content-alignment-right { - max-width: calc(100% - #{math.round($grid-column-header-indicator-width * 2 + $grid-text-content-margin * 2 + $grid-sort-index-width)}); + max-width: grid-header-text-max-width(2, 2, 1); } &.dx-header-filter-indicator.dx-text-content-alignment-left.dx-text-content-alignment-right { - max-width: calc(100% - #{math.round($grid-column-header-indicator-width * 4 + $grid-text-content-margin * 2 + $grid-sort-index-width)}); + max-width: grid-header-text-max-width(4, 2, 1); } } } diff --git a/packages/devextreme-scss/scss/widgets/base/gridBase/_variables.scss b/packages/devextreme-scss/scss/widgets/base/gridBase/_variables.scss index 8d631d9aa12a..efc0bc94ad13 100644 --- a/packages/devextreme-scss/scss/widgets/base/gridBase/_variables.scss +++ b/packages/devextreme-scss/scss/widgets/base/gridBase/_variables.scss @@ -1,15 +1,20 @@ -$grid-cell-padding: 7px; +@use "sass:math"; +@use "sass:meta"; + +$grid-cell-padding: 7px !default; $grid-texteditor-input-padding: 32px !default; -$grid-total-footer-paddings: 7px; + +// the footer used to be written as `$x * 2`; the knob holds the padding itself now +$grid-total-footer-padding-block: 14px !default; $grid-command-select-column-width: 70px !default; $grid-command-edit-column-width: 100px !default; $grid-command-edit-column-with-icons-width: 80px !default; $grid-command-expand-column-width: 30px !default; $grid-command-adaptive-column-width: 36px !default; -$grid-column-header-indicator-width: 14px; -$grid-text-content-margin: 3px; -$grid-sort-index-width: 12px; -$grid-sort-index-offset: 3px; +$grid-column-header-indicator-width: 14px !default; +$grid-text-content-margin: 3px !default; +$grid-sort-index-width: 12px !default; +$grid-sort-index-offset: 3px !default; $grid-ai-assistant-confirm-dialog-button-width: 50px !default; // Sizes the shared layer used to pin inside rules; the theme owns them now @@ -32,3 +37,52 @@ $grid-bottom-load-panel-padding: 10px !default; $grid-filter-panel-padding: 10px !default; $grid-filter-panel-checkbox-padding-inline-end: 10px !default; $grid-filter-panel-icon-margin-inline-end: 7px !default; + +/* + * The four sizes above are read in arithmetic, and arithmetic is where a token cannot follow: a + * legacy theme passes numbers, which Sass folds at build time, while fluent-next passes var(), + * which Sass can neither add nor negate nor round. So every such spot goes through one of the + * three helpers below: with numbers they return exactly what the layer emitted before, with + * var() they emit the same sum as a single runtime calc(). Nothing else in the layer changes. + */ + +@function grid-negate($value) { + @if meta.type-of($value) == number { + @return -$value; + } + + @return calc(-1 * #{$value}); +} + +@function grid-sum($first, $second) { + @if meta.type-of($first) == number and meta.type-of($second) == number { + @return $first + $second; + } + + @return calc(#{$first} + #{$second}); +} + +/* + * Header text must not run under the indicator icons, so its max-width subtracts them. math.round() + * guarded against a fractional theme value; with the current numbers (14/3/12) every one of the + * eight sums is already whole, so dropping it in the var() branch subtracts the same amount. + */ +@function grid-header-text-max-width($indicators, $margins, $sort-indexes: 0) { + @if meta.type-of($grid-column-header-indicator-width) == number + and meta.type-of($grid-text-content-margin) == number + and meta.type-of($grid-sort-index-width) == number { + $sum: $grid-column-header-indicator-width * $indicators + + $grid-text-content-margin * $margins + + $grid-sort-index-width * $sort-indexes; + + @return calc(100% - #{math.round($sum)}); + } + + $sum: "#{$indicators} * #{$grid-column-header-indicator-width} + #{$margins} * #{$grid-text-content-margin}"; + + @if $sort-indexes > 0 { + $sum: "#{$sum} + #{$sort-indexes} * #{$grid-sort-index-width}"; + } + + @return calc(100% - (#{$sum})); +} diff --git a/packages/devextreme-scss/scss/widgets/base/gridBase/layout/cell.scss b/packages/devextreme-scss/scss/widgets/base/gridBase/layout/cell.scss index 493328baff48..b08254901bff 100644 --- a/packages/devextreme-scss/scss/widgets/base/gridBase/layout/cell.scss +++ b/packages/devextreme-scss/scss/widgets/base/gridBase/layout/cell.scss @@ -247,8 +247,8 @@ // (0,3,1) .dx-#{$widget-name}-total-footer > .dx-#{$widget-name}-content .dx-row > td { - padding-top: $grid-total-footer-paddings * 2; - padding-bottom: $grid-total-footer-paddings * 2; + padding-top: $grid-total-footer-padding-block; + padding-bottom: $grid-total-footer-padding-block; } // (0,4,0) diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_index.scss index ae83634ae0c2..3e9e82b52dda 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_index.scss @@ -5,7 +5,7 @@ $color-view-container-width: var(--dx-color-view-container-width), $color-view-palette-width: var(--dx-color-view-palette-width), $color-view-palette-height: var(--dx-color-view-palette-height), - $color-view-alpha-width: var(--dx-color-view-alpha-width), + $color-view-alpha-cell-width: var(--dx-color-view-alpha-cell-width), $color-view-hue-scale-width: var(--dx-color-view-hue-scale-width), $color-view-hue-scale-height: var(--dx-color-view-hue-scale-height), $color-view-hue-scale-wrapper-height: var(--dx-color-view-hue-scale-wrapper-height), @@ -15,13 +15,16 @@ $color-view-alpha-label-width: var(--dx-color-view-container-alpha-label-width), $color-view-textbox-width: var(--dx-color-view-container-textbox-width), $color-view-textbox-margin: var(--dx-color-view-container-textbox-margin), - $color-view-alpha-row-margin-block-start: var(--dx-color-view-alpha-margin), + $color-view-alpha-row-margin-block-start: var(--dx-color-view-alpha-row-margin-block-start), $color-view-hue-scale-cell-margin-inline-start: var(--dx-color-view-hue-scale-margin), $color-view-controls-width: var(--dx-color-view-controls-container-width), $color-view-controls-margin-inline-start: var(--dx-color-view-controls-container-margin), $color-view-controls-margin-inline-start-rtl: var(--dx-color-view-controls-container-margin), $color-view-color-preview-width: 100%, $color-view-color-preview-height: var(--dx-color-view-color-preview-height), + $color-view-alpha-scale-height: var(--dx-color-view-alpha-scale-height), + $color-view-alpha-cell-margin-block: var(--dx-color-view-alpha-cell-margin-block), + $color-view-apply-button-margin-inline-end: var(--dx-color-view-apply-button-margin-inline-end), ); @include dx-base-colorview-styles(var(--dx-color-view-handle-content), var(--dx-color-view-handle-border)); diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_public.scss index 6bac38e37c44..643afa0a2899 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_public.scss @@ -2,8 +2,11 @@ @use "sizes" as *; @mixin publish { - --dx-color-view-alpha-margin: #{$color-view-alpha-margin}; - --dx-color-view-alpha-width: #{$color-view-alpha-width}; + --dx-color-view-alpha-cell-margin-block: #{$color-view-alpha-cell-margin-block}; + --dx-color-view-alpha-cell-width: #{$color-view-alpha-cell-width}; + --dx-color-view-alpha-row-margin-block-start: #{$color-view-alpha-row-margin-block-start}; + --dx-color-view-alpha-scale-height: #{$color-view-alpha-scale-height}; + --dx-color-view-apply-button-margin-inline-end: #{$color-view-apply-button-margin-inline-end}; --dx-color-view-bg-box-palette-cell-bg: var(--dx-surface-overlay); --dx-color-view-border: #{$color-view-border}; --dx-color-view-color-preview-container-margin: #{$color-view-color-preview-container-margin}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_sizes.scss index 19726e799712..170e73218944 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/colorView/_sizes.scss @@ -3,7 +3,7 @@ $color-view-container-width: 450px !default; // dx-offscale: 450px $color-view-palette-width: 288px !default; // dx-offscale: 288px $color-view-palette-height: 299px !default; // dx-offscale: 299px -$color-view-alpha-margin: ds.$spacing-100 !default; +$color-view-alpha-row-margin-block-start: ds.$spacing-100 !default; $color-view-hue-scale-width: ds.$spacing-180 !default; $color-view-hue-scale-margin: ds.$spacing-190 !default; $color-view-color-preview-height: ds.$spacing-400 !default; @@ -28,7 +28,12 @@ $color-view-color-preview-container-margin: ds.$spacing-10 !default; * Derived values, moved out of _index.scss: a file that emits rules must not declare * variables (NAMING.md, O7). */ -$color-view-alpha-width: $color-view-palette-width + 4; +$color-view-alpha-cell-width: $color-view-palette-width + 4; // the wrapper carries the 1px hairline ring on both sides, so it is two pixels taller than the scale $color-view-hue-scale-wrapper-height: $color-view-palette-height + 2; + +// Hoisted out of the shared layer's rules; values match what it used to pin +$color-view-alpha-scale-height: ds.$spacing-200 !default; +$color-view-alpha-cell-margin-block: ds.$spacing-60 !default; +$color-view-apply-button-margin-inline-end: ds.$spacing-100 !default; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_index.scss b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_index.scss index 2bdcce817110..097fe2bd221b 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_index.scss @@ -58,6 +58,12 @@ $grid-filter-panel-padding: var(--dx-grid-filter-panel-padding), $grid-filter-panel-checkbox-padding-inline-end: var(--dx-grid-filter-panel-checkbox-padding-inline-end), $grid-filter-panel-icon-margin-inline-end: var(--dx-grid-filter-panel-icon-margin-inline-end), + $grid-cell-padding: var(--dx-grid-cell-content-padding), + $grid-total-footer-padding-block: var(--dx-grid-summary-padding-block), + $grid-column-header-indicator-width: var(--dx-grid-column-indicator-width), + $grid-text-content-margin: var(--dx-grid-header-text-margin-inline), + $grid-sort-index-width: var(--dx-grid-sort-index-width), + $grid-sort-index-offset: var(--dx-grid-sort-index-offset), ); @use "../../base/gridBase/layout/aiChat/variables" as baseAiChatVariables with ( $ai-chat-toolbar-item-spacing: var(--dx-grid-ai-chat-toolbar-item-padding-inline-end), diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_public.scss b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_public.scss index 34cc68b1dea8..fc5ee810700d 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_public.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_public.scss @@ -4,6 +4,12 @@ @use "layout/aiChat/sizes" as *; @mixin publish { + --dx-grid-cell-content-padding: #{$grid-cell-content-padding}; + --dx-grid-summary-padding-block: #{$grid-summary-padding-block}; + --dx-grid-column-indicator-width: #{$grid-column-indicator-width}; + --dx-grid-header-text-margin-inline: #{$grid-header-text-margin-inline}; + --dx-grid-sort-index-width: #{$grid-sort-index-width}; + --dx-grid-sort-index-offset: #{$grid-sort-index-offset}; --dx-grid-context-menu-item-padding-block: #{$grid-context-menu-item-padding-block}; --dx-grid-context-menu-item-padding-inline-start: #{$grid-context-menu-item-padding-inline-start}; --dx-grid-context-menu-item-padding-inline-end: #{$grid-context-menu-item-padding-inline-end}; diff --git a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_sizes.scss b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_sizes.scss index 58b562f5755c..564768ff67e7 100644 --- a/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_sizes.scss +++ b/packages/devextreme-scss/scss/widgets/fluent-next/gridBase/_sizes.scss @@ -180,3 +180,11 @@ $grid-rowsview-empty-height: ds.$spacing-1000 !default; $grid-bottom-load-panel-padding: ds.$spacing-100 !default; $grid-filter-panel-checkbox-padding-inline-end: ds.$spacing-100 !default; $grid-filter-panel-icon-margin-inline-end: ds.$spacing-70 !default; + +// The last of the shared layer's sizes: read in arithmetic, so base goes through its dual-mode helpers +$grid-cell-content-padding: ds.$spacing-70 !default; +$grid-summary-padding-block: ds.$spacing-140 !default; +$grid-column-indicator-width: ds.$spacing-140 !default; +$grid-header-text-margin-inline: ds.$spacing-30 !default; +$grid-sort-index-width: ds.$spacing-120 !default; +$grid-sort-index-offset: ds.$spacing-30 !default; diff --git a/packages/devextreme-scss/tests/base-size-markers.baseline.json b/packages/devextreme-scss/tests/base-size-markers.baseline.json index 5ce035db846b..8720caffd498 100644 --- a/packages/devextreme-scss/tests/base-size-markers.baseline.json +++ b/packages/devextreme-scss/tests/base-size-markers.baseline.json @@ -1,8 +1,5 @@ { "openKnobs": 0, - "unclassified": 9, - "unclassifiedByWidget": { - "gridBase": 6, - "colorView": 3 - } + "unclassified": 0, + "unclassifiedByWidget": {} } diff --git a/packages/devextreme-scss/tests/calc-budget.json b/packages/devextreme-scss/tests/calc-budget.json index 903e8e4de13a..75ace0652dc0 100644 --- a/packages/devextreme-scss/tests/calc-budget.json +++ b/packages/devextreme-scss/tests/calc-budget.json @@ -1,18 +1,18 @@ { "dx.fluent-next.blue.dark.compact.css": { - "calcOccurrences": 359, + "calcOccurrences": 367, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.dark.css": { - "calcOccurrences": 359, + "calcOccurrences": 367, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.compact.css": { - "calcOccurrences": 359, + "calcOccurrences": 367, "declarationsWithDeepCalc": 5 }, "dx.fluent-next.blue.light.css": { - "calcOccurrences": 359, + "calcOccurrences": 367, "declarationsWithDeepCalc": 5 } } diff --git a/packages/devextreme-scss/tools/naming/derive-registries.mjs b/packages/devextreme-scss/tools/naming/derive-registries.mjs index dbda7323caf2..dc5f1baa5211 100644 --- a/packages/devextreme-scss/tools/naming/derive-registries.mjs +++ b/packages/devextreme-scss/tools/naming/derive-registries.mjs @@ -912,7 +912,13 @@ const OVERRIDES = { 'typing-indicator', 'circle', 'bubble', 'group', // wave B3: .dx-chat-messagebubble-image is a real box inside a bubble 'image'], - 'color-view': ['palette', 'palette-cell', 'hue-scale', 'hue-scale-cell', 'hue-scale-wrapper', 'alpha', 'controls', + /* + * `alpha` alone was doing three jobs — the alpha row, the alpha cell and the alpha scale are + * three different elements with three different sizes, so each gets its own segment and the + * bare `alpha` is gone. `apply-button` names the dialog button the base layer sizes. + */ + 'color-view': ['palette', 'palette-cell', 'hue-scale', 'hue-scale-cell', 'hue-scale-wrapper', 'controls', + 'alpha-row', 'alpha-cell', 'alpha-scale', 'alpha-label', 'apply-button', 'container', 'label', 'handle', 'color-preview', 'preview', 'textbox', 'hex', 'overlay', 'content-box', 'bg-box'], diagram: [ @@ -1071,6 +1077,8 @@ const OVERRIDES = { // the last of the base-layer sizes: menu bar and caption, the search panel, the bottom // load panel and the rows view, each named after the class the shared layer sizes 'menu-bar', 'menu-caption', 'search-panel', 'bottom-load-panel', 'rowsview', + // .dx-column-indicators: the sort / header-filter icon strip in a column header + 'column-indicator', ], // dataGrid's own deltas on top of the chassis: the group panel and the edit-form buttons. // `group-panel-item` and `block-separator` are compounds — one anatomy level each, not two. diff --git a/packages/devextreme-scss/tools/naming/registries.json b/packages/devextreme-scss/tools/naming/registries.json index 9ef9265a2cd6..6da09df99886 100644 --- a/packages/devextreme-scss/tools/naming/registries.json +++ b/packages/devextreme-scss/tools/naming/registries.json @@ -1406,8 +1406,12 @@ "hue-scale", "hue-scale-cell", "hue-scale-wrapper", - "alpha", "controls", + "alpha-row", + "alpha-cell", + "alpha-scale", + "alpha-label", + "apply-button", "container", "label", "handle", @@ -2002,7 +2006,8 @@ "menu-caption", "search-panel", "bottom-load-panel", - "rowsview" + "rowsview", + "column-indicator" ], "data-grid": [ "group-panel", diff --git a/packages/devextreme-scss/tools/review/nested-scopes.json b/packages/devextreme-scss/tools/review/nested-scopes.json index 73c4dd36faad..2d06b36f14cf 100644 --- a/packages/devextreme-scss/tools/review/nested-scopes.json +++ b/packages/devextreme-scss/tools/review/nested-scopes.json @@ -278,6 +278,8 @@ "dx-datagrid-summary-item", "dx-datagrid-total-footer", "dx-editor-cell", + "dx-header-row", + "dx-highlight-outline", "dx-row", "dx-treelist-adaptive-more", "dx-treelist-borders", diff --git a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md index 7ddc5324be93..64ebf36f80e1 100644 --- a/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md +++ b/packages/devextreme-scss/tools/sizes/lists/BASE-SIZES.md @@ -14,42 +14,16 @@ and carries a marker saying why. | a raw grep of the layer | 768 | | …of those, inside comments (commented-out code, prose) | 26 | | **in code** | **742** | -| — the theme can already set from outside | 516 | -| — nailed into the shared layer | 226 | +| — the theme can already set from outside | 525 | +| — nailed into the shared layer | 217 | ## What the theme can already set -516 occurrences in 445 `!default` variables. fluent-next already passes 492; 0 are open knobs nobody turns. +525 occurrences in 454 `!default` variables. fluent-next already passes 501; 0 are open knobs nobody turns. ## What is nailed into the layer -| widget | local-var | inline | total | -|---|---|---|---| -| gridBase | 6 | | **6** | -| colorView | | 3 | **3** | +| widget | | total | +|---||---| ## Places, by widget - -### gridBase — 6 - -- `scss/widgets/base/gridBase/_variables.scss:1` · local-var - `$grid-cell-padding: 7px;` -- `scss/widgets/base/gridBase/_variables.scss:3` · local-var - `$grid-total-footer-paddings: 7px;` -- `scss/widgets/base/gridBase/_variables.scss:9` · local-var - `$grid-column-header-indicator-width: 14px;` -- `scss/widgets/base/gridBase/_variables.scss:10` · local-var - `$grid-text-content-margin: 3px;` -- `scss/widgets/base/gridBase/_variables.scss:11` · local-var - `$grid-sort-index-width: 12px;` -- `scss/widgets/base/gridBase/_variables.scss:12` · local-var - `$grid-sort-index-offset: 3px;` - -### colorView — 3 - -- `scss/widgets/base/colorView/_index.scss:68` · inline - `margin-right: 10px;` -- `scss/widgets/base/colorView/_index.scss:183` · inline - `height: 20px;` -- `scss/widgets/base/colorView/_index.scss:208` · inline - `margin: 6px 0;` diff --git a/packages/devextreme-scss/tools/sizes/lists/base-owned.json b/packages/devextreme-scss/tools/sizes/lists/base-owned.json index 1722ced313e3..0ee00cdbe467 100644 --- a/packages/devextreme-scss/tools/sizes/lists/base-owned.json +++ b/packages/devextreme-scss/tools/sizes/lists/base-owned.json @@ -6,21 +6,21 @@ "marker — the classification comment already on the line, from tools/review/size-markers.json." ], "summary": { - "occurrences": 226, + "occurrences": 217, "byCategory": { - "inline": 91, + "inline": 88, "geometry": 69, - "local-var": 41, + "local-var": 35, "calc": 9, "structural": 8, "mixin-arg": 6, "media": 2 }, "byWidget": { - "colorView": 45, + "colorView": 42, "scheduler": 33, - "gridBase": 28, "textEditor": 26, + "gridBase": 22, "htmlEditor": 16, "cardView": 15, "pivotGrid": 11, @@ -47,11 +47,8 @@ "toolbar": 1, "treeView": 1 }, - "unmarked": 9, - "unmarkedByWidget": { - "gridBase": 6, - "colorView": 3 - } + "unmarked": 0, + "unmarkedByWidget": {} }, "places": [ { @@ -735,19 +732,7 @@ }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 68, - "widget": "colorView", - "literals": [ - "10px" - ], - "occurrences": 1, - "marker": null, - "text": "margin-right: 10px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 81, + "line": 84, "widget": "colorView", "literals": [ "1px" @@ -759,7 +744,7 @@ }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 117, + "line": 120, "widget": "colorView", "literals": [ "-7px" @@ -771,7 +756,7 @@ }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 123, + "line": 126, "widget": "colorView", "literals": [ "-6px" @@ -783,7 +768,7 @@ }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 141, + "line": 144, "widget": "colorView", "literals": [ "16px" @@ -795,7 +780,7 @@ }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 142, + "line": 145, "widget": "colorView", "literals": [ "8px" @@ -807,7 +792,7 @@ }, { "file": "scss/widgets/base/colorView/_index.scss", - "line": 146, + "line": 149, "widget": "colorView", "literals": [ "6px", @@ -819,30 +804,6 @@ "text": "background-position: 0 6px, 8px 14px; // dx-fixed-size: the same checkerboard, shifted to sit inside the alpha scale", "category": "inline" }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 183, - "widget": "colorView", - "literals": [ - "20px" - ], - "occurrences": 1, - "marker": null, - "text": "height: 20px;", - "category": "inline" - }, - { - "file": "scss/widgets/base/colorView/_index.scss", - "line": 208, - "widget": "colorView", - "literals": [ - "6px" - ], - "occurrences": 1, - "marker": null, - "text": "margin: 6px 0;", - "category": "inline" - }, { "file": "scss/widgets/base/colorView/_mixins.scss", "line": 3, @@ -1281,78 +1242,6 @@ "text": "margin-right: -2px; // dx-px-nudge: RTL mirror — pulls the menu out by its own border", "category": "inline" }, - { - "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 1, - "widget": "gridBase", - "literals": [ - "7px" - ], - "occurrences": 1, - "marker": null, - "text": "$grid-cell-padding: 7px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 3, - "widget": "gridBase", - "literals": [ - "7px" - ], - "occurrences": 1, - "marker": null, - "text": "$grid-total-footer-paddings: 7px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 9, - "widget": "gridBase", - "literals": [ - "14px" - ], - "occurrences": 1, - "marker": null, - "text": "$grid-column-header-indicator-width: 14px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 10, - "widget": "gridBase", - "literals": [ - "3px" - ], - "occurrences": 1, - "marker": null, - "text": "$grid-text-content-margin: 3px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 11, - "widget": "gridBase", - "literals": [ - "12px" - ], - "occurrences": 1, - "marker": null, - "text": "$grid-sort-index-width: 12px;", - "category": "local-var" - }, - { - "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 12, - "widget": "gridBase", - "literals": [ - "3px" - ], - "occurrences": 1, - "marker": null, - "text": "$grid-sort-index-offset: 3px;", - "category": "local-var" - }, { "file": "scss/widgets/base/gridBase/layout/aiChat/_mixins.scss", "line": 47, diff --git a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json index d489c8fb71c9..5ff2f88fddb8 100644 --- a/packages/devextreme-scss/tools/sizes/lists/theme-settable.json +++ b/packages/devextreme-scss/tools/sizes/lists/theme-settable.json @@ -7,9 +7,9 @@ "The match is by variable name. A name declared in a nested module is only reachable once the parent forwards it (see base/chat/_index.scss), which is why an \"open\" row can sit next to injected ones from the same widget." ], "summary": { - "occurrences": 516, - "variables": 445, - "injected": 492, + "occurrences": 525, + "variables": 454, + "injected": 501, "open": 0, "parameters": 24 }, @@ -2439,12 +2439,12 @@ ], "occurrences": 1, "marker": null, - "text": "$color-view-alpha-width: 292px !default;", - "variable": "color-view-alpha-width", + "text": "$color-view-alpha-cell-width: 292px !default;", + "variable": "color-view-alpha-cell-width", "kind": "module-variable", "status": "injected", "setBy": "scss/widgets/fluent-next/colorView/_index.scss", - "setTo": "var(--dx-color-view-alpha-width)" + "setTo": "var(--dx-color-view-alpha-cell-width)" }, { "file": "scss/widgets/base/colorView/_index.scss", @@ -2573,7 +2573,7 @@ "kind": "module-variable", "status": "injected", "setBy": "scss/widgets/fluent-next/colorView/_index.scss", - "setTo": "var(--dx-color-view-alpha-margin)" + "setTo": "var(--dx-color-view-alpha-row-margin-block-start)" }, { "file": "scss/widgets/base/colorView/_index.scss", @@ -2671,6 +2671,54 @@ "setBy": "scss/widgets/fluent-next/colorView/_index.scss", "setTo": "var(--dx-color-view-color-preview-height)" }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 36, + "widget": "colorView", + "literals": [ + "20px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-alpha-scale-height: 20px !default;", + "variable": "color-view-alpha-scale-height", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-alpha-scale-height)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 37, + "widget": "colorView", + "literals": [ + "6px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-alpha-cell-margin-block: 6px !default;", + "variable": "color-view-alpha-cell-margin-block", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-alpha-cell-margin-block)" + }, + { + "file": "scss/widgets/base/colorView/_index.scss", + "line": 38, + "widget": "colorView", + "literals": [ + "10px" + ], + "occurrences": 1, + "marker": null, + "text": "$color-view-apply-button-margin-inline-end: 10px !default;", + "variable": "color-view-apply-button-margin-inline-end", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/colorView/_index.scss", + "setTo": "var(--dx-color-view-apply-button-margin-inline-end)" + }, { "file": "scss/widgets/base/dataGrid/_index.scss", "line": 13, @@ -4358,7 +4406,23 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 2, + "line": 4, + "widget": "gridBase", + "literals": [ + "7px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-cell-padding: 7px !default;", + "variable": "grid-cell-padding", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-cell-content-padding)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 5, "widget": "gridBase", "literals": [ "32px" @@ -4374,7 +4438,23 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 4, + "line": 8, + "widget": "gridBase", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-total-footer-padding-block: 14px !default;", + "variable": "grid-total-footer-padding-block", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-summary-padding-block)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 9, "widget": "gridBase", "literals": [ "70px" @@ -4390,7 +4470,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 5, + "line": 10, "widget": "gridBase", "literals": [ "100px" @@ -4406,7 +4486,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 6, + "line": 11, "widget": "gridBase", "literals": [ "80px" @@ -4422,7 +4502,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 7, + "line": 12, "widget": "gridBase", "literals": [ "30px" @@ -4438,7 +4518,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 8, + "line": 13, "widget": "gridBase", "literals": [ "36px" @@ -4454,7 +4534,71 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 13, + "line": 14, + "widget": "gridBase", + "literals": [ + "14px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-column-header-indicator-width: 14px !default;", + "variable": "grid-column-header-indicator-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-column-indicator-width)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 15, + "widget": "gridBase", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-text-content-margin: 3px !default;", + "variable": "grid-text-content-margin", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-header-text-margin-inline)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 16, + "widget": "gridBase", + "literals": [ + "12px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-sort-index-width: 12px !default;", + "variable": "grid-sort-index-width", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-sort-index-width)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 17, + "widget": "gridBase", + "literals": [ + "3px" + ], + "occurrences": 1, + "marker": null, + "text": "$grid-sort-index-offset: 3px !default;", + "variable": "grid-sort-index-offset", + "kind": "module-variable", + "status": "injected", + "setBy": "scss/widgets/fluent-next/gridBase/_index.scss", + "setTo": "var(--dx-grid-sort-index-offset)" + }, + { + "file": "scss/widgets/base/gridBase/_variables.scss", + "line": 18, "widget": "gridBase", "literals": [ "50px" @@ -4470,7 +4614,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 16, + "line": 21, "widget": "gridBase", "literals": [ "7px" @@ -4486,7 +4630,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 17, + "line": 22, "widget": "gridBase", "literals": [ "5px" @@ -4502,7 +4646,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 18, + "line": 23, "widget": "gridBase", "literals": [ "30px" @@ -4518,7 +4662,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 19, + "line": 24, "widget": "gridBase", "literals": [ "5px" @@ -4534,7 +4678,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 20, + "line": 25, "widget": "gridBase", "literals": [ "30px" @@ -4550,7 +4694,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 21, + "line": 26, "widget": "gridBase", "literals": [ "8px", @@ -4568,7 +4712,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 22, + "line": 27, "widget": "gridBase", "literals": [ "6px" @@ -4584,7 +4728,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 23, + "line": 28, "widget": "gridBase", "literals": [ "16px" @@ -4600,7 +4744,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 24, + "line": 29, "widget": "gridBase", "literals": [ "20px" @@ -4616,7 +4760,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 25, + "line": 30, "widget": "gridBase", "literals": [ "10px" @@ -4632,7 +4776,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 26, + "line": 31, "widget": "gridBase", "literals": [ "4px" @@ -4648,7 +4792,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 27, + "line": 32, "widget": "gridBase", "literals": [ "3px" @@ -4664,7 +4808,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 28, + "line": 33, "widget": "gridBase", "literals": [ "10px" @@ -4680,7 +4824,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 29, + "line": 34, "widget": "gridBase", "literals": [ "15px" @@ -4696,7 +4840,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 30, + "line": 35, "widget": "gridBase", "literals": [ "100px" @@ -4712,7 +4856,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 31, + "line": 36, "widget": "gridBase", "literals": [ "10px" @@ -4728,7 +4872,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 32, + "line": 37, "widget": "gridBase", "literals": [ "10px" @@ -4744,7 +4888,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 33, + "line": 38, "widget": "gridBase", "literals": [ "10px" @@ -4760,7 +4904,7 @@ }, { "file": "scss/widgets/base/gridBase/_variables.scss", - "line": 34, + "line": 39, "widget": "gridBase", "literals": [ "7px"

9( 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≧JSyR=;u3=OoQ0ys!V3^=i%)l=(?EQf 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