@hanzo/ui 8.27.2 → 8.27.3

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.
package/dist/gallery.html CHANGED
@@ -1,4 +1,4 @@
1
- <!doctype html><html lang="en" class="t_dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>@hanzo/ui 8.27.2</title><style>/* @hanzo/ui — generated by scripts/gen-css.mjs. Do not edit. */
1
+ <!doctype html><html lang="en" class="t_dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>@hanzo/ui 8.27.3</title><style>/* @hanzo/ui — generated by scripts/gen-css.mjs. Do not edit. */
2
2
  :root { --hanzo-ui-styles: 1; }
3
3
  /* Hanzo Design System — the entry point. Import THIS one file.
4
4
  *
@@ -1997,6 +1997,37 @@
1997
1997
  }
1998
1998
  }
1999
1999
 
2000
+ /* FOCUS RINGS THE CONTROL A PERSON SEES, WHICH IS THE WHOLE COMPOSER.
2001
+
2002
+ `Composer` is a bordered box holding a field above a toolbar row, so it reads
2003
+ as one control the way a chat composer everywhere does. The field inside it is
2004
+ an ordinary textarea, so the indicator was drawn round the field alone: a
2005
+ second rounded rectangle nested inside the box, stopping above the mic and the
2006
+ send button, which reads as the top half being selected. WCAG 2.4.11 asks the
2007
+ indicator to enclose the control, and the control here is the composer.
2008
+
2009
+ THE FIELD DOES NOT ABSTAIN, and control.ts is right that it must not: gui
2010
+ compiles `focusVisibleStyle` to `:root:root:root:root … !important`, past any
2011
+ sheet, so a field that says `outlineWidth: 0` deletes the indicator on every
2012
+ surface at once. What gui declares is `outline-color: var(--outlineColor)` —
2013
+ a VARIABLE — so the colour is re-pointed for this one field instead, in the
2014
+ same breath as the host taking the ring up. The declaration gui emits is
2015
+ untouched and `focus.test.tsx` still reads it.
2016
+
2017
+ Both rules turn on the SAME condition, which is what makes it safe: where
2018
+ `:has` is unsupported neither applies and the field keeps drawing its own
2019
+ ring, so no browser reaches a state with a focused composer and no indicator
2020
+ anywhere. */
2021
+ [data-slot='composer']:has([data-slot='composer-field']:focus-visible) {
2022
+ outline: 2px solid var(--ring);
2023
+ outline-offset: 2px;
2024
+ }
2025
+
2026
+ [data-slot='composer']:has([data-slot='composer-field']:focus-visible)
2027
+ [data-slot='composer-field'] {
2028
+ --outlineColor: transparent;
2029
+ }
2030
+
2000
2031
  [stylesheet-group="0"]{}
2001
2032
  body{margin:0;}
2002
2033
  button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}
package/dist/glass.css CHANGED
@@ -486,3 +486,34 @@
486
486
  animation: none;
487
487
  }
488
488
  }
489
+
490
+ /* FOCUS RINGS THE CONTROL A PERSON SEES, WHICH IS THE WHOLE COMPOSER.
491
+
492
+ `Composer` is a bordered box holding a field above a toolbar row, so it reads
493
+ as one control the way a chat composer everywhere does. The field inside it is
494
+ an ordinary textarea, so the indicator was drawn round the field alone: a
495
+ second rounded rectangle nested inside the box, stopping above the mic and the
496
+ send button, which reads as the top half being selected. WCAG 2.4.11 asks the
497
+ indicator to enclose the control, and the control here is the composer.
498
+
499
+ THE FIELD DOES NOT ABSTAIN, and control.ts is right that it must not: gui
500
+ compiles `focusVisibleStyle` to `:root:root:root:root … !important`, past any
501
+ sheet, so a field that says `outlineWidth: 0` deletes the indicator on every
502
+ surface at once. What gui declares is `outline-color: var(--outlineColor)` —
503
+ a VARIABLE — so the colour is re-pointed for this one field instead, in the
504
+ same breath as the host taking the ring up. The declaration gui emits is
505
+ untouched and `focus.test.tsx` still reads it.
506
+
507
+ Both rules turn on the SAME condition, which is what makes it safe: where
508
+ `:has` is unsupported neither applies and the field keeps drawing its own
509
+ ring, so no browser reaches a state with a focused composer and no indicator
510
+ anywhere. */
511
+ [data-slot='composer']:has([data-slot='composer-field']:focus-visible) {
512
+ outline: 2px solid var(--ring);
513
+ outline-offset: 2px;
514
+ }
515
+
516
+ [data-slot='composer']:has([data-slot='composer-field']:focus-visible)
517
+ [data-slot='composer-field'] {
518
+ --outlineColor: transparent;
519
+ }
package/dist/styles.css CHANGED
@@ -1997,6 +1997,37 @@
1997
1997
  }
1998
1998
  }
1999
1999
 
2000
+ /* FOCUS RINGS THE CONTROL A PERSON SEES, WHICH IS THE WHOLE COMPOSER.
2001
+
2002
+ `Composer` is a bordered box holding a field above a toolbar row, so it reads
2003
+ as one control the way a chat composer everywhere does. The field inside it is
2004
+ an ordinary textarea, so the indicator was drawn round the field alone: a
2005
+ second rounded rectangle nested inside the box, stopping above the mic and the
2006
+ send button, which reads as the top half being selected. WCAG 2.4.11 asks the
2007
+ indicator to enclose the control, and the control here is the composer.
2008
+
2009
+ THE FIELD DOES NOT ABSTAIN, and control.ts is right that it must not: gui
2010
+ compiles `focusVisibleStyle` to `:root:root:root:root … !important`, past any
2011
+ sheet, so a field that says `outlineWidth: 0` deletes the indicator on every
2012
+ surface at once. What gui declares is `outline-color: var(--outlineColor)` —
2013
+ a VARIABLE — so the colour is re-pointed for this one field instead, in the
2014
+ same breath as the host taking the ring up. The declaration gui emits is
2015
+ untouched and `focus.test.tsx` still reads it.
2016
+
2017
+ Both rules turn on the SAME condition, which is what makes it safe: where
2018
+ `:has` is unsupported neither applies and the field keeps drawing its own
2019
+ ring, so no browser reaches a state with a focused composer and no indicator
2020
+ anywhere. */
2021
+ [data-slot='composer']:has([data-slot='composer-field']:focus-visible) {
2022
+ outline: 2px solid var(--ring);
2023
+ outline-offset: 2px;
2024
+ }
2025
+
2026
+ [data-slot='composer']:has([data-slot='composer-field']:focus-visible)
2027
+ [data-slot='composer-field'] {
2028
+ --outlineColor: transparent;
2029
+ }
2030
+
2000
2031
  [stylesheet-group="0"]{}
2001
2032
  body{margin:0;}
2002
2033
  button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}
package/dist/theme.css CHANGED
@@ -1994,3 +1994,34 @@
1994
1994
  animation: none;
1995
1995
  }
1996
1996
  }
1997
+
1998
+ /* FOCUS RINGS THE CONTROL A PERSON SEES, WHICH IS THE WHOLE COMPOSER.
1999
+
2000
+ `Composer` is a bordered box holding a field above a toolbar row, so it reads
2001
+ as one control the way a chat composer everywhere does. The field inside it is
2002
+ an ordinary textarea, so the indicator was drawn round the field alone: a
2003
+ second rounded rectangle nested inside the box, stopping above the mic and the
2004
+ send button, which reads as the top half being selected. WCAG 2.4.11 asks the
2005
+ indicator to enclose the control, and the control here is the composer.
2006
+
2007
+ THE FIELD DOES NOT ABSTAIN, and control.ts is right that it must not: gui
2008
+ compiles `focusVisibleStyle` to `:root:root:root:root … !important`, past any
2009
+ sheet, so a field that says `outlineWidth: 0` deletes the indicator on every
2010
+ surface at once. What gui declares is `outline-color: var(--outlineColor)` —
2011
+ a VARIABLE — so the colour is re-pointed for this one field instead, in the
2012
+ same breath as the host taking the ring up. The declaration gui emits is
2013
+ untouched and `focus.test.tsx` still reads it.
2014
+
2015
+ Both rules turn on the SAME condition, which is what makes it safe: where
2016
+ `:has` is unsupported neither applies and the field keeps drawing its own
2017
+ ring, so no browser reaches a state with a focused composer and no indicator
2018
+ anywhere. */
2019
+ [data-slot='composer']:has([data-slot='composer-field']:focus-visible) {
2020
+ outline: 2px solid var(--ring);
2021
+ outline-offset: 2px;
2022
+ }
2023
+
2024
+ [data-slot='composer']:has([data-slot='composer-field']:focus-visible)
2025
+ [data-slot='composer-field'] {
2026
+ --outlineColor: transparent;
2027
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.27.2",
3
+ "version": "8.27.3",
4
4
  "type": "module",
5
5
  "description": "Hanzo UI — the one canonical Hanzo component library, on @hanzo/gui + @hanzo/design. ONE substrate: every component renders through @hanzo/gui primitives, so the same import works on web, native (expo) and desktop (Tauri). Self-contained (theme.css), presentational, host-agnostic, clean-room.",
6
6
  "exports": {