<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="208877" data-post-id="208877">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="amnu3387" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  amnu3387
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The package is now available in hex.pm and has been tested under an umbrella, with webpack and without and also on a deployment to to <a href="http://render.com" rel="noopener nofollow ugc">render.com</a>, using the included task to generate the CSS files prior to processing them with npm and phx.digest.</p>
<p>The only dependency is on the <code>file_system</code> package.<br>
If you try it out and find some problem or have suggestions open an issue on GitHub.</p>
<p><a href="https://hexdocs.pm/cssex/readme.html" rel="noopener nofollow ugc">CSSEx on hex</a></p>
<p><a href="https://github.com/mnussbaumer/cssex/blob/master/test/files/includes/simples/simples.cssex" rel="noopener nofollow ugc">Example of a small framework written in CSSEx</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="208877" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-css-sass-simile-in-pure-elixir/38230/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-208877" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="208877"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #21"></div>
  </section>
</div>
    <div class="postbit" id="208881" data-post-id="208881">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="derek-zhou" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/derek-zhou/120/19943_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  derek-zhou
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Nice. Do you support postcss’s <span class="mention">@apply</span> directive? It is very useful to compose complex css class from simpler and orthogonal building blocks.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="208881" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-css-sass-simile-in-pure-elixir/38230/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-208881" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="208881"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #22"></div>
  </section>
</div>
    <div class="postbit" id="208883" data-post-id="208883">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="amnu3387" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  amnu3387
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>No, I just checked what it does and if I’m not mistaken it would be doable with the functionality cssex has out of the box.</p>
<p>Imagining you have a theme defined as:</p>
<pre data-code-wrap="css"><code class="lang-css">
@!theme_a %{
    "background-color": "rebeccapurple";
    "color: "white";
    "border": "1px solid green";
};
</code></pre>
<p>You could define a function as:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">@fn apply_theme(theme) -&gt;
      Enum.reduce(theme, "", fn({k, v}, acc) -&gt; acc &lt;&gt; "#{k}:#{v};" end)
end;
</code></pre>
<p>And then use it as:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">.some-class {
    @fn::apply_theme(@::theme_a)
}
</code></pre>
<p>And get:</p>
<pre data-code-wrap="css"><code class="lang-css">.some-class {
  background-color: rebeccapurple;
  color: white;
  border: 1px solid green;
}
</code></pre>
<p>You could also define that in a single file to be used as an includes</p>
<pre data-code-wrap="css"><code class="lang-css">@?theme %{
    "background-color": "rebeccapurple";
    "color: "white";
    "border": "1px solid green";
};

background-color: rebeccapurple;
color: white;
border: 1px solid green;
</code></pre>
<p>And then:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">.some-class {
  @include ./path/to_that_file;
}
</code></pre>
<p>And to override the them you would just set it on the parent</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">@!theme .....;
</code></pre>
<p>before doing that.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="208883" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-css-sass-simile-in-pure-elixir/38230/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-208883" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="208883"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #23"></div>
  </section>
</div>
    <div class="postbit" id="208885" data-post-id="208885">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="derek-zhou" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/derek-zhou/120/19943_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  derek-zhou
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Right now I am using tailwindcss, and I have very long <span class="mention">@apply</span> chain:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">    .button {
        @apply flex-none px-6 py-1 text-purple-600 inline-block rounded appearance-none font-bold whitespace-nowrap text-lg text-center uppercase;
    }
</code></pre>
<p>To rewrite that into your syntax does not seems to be ergonomic?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="208885" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-css-sass-simile-in-pure-elixir/38230/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-208885" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="208885"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #24"></div>
  </section>
</div>
    <div class="postbit" id="208886" data-post-id="208886">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="amnu3387" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  amnu3387
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yeap, for that use case as is no. How are those classes defined?</p>
<p>But it shouldn’t be very difficult to replicate as long as you defined the classes in a way that can be reused by name.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="208886" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-css-sass-simile-in-pure-elixir/38230/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-208886" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="208886"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #25"></div>
  </section>
</div>
    <div class="postbit" id="208887" data-post-id="208887">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="derek-zhou" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/derek-zhou/120/19943_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  derek-zhou
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Those classes are provided by tailwindcss. The value proposition of tailwindcss is write css horizontally, using the numerous built in utility classes, instead of vertically.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="208887" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-css-sass-simile-in-pure-elixir/38230/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-208887" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="208887"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #26"></div>
  </section>
</div>
    <div class="postbit" id="208889" data-post-id="208889">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="amnu3387" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  amnu3387
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Ah yeah there’s no out-of-the-box classes either</p>
<p>I like the idea of <code>@apply</code>, I had not implemented other’s such as <code>@mixin</code> from sass (because <span class="mention">@fn</span> would cover it since you can pass a block as the last arg)  but I can imagine extending variables to accept blocks  and adding a directive like apply where you can write them “free-form” as in your example might be useful.</p>
<p>Can you also just define a class like <code>.flex-one { flex: 1; flex-flow: row wrap;}</code> and then use it in <code>@apply</code> or is some special construct you need to declare?</p>
<p>I usually use a very simple basic stylesheet (the other link) that I wrote in sass and have been using ever since.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="208889" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-css-sass-simile-in-pure-elixir/38230/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-208889" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="208889"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #27"></div>
  </section>
</div>
    <div class="postbit" id="208893" data-post-id="208893">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="derek-zhou" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/derek-zhou/120/19943_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  derek-zhou
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="amnu3387" data-post="28" data-topic="38230">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/ed8c4c/48.png" class="avatar"> amnu3387:</div>
<blockquote>
<p>Can you also just define a class like <code>.flex-one { flex: 1; flex-flow: row wrap;}</code> and then use it in <code>@apply</code> or is some special construct you need to declare?</p>
</blockquote>
</aside>
<p>I have not tried myself, but I think I can. Tailwind has a notion of layers, and it defines 3: base, components and utilities. I think you can reference lower layer classes by name using <span class="mention">@apply</span>. I don’t think same layer classes can reference each other though.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="208893" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-css-sass-simile-in-pure-elixir/38230/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-208893" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="208893"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #28"></div>
  </section>
</div>
    <div class="postbit" id="208906" data-post-id="208906">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="amnu3387" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  amnu3387
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It seems you need to declare it as a <code>utility</code> class and afterwards you can use it.<br>
Tailwind does a lot of more stuff though.</p>
<p>It could simply be that each selector you declare would become available with something like <code>@expand</code>, and as long as you had referenced it before it would be available - but this might get messy though as if you then change the selector it would affect all others, perhaps you could annotate a selector by declaring <code>@expandable .selector, &amp;etc { rules....; }</code> and this would both create the regular selector and make it available to be expanded, and then <code>@expand .would-take .a-list-of #of-whatever-expandables</code> ?   (or <code>@apply</code> works as a name too)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="208906" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-css-sass-simile-in-pure-elixir/38230/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-208906" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="208906"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #29"></div>
  </section>
</div>
    <div class="postbit" id="209125" data-post-id="209125">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="amnu3387" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  amnu3387
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hey, just published a new version with improvements and <code>@expandable</code> &amp; <code>@apply</code>.</p>
<p><a href="https://github.com/mnussbaumer/cssex#expandable_apply" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/mnussbaumer/cssex#expandable_apply</a></p>
<pre data-code-wrap="sass"><code class="lang-sass">$!color red;

@expandable .hoverable {
  color: &lt;$color$&gt;;
  &amp;:hover {
    color: @fn::darken(&lt;$color$&gt;, 10);
  }
  container&amp; {
    background-color: black;
  }
}

.class-1 {
  @apply hoverable;
}

$!color blue;

.class-2 {
  @apply !hoverable;
}

.class-3 {
  @apply ?hoverable;
}
</code></pre>
<p>I wrote docs for it on the section I linked above.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="209125" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-css-sass-simile-in-pure-elixir/38230/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-209125" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="209125"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>