@webjsdev/ui 0.3.4 → 0.3.6

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.
@@ -100,6 +100,33 @@ function variantPrefix(token: string): string {
100
100
  return i === -1 ? '' : token.slice(0, i + 1);
101
101
  }
102
102
 
103
+ // ---------------------------------------------------------------------------
104
+ // Stable DOM ids for wiring ARIA relationships (aria-controls /
105
+ // aria-labelledby / aria-describedby) between sibling light-DOM nodes.
106
+ // A monotonic counter is fine for uniqueness within a document: the id is
107
+ // only consumed as an attribute value, never persisted. When SSR emits an
108
+ // id on a host element, the upgraded element reuses it (ensureId is a no-op
109
+ // when an id is already present), so the server and client agree.
110
+ // ---------------------------------------------------------------------------
111
+
112
+ let _idSeq = 0;
113
+
114
+ /** A fresh, document-unique id string with a readable prefix. */
115
+ export function domId(prefix = 'ui'): string {
116
+ _idSeq += 1;
117
+ return `${prefix}-${_idSeq}`;
118
+ }
119
+
120
+ /**
121
+ * Returns `el.id`, assigning a generated one (prefix-based) when absent.
122
+ * Idempotent, so an id already present (author-set, or carried over from
123
+ * SSR) is reused unchanged.
124
+ */
125
+ export function ensureId(el: { id: string }, prefix = 'ui'): string {
126
+ if (!el.id) el.id = domId(prefix);
127
+ return el.id;
128
+ }
129
+
103
130
  // ---------------------------------------------------------------------------
104
131
  // Custom-element base: SSR-safe. In the browser `Base = HTMLElement`. On
105
132
  // the server (Node, during SSR) `HTMLElement` is undefined; we substitute
@@ -188,7 +188,8 @@
188
188
  "name": "dialog",
189
189
  "type": "registry:ui",
190
190
  "registryDependencies": [
191
- "lib-utils"
191
+ "lib-utils",
192
+ "button"
192
193
  ],
193
194
  "dependencies": [
194
195
  "@webjsdev/core"
@@ -203,6 +204,9 @@
203
204
  {
204
205
  "name": "dropdown-menu",
205
206
  "type": "registry:ui",
207
+ "registryDependencies": [
208
+ "popover"
209
+ ],
206
210
  "dependencies": [
207
211
  "@webjsdev/core"
208
212
  ],
@@ -216,6 +220,9 @@
216
220
  {
217
221
  "name": "hover-card",
218
222
  "type": "registry:ui",
223
+ "registryDependencies": [
224
+ "popover"
225
+ ],
219
226
  "dependencies": [
220
227
  "@webjsdev/core"
221
228
  ],
@@ -452,6 +459,9 @@
452
459
  {
453
460
  "name": "toggle-group",
454
461
  "type": "registry:ui",
462
+ "registryDependencies": [
463
+ "toggle"
464
+ ],
455
465
  "dependencies": [
456
466
  "@webjsdev/core"
457
467
  ],
@@ -465,6 +475,9 @@
465
475
  {
466
476
  "name": "tooltip",
467
477
  "type": "registry:ui",
478
+ "registryDependencies": [
479
+ "popover"
480
+ ],
468
481
  "dependencies": [
469
482
  "@webjsdev/core"
470
483
  ],