@agent-ui-kit/components 0.0.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.
Files changed (271) hide show
  1. package/dist/base-styles.css +8 -0
  2. package/dist/component-styles.css +147 -0
  3. package/dist/controls/_base/index.d.ts +3 -0
  4. package/dist/controls/_base/index.js +9 -0
  5. package/dist/controls/_base/indicator-element.d.ts +132 -0
  6. package/dist/controls/_base/indicator-element.js +158 -0
  7. package/dist/controls/_base/listbox-element.d.ts +70 -0
  8. package/dist/controls/_base/listbox-element.js +74 -0
  9. package/dist/controls/_base/range-element.d.ts +120 -0
  10. package/dist/controls/_base/range-element.js +158 -0
  11. package/dist/controls/_surface/container-box.css +301 -0
  12. package/dist/controls/_surface/container.css +156 -0
  13. package/dist/controls/_token-surface/token-surface.d.ts +35 -0
  14. package/dist/controls/_token-surface/token-surface.js +97 -0
  15. package/dist/controls/attachment/attachment-meta.d.ts +8 -0
  16. package/dist/controls/attachment/attachment-meta.js +84 -0
  17. package/dist/controls/attachment/attachment.css +91 -0
  18. package/dist/controls/attachment/attachment.d.ts +40 -0
  19. package/dist/controls/attachment/attachment.js +70 -0
  20. package/dist/controls/avatar/avatar-initials.d.ts +4 -0
  21. package/dist/controls/avatar/avatar-initials.js +30 -0
  22. package/dist/controls/avatar/avatar.css +87 -0
  23. package/dist/controls/avatar/avatar.d.ts +40 -0
  24. package/dist/controls/avatar/avatar.js +77 -0
  25. package/dist/controls/badge/badge.css +175 -0
  26. package/dist/controls/badge/badge.d.ts +36 -0
  27. package/dist/controls/badge/badge.js +71 -0
  28. package/dist/controls/bar-chart/bar-chart.css +110 -0
  29. package/dist/controls/bar-chart/bar-chart.d.ts +26 -0
  30. package/dist/controls/bar-chart/bar-chart.js +80 -0
  31. package/dist/controls/bar-chart/bar-math.d.ts +31 -0
  32. package/dist/controls/bar-chart/bar-math.js +106 -0
  33. package/dist/controls/button/button.css +263 -0
  34. package/dist/controls/button/button.d.ts +61 -0
  35. package/dist/controls/button/button.js +115 -0
  36. package/dist/controls/calendar/calendar.css +495 -0
  37. package/dist/controls/calendar/calendar.d.ts +161 -0
  38. package/dist/controls/calendar/calendar.js +1004 -0
  39. package/dist/controls/card/card-content.d.ts +24 -0
  40. package/dist/controls/card/card-content.js +133 -0
  41. package/dist/controls/card/card-footer.d.ts +3 -0
  42. package/dist/controls/card/card-footer.js +16 -0
  43. package/dist/controls/card/card-header.d.ts +3 -0
  44. package/dist/controls/card/card-header.js +18 -0
  45. package/dist/controls/card/card.css +445 -0
  46. package/dist/controls/card/card.d.ts +51 -0
  47. package/dist/controls/card/card.js +61 -0
  48. package/dist/controls/checkbox/checkbox.css +204 -0
  49. package/dist/controls/checkbox/checkbox.d.ts +114 -0
  50. package/dist/controls/checkbox/checkbox.js +130 -0
  51. package/dist/controls/code/code.css +72 -0
  52. package/dist/controls/code/code.d.ts +23 -0
  53. package/dist/controls/code/code.js +40 -0
  54. package/dist/controls/color-picker/color-picker.css +209 -0
  55. package/dist/controls/color-picker/color-picker.d.ts +84 -0
  56. package/dist/controls/color-picker/color-picker.js +545 -0
  57. package/dist/controls/color-picker/color.d.ts +40 -0
  58. package/dist/controls/color-picker/color.js +159 -0
  59. package/dist/controls/column/column.css +151 -0
  60. package/dist/controls/column/column.d.ts +107 -0
  61. package/dist/controls/column/column.js +57 -0
  62. package/dist/controls/combo-box/combo-box.css +397 -0
  63. package/dist/controls/combo-box/combo-box.d.ts +133 -0
  64. package/dist/controls/combo-box/combo-box.js +680 -0
  65. package/dist/controls/command-modal/command-modal.css +226 -0
  66. package/dist/controls/command-modal/command-modal.d.ts +42 -0
  67. package/dist/controls/command-modal/command-modal.js +315 -0
  68. package/dist/controls/disclosure/disclosure.css +162 -0
  69. package/dist/controls/disclosure/disclosure.d.ts +37 -0
  70. package/dist/controls/disclosure/disclosure.js +207 -0
  71. package/dist/controls/field/field.css +140 -0
  72. package/dist/controls/field/field.d.ts +27 -0
  73. package/dist/controls/field/field.js +228 -0
  74. package/dist/controls/form-provider/form-provider.css +40 -0
  75. package/dist/controls/form-provider/form-provider.d.ts +42 -0
  76. package/dist/controls/form-provider/form-provider.js +105 -0
  77. package/dist/controls/grid/grid.css +72 -0
  78. package/dist/controls/grid/grid.d.ts +60 -0
  79. package/dist/controls/grid/grid.js +56 -0
  80. package/dist/controls/icon/icon.css +37 -0
  81. package/dist/controls/icon/icon.d.ts +25 -0
  82. package/dist/controls/icon/icon.js +55 -0
  83. package/dist/controls/index.d.ts +57 -0
  84. package/dist/controls/index.js +136 -0
  85. package/dist/controls/ladder/ladder.css +89 -0
  86. package/dist/controls/ladder/ladder.d.ts +27 -0
  87. package/dist/controls/ladder/ladder.js +78 -0
  88. package/dist/controls/list/list.css +118 -0
  89. package/dist/controls/list/list.d.ts +84 -0
  90. package/dist/controls/list/list.js +48 -0
  91. package/dist/controls/menu/menu.css +195 -0
  92. package/dist/controls/menu/menu.d.ts +44 -0
  93. package/dist/controls/menu/menu.js +248 -0
  94. package/dist/controls/modal/modal.css +99 -0
  95. package/dist/controls/modal/modal.d.ts +61 -0
  96. package/dist/controls/modal/modal.js +155 -0
  97. package/dist/controls/popover/popover.css +83 -0
  98. package/dist/controls/popover/popover.d.ts +44 -0
  99. package/dist/controls/popover/popover.js +164 -0
  100. package/dist/controls/progress/progress.css +106 -0
  101. package/dist/controls/progress/progress.d.ts +28 -0
  102. package/dist/controls/progress/progress.js +80 -0
  103. package/dist/controls/radio/radio-group.css +84 -0
  104. package/dist/controls/radio/radio-group.d.ts +152 -0
  105. package/dist/controls/radio/radio-group.js +350 -0
  106. package/dist/controls/radio/radio.css +219 -0
  107. package/dist/controls/radio/radio.d.ts +19 -0
  108. package/dist/controls/radio/radio.js +75 -0
  109. package/dist/controls/ramp/ramp.css +75 -0
  110. package/dist/controls/ramp/ramp.d.ts +29 -0
  111. package/dist/controls/ramp/ramp.js +72 -0
  112. package/dist/controls/row/row.css +152 -0
  113. package/dist/controls/row/row.d.ts +95 -0
  114. package/dist/controls/row/row.js +45 -0
  115. package/dist/controls/segment/segment.css +66 -0
  116. package/dist/controls/segment/segment.d.ts +3 -0
  117. package/dist/controls/segment/segment.js +26 -0
  118. package/dist/controls/segmented-control/segmented-control.css +189 -0
  119. package/dist/controls/segmented-control/segmented-control.d.ts +20 -0
  120. package/dist/controls/segmented-control/segmented-control.js +64 -0
  121. package/dist/controls/select/select.css +467 -0
  122. package/dist/controls/select/select.d.ts +147 -0
  123. package/dist/controls/select/select.js +538 -0
  124. package/dist/controls/slider/slider.css +231 -0
  125. package/dist/controls/slider/slider.d.ts +111 -0
  126. package/dist/controls/slider/slider.js +60 -0
  127. package/dist/controls/slider-multi/slider-multi.css +197 -0
  128. package/dist/controls/slider-multi/slider-multi.d.ts +149 -0
  129. package/dist/controls/slider-multi/slider-multi.js +380 -0
  130. package/dist/controls/sparkline/sparkline-math.d.ts +23 -0
  131. package/dist/controls/sparkline/sparkline-math.js +79 -0
  132. package/dist/controls/sparkline/sparkline.css +61 -0
  133. package/dist/controls/sparkline/sparkline.d.ts +27 -0
  134. package/dist/controls/sparkline/sparkline.js +74 -0
  135. package/dist/controls/split/constrain.d.ts +44 -0
  136. package/dist/controls/split/constrain.js +126 -0
  137. package/dist/controls/split/split-pane.css +63 -0
  138. package/dist/controls/split/split-pane.d.ts +49 -0
  139. package/dist/controls/split/split-pane.js +42 -0
  140. package/dist/controls/split/split.css +127 -0
  141. package/dist/controls/split/split.d.ts +42 -0
  142. package/dist/controls/split/split.js +364 -0
  143. package/dist/controls/stat/stat-model.d.ts +22 -0
  144. package/dist/controls/stat/stat-model.js +69 -0
  145. package/dist/controls/stat/stat.css +101 -0
  146. package/dist/controls/stat/stat.d.ts +30 -0
  147. package/dist/controls/stat/stat.js +73 -0
  148. package/dist/controls/status-stream/status-stream.css +151 -0
  149. package/dist/controls/status-stream/status-stream.d.ts +108 -0
  150. package/dist/controls/status-stream/status-stream.js +417 -0
  151. package/dist/controls/swatch/swatch.css +66 -0
  152. package/dist/controls/swatch/swatch.d.ts +28 -0
  153. package/dist/controls/swatch/swatch.js +74 -0
  154. package/dist/controls/swiper/swiper-item.css +17 -0
  155. package/dist/controls/swiper/swiper-item.d.ts +31 -0
  156. package/dist/controls/swiper/swiper-item.js +47 -0
  157. package/dist/controls/swiper/swiper-label.css +10 -0
  158. package/dist/controls/swiper/swiper-label.d.ts +4 -0
  159. package/dist/controls/swiper/swiper-label.js +20 -0
  160. package/dist/controls/swiper/swiper-paddles.css +26 -0
  161. package/dist/controls/swiper/swiper-paddles.d.ts +10 -0
  162. package/dist/controls/swiper/swiper-paddles.js +62 -0
  163. package/dist/controls/swiper/swiper-pagination.css +60 -0
  164. package/dist/controls/swiper/swiper-pagination.d.ts +31 -0
  165. package/dist/controls/swiper/swiper-pagination.js +78 -0
  166. package/dist/controls/swiper/swiper.css +153 -0
  167. package/dist/controls/swiper/swiper.d.ts +158 -0
  168. package/dist/controls/swiper/swiper.js +659 -0
  169. package/dist/controls/switch/switch.css +194 -0
  170. package/dist/controls/switch/switch.d.ts +5 -0
  171. package/dist/controls/switch/switch.js +18 -0
  172. package/dist/controls/table/table-model.d.ts +43 -0
  173. package/dist/controls/table/table-model.js +124 -0
  174. package/dist/controls/table/table.css +90 -0
  175. package/dist/controls/table/table.d.ts +29 -0
  176. package/dist/controls/table/table.js +178 -0
  177. package/dist/controls/tabs/tab-panel.d.ts +10 -0
  178. package/dist/controls/tabs/tab-panel.js +89 -0
  179. package/dist/controls/tabs/tab.d.ts +26 -0
  180. package/dist/controls/tabs/tab.js +67 -0
  181. package/dist/controls/tabs/tabs.css +181 -0
  182. package/dist/controls/tabs/tabs.d.ts +61 -0
  183. package/dist/controls/tabs/tabs.js +176 -0
  184. package/dist/controls/text/href.d.ts +26 -0
  185. package/dist/controls/text/href.js +48 -0
  186. package/dist/controls/text/text.css +328 -0
  187. package/dist/controls/text/text.d.ts +85 -0
  188. package/dist/controls/text/text.js +273 -0
  189. package/dist/controls/text-field/text-field.css +498 -0
  190. package/dist/controls/text-field/text-field.d.ts +226 -0
  191. package/dist/controls/text-field/text-field.js +905 -0
  192. package/dist/controls/textarea/textarea.css +251 -0
  193. package/dist/controls/textarea/textarea.d.ts +136 -0
  194. package/dist/controls/textarea/textarea.js +312 -0
  195. package/dist/controls/theme-provider/theme-provider.css +48 -0
  196. package/dist/controls/theme-provider/theme-provider.d.ts +59 -0
  197. package/dist/controls/theme-provider/theme-provider.js +40 -0
  198. package/dist/controls/timeline/timeline.css +33 -0
  199. package/dist/controls/timeline/timeline.d.ts +39 -0
  200. package/dist/controls/timeline/timeline.js +52 -0
  201. package/dist/controls/timeline-item/timeline-item.css +495 -0
  202. package/dist/controls/timeline-item/timeline-item.d.ts +79 -0
  203. package/dist/controls/timeline-item/timeline-item.js +360 -0
  204. package/dist/controls/toast/toast-region.css +56 -0
  205. package/dist/controls/toast/toast-region.d.ts +20 -0
  206. package/dist/controls/toast/toast-region.js +113 -0
  207. package/dist/controls/toast/toast.css +96 -0
  208. package/dist/controls/toast/toast.d.ts +28 -0
  209. package/dist/controls/toast/toast.js +191 -0
  210. package/dist/controls/toolbar/toolbar.css +125 -0
  211. package/dist/controls/toolbar/toolbar.d.ts +108 -0
  212. package/dist/controls/toolbar/toolbar.js +68 -0
  213. package/dist/controls/tooltip/tooltip.css +80 -0
  214. package/dist/controls/tooltip/tooltip.d.ts +57 -0
  215. package/dist/controls/tooltip/tooltip.js +205 -0
  216. package/dist/descriptor/component-descriptor.d.ts +112 -0
  217. package/dist/descriptor/component-descriptor.js +492 -0
  218. package/dist/descriptor/index.d.ts +1 -0
  219. package/dist/descriptor/index.js +5 -0
  220. package/dist/dom/container.d.ts +45 -0
  221. package/dist/dom/container.js +60 -0
  222. package/dist/dom/element.d.ts +98 -0
  223. package/dist/dom/element.js +221 -0
  224. package/dist/dom/form.d.ts +240 -0
  225. package/dist/dom/form.js +399 -0
  226. package/dist/dom/index.d.ts +10 -0
  227. package/dist/dom/index.js +31 -0
  228. package/dist/dom/props.d.ts +56 -0
  229. package/dist/dom/props.js +231 -0
  230. package/dist/dom/repeat.d.ts +10 -0
  231. package/dist/dom/repeat.js +202 -0
  232. package/dist/dom/template.d.ts +161 -0
  233. package/dist/dom/template.js +634 -0
  234. package/dist/dom/watch.d.ts +11 -0
  235. package/dist/dom/watch.js +82 -0
  236. package/dist/foundation-styles.css +9 -0
  237. package/dist/index.d.ts +2 -0
  238. package/dist/index.js +3 -0
  239. package/dist/reactive/graph.d.ts +65 -0
  240. package/dist/reactive/graph.js +310 -0
  241. package/dist/reactive/index.d.ts +3 -0
  242. package/dist/reactive/index.js +4 -0
  243. package/dist/reactive/scheduler.d.ts +13 -0
  244. package/dist/reactive/scheduler.js +49 -0
  245. package/dist/traits/area-drag.d.ts +12 -0
  246. package/dist/traits/area-drag.js +70 -0
  247. package/dist/traits/form-registry.d.ts +36 -0
  248. package/dist/traits/form-registry.js +108 -0
  249. package/dist/traits/index.d.ts +24 -0
  250. package/dist/traits/index.js +19 -0
  251. package/dist/traits/overlay.d.ts +50 -0
  252. package/dist/traits/overlay.js +277 -0
  253. package/dist/traits/pane-resize.d.ts +26 -0
  254. package/dist/traits/pane-resize.js +103 -0
  255. package/dist/traits/press-activation.d.ts +11 -0
  256. package/dist/traits/press-activation.js +55 -0
  257. package/dist/traits/roving-focus.d.ts +52 -0
  258. package/dist/traits/roving-focus.js +214 -0
  259. package/dist/traits/scroll-fade.d.ts +28 -0
  260. package/dist/traits/scroll-fade.js +120 -0
  261. package/dist/traits/selection-commit.d.ts +30 -0
  262. package/dist/traits/selection-commit.js +146 -0
  263. package/dist/traits/tabbable.d.ts +12 -0
  264. package/dist/traits/tabbable.js +59 -0
  265. package/dist/traits/track-user-invalid.d.ts +36 -0
  266. package/dist/traits/track-user-invalid.js +52 -0
  267. package/dist/traits/value-codec.d.ts +120 -0
  268. package/dist/traits/value-codec.js +497 -0
  269. package/dist/traits/value-drag.d.ts +18 -0
  270. package/dist/traits/value-drag.js +84 -0
  271. package/package.json +263 -0
@@ -0,0 +1,209 @@
1
+ /* color-picker.css — ui-color-picker, the OKLCH-internal 2-axis color-input control (color-picker.lld.md
2
+ * LLD-C7 · ADR-0123). Two clearly-sectioned blocks:
3
+ *
4
+ * [1] TOKEN BLOCK — `:where(ui-color-picker)` (specificity 0,0,0) DECLARES the `--ui-color-picker-*`
5
+ * chain: the pad's bespoke density-invariant block-size floor (the whole-shape law, SPEC-R8 — a
6
+ * picker that collapses to a line is the ui-slider DOT-bug's cousin), the shell gap (off the space
7
+ * scale), the pad border/radius (off --md-sys-color-outline-variant, so the pad never vanishes), and
8
+ * the thumb geometry. Size-class **pattern** (ADR-0123 cl.1): no new geometry ROW is invented — the
9
+ * channel rows are Indicator-class ui-sliders (self-sized under ADR-0038), the readout is a
10
+ * Control-height ui-text-field; only the pad's OWN block-size is bespoke here.
11
+ *
12
+ * [2] STYLES BLOCK — `@scope (ui-color-picker)` CONSUMES only `--ui-color-picker-*` (+ the shared
13
+ * focus-ring/space-scale tokens, the fleet-standard exception). The host is a flex COLUMN shell (pad →
14
+ * channels → readout), filling its container's inline-size by construction (a flex container is
15
+ * block-outside) — the CSS-less-consumer floor (ADR-0102 Lane A). The pad is `position:relative`
16
+ * (containing block for the canvas + thumb); the canvas fills the pad via `inset:0`; the thumb is a
17
+ * small circle positioned by `left`/`top` percentages the control sets on model change (JS geometry
18
+ * seam, the ui-slider `--value-pct` precedent generalized to two axes via inline style since a single
19
+ * custom property can't carry a pair). `[slot=presets]` (author content, a plain light-DOM sibling —
20
+ * no real Shadow `<slot>` exists in this light-DOM fleet; `slot` is a CSS/positioning discriminator,
21
+ * the text-field leading/trailing-adornment precedent) is ordered LAST via flex `order` and paints
22
+ * nothing when absent (no layout hole, SPEC-R4 AC3).
23
+ *
24
+ * Standalone stylesheet — linked via component-styles.css; never injected from color-picker.ts (behaviour-
25
+ * only `.ts`, no runtime style injection — plan §2).
26
+ */
27
+
28
+ /* ══════════════════════ [1] TOKEN BLOCK — :where(ui-color-picker) ══════════════════════════════ */
29
+
30
+ :where(ui-color-picker) {
31
+ /* Shell gap — off the space scale (the container-box.css / calendar-panel precedent). */
32
+ --ui-color-picker-gap: var(--space-sm, 0.5rem);
33
+
34
+ /* Pad geometry — a bespoke density-invariant floor (SPEC-R8: never collapse to a line). 10rem reads as
35
+ a comfortable, clearly-2D gesture surface at every density/scale tier (the ui-swatch box / ui-calendar
36
+ cell precedent: a bespoke token, not a §1 geometry-lookup row). */
37
+ --ui-color-picker-pad-block-size: 10rem;
38
+ --ui-color-picker-pad-radius: var(--md-sys-shape-corner-base, 0.375rem);
39
+ --ui-color-picker-pad-outline: var(--md-sys-color-neutral-outline-variant, #c4c4c4);
40
+
41
+ /* Thumb geometry — a small ringed circle, visible against any painted hue (a light ring + a dark ring
42
+ stacked, so the thumb reads on both light and dark pad colors — the swatch/calendar thumb-vs-any-
43
+ backdrop lesson, ADR-0094). */
44
+ --ui-color-picker-thumb-size: 1rem;
45
+ --ui-color-picker-thumb-ring: var(--md-sys-color-neutral-on-surface, #1c1c1e);
46
+ --ui-color-picker-thumb-ring-inner: var(--md-sys-color-neutral-surface-brightest, #fff);
47
+ --ui-color-picker-label-font: var(--md-sys-font-sm, 13px); /* TKT-0066 item 5 ruling: constants route through the own chain — the shared small-text size for channel labels, value readouts, and the format toggle */
48
+ }
49
+
50
+ /* ══════════════════════ [2] STYLES BLOCK — @scope (ui-color-picker) ═══════════════════════════ */
51
+
52
+ @scope (ui-color-picker) {
53
+ /* Host: a flex COLUMN shell — fills its container's inline-size by construction (flex is block-outside),
54
+ the CSS-less-consumer floor (ADR-0102 Lane A). */
55
+ :scope {
56
+ display: flex;
57
+ flex-direction: column;
58
+ gap: var(--ui-color-picker-gap);
59
+ }
60
+
61
+ /* ── The pad ([data-part=pad]) — the 2-axis chroma×lightness area ────────────────────────────── */
62
+ :scope [data-part='pad'] {
63
+ order: 0;
64
+ position: relative;
65
+ display: block;
66
+ inline-size: 100%;
67
+ block-size: var(--ui-color-picker-pad-block-size);
68
+ border-radius: var(--ui-color-picker-pad-radius);
69
+ border: 1px solid var(--ui-color-picker-pad-outline);
70
+ overflow: hidden;
71
+ cursor: crosshair;
72
+ touch-action: none; /* give pointer events exclusively to the pad during drag — the ui-slider precedent */
73
+ -webkit-user-select: none;
74
+ user-select: none;
75
+ }
76
+
77
+ :scope [data-part='pad']:focus-visible {
78
+ outline: var(--md-sys-state-focus-ring-width, 2px) solid var(--md-sys-color-focus-ring);
79
+ outline-offset: calc(-1 * var(--md-sys-state-focus-ring-width, 2px)); /* inset — the pad already has its own border */
80
+ }
81
+
82
+ /* Disabled — pointer-inert; muted (the effectiveDisabled channel forwards `disabled` onto the composed
83
+ channel sliders + readout independently, see color-picker.ts). */
84
+ :scope[disabled] [data-part='pad'] {
85
+ pointer-events: none;
86
+ cursor: default;
87
+ opacity: 0.5;
88
+ }
89
+
90
+ /* The canvas fills the pad exactly — the per-pixel OKLCH→sRGB paint (LLD-C7). Decorative only: the pad
91
+ ITSELF carries the pointer/keyboard/ARIA surface, never the canvas. */
92
+ :scope [data-part='pad-canvas'] {
93
+ position: absolute;
94
+ inset: 0;
95
+ inline-size: 100%;
96
+ block-size: 100%;
97
+ display: block;
98
+ pointer-events: none;
99
+ }
100
+
101
+ /* The thumb — a small ringed circle, positioned by `left`/`top` percentages the control sets on every
102
+ model change (JS geometry seam — a pair of axes can't ride one CSS custom property the way the
103
+ 1-D `--value-pct` slider precedent does). `transform: translate(-50%,-50%)` centres it on the point. */
104
+ :scope [data-part='pad-thumb'] {
105
+ position: absolute;
106
+ inline-size: var(--ui-color-picker-thumb-size);
107
+ block-size: var(--ui-color-picker-thumb-size);
108
+ border-radius: 50%;
109
+ transform: translate(-50%, -50%);
110
+ box-shadow:
111
+ 0 0 0 2px var(--ui-color-picker-thumb-ring-inner),
112
+ 0 0 0 3px var(--ui-color-picker-thumb-ring);
113
+ pointer-events: none;
114
+ }
115
+
116
+ /* ── Channels ([data-part=channels]) — hue always; chroma + lightness mirrored (SPEC-R6 spine) ──── */
117
+ :scope [data-part='channels'] {
118
+ order: 1;
119
+ display: flex;
120
+ flex-direction: column;
121
+ gap: var(--ui-color-picker-gap);
122
+ }
123
+
124
+ /* Each channel row: a fixed-width label, the composed ui-slider (flex:1), and a printed numeral
125
+ (ADR-0123 cl.8 non-color signifier — a plain ui-slider carries no visible text of its own). */
126
+ :scope [data-part='channel-row'] {
127
+ display: flex;
128
+ flex-direction: row;
129
+ align-items: center;
130
+ gap: var(--ui-color-picker-gap);
131
+ }
132
+
133
+ :scope [data-part='channel-label'] {
134
+ inline-size: 4.5em;
135
+ flex-shrink: 0;
136
+ font-size: var(--ui-color-picker-label-font);
137
+ }
138
+
139
+ :scope [data-part='channel-row'] ui-slider {
140
+ flex: 1;
141
+ min-inline-size: 0;
142
+ }
143
+
144
+ :scope [data-part='channel-value'] {
145
+ inline-size: 3.5em;
146
+ flex-shrink: 0;
147
+ text-align: end;
148
+ font-size: var(--ui-color-picker-label-font);
149
+ font-variant-numeric: tabular-nums;
150
+ }
151
+
152
+ /* ── Readout ([data-part=readout]) — the editable ui-text-field + the composed ui-swatch preview ── */
153
+ :scope [data-part='readout'] {
154
+ order: 2;
155
+ display: flex;
156
+ flex-direction: row;
157
+ align-items: center;
158
+ gap: var(--ui-color-picker-gap);
159
+ }
160
+
161
+ :scope [data-part='readout'] ui-text-field {
162
+ flex: 1;
163
+ min-inline-size: 0; /* the flex-child shrink-to-fit guard (the fleet's standard row-child pattern) */
164
+ }
165
+
166
+ :scope [data-part='eyedropper'] {
167
+ flex-shrink: 0;
168
+ background: transparent;
169
+ border: 1px solid var(--ui-color-picker-pad-outline);
170
+ border-radius: var(--ui-color-picker-pad-radius);
171
+ padding: 0.25rem 0.5rem;
172
+ font-size: var(--ui-color-picker-label-font);
173
+ cursor: pointer;
174
+ color: inherit;
175
+ }
176
+
177
+ :scope [data-part='eyedropper']:focus-visible {
178
+ outline: var(--md-sys-state-focus-ring-width, 2px) solid var(--md-sys-color-focus-ring);
179
+ outline-offset: var(--md-sys-state-focus-ring-offset, 2px);
180
+ }
181
+
182
+ /* ── Presets ([slot=presets]) — author-supplied content, ordered LAST; absent = no layout hole ──── */
183
+ :scope > [slot='presets'] {
184
+ order: 3;
185
+ display: flex;
186
+ flex-wrap: wrap;
187
+ gap: var(--ui-color-picker-gap);
188
+ }
189
+
190
+ /* ── forced-colors (WHCM, SPEC-R8/cl.8) — the pad CANNOT paint a gradient under forced-colors; it
191
+ degrades to a Canvas field with a CanvasText-bordered thumb, never a fake system color. The channel
192
+ sliders + numeric readout remain the authoritative, operable input path (they are real controls that
193
+ survive WHCM unaided — the ADR-0118 "the printed value IS the content there" doctrine). ──────────── */
194
+ @media (forced-colors: active) {
195
+ :scope [data-part='pad'] {
196
+ background: Canvas;
197
+ border-color: CanvasText;
198
+ forced-color-adjust: none;
199
+ }
200
+ :scope [data-part='pad-canvas'] {
201
+ display: none; /* the gradient paint cannot honestly represent color under system-color flattening */
202
+ }
203
+ :scope [data-part='pad-thumb'] {
204
+ background: Canvas;
205
+ box-shadow: 0 0 0 2px CanvasText;
206
+ forced-color-adjust: none;
207
+ }
208
+ }
209
+ }
@@ -0,0 +1,84 @@
1
+ import { UIFormElement, type ReactiveProps } from '../../dom/index.js';
2
+ import type { FormValue, ValidityResult, FieldLabelling } from '../../dom/index.js';
3
+ declare const props: {
4
+ value: {
5
+ reflect: true;
6
+ type: import("../../index.js").PropType<string>;
7
+ default: string;
8
+ attribute?: string | false;
9
+ };
10
+ format: {
11
+ reflect: true;
12
+ type: import("../../index.js").PropType<"hex" | "oklch">;
13
+ default: "hex" | "oklch";
14
+ attribute?: string | false;
15
+ };
16
+ name: {
17
+ reflect: true;
18
+ type: import("../../index.js").PropType<string>;
19
+ default: string;
20
+ attribute?: string | false;
21
+ };
22
+ disabled: {
23
+ reflect: true;
24
+ type: import("../../index.js").PropType<boolean>;
25
+ default: boolean;
26
+ attribute?: string | false;
27
+ };
28
+ required: {
29
+ reflect: true;
30
+ type: import("../../index.js").PropType<boolean>;
31
+ default: boolean;
32
+ attribute?: string | false;
33
+ };
34
+ };
35
+ export interface UIColorPickerElement extends ReactiveProps<typeof props> {
36
+ }
37
+ export declare class UIColorPickerElement extends UIFormElement {
38
+ #private;
39
+ static props: {
40
+ value: {
41
+ reflect: true;
42
+ type: import("../../index.js").PropType<string>;
43
+ default: string;
44
+ attribute?: string | false;
45
+ };
46
+ format: {
47
+ reflect: true;
48
+ type: import("../../index.js").PropType<"hex" | "oklch">;
49
+ default: "hex" | "oklch";
50
+ attribute?: string | false;
51
+ };
52
+ name: {
53
+ reflect: true;
54
+ type: import("../../index.js").PropType<string>;
55
+ default: string;
56
+ attribute?: string | false;
57
+ };
58
+ disabled: {
59
+ reflect: true;
60
+ type: import("../../index.js").PropType<boolean>;
61
+ default: boolean;
62
+ attribute?: string | false;
63
+ };
64
+ required: {
65
+ reflect: true;
66
+ type: import("../../index.js").PropType<boolean>;
67
+ default: boolean;
68
+ attribute?: string | false;
69
+ };
70
+ };
71
+ protected formValue(): FormValue;
72
+ protected formValidity(): ValidityResult;
73
+ protected formReset(): void;
74
+ protected formStateRestore(state: File | string | FormData | null): void;
75
+ protected formUserInvalid(): boolean;
76
+ /** The pad is the labelled part (the ui-calendar grid precedent — the host is the form element, the
77
+ * role/name ride the PART). Merges the field's label text into the pad's own fixed axis description
78
+ * (string concat — the pad has no stable self-describing id'd node to combine via aria-labelledby, unlike
79
+ * calendar's title span, so a text merge is the pragmatic mechanism here). */
80
+ protected applyFieldLabelling(refs: FieldLabelling | null): void;
81
+ protected connected(): void;
82
+ protected disconnected(): void;
83
+ }
84
+ export {};