@nonoun/native-ui 0.2.5 → 0.2.7

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.
@@ -3769,7 +3769,7 @@
3769
3769
  line-height: 1;
3770
3770
  min-height: var(--ui-kbd-size-md);
3771
3771
  padding-inline: 0.4em;
3772
- border-radius: 0.25rem;
3772
+ border-radius: 0.5em;
3773
3773
  background: var(--_ground, var(--_body));
3774
3774
  border: 1px solid var(--_border-muted);
3775
3775
  color: var(--_ink-muted);
@@ -4080,6 +4080,18 @@
4080
4080
  user-select: none;
4081
4081
  }
4082
4082
 
4083
+ /* WHY: Fixed-size icon well — matches ui-layout-sidebar-item [slot="icon"].
4084
+ All sidebar icons align on the same 1.5rem column regardless of icon size.
4085
+ JS wraps the first <ui-icon> child in a .icon-well span during setup(). */
4086
+ :where(ui-nav-group-header) > :where(.icon-well) {
4087
+ display: inline-flex;
4088
+ align-items: center;
4089
+ justify-content: center;
4090
+ width: 1.5rem;
4091
+ height: 1.5rem;
4092
+ flex-shrink: 0;
4093
+ }
4094
+
4083
4095
  /* ── Chevron icon (right side of summary) ── */
4084
4096
 
4085
4097
  :where(ui-nav-group) > :where(details) > :where(summary)::after {
@@ -4133,13 +4145,14 @@
4133
4145
 
4134
4146
  /* WHY: Insets account for the summary's padding-inline so the connector
4135
4147
  line passes through the icon center and child text aligns with header text. */
4136
- :where(ui-nav-group):has(:where(ui-nav-group-header) :where(ui-icon)) {
4148
+ :where(ui-nav-group):has(:where(ui-nav-group-header) :where(.icon-well)) {
4137
4149
  --_group-pad: calc(var(--_space-k) * var(--_space));
4138
- --_group-line-inset: calc(var(--_group-pad) + var(--_icon-size) / 2);
4139
- --_group-child-inset: calc(var(--_icon-size) + var(--_space) * 2);
4150
+ --_group-icon-well: 1.5rem;
4151
+ --_group-line-inset: calc(var(--_group-pad) + var(--_group-icon-well) / 2);
4152
+ --_group-child-inset: calc(var(--_group-icon-well) + var(--_space) * 2);
4140
4153
  }
4141
4154
 
4142
- :where(ui-nav-group):has(:where(ui-nav-group-header) :where(ui-icon)):has(:where(details[open]))::after {
4155
+ :where(ui-nav-group):has(:where(ui-nav-group-header) :where(.icon-well)):has(:where(details[open]))::after {
4143
4156
  content: '';
4144
4157
  position: absolute;
4145
4158
  inset-inline-start: var(--_group-line-inset);
@@ -4154,7 +4167,7 @@
4154
4167
  /* WHY: A ::before pseudo on the group slides along the connector line.
4155
4168
  JS sets --_indicator-index; :state(has-selection) gates visibility. */
4156
4169
 
4157
- :where(ui-nav-group):has(:where(ui-nav-group-header) :where(ui-icon)):has(:where(details[open])):state(has-selection)::before {
4170
+ :where(ui-nav-group):has(:where(ui-nav-group-header) :where(.icon-well)):has(:where(details[open])):state(has-selection)::before {
4158
4171
  content: '';
4159
4172
  position: absolute;
4160
4173
  z-index: 1;
@@ -4238,7 +4251,7 @@
4238
4251
  gap: 0;
4239
4252
  }
4240
4253
 
4241
- :where(ui-nav-group-header) :where(ui-icon) {
4254
+ :where(ui-nav-group-header) :where(.icon-well) :where(ui-icon) {
4242
4255
  font-size: var(--_font-size, 1rem);
4243
4256
  }
4244
4257
 
@@ -6889,6 +6902,20 @@
6889
6902
  outline-offset: -2px;
6890
6903
  }
6891
6904
 
6905
+ /* WHY: Fixed-size icon well so all sidebar icons (header logo, nav group icons,
6906
+ standalone icons) center-align on the same column width regardless of intrinsic
6907
+ icon size. 1.5rem matches the sidebar's visual rhythm at default density.
6908
+ Consumer wraps the icon: <span slot="icon"><ui-icon name="..."></ui-icon></span>
6909
+ The wrapper is the well; the icon keeps its own --ui-icon-size dimensions. */
6910
+ :where(ui-layout-sidebar-item) > :where([slot="icon"]) {
6911
+ display: inline-flex;
6912
+ align-items: center;
6913
+ justify-content: center;
6914
+ width: 1.5rem;
6915
+ height: 1.5rem;
6916
+ flex-shrink: 0;
6917
+ }
6918
+
6892
6919
  /* WHY: Trailing caret pushes to end — same pattern as button justify="spread". */
6893
6920
  :where(ui-layout-sidebar-item) > :where([slot="trailing"]) {
6894
6921
  margin-inline-start: auto;
@@ -6966,7 +6993,7 @@
6966
6993
  }
6967
6994
 
6968
6995
  :where(ui-layout-sidebar-item) > :where([slot="icon"]) {
6969
- display: block;
6996
+ display: inline-flex;
6970
6997
  }
6971
6998
 
6972
6999
  :where(ui-layout-sidebar-item) > :where(:not([slot="icon"]):not(ui-listbox[popover]):not(.nav-group-flyout)) {
@@ -3791,7 +3791,7 @@
3791
3791
  line-height: 1;
3792
3792
  min-height: var(--ui-kbd-size-md);
3793
3793
  padding-inline: 0.4em;
3794
- border-radius: 0.25rem;
3794
+ border-radius: 0.5em;
3795
3795
  background: var(--_ground, var(--_body));
3796
3796
  border: 1px solid var(--_border-muted);
3797
3797
  color: var(--_ink-muted);
@@ -4108,6 +4108,18 @@
4108
4108
  user-select: none;
4109
4109
  }
4110
4110
 
4111
+ /* WHY: Fixed-size icon well — matches ui-layout-sidebar-item [slot="icon"].
4112
+ All sidebar icons align on the same 1.5rem column regardless of icon size.
4113
+ JS wraps the first <ui-icon> child in a .icon-well span during setup(). */
4114
+ :where(ui-nav-group-header) > :where(.icon-well) {
4115
+ display: inline-flex;
4116
+ align-items: center;
4117
+ justify-content: center;
4118
+ width: 1.5rem;
4119
+ height: 1.5rem;
4120
+ flex-shrink: 0;
4121
+ }
4122
+
4111
4123
  /* ── Chevron icon (right side of summary) ── */
4112
4124
 
4113
4125
  :where(ui-nav-group) > :where(details) > :where(summary)::after {
@@ -4163,13 +4175,14 @@
4163
4175
 
4164
4176
  /* WHY: Insets account for the summary's padding-inline so the connector
4165
4177
  line passes through the icon center and child text aligns with header text. */
4166
- :where(ui-nav-group):has(:where(ui-nav-group-header) :where(ui-icon)) {
4178
+ :where(ui-nav-group):has(:where(ui-nav-group-header) :where(.icon-well)) {
4167
4179
  --_group-pad: calc(var(--_space-k) * var(--_space));
4168
- --_group-line-inset: calc(var(--_group-pad) + var(--_icon-size) / 2);
4169
- --_group-child-inset: calc(var(--_icon-size) + var(--_space) * 2);
4180
+ --_group-icon-well: 1.5rem;
4181
+ --_group-line-inset: calc(var(--_group-pad) + var(--_group-icon-well) / 2);
4182
+ --_group-child-inset: calc(var(--_group-icon-well) + var(--_space) * 2);
4170
4183
  }
4171
4184
 
4172
- :where(ui-nav-group):has(:where(ui-nav-group-header) :where(ui-icon)):has(:where(details[open]))::after {
4185
+ :where(ui-nav-group):has(:where(ui-nav-group-header) :where(.icon-well)):has(:where(details[open]))::after {
4173
4186
  content: '';
4174
4187
  position: absolute;
4175
4188
  inset-inline-start: var(--_group-line-inset);
@@ -4184,7 +4197,7 @@
4184
4197
  /* WHY: A ::before pseudo on the group slides along the connector line.
4185
4198
  JS sets --_indicator-index; :state(has-selection) gates visibility. */
4186
4199
 
4187
- :where(ui-nav-group):has(:where(ui-nav-group-header) :where(ui-icon)):has(:where(details[open])):state(has-selection)::before {
4200
+ :where(ui-nav-group):has(:where(ui-nav-group-header) :where(.icon-well)):has(:where(details[open])):state(has-selection)::before {
4188
4201
  content: '';
4189
4202
  position: absolute;
4190
4203
  z-index: 1;
@@ -4268,7 +4281,7 @@
4268
4281
  gap: 0;
4269
4282
  }
4270
4283
 
4271
- :where(ui-nav-group-header) :where(ui-icon) {
4284
+ :where(ui-nav-group-header) :where(.icon-well) :where(ui-icon) {
4272
4285
  font-size: var(--_font-size, 1rem);
4273
4286
  }
4274
4287
 
@@ -6960,6 +6973,20 @@
6960
6973
  outline-offset: -2px;
6961
6974
  }
6962
6975
 
6976
+ /* WHY: Fixed-size icon well so all sidebar icons (header logo, nav group icons,
6977
+ standalone icons) center-align on the same column width regardless of intrinsic
6978
+ icon size. 1.5rem matches the sidebar's visual rhythm at default density.
6979
+ Consumer wraps the icon: <span slot="icon"><ui-icon name="..."></ui-icon></span>
6980
+ The wrapper is the well; the icon keeps its own --ui-icon-size dimensions. */
6981
+ :where(ui-layout-sidebar-item) > :where([slot="icon"]) {
6982
+ display: inline-flex;
6983
+ align-items: center;
6984
+ justify-content: center;
6985
+ width: 1.5rem;
6986
+ height: 1.5rem;
6987
+ flex-shrink: 0;
6988
+ }
6989
+
6963
6990
  /* WHY: Trailing caret pushes to end — same pattern as button justify="spread". */
6964
6991
  :where(ui-layout-sidebar-item) > :where([slot="trailing"]) {
6965
6992
  margin-inline-start: auto;
@@ -7037,7 +7064,7 @@
7037
7064
  }
7038
7065
 
7039
7066
  :where(ui-layout-sidebar-item) > :where([slot="icon"]) {
7040
- display: block;
7067
+ display: inline-flex;
7041
7068
  }
7042
7069
 
7043
7070
  :where(ui-layout-sidebar-item) > :where(:not([slot="icon"]):not(ui-listbox[popover]):not(.nav-group-flyout)) {
package/dist/native-ui.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { n as e, t } from "./uid.js";
2
2
  import { i as n, n as ee, r as te, t as ne } from "./define.js";
3
- import { A as re, B as ie, C as r, D as i, E as a, F as o, G as s, H as c, I as l, L as u, M as d, N as f, O as p, P as m, R as h, S as g, T as _, U as v, V as y, W as b, _ as x, a as S, b as C, c as w, d as T, f as E, g as D, h as O, i as k, j as A, k as j, l as M, m as N, n as P, o as F, p as I, r as L, s as R, t as z, u as B, v as V, w as H, x as U, y as W, z as G } from "./register-all2.js";
4
- import { a as K, i as q, n as J, r as Y, s as ae, t as X } from "./ui-element.js";
5
- import { $ as oe, A as se, B as ce, C as le, Ct as ue, D as de, E as fe, F as pe, G as me, H as he, I as ge, J as _e, K as ve, L as ye, M as be, N as xe, O as Se, P as Ce, Q as we, R as Te, S as Ee, St as De, T as Oe, Tt as ke, U as Ae, V as je, W as Me, X as Z, Y as Ne, Z as Pe, _ as Fe, _t as Ie, a as Le, at as Re, b as ze, bt as Be, c as Ve, ct as He, d as Ue, dt as We, et as Ge, f as Ke, ft as qe, g as Je, gt as Ye, h as Xe, ht as Ze, i as Qe, it as $e, j as et, k as tt, l as nt, lt as rt, m as it, mt as at, n as ot, nt as st, o as ct, ot as lt, p as ut, pt as dt, q as ft, r as pt, rt as mt, s as ht, st as gt, t as _t, tt as vt, u as yt, ut as bt, v as xt, vt as St, w as Ct, wt, x as Tt, xt as Et, y as Dt, yt as Ot, z as kt } from "./ui-icon-element.js";
6
- import { a as At, c as jt, d as Mt, f as Nt, i as Pt, l as Ft, n as It, o as Lt, r as Rt, s as Q, t as zt, u as Bt } from "./dialog-controller.js";
3
+ import { A as r, B as i, C as a, D as o, E as s, F as c, G as l, H as u, I as d, L as f, M as p, N as m, O as h, P as g, R as _, S as v, T as y, U as b, V as x, W as S, _ as C, a as w, b as T, c as E, d as D, f as O, g as k, h as A, i as j, j as M, k as N, l as P, m as F, n as I, o as L, p as R, r as z, s as B, t as V, u as H, v as U, w as W, x as G, y as K, z as q } from "./register-all2.js";
4
+ import { a as J, i as Y, n as X, r as Z, s as re, t as ie } from "./ui-element.js";
5
+ import { $ as ae, A as oe, B as se, C as ce, Ct as le, D as ue, Dt as de, E as fe, Et as pe, F as me, G as he, H as ge, I as _e, J as ve, K as ye, L as be, M as xe, N as Se, O as Ce, P as we, Q as Te, R as Ee, S as De, St as Oe, T as ke, Tt as Ae, U as je, V as Q, W as Me, X as Ne, Y as Pe, Z as Fe, _ as Ie, _t as Le, a as Re, at as ze, b as Be, bt as Ve, c as He, ct as Ue, d as We, dt as Ge, et as Ke, f as qe, ft as Je, g as Ye, gt as Xe, h as Ze, ht as Qe, i as $e, it as et, j as tt, k as nt, l as rt, lt as it, m as at, mt as ot, n as st, nt as ct, o as lt, ot as ut, p as dt, pt as ft, q as pt, r as mt, rt as ht, s as gt, st as _t, t as vt, tt as yt, u as bt, ut as xt, v as St, vt as Ct, w as wt, wt as Tt, x as Et, xt as Dt, y as Ot, yt as kt, z as At } from "./ui-icon-element.js";
6
+ import { a as jt, c as Mt, d as Nt, f as Pt, i as Ft, l as It, n as Lt, o as Rt, r as zt, s as Bt, t as Vt, u as Ht } from "./dialog-controller.js";
7
7
  var $ = class extends Event {
8
8
  context;
9
9
  callback;
@@ -14,7 +14,7 @@ var $ = class extends Event {
14
14
  }), this.context = e, this.callback = t;
15
15
  }
16
16
  };
17
- function Vt(e) {
17
+ function Ut(e) {
18
18
  return class extends e {
19
19
  #e = /* @__PURE__ */ new Map();
20
20
  provideContext(e, t) {
@@ -33,7 +33,7 @@ function Vt(e) {
33
33
  };
34
34
  };
35
35
  }
36
- function Ht(e) {
36
+ function Wt(e) {
37
37
  return class extends e {
38
38
  #e = /* @__PURE__ */ new Map();
39
39
  requestContext(e, t) {
@@ -46,29 +46,4 @@ function Ht(e) {
46
46
  }
47
47
  };
48
48
  }
49
- /** Keyboard shortcut indicator. Pure display no behavior. */
50
- var Ut = class extends X {}, Wt = class extends X {
51
- #e = null;
52
- get open() {
53
- return this.hasAttribute("open");
54
- }
55
- set open(e) {
56
- this.toggleAttribute("open", e);
57
- }
58
- toggle() {
59
- this.open = !this.open;
60
- }
61
- setup() {
62
- super.setup(), this.querySelector(".layout-resize-handle") && (this.#e = new Q(this, {
63
- handleSelector: ".layout-resize-handle",
64
- axis: "horizontal",
65
- min: 280,
66
- max: 480,
67
- reverse: !0
68
- }));
69
- }
70
- teardown() {
71
- this.#e?.destroy(), this.#e = null, super.teardown();
72
- }
73
- };
74
- export { pe as CalendarStore, o as ClipboardController, i as CollapsibleController, Ae as ColumnResizeController, Ht as ContextConsumer, Vt as ContextProvider, $ as ContextRequestEvent, f as CopyController, Be as DataListController, zt as DialogController, Pt as DismissController, Ft as DismissStack, jt as DragController, A as DropZoneController, l as EditController, p as FocusTrapController, De as FormAssociable, Nt as GestureRouter, m as HoverController, d as IntersectController, It as ListNavigateController, Rt as PopoverController, Lt as PressController, y as RangeSelectController, Q as ResizeController, At as RovingFocusController, h as SearchController, xe as SelectController, G as SelectionController, re as SortController, u as SwipeController, Me as TableStore, a as ToastController, Bt as ToastManager, we as UIAccordion, Pe as UIAccordionItem, fe as UIAvatar, Oe as UIBadge, Ct as UIBreadcrumb, le as UIBreadcrumbItem, Ie as UIButton, Ce as UICalendar, yt as UICard, Ue as UIChatInput, Re as UICheckbox, et as UICombobox, We as UICommand, lt as UICommandEmpty, gt as UICommandGroup, bt as UICommandInput, He as UICommandItem, rt as UICommandList, Ke as UIController, Z as UIDialog, Tt as UIDrawer, X as UIElement, se as UIField, _t as UIIcon, Ye as UIInput, de as UIInputOtp, Ut as UIKbd, Le as UILayoutChat, Wt as UILayoutInspector, ht as UILayoutSidebar, ct as UILayoutSidebarItem, Ze as UIListbox, Je as UINav, it as UINavGroup, ut as UINavGroupHeader, Xe as UINavItem, at as UIOption, qe as UIOptionGroup, dt as UIOptionGroupHeader, Ee as UIPagination, mt as UIRadio, st as UIRadioGroup, Se as UIRange, nt as UISection, Ge as UISegment, vt as UISegmentedControl, be as UISelect, Fe as UISlide, xt as UISlideshow, $e as UISwitch, _e as UITab, ft as UITabPanel, ve as UITabPanels, he as UITable, ce as UITableBody, Te as UITableCell, je as UITableHead, ye as UITableHeader, kt as UITableRow, Ne as UITabs, tt as UITextarea, Ve as UIToolbar, oe as UITooltip, ze as UITree, Dt as UITreeItem, j as ValidateController, ie as VirtualScrollController, ee as batch, k as clippableAdapter, x as collapsibleAdapter, J as collectTraitOptions, te as computed, r as copyableAdapter, ge as createCalendarStore, Et as createDataList, ke as createDisabledEffect, me as createTableStore, c as debugReactive, ne as define, T as dialogableAdapter, O as dismissableAdapter, B as draggableAdapter, U as droppableAdapter, P as editableAdapter, e as effect, St as fetchDataOptions, V as focusTrappableAdapter, ot as getIcon, q as getRegisteredTraitNames, K as getTrait, Mt as getTraitRuntime, H as hoverableAdapter, g as intersectableAdapter, v as isComputed, b as isSignal, E as listNavigableAdapter, pt as onIconRegistered, Ot as parseDataOptions, Y as parseTraitAttribute, I as popoverableAdapter, _ as pressableAdapter, ue as prop, M as rangeSelectableAdapter, z as registerAllTraits, Qe as registerIcon, ae as registerTrait, w as resizableAdapter, D as rovingFocusableAdapter, S as searchableAdapter, F as selectableAdapter, n as signal, C as sortableAdapter, L as swipeableAdapter, wt as syncProp, N as toastableAdapter, t as uid, s as untrack, W as validatableAdapter, R as virtualizableAdapter };
49
+ export { be as CalendarStore, c as ClipboardController, o as CollapsibleController, he as ColumnResizeController, Wt as ContextConsumer, Ut as ContextProvider, $ as ContextRequestEvent, m as CopyController, Oe as DataListController, Vt as DialogController, Ft as DismissController, It as DismissStack, Mt as DragController, M as DropZoneController, d as EditController, h as FocusTrapController, Tt as FormAssociable, Pt as GestureRouter, g as HoverController, p as IntersectController, Lt as ListNavigateController, zt as PopoverController, Rt as PressController, x as RangeSelectController, Bt as ResizeController, jt as RovingFocusController, _ as SearchController, me as SelectController, q as SelectionController, r as SortController, f as SwipeController, ye as TableStore, s as ToastController, Ht as ToastManager, Ke as UIAccordion, ae as UIAccordionItem, Ce as UIAvatar, ue as UIBadge, ke as UIBreadcrumb, wt as UIBreadcrumbItem, kt as UIButton, _e as UICalendar, We as UICard, qe as UIChatInput, _t as UICheckbox, Se as UICombobox, ft as UICommand, Ue as UICommandEmpty, it as UICommandGroup, Je as UICommandInput, xt as UICommandItem, Ge as UICommandList, dt as UIController, Te as UIDialog, De as UIDrawer, ie as UIElement, xe as UIField, vt as UIIcon, Ct as UIInput, nt as UIInputOtp, fe as UIKbd, lt as UILayoutChat, Re as UILayoutInspector, He as UILayoutSidebar, gt as UILayoutSidebarItem, Le as UIListbox, Ie as UINav, Ze as UINavGroup, at as UINavGroupHeader, Ye as UINavItem, Xe as UIOption, ot as UIOptionGroup, Qe as UIOptionGroupHeader, ce as UIPagination, ze as UIRadio, et as UIRadioGroup, oe as UIRange, bt as UISection, ct as UISegment, ht as UISegmentedControl, we as UISelect, St as UISlide, Ot as UISlideshow, ut as UISwitch, Ne as UITab, Pe as UITabPanel, ve as UITabPanels, Me as UITable, ge as UITableBody, se as UITableCell, je as UITableHead, At as UITableHeader, Q as UITableRow, Fe as UITabs, tt as UITextarea, rt as UIToolbar, yt as UITooltip, Et as UITree, Be as UITreeItem, N as ValidateController, i as VirtualScrollController, ee as batch, j as clippableAdapter, C as collapsibleAdapter, X as collectTraitOptions, te as computed, a as copyableAdapter, Ee as createCalendarStore, le as createDataList, de as createDisabledEffect, pt as createTableStore, u as debugReactive, ne as define, D as dialogableAdapter, A as dismissableAdapter, H as draggableAdapter, G as droppableAdapter, I as editableAdapter, e as effect, Ve as fetchDataOptions, U as focusTrappableAdapter, st as getIcon, Y as getRegisteredTraitNames, J as getTrait, Nt as getTraitRuntime, W as hoverableAdapter, v as intersectableAdapter, b as isComputed, S as isSignal, O as listNavigableAdapter, mt as onIconRegistered, Dt as parseDataOptions, Z as parseTraitAttribute, R as popoverableAdapter, y as pressableAdapter, Ae as prop, P as rangeSelectableAdapter, V as registerAllTraits, $e as registerIcon, re as registerTrait, E as resizableAdapter, k as rovingFocusableAdapter, w as searchableAdapter, L as selectableAdapter, n as signal, T as sortableAdapter, z as swipeableAdapter, pe as syncProp, F as toastableAdapter, t as uid, l as untrack, K as validatableAdapter, B as virtualizableAdapter };
@@ -1,3 +1,3 @@
1
1
  import { t as e } from "./define.js";
2
- import { $ as t, A as n, B as r, C as i, D as a, E as o, H as s, J as c, K as l, L as u, M as d, O as f, P as p, Q as m, R as h, S as g, T as _, V as v, X as y, Y as b, Z as x, _ as S, _t as C, a as w, at as T, b as E, c as D, ct as O, d as k, dt as A, et as j, f as M, ft as N, g as P, gt as F, h as I, ht as L, it as R, j as z, k as B, l as V, lt as H, m as U, mt as W, nt as G, o as K, ot as q, p as J, pt as Y, q as X, rt as Z, s as Q, st as $, t as ee, tt as te, u as ne, ut as re, v as ie, w as ae, x as oe, y as se, z as ce } from "./ui-icon-element.js";
3
- e("ui-button", C), e("ui-input", F), e("ui-listbox", L), e("ui-option", W), e("ui-option-group", N), e("ui-option-group-header", Y), e("ui-select", d), e("ui-combobox", z), e("ui-command", A), e("ui-command-input", re), e("ui-command-list", H), e("ui-command-group", $), e("ui-command-item", O), e("ui-command-empty", q), e("ui-checkbox", T), e("ui-switch", R), e("ui-radio", Z), e("ui-radio-group", G), e("ui-segmented-control", te), e("ui-segment", j), e("ui-tooltip", t), e("ui-accordion", m), e("ui-accordion-item", x), e("ui-dialog", y), e("ui-tabs", b), e("ui-tab", c), e("ui-tab-panel", X), e("ui-tab-panels", l), e("ui-table", s), e("ui-table-head", v), e("ui-table-body", r), e("ui-table-row", ce), e("ui-table-header", u), e("ui-table-cell", h), e("ui-calendar", p), e("ui-field", n), e("ui-textarea", B), e("ui-range", f), e("ui-input-otp", a), e("ui-avatar", o), e("ui-badge", _), e("ui-breadcrumb", ae), e("ui-breadcrumb-item", i), e("ui-pagination", g), e("ui-drawer", oe), e("ui-tree", E), e("ui-tree-item", se), e("ui-slideshow", ie), e("ui-slide", S), e("ui-nav", P), e("ui-nav-group", U), e("ui-nav-group-header", J), e("ui-nav-item", I), e("ui-chat-input", k), e("ui-controller", M), e("ui-card", ne), e("ui-section", V), e("ui-toolbar", D), e("ui-layout-sidebar", Q), e("ui-layout-sidebar-item", K), e("ui-layout-chat", w), e("ui-icon", ee);
2
+ import { $ as t, A as n, B as r, C as i, D as a, E as o, H as s, I as c, J as l, M as u, N as d, O as f, P as p, Q as m, S as h, T as g, U as _, V as v, W as y, X as b, Y as x, Z as S, _ as C, _t as w, a as T, at as E, b as D, c as O, ct as k, d as A, dt as j, et as M, f as N, ft as P, g as F, gt as I, h as L, ht as R, it as z, j as B, k as V, l as H, lt as U, m as W, mt as G, nt as K, o as q, ot as J, p as Y, pt as X, rt as Z, s as Q, st as $, t as ee, tt as te, u as ne, ut as re, v as ie, vt as ae, w as oe, x as se, y as ce, yt as le, z as ue } from "./ui-icon-element.js";
3
+ e("ui-button", le), e("ui-input", ae), e("ui-listbox", w), e("ui-option", I), e("ui-option-group", G), e("ui-option-group-header", R), e("ui-select", p), e("ui-combobox", d), e("ui-command", X), e("ui-command-input", P), e("ui-command-list", j), e("ui-command-group", U), e("ui-command-item", re), e("ui-command-empty", k), e("ui-checkbox", $), e("ui-switch", J), e("ui-radio", E), e("ui-radio-group", z), e("ui-segmented-control", Z), e("ui-segment", K), e("ui-tooltip", te), e("ui-accordion", M), e("ui-accordion-item", t), e("ui-dialog", m), e("ui-tabs", S), e("ui-tab", b), e("ui-tab-panel", x), e("ui-tab-panels", l), e("ui-table", y), e("ui-table-head", _), e("ui-table-body", s), e("ui-table-row", v), e("ui-table-header", ue), e("ui-table-cell", r), e("ui-calendar", c), e("ui-field", u), e("ui-textarea", B), e("ui-range", n), e("ui-input-otp", V), e("ui-avatar", f), e("ui-badge", a), e("ui-kbd", o), e("ui-breadcrumb", g), e("ui-breadcrumb-item", oe), e("ui-pagination", i), e("ui-drawer", h), e("ui-tree", se), e("ui-tree-item", D), e("ui-slideshow", ce), e("ui-slide", ie), e("ui-nav", C), e("ui-nav-group", L), e("ui-nav-group-header", W), e("ui-nav-item", F), e("ui-chat-input", N), e("ui-controller", Y), e("ui-card", A), e("ui-section", ne), e("ui-toolbar", H), e("ui-layout-sidebar", O), e("ui-layout-sidebar-item", Q), e("ui-layout-chat", q), e("ui-layout-inspector", T), e("ui-icon", ee);
@@ -3387,7 +3387,7 @@ var ve = class extends y(c) {
3387
3387
  let n = parseInt(this.#t, 10);
3388
3388
  isNaN(n) || (n > t ? this.textContent = `${t}+` : this.textContent = this.#t);
3389
3389
  }
3390
- }, De = class extends c {
3390
+ }, De = class extends c {}, Oe = class extends c {
3391
3391
  #e;
3392
3392
  constructor() {
3393
3393
  super(), this.#e = this.attachInternals(), this.#e.role = "navigation";
@@ -3397,7 +3397,7 @@ var ve = class extends y(c) {
3397
3397
  let e = this.getAttribute("aria-label") ?? "Breadcrumb";
3398
3398
  this.#e.ariaLabel = e, this.hasAttribute("aria-label") || this.setAttribute("aria-label", e);
3399
3399
  }
3400
- }, Oe = class extends c {
3400
+ }, ke = class extends c {
3401
3401
  static observedAttributes = ["href", "current"];
3402
3402
  #e;
3403
3403
  constructor() {
@@ -3423,7 +3423,7 @@ var ve = class extends y(c) {
3423
3423
  #r = (e) => {
3424
3424
  (e.key === "Enter" || e.key === " ") && (e.preventDefault(), this.#n());
3425
3425
  };
3426
- }, ke = class extends c {
3426
+ }, Ae = class extends c {
3427
3427
  static observedAttributes = [
3428
3428
  "total",
3429
3429
  "value",
@@ -3546,7 +3546,7 @@ var ve = class extends y(c) {
3546
3546
  detail: { value: t }
3547
3547
  })));
3548
3548
  }
3549
- }, Ae = class extends c {
3549
+ }, je = class extends c {
3550
3550
  static observedAttributes = [
3551
3551
  "side",
3552
3552
  "no-close-on-escape",
@@ -3568,7 +3568,7 @@ var ve = class extends y(c) {
3568
3568
  teardown() {
3569
3569
  this.#e.destroy(), super.teardown();
3570
3570
  }
3571
- }, je = class extends c {
3571
+ }, Me = class extends c {
3572
3572
  static observedAttributes = ["disabled"];
3573
3573
  #e;
3574
3574
  #t = t(!1);
@@ -3596,7 +3596,7 @@ var ve = class extends y(c) {
3596
3596
  teardown() {
3597
3597
  this.#n.destroy(), super.teardown();
3598
3598
  }
3599
- }, Me = class extends c {
3599
+ }, Ne = class extends c {
3600
3600
  static observedAttributes = [
3601
3601
  "expanded",
3602
3602
  "selected",
@@ -3678,7 +3678,7 @@ var ve = class extends y(c) {
3678
3678
  break;
3679
3679
  }
3680
3680
  };
3681
- }, Ne = class extends c {
3681
+ }, Pe = class extends c {
3682
3682
  static observedAttributes = [
3683
3683
  "direction",
3684
3684
  "controls",
@@ -3891,11 +3891,11 @@ var ve = class extends y(c) {
3891
3891
  break;
3892
3892
  }
3893
3893
  };
3894
- }, Pe = class extends c {
3894
+ }, Fe = class extends c {
3895
3895
  setup() {
3896
3896
  super.setup(), this.hasAttribute("tabindex") || this.setAttribute("tabindex", "-1");
3897
3897
  }
3898
- }, Fe = class extends c {
3898
+ }, Ie = class extends c {
3899
3899
  static observedAttributes = ["value", "disabled"];
3900
3900
  #e;
3901
3901
  #t;
@@ -3946,7 +3946,7 @@ var ve = class extends y(c) {
3946
3946
  teardown() {
3947
3947
  this.#n.destroy(), super.teardown();
3948
3948
  }
3949
- }, Ie = class extends c {
3949
+ }, Le = class extends c {
3950
3950
  static observedAttributes = [
3951
3951
  "value",
3952
3952
  "disabled",
@@ -4010,7 +4010,7 @@ var ve = class extends y(c) {
4010
4010
  }
4011
4011
  }));
4012
4012
  };
4013
- }, Le = class extends c {
4013
+ }, Re = class extends c {
4014
4014
  static observedAttributes = ["open"];
4015
4015
  #e = t(!0);
4016
4016
  #t = null;
@@ -4097,7 +4097,7 @@ var ve = class extends y(c) {
4097
4097
  #d = (e) => {
4098
4098
  e.stopPropagation();
4099
4099
  };
4100
- }, Re = class extends c {
4100
+ }, ze = class extends c {
4101
4101
  constructor() {
4102
4102
  super();
4103
4103
  let e = this.attachInternals();
@@ -4107,8 +4107,13 @@ var ve = class extends y(c) {
4107
4107
  super.setup(), this.id ||= e("ngh");
4108
4108
  let t = this.closest("ui-nav-group");
4109
4109
  t && t.setAttribute("aria-labelledby", this.id);
4110
+ let n = this.querySelector(":scope > ui-icon");
4111
+ if (n) {
4112
+ let e = document.createElement("span");
4113
+ e.className = "icon-well", this.insertBefore(e, n), e.appendChild(n);
4114
+ }
4110
4115
  }
4111
- }, Y = class extends c {
4116
+ }, Be = class extends c {
4112
4117
  static observedAttributes = [
4113
4118
  "traits",
4114
4119
  "for",
@@ -4213,7 +4218,7 @@ var ve = class extends y(c) {
4213
4218
  }
4214
4219
  }), this.#n.observe(this, { attributes: !0 });
4215
4220
  }
4216
- }, ze = class extends c {
4221
+ }, Ve = class extends c {
4217
4222
  static observedAttributes = [
4218
4223
  "disabled",
4219
4224
  "no-enter-submit",
@@ -4293,7 +4298,7 @@ var ve = class extends y(c) {
4293
4298
  detail: { value: e }
4294
4299
  })) && !this.hasAttribute("no-auto-clear") && (this.value = "", this.#r?.setAttribute("disabled", ""));
4295
4300
  }
4296
- }, Be = class extends c {
4301
+ }, He = class extends c {
4297
4302
  static observedAttributes = ["interactive", "href"];
4298
4303
  setup() {
4299
4304
  super.setup(), this.hasAttribute("interactive") && (this.hasAttribute("tabindex") || this.setAttribute("tabindex", "0"), this.addEventListener("click", this.#e), this.addEventListener("keydown", this.#t));
@@ -4308,7 +4313,7 @@ var ve = class extends y(c) {
4308
4313
  #t = (e) => {
4309
4314
  (e.key === "Enter" || e.key === " ") && (e.preventDefault(), this.#e());
4310
4315
  };
4311
- }, Ve = class extends c {
4316
+ }, Ue = class extends c {
4312
4317
  static observedAttributes = [
4313
4318
  "collapsible",
4314
4319
  "collapsed",
@@ -4327,7 +4332,7 @@ var ve = class extends y(c) {
4327
4332
  #e = () => {
4328
4333
  this.hasAttribute("collapsible") && this.toggleAttribute("collapsed");
4329
4334
  };
4330
- }, He = class extends c {
4335
+ }, We = class extends c {
4331
4336
  #e;
4332
4337
  #t;
4333
4338
  constructor() {
@@ -4342,7 +4347,7 @@ var ve = class extends y(c) {
4342
4347
  teardown() {
4343
4348
  this.#t.destroy(), super.teardown();
4344
4349
  }
4345
- }, Ue = class extends c {
4350
+ }, Ge = class extends c {
4346
4351
  static observedAttributes = ["collapsed"];
4347
4352
  #e = null;
4348
4353
  #t = null;
@@ -4410,7 +4415,7 @@ var ve = class extends y(c) {
4410
4415
  for (let e of a) this.#t.observe(e);
4411
4416
  }
4412
4417
  }
4413
- }, We = class extends c {
4418
+ }, Y = class extends c {
4414
4419
  #e = null;
4415
4420
  #t = !1;
4416
4421
  setup() {
@@ -4427,7 +4432,30 @@ var ve = class extends y(c) {
4427
4432
  #r = () => {
4428
4433
  this.#t = !1, this.#e?.syncPopover(!1);
4429
4434
  };
4430
- }, Ge = class extends c {
4435
+ }, Ke = class extends c {
4436
+ #e = null;
4437
+ get open() {
4438
+ return this.hasAttribute("open");
4439
+ }
4440
+ set open(e) {
4441
+ this.toggleAttribute("open", e);
4442
+ }
4443
+ toggle() {
4444
+ this.open = !this.open;
4445
+ }
4446
+ setup() {
4447
+ super.setup(), this.querySelector(".layout-resize-handle") && (this.#e = new m(this, {
4448
+ handleSelector: ".layout-resize-handle",
4449
+ axis: "horizontal",
4450
+ min: 280,
4451
+ max: 480,
4452
+ reverse: !0
4453
+ }));
4454
+ }
4455
+ teardown() {
4456
+ this.#e?.destroy(), this.#e = null, super.teardown();
4457
+ }
4458
+ }, qe = class extends c {
4431
4459
  #e = null;
4432
4460
  get open() {
4433
4461
  return this.hasAttribute("open");
@@ -4451,7 +4479,7 @@ var ve = class extends y(c) {
4451
4479
  this.#e?.destroy(), this.#e = null, super.teardown();
4452
4480
  }
4453
4481
  }, X = /* @__PURE__ */ new Map(), Z = /* @__PURE__ */ new Set();
4454
- function Ke(e, t) {
4482
+ function Je(e, t) {
4455
4483
  X.set(e, t), Z.forEach((t) => t(e));
4456
4484
  }
4457
4485
  function Q(e) {
@@ -4466,7 +4494,7 @@ function $(e) {
4466
4494
  * @attr {string} size - Icon size override
4467
4495
  * @attr {string} aria-label - Accessible label (sets role="img" when present)
4468
4496
  */
4469
- var qe = class extends c {
4497
+ var Ye = class extends c {
4470
4498
  static observedAttributes = [
4471
4499
  "name",
4472
4500
  "size",
@@ -4497,4 +4525,4 @@ var qe = class extends c {
4497
4525
  }));
4498
4526
  }
4499
4527
  };
4500
- export { N as $, xe as A, fe as B, Oe as C, _ as Ct, we as D, Te as E, q as F, H as G, ue as H, _e as I, R as J, B as K, he as L, ye as M, J as N, Ce as O, ve as P, P as Q, me as R, ke as S, y as St, Ee as T, g as Tt, U, de as V, V as W, I as X, L as Y, F as Z, Pe as _, ee as _t, Ge as a, D as at, je as b, x as bt, He as c, le as ct, ze as d, oe as dt, M as et, Y as f, ae as ft, Fe as g, te as gt, Ie as h, ne as ht, Ke as i, O as it, be as j, Se as k, Ve as l, ce as lt, Le as m, re as mt, Q as n, A as nt, We as o, E as ot, Re as p, ie as pt, z as q, $ as r, k as rt, Ue as s, T as st, qe as t, j as tt, Be as u, se as ut, Ne as v, w as vt, De as w, v as wt, Ae as x, S as xt, Me as y, C as yt, pe as z };
4528
+ export { F as $, Ce as A, me as B, Ae as C, S as Ct, Ee as D, g as Dt, De as E, v as Et, J as F, U as G, fe as H, ve as I, B as J, V as K, q as L, xe as M, be as N, Te as O, ye as P, I as Q, _e as R, je as S, x as St, Oe as T, _ as Tt, de as U, pe as V, ue as W, R as X, z as Y, L as Z, Ie as _, ne as _t, qe as a, k as at, Ne as b, w as bt, Ge as c, E as ct, He as d, ce as dt, P as et, Ve as f, se as ft, Le as g, re as gt, Re as h, ie as ht, Je as i, A as it, Se as j, we as k, We as l, T as lt, ze as m, ae as mt, Q as n, M as nt, Ke as o, O as ot, Be as p, oe as pt, H as q, $ as r, j as rt, Y as s, D as st, Ye as t, N as tt, Ue as u, le as ut, Fe as v, te as vt, ke as w, y as wt, Me as x, C as xt, Pe as y, ee as yt, he as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nonoun/native-ui",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "description": "Zero-dependency web component library with an OKLCH CSS design system, signal-based reactivity, and composable trait controllers",
5
5
  "license": "MIT",
6
6
  "type": "module",