Skip to content

Commit

Permalink
refactor(themes): optimize CSS to reduce bundle size (#972)
Browse files Browse the repository at this point in the history
  • Loading branch information
SisIvanova authored Dec 1, 2023
1 parent b5925b5 commit e62fa49
Show file tree
Hide file tree
Showing 143 changed files with 424 additions and 3,077 deletions.
1 change: 1 addition & 0 deletions scripts/build-styles.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ export async function buildThemes() {
const startTime = new Date();
const paths = await globby([
'src/components/**/*.base.scss',
'src/components/**/*.common.scss',
'src/components/**/*.material.scss',
'src/components/**/*.bootstrap.scss',
'src/components/**/*.indigo.scss',
Expand Down
20 changes: 0 additions & 20 deletions src/components/avatar/themes/shared/avatar.bootstrap.scss
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,3 @@ $theme: $bootstrap;
:host {
--component-size: var(--ig-size, #{var-get($theme, 'default-size')});
}

[part='base'] {
color: var-get($theme, 'color');
background: var-get($theme, 'background');
width: var-get($theme, 'size');
height: var-get($theme, 'size');

[part='initials'] {
font-size: calc(var-get($theme, 'size') / 2);
line-height: calc(var-get($theme, 'size') / 2);
}
}

:host([shape='rounded']) [part='base'] {
border-radius: var-get($theme, 'border-radius');
}

:host([shape='circle']) [part='base'] {
border-radius: calc(var-get($theme, 'size') / 2);
}
20 changes: 0 additions & 20 deletions src/components/avatar/themes/shared/avatar.fluent.scss
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,3 @@ $theme: $fluent;
:host {
--component-size: var(--ig-size, #{var-get($theme, 'default-size')});
}

[part='base'] {
color: var-get($theme, 'color');
background: var-get($theme, 'background');
width: var-get($theme, 'size');
height: var-get($theme, 'size');

[part='initials'] {
font-size: calc(var-get($theme, 'size') / 2);
line-height: calc(var-get($theme, 'size') / 2);
}
}

:host([shape='rounded']) [part='base'] {
border-radius: var-get($theme, 'border-radius');
}

:host([shape='circle']) [part='base'] {
border-radius: calc(var-get($theme, 'size') / 2);
}
20 changes: 0 additions & 20 deletions src/components/avatar/themes/shared/avatar.indigo.scss
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,3 @@ $theme: $indigo;
:host {
--component-size: var(--ig-size, #{var-get($theme, 'default-size')});
}

[part='base'] {
color: var-get($theme, 'color');
background: var-get($theme, 'background');
width: var-get($theme, 'size');
height: var-get($theme, 'size');

[part='initials'] {
font-size: calc(var-get($theme, 'size') / 2);
line-height: calc(var-get($theme, 'size') / 2);
}
}

:host([shape='rounded']) [part='base'] {
border-radius: var-get($theme, 'border-radius');
}

:host([shape='circle']) [part='base'] {
border-radius: calc(var-get($theme, 'size') / 2);
}
18 changes: 9 additions & 9 deletions src/components/avatar/themes/themes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,38 +12,38 @@ import { styles as indigoLight } from './light/avatar.indigo.css.js';
import { styles as materialLight } from './light/avatar.material.css.js';
// Shared Styles
import { styles as bootstrap } from './shared/avatar.bootstrap.css.js';
import { styles as shared } from './shared/avatar.common.css.js';
import { styles as fluent } from './shared/avatar.fluent.css.js';
import { styles as indigo } from './shared/avatar.indigo.css.js';
import { styles as material } from './shared/avatar.material.css.js';
import type { Themes } from '../../../theming/types.js';

const light = {
bootstrap: css`
${bootstrap} ${bootstrapLight}
${shared} ${bootstrap} ${bootstrapLight}
`,
material: css`
${material} ${materialLight}
${shared} ${materialLight}
`,
fluent: css`
${fluent} ${fluentLight}
${shared} ${fluent} ${fluentLight}
`,
indigo: css`
${indigo} ${indigoLight}
${shared} ${indigo} ${indigoLight}
`,
};

const dark = {
bootstrap: css`
${bootstrap} ${bootstrapDark}
${shared} ${bootstrap} ${bootstrapDark}
`,
material: css`
${material} ${materialDark}
${shared} ${materialDark}
`,
fluent: css`
${fluent} ${fluentDark}
${shared} ${fluent} ${fluentDark}
`,
indigo: css`
${indigo} ${indigoDark}
${shared} ${indigo} ${indigoDark}
`,
};

Expand Down
14 changes: 0 additions & 14 deletions src/components/badge/themes/shared/badge.bootstrap.scss
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,6 @@

$theme: $bootstrap;

::slotted(igc-icon) {
color: var-get($theme, 'icon-color');
}

:host([variant='primary']) {
background: var-get($theme, 'background-color');
color: var-get($theme, 'text-color');
}

:host([shape='square']),
:host([outlined][shape='square']) [part='base'] {
border-radius: var-get($theme, 'border-radius');
}

:host([outlined]) [part='base'] {
box-shadow: inset 0 0 0 rem(1px) var-get($theme, 'border-color');
}
22 changes: 0 additions & 22 deletions src/components/badge/themes/shared/badge.fluent.scss

This file was deleted.

22 changes: 0 additions & 22 deletions src/components/badge/themes/shared/badge.indigo.scss

This file was deleted.

20 changes: 9 additions & 11 deletions src/components/badge/themes/themes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,38 +12,36 @@ import { styles as indigoLight } from './light/badge.indigo.css.js';
import { styles as materialLight } from './light/badge.material.css.js';
// Shared Styles
import { styles as bootstrap } from './shared/badge.bootstrap.css.js';
import { styles as fluent } from './shared/badge.fluent.css.js';
import { styles as indigo } from './shared/badge.indigo.css.js';
import { styles as material } from './shared/badge.material.css.js';
import { styles as shared } from './shared/badge.common.css.js';
import { Themes } from '../../../theming/types.js';

const light = {
bootstrap: css`
${bootstrap} ${bootstrapLight}
${shared} ${bootstrap} ${bootstrapLight}
`,
material: css`
${material} ${materialLight}
${shared} ${materialLight}
`,
fluent: css`
${fluent} ${fluentLight}
${shared} ${fluentLight}
`,
indigo: css`
${indigo} ${indigoLight}
${shared} ${indigoLight}
`,
};

const dark = {
bootstrap: css`
${bootstrap} ${bootstrapDark}
${shared} ${bootstrap} ${bootstrapDark}
`,
material: css`
${material} ${materialDark}
${shared} ${materialDark}
`,
fluent: css`
${fluent} ${fluentDark}
${shared} ${fluentDark}
`,
indigo: css`
${indigo} ${indigoDark}
${shared} ${indigoDark}
`,
};

Expand Down
18 changes: 9 additions & 9 deletions src/components/button-group/themes/button.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,38 @@ import { css } from 'lit';

// Shared Styles
import { styles as bootstrap } from './shared/button/button.bootstrap.css.js';
import { styles as shared } from './shared/button/button.common.css.js';
import { styles as fluent } from './shared/button/button.fluent.css.js';
import { styles as indigo } from './shared/button/button.indigo.css.js';
import { styles as material } from './shared/button/button.material.css.js';
import type { Themes } from '../../../theming/types';

const light = {
bootstrap: css`
${bootstrap}
${shared} ${bootstrap}
`,
material: css`
${material}
${shared}
`,
fluent: css`
${fluent}
${shared} ${fluent}
`,
indigo: css`
${indigo}
${shared} ${indigo}
`,
};

const dark = {
bootstrap: css`
${bootstrap}
${shared} ${bootstrap}
`,
material: css`
${material}
${shared}
`,
fluent: css`
${fluent}
${shared} ${fluent}
`,
indigo: css`
${indigo}
${shared} ${indigo}
`,
};

Expand Down
18 changes: 9 additions & 9 deletions src/components/button-group/themes/group.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,38 +12,38 @@ import { styles as indigoLight } from './light/button-group.indigo.css.js';
import { styles as materialLight } from './light/button-group.material.css.js';
// Shared Styles
import { styles as bootstrap } from './shared/group/group.bootstrap.css.js';
import { styles as shared } from './shared/group/group.common.css.js';
import { styles as fluent } from './shared/group/group.fluent.css.js';
import { styles as indigo } from './shared/group/group.indigo.css.js';
import { styles as material } from './shared/group/group.material.css.js';
import type { Themes } from '../../../theming/types';

const light = {
bootstrap: css`
${bootstrap} ${bootstrapLight}
${shared} ${bootstrap} ${bootstrapLight}
`,
material: css`
${material} ${materialLight}
${shared} ${materialLight}
`,
fluent: css`
${fluent} ${fluentLight}
${shared} ${fluent} ${fluentLight}
`,
indigo: css`
${indigo} ${indigoLight}
${shared} ${indigo} ${indigoLight}
`,
};

const dark = {
bootstrap: css`
${bootstrap} ${bootstrapDark}
${shared} ${bootstrap} ${bootstrapDark}
`,
material: css`
${material} ${materialDark}
${shared} ${materialDark}
`,
fluent: css`
${fluent} ${fluentDark}
${shared} ${fluent} ${fluentDark}
`,
indigo: css`
${indigo} ${indigoDark}
${shared} ${indigo} ${indigoDark}
`,
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,8 @@ $group-item-border-thickness: rem(1px);
min-width: var(--button-min-width);

[part~='toggle'] {
$icon-size: rem(18px);

--ig-icon-size: #{$icon-size};
--igx-icon-size: #{$icon-size};

min-height: $bootstrap-flat-btn-size;
border-width: $group-item-border-thickness;
border-color: var-get($theme, 'item-border-color');
color: var-get($theme, 'item-text-color');
background: var-get($theme, 'item-background');
padding-inline: pad-inline(rem(8px), rem(10px), rem(12px));
padding-block: pad-block(rem(2px), rem(4px), rem(7px));
min-width: var(--button-min-width);
Expand All @@ -27,8 +19,6 @@ $group-item-border-thickness: rem(1px);
:host(:hover),
:host(:focus) {
[part~='toggle'] {
color: var-get($theme, 'item-hover-text-color');
background: var-get($theme, 'item-hover-background');
border-color: var-get($theme, 'item-border-color');
}
}
Expand All @@ -38,28 +28,3 @@ $group-item-border-thickness: rem(1px);
box-shadow: 0 0 0 rem(3px) var-get($theme, 'idle-shadow-color');
}
}

:host([selected]) {
[part~='toggle'] {
color: var-get($theme, 'item-selected-text-color');
background: var-get($theme, 'item-selected-background');
border-color: var-get($theme, 'item-selected-border-color');
}
}

:host([selected]:hover),
:host([selected]:focus) {
[part~='toggle'] {
color: var-get($theme, 'item-selected-text-color');
background: var-get($theme, 'item-selected-hover-background');
}
}

:host([disabled]),
:host(:disabled) {
[part~='toggle'] {
color: var-get($theme, 'disabled-text-color');
background: var-get($theme, 'disabled-background-color');
border-color: var-get($theme, 'item-disabled-border');
}
}
Loading

0 comments on commit e62fa49

Please sign in to comment.