qss 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -216,6 +216,21 @@ $qss-scope: if($qss-portal-root == "", $qss-anchor, "#{$qss-anchor}, #{$qss-port
216
216
  @include qss-dsl-boost(".qss-rounded\\[full\\]") { border-radius: 9999px; }
217
217
  @include qss-dsl-boost(".qss-rounded-full") { border-radius: 9999px; }
218
218
 
219
+ /* Clamped percentage-of-parent spacing (DESIGN_HISTORY #17.2, 2026-11-02). A gap that's allowed to
220
+ flex with its immediate containing block's actual rendered size -- the rule-of-thirds "headroom"
221
+ case -- rather than holding rigidly proportional to the canvas (qss-pos-y[N]) or growing
222
+ unbounded with the parent (qss-pos-y-pct[N] alone). Can't be one 3-param bracket class: that would
223
+ need every min*pct*max combination precompiled, unlike the single-index loops above. Instead,
224
+ three composable value-setters feed one trigger class's clamp(), the same stacking-many-atomic-
225
+ classes idiom the rest of this grammar already uses. Usage: stack qss-elastic-y-min[N],
226
+ qss-elastic-y-pct[N], qss-elastic-y-max[N] and the bare qss-elastic-y trigger on one element. */
227
+ @for $i from 0 through map-get($qss-quantization, "units") {
228
+ @include qss-dsl-boost(".qss-elastic-y-min\\[#{$i}\\]") { --qss-ey-min: calc(#{$i} * var(--qnt)); }
229
+ @include qss-dsl-boost(".qss-elastic-y-max\\[#{$i}\\]") { --qss-ey-max: calc(#{$i} * var(--qnt)); }
230
+ @include qss-dsl-boost(".qss-elastic-y-pct\\[#{$i}\\]") { --qss-ey-pct: #{percentage($i * 0.001)}; }
231
+ }
232
+ @include qss-dsl-boost(".qss-elastic-y") { top: clamp(var(--qss-ey-min, 0px), var(--qss-ey-pct, 0%), var(--qss-ey-max, 0px)); }
233
+
219
234
  /* Palette Generation -- each color is also a real custom property (--c-{name}),
220
235
  not just a Sass compile-time value, so color-mix() can read it at the point of use. */
221
236
  :root {
data/config/grammar.yml CHANGED
@@ -25,6 +25,12 @@ adjectives:
25
25
  - qss-pos-r
26
26
  - qss-pos-b
27
27
  - qss-pos
28
+ # Clamped percentage-of-parent spacing (DESIGN_HISTORY #17.2, 2026-11-02). Three composable
29
+ # value-setters plus a trigger class -- see qss_core.scss for why this isn't one 3-param bracket.
30
+ - qss-elastic-y-min
31
+ - qss-elastic-y-pct
32
+ - qss-elastic-y-max
33
+ - qss-elastic-y
28
34
 
29
35
  # 1b. Flow-Relative: Positioning that doesn't break document flow
30
36
  flow_relative:
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.6.0",
2
+ "version": "0.7.0",
3
3
  "files": {
4
- "qss_core.css": "b0797c7a11c5d1c7cc2cfd4889bccfd901b3c002e8e4f8ddb787a221e5c57c87"
4
+ "qss_core.css": "6f0b8f179b060b47fc9e1446982480f51663394a3bf2d66134ef6a2cd4f2e9de"
5
5
  }
6
6
  }