ionic-team / ionic-team/ionicons
bug: Invalid @supports syntax in icon.css breaks under strict CSS parsers (e.g. Lightning CSS)
- Lingua principale
- TypeScript
- Stelle
- 18.2k
- Fork
- 2.1k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
### Current Behavior
icon.css has:
```css
@supports not selector(:dir(rtl)) and selector(:host-context([dir='rtl'])) {
:host(.icon-rtl) .icon-inner {
transform: scaleX(-1);
}
}
```
Per the CSS Conditional Rules spec, `not` and `and` can't be mixed in a `` without explicit parens grouping each operand.
Whilst PostCSS allowed this formatting, Lightning CSS (used in the upcoming stencil v5 release) fails with: `Unexpected token Ident("and")`
### Expected Behavior
```css
@supports (not selector(:dir(rtl))) and (selector(:host-context([dir='rtl']))) {
```
### Steps to Reproduce
```ts
const { transform } = require('lightningcss');
transform({
filename: 'icon.css',
code: Buffer.from(`
@supports not selector(:dir(rtl)) and selector(:host-context([dir='rtl'])) {
a { color: red; }
}
`),
});
// throws: Unexpected token Ident("and")
```
Alternatively, swap in stencil/core `5.0.0-alpha.35` in the main ionic repo and run `npm run build`
### Code Reproduction URL
_No response_
### Additional Information
_No response_
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Apri icon.css e individua la regola @supports mostrata nell’issue. Aggiorna la sua condizione in modo che utilizzi il raggruppamento esplicito descritto in Expected Behavior, quindi esegui la riproduzione di Lightning CSS oppure sostituisci stencil/core con 5.0.0-alpha.35 ed esegui npm run build per confermare che il foglio di stile venga analizzato correttamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- css
- Ambito
- frontend
- Tipo di issue
- Bug
- Difficoltà
- 1/5
- Tempo stimato
- Meno di un'ora
- Stato di attività
- Attiva
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 92/100