kempo-ui 0.3.5 → 0.3.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.
Files changed (146) hide show
  1. package/AGENTS.md +2 -1
  2. package/dist/components/Aside.js +1 -1
  3. package/dist/components/Main.js +1 -1
  4. package/docs/components/accordion.html +240 -8
  5. package/docs/components/aside-items.html +13 -9
  6. package/docs/components/aside-menu.html +13 -9
  7. package/docs/components/aside-push.html +11 -6
  8. package/docs/components/aside.html +289 -115
  9. package/docs/components/card.html +238 -7
  10. package/docs/components/color-picker.html +245 -14
  11. package/docs/components/content-slider.html +240 -8
  12. package/docs/components/context.html +241 -7
  13. package/docs/components/dialog.html +238 -7
  14. package/docs/components/dropdown.html +238 -7
  15. package/docs/components/filter-list.html +239 -10
  16. package/docs/components/focus-capture.html +241 -10
  17. package/docs/components/html-editor.html +266 -35
  18. package/docs/components/hybrid-component.html +238 -6
  19. package/docs/components/icon.html +239 -9
  20. package/docs/components/import.html +239 -8
  21. package/docs/components/light-component.html +239 -7
  22. package/docs/components/nav.html +240 -8
  23. package/docs/components/photo-viewer.html +239 -9
  24. package/docs/components/resize.html +240 -9
  25. package/docs/components/shadow-component.html +239 -7
  26. package/docs/components/show-more.html +237 -8
  27. package/docs/components/sortable.html +239 -8
  28. package/docs/components/spinner.html +237 -6
  29. package/docs/components/split.html +241 -10
  30. package/docs/components/table.html +241 -11
  31. package/docs/components/tableControls.html +240 -7
  32. package/docs/components/tableCustomFields.html +241 -8
  33. package/docs/components/tableFetchRecords.html +239 -7
  34. package/docs/components/tableFieldSortHide.html +239 -7
  35. package/docs/components/tablePagination.html +246 -13
  36. package/docs/components/tablePlaceholder.html +241 -8
  37. package/docs/components/tableRecordEditing.html +241 -8
  38. package/docs/components/tableRecordFiltering.html +239 -7
  39. package/docs/components/tableRecordHiding.html +241 -9
  40. package/docs/components/tableRecordSearching.html +239 -7
  41. package/docs/components/tableRecordSelection.html +240 -7
  42. package/docs/components/tableRowControls.html +241 -8
  43. package/docs/components/tableServerSync.html +245 -11
  44. package/docs/components/tableSorting.html +239 -7
  45. package/docs/components/tabs.html +240 -7
  46. package/docs/components/tags.html +239 -7
  47. package/docs/components/theme-select.html +239 -7
  48. package/docs/components/theme-switcher.html +240 -8
  49. package/docs/components/timestamp.html +239 -8
  50. package/docs/components/toast.html +240 -8
  51. package/docs/components/toggle.html +240 -9
  52. package/docs/components/tree.html +239 -8
  53. package/docs/index.html +244 -6
  54. package/docs/prod.config.json +0 -4
  55. package/docs/src/components/Aside.js +1 -1
  56. package/docs/src/components/Main.js +1 -1
  57. package/docs/utils/context.html +237 -6
  58. package/docs/utils/cookie.html +251 -21
  59. package/docs/utils/debounce.html +236 -5
  60. package/docs/utils/drag.html +236 -5
  61. package/docs/utils/elevation.html +238 -6
  62. package/docs/utils/formatTimestamp.html +239 -9
  63. package/docs/utils/object.html +236 -5
  64. package/docs/utils/propConverters.html +233 -3
  65. package/docs/utils/string.html +236 -5
  66. package/docs/utils/theme.html +237 -6
  67. package/docs/utils/toTitleCase.html +239 -9
  68. package/docs/utils/type.html +236 -5
  69. package/docs/utils/wait.html +236 -5
  70. package/docs-src/.config.js +16 -0
  71. package/docs-src/bare.template.html +16 -0
  72. package/docs-src/components/accordion.page.html +201 -0
  73. package/docs-src/components/aside-items.page.html +36 -0
  74. package/docs-src/components/aside-menu.page.html +36 -0
  75. package/docs-src/components/aside-push.page.html +20 -0
  76. package/docs-src/components/aside.page.html +494 -0
  77. package/docs-src/components/card.page.html +78 -0
  78. package/docs-src/components/color-picker.page.html +559 -0
  79. package/docs-src/components/content-slider.page.html +266 -0
  80. package/docs-src/components/context.page.html +214 -0
  81. package/docs-src/components/dialog.page.html +365 -0
  82. package/docs-src/components/dropdown.page.html +300 -0
  83. package/docs-src/components/filter-list.page.html +117 -0
  84. package/docs-src/components/focus-capture.page.html +97 -0
  85. package/docs-src/components/html-editor.page.html +423 -0
  86. package/docs-src/components/hybrid-component.page.html +96 -0
  87. package/docs-src/components/icon.page.html +208 -0
  88. package/docs-src/components/import.page.html +76 -0
  89. package/docs-src/components/light-component.page.html +99 -0
  90. package/docs-src/components/nav.page.html +106 -0
  91. package/docs-src/components/photo-viewer.page.html +253 -0
  92. package/docs-src/components/resize.page.html +161 -0
  93. package/docs-src/components/shadow-component.page.html +84 -0
  94. package/docs-src/components/show-more.page.html +113 -0
  95. package/docs-src/components/sortable.page.html +117 -0
  96. package/docs-src/components/spinner.page.html +197 -0
  97. package/docs-src/components/split.page.html +195 -0
  98. package/docs-src/components/table.page.html +283 -0
  99. package/docs-src/components/tableControls.page.html +64 -0
  100. package/docs-src/components/tableCustomFields.page.html +124 -0
  101. package/docs-src/components/tableFetchRecords.page.html +95 -0
  102. package/docs-src/components/tableFieldSortHide.page.html +56 -0
  103. package/docs-src/components/tablePagination.page.html +85 -0
  104. package/docs-src/components/tablePlaceholder.page.html +73 -0
  105. package/docs-src/components/tableRecordEditing.page.html +161 -0
  106. package/docs-src/components/tableRecordFiltering.page.html +69 -0
  107. package/docs-src/components/tableRecordHiding.page.html +65 -0
  108. package/docs-src/components/tableRecordSearching.page.html +56 -0
  109. package/docs-src/components/tableRecordSelection.page.html +60 -0
  110. package/docs-src/components/tableRowControls.page.html +62 -0
  111. package/docs-src/components/tableServerSync.page.html +129 -0
  112. package/docs-src/components/tableSorting.page.html +54 -0
  113. package/docs-src/components/tabs.page.html +201 -0
  114. package/docs-src/components/tags.page.html +157 -0
  115. package/docs-src/components/theme-select.page.html +106 -0
  116. package/docs-src/components/theme-switcher.page.html +122 -0
  117. package/docs-src/components/timestamp.page.html +109 -0
  118. package/docs-src/components/toast.page.html +338 -0
  119. package/docs-src/components/toggle.page.html +177 -0
  120. package/docs-src/components/tree.page.html +356 -0
  121. package/docs-src/default.template.html +28 -0
  122. package/docs-src/index.page.html +312 -0
  123. package/docs-src/nav.fragment.html +228 -0
  124. package/docs-src/utils/context.page.html +143 -0
  125. package/docs-src/utils/cookie.page.html +128 -0
  126. package/docs-src/utils/debounce.page.html +42 -0
  127. package/docs-src/utils/drag.page.html +64 -0
  128. package/docs-src/utils/elevation.page.html +144 -0
  129. package/docs-src/utils/formatTimestamp.page.html +76 -0
  130. package/docs-src/utils/object.page.html +76 -0
  131. package/docs-src/utils/propConverters.page.html +73 -0
  132. package/docs-src/utils/string.page.html +66 -0
  133. package/docs-src/utils/theme.page.html +136 -0
  134. package/docs-src/utils/toTitleCase.page.html +52 -0
  135. package/docs-src/utils/type.page.html +31 -0
  136. package/docs-src/utils/wait.page.html +31 -0
  137. package/package.json +4 -4
  138. package/scripts/build.js +5 -0
  139. package/scripts/docs.js +5 -52
  140. package/src/components/Aside.js +12 -1
  141. package/src/components/Main.js +1 -1
  142. package/tests/components/Aside.browser-test.js +75 -0
  143. package/docs/dev.config.json +0 -20
  144. package/docs/nav-1.inc.html +0 -168
  145. package/docs/nav.inc.html +0 -168
  146. package/docs/nav.inc.js +0 -70
@@ -0,0 +1,559 @@
1
+ <page pageName="ColorPicker Component" title="ColorPicker Component - Kempo UI">
2
+ <content location="header"></content>
3
+ <content>
4
+ <h1>ColorPicker Component</h1>
5
+ <p>The ColorPicker component provides a comprehensive color selection interface that supports all modern CSS color
6
+ formats including hex, RGB, HSL, named colors, HWB, Lab, LCH, OKLab, and OKLCH. It features bidirectional color
7
+ format conversion and intelligent alpha transparency handling.</p>
8
+
9
+ <k-accordion persistent-id="toc" class="b r mb">
10
+ <k-accordion-header for-panel="toc-panel">Table of Contents</k-accordion-header>
11
+ <k-accordion-panel name="toc-panel">
12
+ <div class="m pl">
13
+ <h6>Examples</h6>
14
+ <a href="#basicUsage">Basic Usage</a><br />
15
+ <a href="#colorFormats">Supported Color Formats</a><br />
16
+ <a href="#alphaHandling">Alpha Transparency</a><br />
17
+ <a href="#formatSelection">Format Selection</a><br />
18
+ <a href="#formUsage">Form Integration</a><br />
19
+ <a href="#javascriptUsage">JavaScript Usage</a><br />
20
+ <a href="#eventHandling">Event Handling</a><br />
21
+
22
+ <h6 class="mt"><a href="#jsRef" class="no-link">JavaScript Reference</a></h6>
23
+ <a href="#constructor">Constructor</a><br />
24
+ <a href="#requirements">Requirements</a><br />
25
+ <a href="#properties">Properties</a><br />
26
+ <a href="#methods">Methods</a><br />
27
+ <a href="#events">Events</a><br />
28
+ <a href="#staticMembers">Static Members</a><br />
29
+ </div>
30
+ </k-accordion-panel>
31
+ </k-accordion>
32
+
33
+ <h2 id="basicUsage"><a href="#basicUsage" class="no-link">Basic Usage</a></h2>
34
+ <div class="row -mx">
35
+ <div class="col m-span-12 px">
36
+ <k-card label="HTML">
37
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span></code></pre>
38
+ </k-card>
39
+ </div>
40
+ <div class="col m-span-12 px">
41
+ <k-card label="Output">
42
+ <k-color-picker></k-color-picker>
43
+ </k-card>
44
+ </div>
45
+ </div>
46
+
47
+ <h2 id="colorFormats"><a href="#colorFormats" class="no-link">Supported Color Formats</a></h2>
48
+ <p>The ColorPicker supports all modern CSS color formats with automatic detection and conversion:</p>
49
+
50
+ <h3>Hex Colors</h3>
51
+ <div class="row -mx">
52
+ <div class="col m-span-12 px">
53
+ <k-card label="HTML">
54
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"#ff0000"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
55
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"#ff000080"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span></code></pre>
56
+ </k-card>
57
+ </div>
58
+ <div class="col m-span-12 px">
59
+ <k-card label="Output">
60
+ <k-color-picker value="#ff0000"></k-color-picker>
61
+ <k-color-picker value="#ff000080"></k-color-picker>
62
+ </k-card>
63
+ </div>
64
+ </div>
65
+
66
+ <h3>RGB/RGBA Colors</h3>
67
+ <div class="row -mx">
68
+ <div class="col m-span-12 px">
69
+ <k-card label="HTML">
70
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"rgb(255, 0, 0)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
71
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"rgba(255, 0, 0, 0.5)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span></code></pre>
72
+ </k-card>
73
+ </div>
74
+ <div class="col m-span-12 px">
75
+ <k-card label="Output">
76
+ <k-color-picker value="rgb(255, 0, 0)"></k-color-picker>
77
+ <k-color-picker value="rgba(255, 0, 0, 0.5)"></k-color-picker>
78
+ </k-card>
79
+ </div>
80
+ </div>
81
+
82
+ <h3>HSL/HSLA Colors</h3>
83
+ <div class="row -mx">
84
+ <div class="col m-span-12 px">
85
+ <k-card label="HTML">
86
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"hsl(0, 100%, 50%)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
87
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"hsla(0, 100%, 50%, 0.5)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span></code></pre>
88
+ </k-card>
89
+ </div>
90
+ <div class="col m-span-12 px">
91
+ <k-card label="Output">
92
+ <k-color-picker value="hsl(0, 100%, 50%)"></k-color-picker>
93
+ <k-color-picker value="hsla(0, 100%, 50%, 0.5)"></k-color-picker>
94
+ </k-card>
95
+ </div>
96
+ </div>
97
+
98
+ <h3>Named Colors</h3>
99
+ <div class="row -mx">
100
+ <div class="col m-span-12 px">
101
+ <k-card label="HTML">
102
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"red"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
103
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"dodgerblue"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span></code></pre>
104
+ </k-card>
105
+ </div>
106
+ <div class="col m-span-12 px">
107
+ <k-card label="Output">
108
+ <k-color-picker value="red"></k-color-picker>
109
+ <k-color-picker value="dodgerblue"></k-color-picker>
110
+ </k-card>
111
+ </div>
112
+ </div>
113
+
114
+ <h3>HWB Colors</h3>
115
+ <div class="row -mx">
116
+ <div class="col m-span-12 px">
117
+ <k-card label="HTML">
118
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"hwb(0 0% 0%)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
119
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"hwb(240 0% 0% / 0.5)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span></code></pre>
120
+ </k-card>
121
+ </div>
122
+ <div class="col m-span-12 px">
123
+ <k-card label="Output">
124
+ <k-color-picker value="hwb(0 0% 0%)"></k-color-picker>
125
+ <k-color-picker value="hwb(240 0% 0% / 0.5)"></k-color-picker>
126
+ </k-card>
127
+ </div>
128
+ </div>
129
+
130
+ <h3>Lab Colors</h3>
131
+ <div class="row -mx">
132
+ <div class="col m-span-12 px">
133
+ <k-card label="HTML">
134
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"lab(50% 50 50)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
135
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"lab(50% 50 50 / 0.5)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span></code></pre>
136
+ </k-card>
137
+ </div>
138
+ <div class="col m-span-12 px">
139
+ <k-card label="Output">
140
+ <k-color-picker value="lab(50% 50 50)"></k-color-picker>
141
+ <k-color-picker value="lab(50% 50 50 / 0.5)"></k-color-picker>
142
+ </k-card>
143
+ </div>
144
+ </div>
145
+
146
+ <h3>LCH Colors</h3>
147
+ <div class="row -mx">
148
+ <div class="col m-span-12 px">
149
+ <k-card label="HTML">
150
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"lch(50% 50 0)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
151
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"lch(50% 50 0 / 0.5)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span></code></pre>
152
+ </k-card>
153
+ </div>
154
+ <div class="col m-span-12 px">
155
+ <k-card label="Output">
156
+ <k-color-picker value="lch(50% 50 0)"></k-color-picker>
157
+ <k-color-picker value="lch(50% 50 0 / 0.5)"></k-color-picker>
158
+ </k-card>
159
+ </div>
160
+ </div>
161
+
162
+ <h3>OKLab Colors</h3>
163
+ <div class="row -mx">
164
+ <div class="col m-span-12 px">
165
+ <k-card label="HTML">
166
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"oklab(50% 0.1 0.1)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
167
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"oklab(50% 0.1 0.1 / 0.5)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span></code></pre>
168
+ </k-card>
169
+ </div>
170
+ <div class="col m-span-12 px">
171
+ <k-card label="Output">
172
+ <k-color-picker value="oklab(50% 0.1 0.1)"></k-color-picker>
173
+ <k-color-picker value="oklab(50% 0.1 0.1 / 0.5)"></k-color-picker>
174
+ </k-card>
175
+ </div>
176
+ </div>
177
+
178
+ <h3>OKLCH Colors</h3>
179
+ <div class="row -mx">
180
+ <div class="col m-span-12 px">
181
+ <k-card label="HTML">
182
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"oklch(50% 0.1 0)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
183
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"oklch(50% 0.1 0 / 0.5)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span></code></pre>
184
+ </k-card>
185
+ </div>
186
+ <div class="col m-span-12 px">
187
+ <k-card label="Output">
188
+ <k-color-picker value="oklch(50% 0.1 0)"></k-color-picker>
189
+ <k-color-picker value="oklch(50% 0.1 0 / 0.5)"></k-color-picker>
190
+ </k-card>
191
+ </div>
192
+ </div>
193
+
194
+ <h2 id="alphaHandling"><a href="#alphaHandling" class="no-link">Alpha Transparency</a></h2>
195
+ <p>The ColorPicker intelligently handles alpha transparency. When you set a color without alpha, it preserves the
196
+ existing alpha value. Only when you explicitly provide an alpha value does it update the transparency.</p>
197
+
198
+ <div class="row -mx">
199
+ <div class="col m-span-12 px">
200
+ <k-card label="HTML">
201
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"alphaPicker"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"rgba(255, 0, 0, 0.5)"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
202
+ <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"setOpaque"</span>&gt;</span>Set to Blue (preserves alpha)<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
203
+ <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"setTransparent"</span>&gt;</span>Set to Green with Alpha<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
204
+ <span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript">
205
+ <span class="hljs-keyword">const</span> picker = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'alphaPicker'</span>);
206
+ <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'setOpaque'</span>).addEventListener(<span class="hljs-string">'click'</span>, ()=&gt;{
207
+ picker.value = <span class="hljs-string">'#0000ff'</span>; <span class="hljs-comment">// Alpha preserved at 0.5</span>
208
+ });
209
+ <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'setTransparent'</span>).addEventListener(<span class="hljs-string">'click'</span>, ()=&gt;{
210
+ picker.value = <span class="hljs-string">'rgba(0, 255, 0, 0.3)'</span>; <span class="hljs-comment">// Alpha updated to 0.3</span>
211
+ });
212
+ </span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
213
+ </k-card>
214
+ </div>
215
+ <div class="col m-span-12 px">
216
+ <k-card label="Output">
217
+ <k-color-picker id="alphaPicker" value="rgba(255, 0, 0, 0.5)" class="mb"></k-color-picker>
218
+ <div class="btn-grp mb">
219
+ <button id="setOpaque">Set to Blue (preserves alpha)</button>
220
+ <button id="setTransparent">Set to Green with Alpha</button>
221
+ </div>
222
+ <script>
223
+ const alphaPicker = document.getElementById('alphaPicker');
224
+ document.getElementById('setOpaque').addEventListener('click', () => {
225
+ alphaPicker.value = '#0000ff'; // Alpha preserved at 0.5
226
+ });
227
+ document.getElementById('setTransparent').addEventListener('click', () => {
228
+ alphaPicker.value = 'rgba(0, 255, 0, 0.3)'; // Alpha updated to 0.3
229
+ });
230
+ </script>
231
+ </k-card>
232
+ </div>
233
+ </div>
234
+
235
+ <h2 id="formatSelection"><a href="#formatSelection" class="no-link">Format Selection</a></h2>
236
+ <p>You can specify the output format using the <code>format</code> attribute. The component will convert colors to
237
+ the specified format when displaying the value.</p>
238
+
239
+ <div class="row -mx">
240
+ <div class="col m-span-12 px">
241
+ <k-card label="HTML">
242
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">format</span>=<span class="hljs-string">"hsl"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"#ff0000"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
243
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">format</span>=<span class="hljs-string">"lab"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"#00ff00"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span></code></pre>
244
+ </k-card>
245
+ </div>
246
+ <div class="col m-span-12 px">
247
+ <k-card label="Output">
248
+ <k-color-picker format="hsl" value="#ff0000"></k-color-picker>
249
+ <k-color-picker format="lab" value="#00ff00"></k-color-picker>
250
+ </k-card>
251
+ </div>
252
+ </div>
253
+
254
+ <h2 id="formUsage"><a href="#formUsage" class="no-link">Form Integration</a></h2>
255
+ <p>The ColorPicker component is form-associated and works seamlessly with native HTML forms using the
256
+ <code>name</code> attribute. The component uses the ElementInternals API to participate in form submission,
257
+ validation, and reset operations.
258
+ </p>
259
+ <div class="row -mx">
260
+ <div class="col m-span-12 px">
261
+ <k-card label="HTML">
262
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"colorForm"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"bgColor"</span>&gt;</span>Background Color:<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"bgColor"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"#3498db"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"textColor"</span>&gt;</span>Text Color:<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"textColor"</span> <span class="hljs-attr">format</span>=<span class="hljs-string">"rgb"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"#ffffff"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"submit"</span>&gt;</span>Submit<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"formOutput"</span>&gt;</span>Submit the form to see values<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript"><br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'colorForm'</span>).addEventListener(<span class="hljs-string">'submit'</span>, (e) =&gt; {<br /> e.preventDefault();<br /> <span class="hljs-keyword">const</span> formData = <span class="hljs-keyword">new</span> FormData(e.target);<br /> <span class="hljs-keyword">const</span> output = <span class="hljs-built_in">Array</span>.from(formData.entries())<br /> .map(<span class="hljs-function">(<span class="hljs-params">[key, value]</span>) =&gt;</span> <span class="hljs-string">`<span class="hljs-subst">${key}</span>: <span class="hljs-subst">${value}</span>`</span>)<br /> .join(<span class="hljs-string">', '</span>);<br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'formOutput'</span>).textContent = output;<br /> });<br /></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
263
+ </k-card>
264
+ </div>
265
+ <div class="col m-span-12 px">
266
+ <k-card label="Output">
267
+ <form id="colorForm" class="mb">
268
+ <label for="bgColor">Background Color:</label>
269
+ <k-color-picker name="bgColor" value="#3498db" class="mb"></k-color-picker>
270
+
271
+ <label for="textColor">Text Color:</label>
272
+ <k-color-picker name="textColor" format="rgb" value="#ffffff" class="mb"></k-color-picker>
273
+
274
+ <button type="submit">Submit</button>
275
+ </form>
276
+ <p id="formOutput">Submit the form to see values</p>
277
+ <script>
278
+ document.getElementById('colorForm').addEventListener('submit', (e) => {
279
+ e.preventDefault();
280
+ const formData = new FormData(e.target);
281
+ const output = Array.from(formData.entries())
282
+ .map(([key, value]) => `${key}: ${value}`)
283
+ .join(', ');
284
+ document.getElementById('formOutput').textContent = output;
285
+ });
286
+ </script>
287
+ </k-card>
288
+ </div>
289
+ </div>
290
+
291
+ <h2 id="javascriptUsage"><a href="#javascriptUsage" class="no-link">JavaScript Usage</a></h2>
292
+ <div class="row -mx">
293
+ <div class="col m-span-12 px">
294
+ <k-card label="HTML">
295
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"jsPicker"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"setColor"</span>&gt;</span>Set Color<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"getColor"</span>&gt;</span>Get Color<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"changeFormat"</span>&gt;</span>Change Format<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"colorValue"</span>&gt;</span>Color value will appear here<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript"><br /> <span class="hljs-keyword">const</span> picker = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'jsPicker'</span>);<br /> <span class="hljs-keyword">const</span> valueDisplay = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'colorValue'</span>);<br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'setColor'</span>).addEventListener(<span class="hljs-string">'click'</span>, ()=&gt;{<br /> picker.value = <span class="hljs-string">'oklch(70% 0.2 180)'</span>;<br /> });<br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'getColor'</span>).addEventListener(<span class="hljs-string">'click'</span>, ()=&gt;{<br /> valueDisplay.textContent = <span class="hljs-string">`Current color: <span class="hljs-subst">${picker.value}</span>`</span>;<br /> });<br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'changeFormat'</span>).addEventListener(<span class="hljs-string">'click'</span>, ()=&gt;{<br /> picker.format = <span class="hljs-string">'hex'</span>;<br /> valueDisplay.textContent = <span class="hljs-string">`Switched to hex format: <span class="hljs-subst">${picker.value}</span>`</span>;<br /> });<br /></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
296
+ </k-card>
297
+ </div>
298
+ <div class="col m-span-12 px">
299
+ <k-card label="Output">
300
+ <k-color-picker id="jsPicker" class="mb"></k-color-picker>
301
+ <div class="btn-grp mb">
302
+ <button id="setColor">Set Color</button>
303
+ <button id="getColor">Get Color</button>
304
+ <button id="changeFormat">Change Format</button>
305
+ </div>
306
+ <p id="colorValue">Color value will appear here</p>
307
+ <script>
308
+ const jsPicker = document.getElementById('jsPicker');
309
+ const valueDisplay = document.getElementById('colorValue');
310
+
311
+ document.getElementById('setColor').addEventListener('click', () => {
312
+ jsPicker.value = 'oklch(70% 0.2 180)';
313
+ });
314
+
315
+ document.getElementById('getColor').addEventListener('click', () => {
316
+ valueDisplay.textContent = `Current color: ${jsPicker.value}`;
317
+ });
318
+
319
+ document.getElementById('changeFormat').addEventListener('click', () => {
320
+ jsPicker.format = 'hex';
321
+ valueDisplay.textContent = `Switched to hex format: ${jsPicker.value}`;
322
+ });
323
+ </script>
324
+ </k-card>
325
+ </div>
326
+ </div>
327
+
328
+ <h2 id="eventHandling"><a href="#eventHandling" class="no-link">Event Handling</a></h2>
329
+ <p>The ColorPicker component forwards DOM events from its internal form elements (select, text input, and color
330
+ input), allowing you to listen for user interactions. The following events are forwarded: <code>change</code>,
331
+ <code>input</code>, <code>focus</code>, and <code>blur</code>.</p>
332
+
333
+ <h3>Change Event</h3>
334
+ <p>Fired when the user commits a color change through any of the internal inputs.</p>
335
+ <div class="row -mx">
336
+ <div class="col m-span-12 px">
337
+ <k-card label="HTML">
338
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"changeEventPicker"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"#3498db"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
339
+ <span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"changeOutput"</span>&gt;</span>Change the color to see the event<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
340
+ <span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript">
341
+ <span class="hljs-keyword">const</span> picker = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'changeEventPicker'</span>);
342
+ picker.addEventListener(<span class="hljs-string">'change'</span>, (e) =&gt; {
343
+ <span class="hljs-keyword">const</span> output = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'changeOutput'</span>);
344
+ output.textContent = <span class="hljs-string">`Changed to: <span class="hljs-subst">${picker.value}</span>`</span>;
345
+ });
346
+ </span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
347
+ </k-card>
348
+ </div>
349
+ <div class="col m-span-12 px">
350
+ <k-card label="Output">
351
+ <k-color-picker id="changeEventPicker" value="#3498db" class="mb"></k-color-picker>
352
+ <p id="changeOutput">Change the color to see the event</p>
353
+ <script>
354
+ const changeEventPicker = document.getElementById('changeEventPicker');
355
+ changeEventPicker.addEventListener('change', (e) => {
356
+ const output = document.getElementById('changeOutput');
357
+ output.textContent = `Changed to: ${changeEventPicker.value}`;
358
+ });
359
+ </script>
360
+ </k-card>
361
+ </div>
362
+ </div>
363
+
364
+ <h3>Input Event</h3>
365
+ <p>Fired as the user types or modifies the color value, providing real-time updates.</p>
366
+ <div class="row -mx">
367
+ <div class="col m-span-12 px">
368
+ <k-card label="HTML">
369
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"inputEventPicker"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"#e74c3c"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
370
+ <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"colorPreview"</span> <span class="hljs-attr">style</span>=<span class="hljs-string">"width:100%; height:50px; background:#e74c3c; border-radius:4px;"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
371
+ <span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript">
372
+ <span class="hljs-keyword">const</span> picker = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'inputEventPicker'</span>);
373
+ <span class="hljs-keyword">const</span> preview = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'colorPreview'</span>);
374
+ picker.addEventListener(<span class="hljs-string">'input'</span>, (e) =&gt; {
375
+ preview.style.backgroundColor = picker.value;
376
+ });
377
+ </span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
378
+ </k-card>
379
+ </div>
380
+ <div class="col m-span-12 px">
381
+ <k-card label="Output">
382
+ <k-color-picker id="inputEventPicker" value="#e74c3c" class="mb"></k-color-picker>
383
+ <div id="colorPreview" style="width:100%; height:50px; background:#e74c3c; border-radius:4px;"></div>
384
+ <script>
385
+ const inputEventPicker = document.getElementById('inputEventPicker');
386
+ const colorPreview = document.getElementById('colorPreview');
387
+ inputEventPicker.addEventListener('input', (e) => {
388
+ colorPreview.style.backgroundColor = inputEventPicker.value;
389
+ });
390
+ </script>
391
+ </k-card>
392
+ </div>
393
+ </div>
394
+
395
+ <h3>Focus and Blur Events</h3>
396
+ <p>Track when the user focuses on or leaves any of the color picker's input elements.</p>
397
+ <div class="row -mx">
398
+ <div class="col m-span-12 px">
399
+ <k-card label="HTML">
400
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"focusEventPicker"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"#2ecc71"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
401
+ <span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"focusOutput"</span>&gt;</span>Click on the color picker to see focus/blur events<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
402
+ <span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript">
403
+ <span class="hljs-keyword">const</span> picker = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'focusEventPicker'</span>);
404
+ <span class="hljs-keyword">const</span> output = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'focusOutput'</span>);
405
+ picker.addEventListener(<span class="hljs-string">'focus'</span>, (e) =&gt; {
406
+ output.textContent = <span class="hljs-string">'Color picker focused'</span>;
407
+ output.style.color = <span class="hljs-string">'#2ecc71'</span>;
408
+ });
409
+ picker.addEventListener(<span class="hljs-string">'blur'</span>, (e) =&gt; {
410
+ output.textContent = <span class="hljs-string">'Color picker blurred'</span>;
411
+ output.style.color = <span class="hljs-string">'#95a5a6'</span>;
412
+ });
413
+ </span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
414
+ </k-card>
415
+ </div>
416
+ <div class="col m-span-12 px">
417
+ <k-card label="Output">
418
+ <k-color-picker id="focusEventPicker" value="#2ecc71" class="mb"></k-color-picker>
419
+ <p id="focusOutput">Click on the color picker to see focus/blur events</p>
420
+ <script>
421
+ const focusEventPicker = document.getElementById('focusEventPicker');
422
+ const focusOutput = document.getElementById('focusOutput');
423
+ focusEventPicker.addEventListener('focus', (e) => {
424
+ focusOutput.textContent = 'Color picker focused';
425
+ focusOutput.style.color = '#2ecc71';
426
+ });
427
+ focusEventPicker.addEventListener('blur', (e) => {
428
+ focusOutput.textContent = 'Color picker blurred';
429
+ focusOutput.style.color = '#95a5a6';
430
+ });
431
+ </script>
432
+ </k-card>
433
+ </div>
434
+ </div>
435
+
436
+ <h3>Multiple Events Example</h3>
437
+ <p>Combining multiple event listeners to create an interactive color picking experience with event logging.</p>
438
+ <div class="row -mx">
439
+ <div class="col m-span-12 px">
440
+ <k-card label="HTML">
441
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-color-picker</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"multiEventPicker"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"#9b59b6"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-color-picker</span>&gt;</span>
442
+ <span class="hljs-tag">&lt;<span class="hljs-name">pre</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"eventLog"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">pre</span>&gt;</span>
443
+ <span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript">
444
+ <span class="hljs-keyword">const</span> picker = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'multiEventPicker'</span>);
445
+ <span class="hljs-keyword">const</span> log = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'eventLog'</span>);
446
+ <span class="hljs-keyword">const</span> logEvent = <span class="hljs-function">(<span class="hljs-params">type, value</span>) =&gt;</span> {
447
+ <span class="hljs-keyword">const</span> time = <span class="hljs-keyword">new</span> <span class="hljs-built_in">Date</span>().toLocaleTimeString();
448
+ <span class="hljs-keyword">const</span> entry = <span class="hljs-built_in">document</span>.createElement(<span class="hljs-string">'div'</span>);
449
+ entry.textContent = <span class="hljs-string">`<span class="hljs-subst">${time}</span> - <span class="hljs-subst">${type}</span>: <span class="hljs-subst">${value}</span>`</span>;
450
+ log.insertBefore(entry, log.firstChild);
451
+ <span class="hljs-keyword">if</span> (log.children.length &gt; <span class="hljs-number">10</span>) log.lastChild.remove();
452
+ };
453
+ picker.addEventListener(<span class="hljs-string">'change'</span>, () =&gt; logEvent(<span class="hljs-string">'change'</span>, picker.value));
454
+ picker.addEventListener(<span class="hljs-string">'input'</span>, () =&gt; logEvent(<span class="hljs-string">'input'</span>, picker.value));
455
+ picker.addEventListener(<span class="hljs-string">'focus'</span>, () =&gt; logEvent(<span class="hljs-string">'focus'</span>, <span class="hljs-string">'focused'</span>));
456
+ picker.addEventListener(<span class="hljs-string">'blur'</span>, () =&gt; logEvent(<span class="hljs-string">'blur'</span>, <span class="hljs-string">'blurred'</span>));
457
+ </span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
458
+ </k-card>
459
+ </div>
460
+ <div class="col m-span-12 px">
461
+ <k-card label="Output">
462
+ <k-color-picker id="multiEventPicker" value="#9b59b6" class="mb"></k-color-picker>
463
+ <pre id="eventLog"></pre>
464
+ <script>
465
+ const multiEventPicker = document.getElementById('multiEventPicker');
466
+ const eventLog = document.getElementById('eventLog');
467
+ const logEvent = (type, value) => {
468
+ const time = new Date().toLocaleTimeString();
469
+ const entry = document.createElement('div');
470
+ entry.textContent = `${time} - ${type}: ${value}`;
471
+ eventLog.insertBefore(entry, eventLog.firstChild);
472
+ if (eventLog.children.length > 10) eventLog.lastChild.remove();
473
+ };
474
+ multiEventPicker.addEventListener('change', () => logEvent('change', multiEventPicker.value));
475
+ multiEventPicker.addEventListener('input', () => logEvent('input', multiEventPicker.value));
476
+ multiEventPicker.addEventListener('focus', () => logEvent('focus', 'focused'));
477
+ multiEventPicker.addEventListener('blur', () => logEvent('blur', 'blurred'));
478
+ </script>
479
+ </k-card>
480
+ </div>
481
+ </div>
482
+
483
+ <h2 id="jsRef"><a href="jsRef" class="no-link">JavaScript Reference</a></h2>
484
+
485
+ <h3 id="constructor"><a href="#constructor" class="no-link">Constructor</a></h3>
486
+ <h6>Extends <a href="./component.html">ShadowComponent</a></h6>
487
+ <h5>
488
+ <code>new ColorPicker()</code>
489
+ </h5>
490
+
491
+ <h3 id="requirements"><a href="#requirements" class="no-link">Requirements</a></h3>
492
+ <ul>
493
+ <li><a href="./shadow-component.html">ShadowComponent</a></li>
494
+ </ul>
495
+
496
+ <h3 id="properties"><a href="#properties" class="no-link">Properties</a></h3>
497
+ <h5><code>name<i>: string</i></code></h5>
498
+ <p>The name of the form control, used for form submission. When set, the component will participate in form data
499
+ collection. Syncs to <code>name</code> attribute.</p>
500
+
501
+ <h5><code>format<i>: string</i></code></h5>
502
+ <p>The output color format. Supported values: <code>'hex'</code>, <code>'rgba'</code>, <code>'hsla'</code>,
503
+ <code>'named'</code>, <code>'hwb'</code>, <code>'lab'</code>, <code>'lch'</code>, <code>'oklab'</code>,
504
+ <code>'oklch'</code>. Default is <code>'hex'</code>. Syncs to <code>format</code> attribute.
505
+ </p>
506
+
507
+ <h5><code>value<i>: string</i></code></h5>
508
+ <p>The current color value as a string in the current format. Accepts any supported color format and converts it
509
+ internally to RGB. When setting a color without alpha, the existing alpha value is preserved. Only colors with
510
+ explicit alpha values will update the transparency. Syncs to <code>value</code> attribute.</p>
511
+
512
+ <h5><code>red<i>: number</i></code></h5>
513
+ <p>The red component of the color (0-255).</p>
514
+
515
+ <h5><code>green<i>: number</i></code></h5>
516
+ <p>The green component of the color (0-255).</p>
517
+
518
+ <h5><code>blue<i>: number</i></code></h5>
519
+ <p>The blue component of the color (0-255).</p>
520
+
521
+ <h5><code>alpha<i>: number</i></code></h5>
522
+ <p>The alpha transparency component (0-1).</p>
523
+
524
+ <h3 id="methods"><a href="#methods" class="no-link">Methods</a></h3>
525
+ <h5><code>toHexColor(red, green, blue)<i>: string</i></code></h5>
526
+ <p>Converts RGB values to a hex color string for the native color input.</p>
527
+
528
+ <h3 id="events"><a href="#events" class="no-link">Events</a></h3>
529
+ <h5><code>change</code></h5>
530
+ <p>Fired when the user commits a color change through any of the internal inputs (select, text input, or color
531
+ input). This event is forwarded from the native DOM elements.</p>
532
+
533
+ <h5><code>input</code></h5>
534
+ <p>Fired when the user types or modifies values in the text input or interacts with the format selector. This event
535
+ is forwarded from the native DOM elements and provides real-time updates.</p>
536
+
537
+ <h5><code>focus</code></h5>
538
+ <p>Fired when any of the internal form elements (select, text input, or color input) receives focus. This event is
539
+ forwarded from the native DOM elements.</p>
540
+
541
+ <h5><code>blur</code></h5>
542
+ <p>Fired when any of the internal form elements (select, text input, or color input) loses focus. This event is
543
+ forwarded from the native DOM elements.</p>
544
+
545
+ <h3 id="staticMembers"><a href="#staticMembers" class="no-link">Static Members</a></h3>
546
+ <h5><code>namedColors<i>: object</i></code></h5>
547
+ <p>An object containing 147 named CSS colors mapped to their hex values.</p>
548
+
549
+ <h5><code>formats<i>: object</i></code></h5>
550
+ <p>An object containing format definitions for all supported color formats. Each format has <code>detect()</code>,
551
+ <code>parse()</code>, and <code>toString()</code> methods.
552
+ </p>
553
+ </content>
554
+ <content location="scripts">
555
+ <script type="module" src="{{pathToRoot}}src/components/ColorPicker.js"></script>
556
+ <script type="module" src="{{pathToRoot}}src/components/Accordion.js"></script>
557
+ <script type="module" src="{{pathToRoot}}src/components/Card.js"></script>
558
+ </content>
559
+ </page>