Skip to content

Instantly share code, notes, and snippets.

View esr360's full-sized avatar
👽
Best CSS-in-JS solution of 2020?

Edmund esr360

👽
Best CSS-in-JS solution of 2020?
View GitHub Profile
@esr360
esr360 / input.scss
Last active August 12, 2021 19:01
Generated by SassMeister.com.
@use "sass:list";
@use "sass:map";
$types: ((
"box": ("padding", "margin-left"),
"typography": ("font-size", "color"),
));
@mixin component($name, $type, $styles, $scope: "myScope_") {
.#{$scope + $name} {
{
"name": "accordion",
"title": {
"background": "red",
"panel-is-open": {
"background": "green"
},
@esr360
esr360 / smartarse.json
Last active April 26, 2020 13:59
smartarse.json
{
".accordion": {
".title": {
"background": "red",
".panel.open > &": {
"background": "green"
},
"&:hover": {
import config from './assets/config';
import styles from './assets/styles';
const Accordion = ({ panels, ...props }) => {
const { name, persist } = useConfig(props);
const [live, setLive] = useState(
panels.reduce(($, { active, id }, i) => active ? $.concat(id || i) : $, [])
);
import styles from '../';
import config from '../';
const MyModule = ({ title, ...props }) => {
...
}
MyModule.defaultProps = { styles, config }
import styles from '../';
import config from '../';
const MyModule = ({ styles = styles, config = config, title, ...props }) => {
...
}
require('@babel/register')();
require('jsdom-global')();
const Sass = require('node-sass');
const fs = require('fs');
const mkdirp = require('mkdirp');
const getDirName = require('path').dirname;
window.matchMedia = window.matchMedia || function() {
return {
{
"name": "Accordion",
"modifiers": ["keep-open"],
"components": [
{
"name": "panel",
"modifiers": ["active"]
},
{
"name": "heading",
@include module('myElement') {
color: blue;
display: none;
@include context('someParent', 'active') {
display: block;
}
}
// Sass (Vanilla)
.myElement {
  color: blue;
  display: none;
  
  .someParent.active & {
    display: block;
  }
}