- From: Jeffrey Yasskin <notifications@github.com>
- Date: Sat, 18 Jan 2025 11:25:00 -0800
- To: WICG/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <WICG/webcomponents/issues/939/2599848536@github.com>
Apologies @justinfagnani if I've missed your point, but the example at https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/AtSheet/explainer.md#importing-a-base-set-of-inline-styles-into-a-declarative-shadow-dom seems to demonstrate how to "emit inline styles into HTML as they're encountered while SSR'ing the component tree, and reference them from other use sites.", aside from a [nit about exactly how to reference them](https://github.com/w3c/csswg-drafts/issues/11509#issuecomment-2599841044). Specifically, when the SSR discovers that it's going to need a new style block named 'foo' in a piece of declarative shadow dom, it emits
```html
<style>
@sheet foo {
div {
color: red;
}
}
</style>
<template shadowrootmode="open" adoped-style-sheets="foo">
<span>I'm in the shadow DOM</span>
</template>
```
(If you need to emit the style _inside_ the DSD, it seems like it would also work to use `<link rel=stylesheet someNewAttribute=foo>`.)
[Open Issue #5](https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/AtSheet/explainer.md#open-issues) is important here: SSR is going to want to be able to do a structure like:
```html
<template shadowrootmode="open">
<!-- Component 1 stuff ...-->
<!-- Oh, here comes a component that needs some shared style. -->
<style>@sheet shared-component-style { ... }</style>
<template shadowrootmode="open" adopted-style-sheets="foo">
<!-- Shared component shadow DOM -->
</template>
</template>
<!-- Here comes another copy of the component that needs shared style. -->
<!-- DON'T re-emit the style -->
<template shadowrootmode="open" adopted-style-sheets="foo inside the above shadow DOM">
<!-- Shared component shadow DOM -->
</template>
```
That second reference to `foo` needs to be able to navigate to the `@sheet` in shadow DOM. It probably doesn't need to use the exact same syntax, but it needs to be able to name it somehow.
--
Reply to this email directly or view it on GitHub:
https://github.com/WICG/webcomponents/issues/939#issuecomment-2599848536
You are receiving this because you are subscribed to this thread.
Message ID: <WICG/webcomponents/issues/939/2599848536@github.com>
Received on Saturday, 18 January 2025 19:25:03 UTC