Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(layout): implement selector-base #137

Merged
merged 12 commits into from
Feb 12, 2025
4 changes: 4 additions & 0 deletions combine-at-rules.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,13 @@ const plugin = (options = {}) => {
},
Root(root) {
// Combine all of the at-rules into a single at-rule
// Only do this for rules found in the current file.
for (const atRuleName in atRules) {
for (const atRuleParams in atRules[atRuleName]) {
const atRule = atRules[atRuleName][atRuleParams];

console.log(atRule);

root.append(atRule);
}
}
Expand Down
2 changes: 1 addition & 1 deletion dist/css/base.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/base.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/base/button.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/base/button.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/base/form.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/base/form.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/base/link.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/base/link.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/base/table.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/base/table.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/accordion.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/accordion.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/alert.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/alert.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/card.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/card.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/carousel.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/carousel.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/input-group.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/input-group.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/list.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/list.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/menu.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/menu.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/navigation.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/component/navigation.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/graupl.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/graupl.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/layout.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/layout.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/layout/columns.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/layout/columns.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/layout/container.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/layout/container.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/layout/flex-columns.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/layout/flex-columns.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/normalize.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/normalize.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/state.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/css/state.css.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/css/state/focus.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/state/focus.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/theme.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/theme.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/theme/color.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/theme/color.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/theme/typography.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/theme/typography.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/alignment.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/alignment.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/background.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/background.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/border.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/border.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/color.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/color.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/display.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/display.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/flex.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/flex.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/gradient.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/gradient.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/height.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/height.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/inset.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/inset.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/justification.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/justification.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/list.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/list.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/order.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/order.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/postion.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/postion.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/ratio.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/ratio.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/spacing.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/spacing.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/typography.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/typography.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/visibility.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/visibility.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/width.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/utilities/width.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion postcss.config.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
const config = {
plugins: [
require("postcss-discard-comments"),
require("./combine-at-rules.cjs")({ atRules: ["layer"] }),
// require("./combine-at-rules.cjs")({ atRules: ["layer"] }),
require("autoprefixer"),
require("cssnano"),
],
Expand Down
11 changes: 8 additions & 3 deletions src/scss/layout/columns/_defaults.scss
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,15 @@
// They should not be used to define direct property values (i.e. font-size, color, etc.).
// Those should be defined as custom properties in the `_variables.scss` file.

@use "../../defaults" as root-defaults;

// Columns selectors.
$columns-selector: ".columns" !default;
$columns-count-selector-prefix: ".count-" !default;
$columns-span-selector-prefix: ".span-" !default;
$columns-selector-base: root-defaults.$selector-base !default;
$columns-selector: "columns" !default;
$columns-count-selector-base: $columns-selector-base !default;
$columns-count-selector-prefix: "count-" !default;
$columns-span-selector-base: $columns-selector-base !default;
$columns-span-selector-prefix: "span-" !default;

// Columns properties.
$columns-max-width: 1fr !default;
Expand Down
12 changes: 6 additions & 6 deletions src/scss/layout/columns/_index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
@use "../../mixins/screen";

@include layer(layout) {
#{defaults.$columns-selector} {
#{defaults.$columns-selector-base}#{defaults.$columns-selector} {
display: grid;
grid-template-columns: $columns-grid-template-columns;
gap: $columns-row-gap $columns-column-gap;
Expand All @@ -18,26 +18,26 @@
}

@for $i from defaults.$columns-min-count through defaults.$columns-max-count {
#{defaults.$columns-count-selector-prefix}#{$i} {
#{defaults.$columns-count-selector-base}#{defaults.$columns-count-selector-prefix}#{$i} {
--#{root-defaults.$prefix}columns-count: #{$i};

// For span values bigger than the actual column count, set them to the
// maximum column count so they don't break the layout.
@for $j from $i + 1 through defaults.$columns-max-count {
#{defaults.$columns-span-selector-prefix}#{$j} {
#{defaults.$columns-span-selector-base}#{defaults.$columns-span-selector-prefix}#{$j} {
--#{root-defaults.$prefix}columns-span: #{$i};
}
}
}

#{defaults.$columns-span-selector-prefix}#{$i} {
#{defaults.$columns-span-selector-base}#{defaults.$columns-span-selector-prefix}#{$i} {
--#{root-defaults.$prefix}columns-span: #{$i};
}
}

// Disable columns on small screens to avoid horizontal bleeding.
@include screen.trigger(force-single-column) {
#{defaults.$columns-selector} {
#{defaults.$columns-selector-base}#{defaults.$columns-selector} {
--#{root-defaults.$prefix}columns-min-width: #{defaults.$columns-max-width};

> * {
Expand All @@ -49,7 +49,7 @@
from defaults.$columns-min-count
through defaults.$columns-max-count
{
#{defaults.$columns-span-selector-prefix}#{$i} {
#{defaults.$columns-span-selector-base}#{defaults.$columns-span-selector-prefix}#{$i} {
--#{root-defaults.$prefix}columns-span: 1;
}
}
Expand Down
14 changes: 10 additions & 4 deletions src/scss/layout/container/_defaults.scss
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,17 @@
// They should not be used to define direct property values (i.e. font-size, color, etc.).
// Those should be defined as custom properties in the `_variables.scss` file.

@use "../../defaults" as root-defaults;

// Container selectors.
$container-selector: ".container" !default;
$container-breakout-selector: ".breakout" !default;
$container-feature-selector: ".feature" !default;
$container-full-width-selector: ".full-width" !default;
$container-selector-base: root-defaults.$selector-base !default;
$container-selector: "container" !default;
$container-breakout-selector-base: $container-selector-base !default;
$container-breakout-selector: "breakout" !default;
$container-feature-selector-base: $container-selector-base !default;
$container-feature-selector: "feature" !default;
$container-full-width-selector-base: $container-selector-base !default;
$container-full-width-selector: "full-width" !default;

// Container properties.
$container-breakout-width: 15ch !default;
Expand Down
56 changes: 29 additions & 27 deletions src/scss/layout/container/_index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -5,37 +5,39 @@
@use "../../mixins/layer" as *;

@include layer(layout) {
#{defaults.$container-selector},
#{defaults.$container-selector} > #{defaults.$container-full-width-selector} {
display: grid;
grid-template-columns:
[full-width-start] $container-full-width-section-width
[feature-start] $container-feature-section-width
[breakout-start] $container-breakout-section-width
[content-start] $container-content-section-width
[content-end]
$container-breakout-section-width [breakout-end]
$container-feature-section-width [feature-end]
$container-full-width-section-width [full-width-end];
#{defaults.$container-selector-base}#{defaults.$container-selector} {
&,
> #{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector} {
display: grid;
grid-template-columns:
[full-width-start] $container-full-width-section-width
[feature-start] $container-feature-section-width
[breakout-start] $container-breakout-section-width
[content-start] $container-content-section-width
[content-end]
$container-breakout-section-width [breakout-end]
$container-feature-section-width [feature-end]
$container-full-width-section-width [full-width-end];

> :not(
#{defaults.$container-breakout-selector},
#{defaults.$container-full-width-selector},
#{defaults.$container-feature-selector}
) {
grid-column: content;
}
> :not(
#{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector},
#{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector},
#{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector}
) {
grid-column: content;
}

#{defaults.$container-breakout-selector} {
grid-column: breakout;
}
#{defaults.$container-breakout-selector-base}#{defaults.$container-breakout-selector} {
grid-column: breakout;
}

#{defaults.$container-feature-selector} {
grid-column: feature;
}
#{defaults.$container-feature-selector-base}#{defaults.$container-feature-selector} {
grid-column: feature;
}

#{defaults.$container-full-width-selector} {
grid-column: full-width;
#{defaults.$container-full-width-selector-base}#{defaults.$container-full-width-selector} {
grid-column: full-width;
}
}
}
}