This is a feature that is greatly desired by developers, and as such runs 
increased risk that whatever gets shipped first gets heavily used and then 
cannot be improved due to web compat. I think it’s premature to ship 
without signals from other engines and without a TAG review. We should have 
more time with this feature behind a flag.

Another signal for implementing behind a feature flag for now: 
https://blog.kizu.dev/intent-to-experiment-for-longer/

On Tuesday, February 25, 2025 at 4:26:25 AM UTC-8 and...@chromium.org wrote:

> Contact emails
>
> and...@chromium.org, se...@chromium.org
>
> Explainer
>
> https://css.oddbird.net/sasslike/mixins-functions
>
> Note: the explainer includes a description of mixins as well. This intent 
> covers custom functions (@function) only.
>
> Specification
>
> https://drafts.csswg.org/css-mixins-1
>
> Note: despite its shortname (css-mixins), the spec currently describes custom 
> functions only.
>
> Summary
>
> Custom Functions are similar to custom properties 
> <https://drafts.csswg.org/css-variables>, but instead of returning a 
> single fixed value, it returns a value based on other custom properties, 
> parameters, and conditionals.
>
> Example: Custom light-dark function:
>
> @function --light-dark(--light, --dark) {
>
>    result: var(--light);
>
>    @media (prefers-color-scheme: dark) {
>
>      result: var(--dark);
>
>    }
>
> }
>
> div {
>
>   background-image: --light-dark(black-logo.png, white-logo.png);
>
> }
>
> Blink component
>
> Blink>CSS 
> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3ECSS%22>
>
> TAG review
>
> https://github.com/w3ctag/design-reviews/issues/1031
>
> TAG review status
>
> Pending
>
> Risks
>
> Interoperability and Compatibility
>
> None
>
>
> Gecko: No signal (
> https://github.com/mozilla/standards-positions/issues/1148)
>
> WebKit: No signal (
> https://github.com/WebKit/standards-positions/issues/437)
>
> Web developers: Positive
>
> (Dug up what I could find per goo.gle/developer-signals):
>
>
>    - 
>    
>    
>    
> https://medium.com/css-magic/custom-css-functions-the-next-big-leap-in-styling-5acbd69f5526
>    - 
>    
>    
>    
> https://johannesodland.github.io/2024/12/12/web-wish-12-custom-css-functions.html
>    - 
>    
>    “sorely needed functionality for authors” 
>    
> <https://github.com/w3ctag/design-reviews/issues/1031#issuecomment-2637024845>
>  
>    - LeaVerou <https://github.com/LeaVerou>
>    - 
>    
>    Appeared as a missing feature in State of CSS 2024 
>    <https://2024.stateofcss.com/en-US/usage/#css_missing_features>.
>    
>
> Other signals:
>
> WebView application risks
>
> None
>
>
> Debuggability
>
> The Devtools team is working on “basic support” for @function: 
> https://docs.google.com/document/d/17UCa0XDXAG9EBx18w1fXAA9SL3V9Lr4vTptaXYyE1CA/
>
> Unfortunately that doc requires @google.com to access, but “basic 
> support” primarily means that callsites can be clicked, you’ll be taken to 
> the relevant function, and you’ll be able to edit the contents of the 
> function.
>
> Will this feature be supported on all six Blink platforms (Windows, Mac, 
> Linux, ChromeOS, Android, and Android WebView)?
>
> Yes
>
> Is this feature fully tested by web-platform-tests 
> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
> ?
>
> Yes
>
> https://wpt.fyi/results/css/css-mixins
>
>
>    - 
>    
>    at-function-cssom.tentative.html 
>    
> <https://wpt.fyi/results/css/css-mixins/at-function-cssom.tentative.html?label=experimental&label=master&aligned>
>  is 
>    marked tentative because the spec is currently missing a few obvious parts 
>    from the API.
>    - 
>       
>       The subtest "Indexed property getter" is failing due to a Bindings 
>       bug. This is an existing issue (likely low impact) that's unrelated to 
>       Custom Functions. crbug.com/333965945
>       - 
>    
>    dashed-function-cycles.tentative.html 
>    
> <https://wpt.fyi/results/css/css-mixins/dashed-function-cycles.tentative.html?label=master&label=experimental&aligned>
>  is 
>    marked tentative because the spec has not yet caught up with the 
> resolution 
>    in https://github.com/w3c/csswg-drafts/issues/11500.
>    
>
> In both cases, I’ll make sure we get these things edited so we can remove 
> the .tentative suffixes before shipping.
>
> I do not plan to fix crbug.com/333965945 before shipping, which means 
> that a failure on "Indexed property getter" is to be expected. I will not 
> ship with any other test failures; unexpected red boxes on wpt.fyi may be 
> considered temporary, usually due to Canary not having picked up the latest 
> changes yet.
>
> Flag name on about://flags
>
> CSSFunctions
>
> Finch feature name
>
> CSSFunctions
>
> Requires code in //chrome?
>
> False
>
> Tracking bug
>
> https://issues.chromium.org/issues/325504770
>
> Estimated milestones
>
> Shipping on desktop
>
> 136
>
> Shipping on Android
>
> 136
>
> Shipping on WebView
>
> 136
>
>
> Anticipated spec changes
>
> At this point, I anticipate only one real spec change: disallowing 
> argument values that begin with two dashes (‘--’). This is to make #11749 
> (named arguments) <https://github.com/w3c/csswg-drafts/issues/11749> 
> possible in the future without compat concerns.
>
> All other issues are not interesting in terms of compat risk.
>
> Full list (only the top one being interesting):
>
>
>    - 
>    
>    #11749 [css-mixins-1] Named argument passing? 
>    <https://github.com/w3c/csswg-drafts/issues/11749>
>    - 
>       
>       This can be added later. However, we should reserve space for this 
>       in the syntax immediately, to avoid compat issues in the future. Issue 
>       398887938 <https://issues.chromium.org/issues/398887938> tracks 
>       this.
>       - 
>    
>    #10558 [css-mixins] <dashed-function> syntax seems invalid 
>    <https://github.com/w3c/csswg-drafts/issues/10558>
>    - 
>       
>       Editorial issue. The commenter seems satisfied now: “So this issue 
>       may therefore be considered fixed” 
>       
> <https://github.com/w3c/csswg-drafts/issues/10558#issuecomment-2255746650>
>       .
>       - 
>    
>    #10006 [css-mixins] Allow mixins/functions to be called via custom 
>    properties <https://github.com/w3c/csswg-drafts/issues/10006>
>    - 
>       
>       We can choose to add this later; it does not affect the API 
>       shipping now.
>       - 
>    
>    #9992 Proposal: CSS Variable Groups 
>    <https://github.com/w3c/csswg-drafts/issues/9992>
>    - 
>       
>       Same as the previous issue.
>       - 
>    
>    #9990 [css-values][css-variables][css-mixins] Generic fallback syntax 
>    for IACVT values <https://github.com/w3c/csswg-drafts/issues/9990>
>    - 
>       
>       Same as the previous issue.
>       - 
>    
>    #10222 [css-mixins] Proposal: @like rule for repurposing page default 
>    styles <https://github.com/w3c/csswg-drafts/issues/10222>
>    - 
>       
>       Unrelated to CSS Functions. (Marked css-mixins since it has 
>       conceptual similarities with mixins.)
>       - 
>    
>    #11500 [css-values] Short-circuit if() evaluation 
>    <https://github.com/w3c/csswg-drafts/issues/11500>
>    - 
>       
>       Resolved, just needs a spec edit.
>       - 
>    
>    #11455 [css-values-5][css-mixins-1] Add an if-test for local variables 
>    <https://github.com/w3c/csswg-drafts/issues/11455>
>    - 
>       
>       Same as the previous issue.
>       - 
>    
>    #11190 [css-functions-mixins] Handling superfluous arguments 
>    <https://github.com/w3c/csswg-drafts/issues/11190>
>    - 
>       
>       Same as the previous issue.
>       - 
>    
>    #10562 [css-mixins] Should result be mandatory in @function? 
>    <https://github.com/w3c/csswg-drafts/issues/10562>
>    - 
>       
>       Same as the previous issue.
>       - 
>    
>    #9350 Proposal: Custom CSS Functions & Mixins 
>    <https://github.com/w3c/csswg-drafts/issues/9350>
>    - 
>       
>       Same as the previous issue.
>       
>
> Link to entry on the Chrome Platform Status
>
> https://chromestatus.com/feature/5179721933651968?gate=5074532782309376
>
> Links to previous Intent discussions
>
> Intent to Prototype: 
> https://groups.google.com/a/chromium.org/g/blink-dev/c/b-BTxKD-Ldc/m/1pyobjq7AQAJ
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/c4083109-94f0-45ff-8455-094f41d998d3n%40chromium.org.

Reply via email to