@owlmeans/web-panel 0.1.18-rc.9 → 0.1.18

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 (669) hide show
  1. package/README.md +510 -143
  2. package/THIRD-PARTY-NOTICES.txt +24 -0
  3. package/agent-meta/manifest.json +163 -4
  4. package/agent-meta/skills/web-panel/SKILL.md +136 -83
  5. package/agent-meta/skills/web-panel/parts/consent.md +114 -0
  6. package/agent-meta/skills/web-panel/parts/editor.md +47 -0
  7. package/agent-meta/skills/web-panel/parts/forms.md +85 -0
  8. package/agent-meta/skills/web-panel/parts/navigation.md +203 -0
  9. package/agent-meta/skills/web-panel/parts/picker.md +164 -0
  10. package/agent-meta/skills/web-panel/parts/reload.md +46 -0
  11. package/agent-meta/skills/web-panel/parts/sign-in.md +65 -0
  12. package/agent-meta/skills/web-panel/parts/theme.md +74 -0
  13. package/build/@/components/ui/alert-dialog.d.ts +15 -0
  14. package/build/@/components/ui/alert-dialog.d.ts.map +1 -0
  15. package/build/@/components/ui/alert-dialog.js +39 -0
  16. package/build/@/components/ui/alert-dialog.js.map +1 -0
  17. package/build/@/components/ui/alert.js +1 -1
  18. package/build/@/components/ui/alert.js.map +1 -1
  19. package/build/@/components/ui/button.js +1 -1
  20. package/build/@/components/ui/button.js.map +1 -1
  21. package/build/@/components/ui/card.js +1 -1
  22. package/build/@/components/ui/card.js.map +1 -1
  23. package/build/@/components/ui/input.js +1 -1
  24. package/build/@/components/ui/input.js.map +1 -1
  25. package/build/@/components/ui/label.js +1 -1
  26. package/build/@/components/ui/label.js.map +1 -1
  27. package/build/@/components/ui/navigation-menu.js +1 -1
  28. package/build/@/components/ui/navigation-menu.js.map +1 -1
  29. package/build/@/components/ui/popover.d.ts +8 -0
  30. package/build/@/components/ui/popover.d.ts.map +1 -0
  31. package/build/@/components/ui/popover.js +17 -0
  32. package/build/@/components/ui/popover.js.map +1 -0
  33. package/build/@/components/ui/progress.js +1 -1
  34. package/build/@/components/ui/progress.js.map +1 -1
  35. package/build/@/components/ui/separator.js +1 -1
  36. package/build/@/components/ui/separator.js.map +1 -1
  37. package/build/@/components/ui/sheet.d.ts +15 -0
  38. package/build/@/components/ui/sheet.d.ts.map +1 -0
  39. package/build/@/components/ui/sheet.js +40 -0
  40. package/build/@/components/ui/sheet.js.map +1 -0
  41. package/build/auth/context.d.ts.map +1 -1
  42. package/build/auth/context.js +0 -1
  43. package/build/auth/context.js.map +1 -1
  44. package/build/auth/entrypoints.d.ts +10 -0
  45. package/build/auth/entrypoints.d.ts.map +1 -0
  46. package/build/auth/entrypoints.js +4 -0
  47. package/build/auth/entrypoints.js.map +1 -0
  48. package/build/auth/exports.d.ts +4 -4
  49. package/build/auth/exports.d.ts.map +1 -1
  50. package/build/auth/exports.js +3 -3
  51. package/build/auth/exports.js.map +1 -1
  52. package/build/auth/modules.d.ts +1 -1
  53. package/build/auth/modules.d.ts.map +1 -1
  54. package/build/auth/plugins/basic-ed25519.js +4 -4
  55. package/build/auth/plugins/basic-ed25519.js.map +1 -1
  56. package/build/auth/plugins/re-captcha.js +3 -3
  57. package/build/auth/plugins/re-captcha.js.map +1 -1
  58. package/build/auth/plugins/tunnel-consumer.js +1 -1
  59. package/build/auth/plugins/tunnel-consumer.js.map +1 -1
  60. package/build/components/block.js +2 -2
  61. package/build/components/block.js.map +1 -1
  62. package/build/components/consts.local.d.ts +14 -0
  63. package/build/components/consts.local.d.ts.map +1 -0
  64. package/build/components/consts.local.js +26 -0
  65. package/build/components/consts.local.js.map +1 -0
  66. package/build/components/footer/component.d.ts +19 -1
  67. package/build/components/footer/component.d.ts.map +1 -1
  68. package/build/components/footer/component.js +38 -11
  69. package/build/components/footer/component.js.map +1 -1
  70. package/build/components/footer/credit.d.ts +27 -0
  71. package/build/components/footer/credit.d.ts.map +1 -0
  72. package/build/components/footer/credit.js +42 -0
  73. package/build/components/footer/credit.js.map +1 -0
  74. package/build/components/footer/index.d.ts +1 -0
  75. package/build/components/footer/index.d.ts.map +1 -1
  76. package/build/components/footer/index.js +1 -0
  77. package/build/components/footer/index.js.map +1 -1
  78. package/build/components/footer/types.d.ts +22 -1
  79. package/build/components/footer/types.d.ts.map +1 -1
  80. package/build/components/form/button/component.d.ts.map +1 -1
  81. package/build/components/form/button/component.js +5 -3
  82. package/build/components/form/button/component.js.map +1 -1
  83. package/build/components/form/component.js +2 -2
  84. package/build/components/form/component.js.map +1 -1
  85. package/build/components/form/text/component.js +2 -2
  86. package/build/components/form/text/component.js.map +1 -1
  87. package/build/components/helper.d.ts.map +1 -1
  88. package/build/components/helper.js +1 -12
  89. package/build/components/helper.js.map +1 -1
  90. package/build/components/index.d.ts +4 -0
  91. package/build/components/index.d.ts.map +1 -1
  92. package/build/components/index.js +4 -0
  93. package/build/components/index.js.map +1 -1
  94. package/build/components/link.js +3 -3
  95. package/build/components/link.js.map +1 -1
  96. package/build/components/login/append.d.ts +15 -0
  97. package/build/components/login/append.d.ts.map +1 -0
  98. package/build/components/login/append.js +26 -0
  99. package/build/components/login/append.js.map +1 -0
  100. package/build/components/login/consts.d.ts +3 -0
  101. package/build/components/login/consts.d.ts.map +1 -0
  102. package/build/components/login/consts.js +3 -0
  103. package/build/components/login/consts.js.map +1 -0
  104. package/build/components/login/consts.local.d.ts +4 -0
  105. package/build/components/login/consts.local.d.ts.map +1 -0
  106. package/build/components/login/consts.local.js +8 -0
  107. package/build/components/login/consts.local.js.map +1 -0
  108. package/build/components/login/credit.d.ts +12 -0
  109. package/build/components/login/credit.d.ts.map +1 -0
  110. package/build/components/login/credit.js +18 -0
  111. package/build/components/login/credit.js.map +1 -0
  112. package/build/components/login/i18n/be.json +10 -0
  113. package/build/components/login/i18n/de.json +10 -0
  114. package/build/components/login/i18n/en.json +10 -0
  115. package/build/components/login/i18n/es.json +10 -0
  116. package/build/components/login/i18n/fr.json +10 -0
  117. package/build/components/login/i18n/pl.json +10 -0
  118. package/build/components/login/i18n/ru.json +10 -0
  119. package/build/components/login/i18n/uk.json +10 -0
  120. package/build/components/login/i18n.d.ts +2 -0
  121. package/build/components/login/i18n.d.ts.map +1 -0
  122. package/build/components/login/i18n.js +28 -0
  123. package/build/components/login/i18n.js.map +1 -0
  124. package/build/components/login/icons.d.ts +14 -0
  125. package/build/components/login/icons.d.ts.map +1 -0
  126. package/build/components/login/icons.js +29 -0
  127. package/build/components/login/icons.js.map +1 -0
  128. package/build/components/login/index.d.ts +11 -0
  129. package/build/components/login/index.d.ts.map +1 -0
  130. package/build/components/login/index.js +10 -0
  131. package/build/components/login/index.js.map +1 -0
  132. package/build/components/login/notify.d.ts +18 -0
  133. package/build/components/login/notify.d.ts.map +1 -0
  134. package/build/components/login/notify.js +41 -0
  135. package/build/components/login/notify.js.map +1 -0
  136. package/build/components/login/provider.d.ts +20 -0
  137. package/build/components/login/provider.d.ts.map +1 -0
  138. package/build/components/login/provider.js +31 -0
  139. package/build/components/login/provider.js.map +1 -0
  140. package/build/components/login/screen.d.ts +24 -0
  141. package/build/components/login/screen.d.ts.map +1 -0
  142. package/build/components/login/screen.js +92 -0
  143. package/build/components/login/screen.js.map +1 -0
  144. package/build/components/login/terms.d.ts +19 -0
  145. package/build/components/login/terms.d.ts.map +1 -0
  146. package/build/components/login/terms.js +32 -0
  147. package/build/components/login/terms.js.map +1 -0
  148. package/build/components/login/types.d.ts +28 -0
  149. package/build/components/login/types.d.ts.map +1 -0
  150. package/build/components/login/types.js +2 -0
  151. package/build/components/login/types.js.map +1 -0
  152. package/build/components/nav/consts.local.d.ts +41 -0
  153. package/build/components/nav/consts.local.d.ts.map +1 -0
  154. package/build/components/nav/consts.local.js +60 -0
  155. package/build/components/nav/consts.local.js.map +1 -0
  156. package/build/components/nav/index.d.ts +1 -0
  157. package/build/components/nav/index.d.ts.map +1 -1
  158. package/build/components/nav/index.js +1 -0
  159. package/build/components/nav/index.js.map +1 -1
  160. package/build/components/nav/layout.d.ts +9 -2
  161. package/build/components/nav/layout.d.ts.map +1 -1
  162. package/build/components/nav/layout.js +48 -7
  163. package/build/components/nav/layout.js.map +1 -1
  164. package/build/components/nav/mobile.d.ts +21 -0
  165. package/build/components/nav/mobile.d.ts.map +1 -0
  166. package/build/components/nav/mobile.js +55 -0
  167. package/build/components/nav/mobile.js.map +1 -0
  168. package/build/components/nav/side.d.ts.map +1 -1
  169. package/build/components/nav/side.js +10 -10
  170. package/build/components/nav/side.js.map +1 -1
  171. package/build/components/nav/top.d.ts.map +1 -1
  172. package/build/components/nav/top.js +12 -8
  173. package/build/components/nav/top.js.map +1 -1
  174. package/build/components/nav/types.d.ts +64 -1
  175. package/build/components/nav/types.d.ts.map +1 -1
  176. package/build/components/nav/viewport.d.ts +3 -0
  177. package/build/components/nav/viewport.d.ts.map +1 -0
  178. package/build/components/nav/viewport.js +14 -0
  179. package/build/components/nav/viewport.js.map +1 -0
  180. package/build/components/panel-app/component.d.ts.map +1 -1
  181. package/build/components/panel-app/component.js +4 -3
  182. package/build/components/panel-app/component.js.map +1 -1
  183. package/build/components/picker/color-picker.d.ts +9 -0
  184. package/build/components/picker/color-picker.d.ts.map +1 -0
  185. package/build/components/picker/color-picker.js +9 -0
  186. package/build/components/picker/color-picker.js.map +1 -0
  187. package/build/components/picker/consts.local.d.ts +76 -0
  188. package/build/components/picker/consts.local.d.ts.map +1 -0
  189. package/build/components/picker/consts.local.js +214 -0
  190. package/build/components/picker/consts.local.js.map +1 -0
  191. package/build/components/picker/dot.d.ts +8 -0
  192. package/build/components/picker/dot.d.ts.map +1 -0
  193. package/build/components/picker/dot.js +10 -0
  194. package/build/components/picker/dot.js.map +1 -0
  195. package/build/components/picker/grid.d.ts +17 -0
  196. package/build/components/picker/grid.d.ts.map +1 -0
  197. package/build/components/picker/grid.js +73 -0
  198. package/build/components/picker/grid.js.map +1 -0
  199. package/build/components/picker/i18n/be.json +60 -0
  200. package/build/components/picker/i18n/de.json +60 -0
  201. package/build/components/picker/i18n/en.json +60 -0
  202. package/build/components/picker/i18n/es.json +60 -0
  203. package/build/components/picker/i18n/fr.json +60 -0
  204. package/build/components/picker/i18n/pl.json +60 -0
  205. package/build/components/picker/i18n/ru.json +60 -0
  206. package/build/components/picker/i18n/uk.json +60 -0
  207. package/build/components/picker/i18n.d.ts +2 -0
  208. package/build/components/picker/i18n.d.ts.map +1 -0
  209. package/build/components/picker/i18n.js +18 -0
  210. package/build/components/picker/i18n.js.map +1 -0
  211. package/build/components/picker/icon-color-picker.d.ts +14 -0
  212. package/build/components/picker/icon-color-picker.d.ts.map +1 -0
  213. package/build/components/picker/icon-color-picker.js +15 -0
  214. package/build/components/picker/icon-color-picker.js.map +1 -0
  215. package/build/components/picker/icon-picker.d.ts +8 -0
  216. package/build/components/picker/icon-picker.d.ts.map +1 -0
  217. package/build/components/picker/icon-picker.js +8 -0
  218. package/build/components/picker/icon-picker.js.map +1 -0
  219. package/build/components/picker/index.d.ts +11 -0
  220. package/build/components/picker/index.d.ts.map +1 -0
  221. package/build/components/picker/index.js +10 -0
  222. package/build/components/picker/index.js.map +1 -0
  223. package/build/components/picker/panel.d.ts +9 -0
  224. package/build/components/picker/panel.d.ts.map +1 -0
  225. package/build/components/picker/panel.js +23 -0
  226. package/build/components/picker/panel.js.map +1 -0
  227. package/build/components/picker/root.d.ts +13 -0
  228. package/build/components/picker/root.d.ts.map +1 -0
  229. package/build/components/picker/root.js +55 -0
  230. package/build/components/picker/root.js.map +1 -0
  231. package/build/components/picker/roving.d.ts +8 -0
  232. package/build/components/picker/roving.d.ts.map +1 -0
  233. package/build/components/picker/roving.js +62 -0
  234. package/build/components/picker/roving.js.map +1 -0
  235. package/build/components/picker/surface.d.ts +18 -0
  236. package/build/components/picker/surface.d.ts.map +1 -0
  237. package/build/components/picker/surface.js +36 -0
  238. package/build/components/picker/surface.js.map +1 -0
  239. package/build/components/picker/swatches/custom.d.ts +10 -0
  240. package/build/components/picker/swatches/custom.d.ts.map +1 -0
  241. package/build/components/picker/swatches/custom.js +65 -0
  242. package/build/components/picker/swatches/custom.js.map +1 -0
  243. package/build/components/picker/swatches.d.ts +16 -0
  244. package/build/components/picker/swatches.d.ts.map +1 -0
  245. package/build/components/picker/swatches.js +35 -0
  246. package/build/components/picker/swatches.js.map +1 -0
  247. package/build/components/picker/text.d.ts +5 -0
  248. package/build/components/picker/text.d.ts.map +1 -0
  249. package/build/components/picker/text.js +29 -0
  250. package/build/components/picker/text.js.map +1 -0
  251. package/build/components/picker/tile.d.ts +11 -0
  252. package/build/components/picker/tile.d.ts.map +1 -0
  253. package/build/components/picker/tile.js +19 -0
  254. package/build/components/picker/tile.js.map +1 -0
  255. package/build/components/picker/translate.d.ts +9 -0
  256. package/build/components/picker/translate.d.ts.map +1 -0
  257. package/build/components/picker/translate.js +13 -0
  258. package/build/components/picker/translate.js.map +1 -0
  259. package/build/components/picker/trigger.d.ts +12 -0
  260. package/build/components/picker/trigger.d.ts.map +1 -0
  261. package/build/components/picker/trigger.js +29 -0
  262. package/build/components/picker/trigger.js.map +1 -0
  263. package/build/components/picker/types.d.ts +114 -0
  264. package/build/components/picker/types.d.ts.map +1 -0
  265. package/build/components/picker/types.js +2 -0
  266. package/build/components/picker/types.js.map +1 -0
  267. package/build/components/picker/types.local.d.ts +143 -0
  268. package/build/components/picker/types.local.d.ts.map +1 -0
  269. package/build/components/picker/types.local.js +2 -0
  270. package/build/components/picker/types.local.js.map +1 -0
  271. package/build/components/scheme/consts.local.d.ts +8 -0
  272. package/build/components/scheme/consts.local.d.ts.map +1 -0
  273. package/build/components/scheme/consts.local.js +13 -0
  274. package/build/components/scheme/consts.local.js.map +1 -0
  275. package/build/components/scheme/hook.d.ts +16 -0
  276. package/build/components/scheme/hook.d.ts.map +1 -0
  277. package/build/components/scheme/hook.js +52 -0
  278. package/build/components/scheme/hook.js.map +1 -0
  279. package/build/components/scheme/index.d.ts +4 -0
  280. package/build/components/scheme/index.d.ts.map +1 -0
  281. package/build/components/scheme/index.js +3 -0
  282. package/build/components/scheme/index.js.map +1 -0
  283. package/build/components/scheme/toggle.d.ts +14 -0
  284. package/build/components/scheme/toggle.d.ts.map +1 -0
  285. package/build/components/scheme/toggle.js +24 -0
  286. package/build/components/scheme/toggle.js.map +1 -0
  287. package/build/components/scheme/types.d.ts +21 -0
  288. package/build/components/scheme/types.d.ts.map +1 -0
  289. package/build/components/scheme/types.js +2 -0
  290. package/build/components/scheme/types.js.map +1 -0
  291. package/build/components/socket/i18n/be.json +9 -0
  292. package/build/components/socket/i18n/de.json +9 -0
  293. package/build/components/socket/i18n/en.json +9 -0
  294. package/build/components/socket/i18n/es.json +9 -0
  295. package/build/components/socket/i18n/fr.json +9 -0
  296. package/build/components/socket/i18n/pl.json +9 -0
  297. package/build/components/socket/i18n/ru.json +9 -0
  298. package/build/components/socket/i18n/uk.json +9 -0
  299. package/build/components/socket/i18n.d.ts +2 -0
  300. package/build/components/socket/i18n.d.ts.map +1 -0
  301. package/build/components/socket/i18n.js +18 -0
  302. package/build/components/socket/i18n.js.map +1 -0
  303. package/build/components/socket/index.d.ts +3 -0
  304. package/build/components/socket/index.d.ts.map +1 -0
  305. package/build/components/socket/index.js +3 -0
  306. package/build/components/socket/index.js.map +1 -0
  307. package/build/components/socket/reload-dialog.d.ts +22 -0
  308. package/build/components/socket/reload-dialog.d.ts.map +1 -0
  309. package/build/components/socket/reload-dialog.js +34 -0
  310. package/build/components/socket/reload-dialog.js.map +1 -0
  311. package/build/components/status.js +1 -1
  312. package/build/components/status.js.map +1 -1
  313. package/build/components/text.d.ts.map +1 -1
  314. package/build/components/text.js +2 -13
  315. package/build/components/text.js.map +1 -1
  316. package/build/components/toaster.d.ts +16 -0
  317. package/build/components/toaster.d.ts.map +1 -0
  318. package/build/components/toaster.js +52 -0
  319. package/build/components/toaster.js.map +1 -0
  320. package/build/components/uploader/consts.local.d.ts +4 -0
  321. package/build/components/uploader/consts.local.d.ts.map +1 -0
  322. package/build/components/uploader/consts.local.js +6 -0
  323. package/build/components/uploader/consts.local.js.map +1 -0
  324. package/build/components/uploader/image.d.ts.map +1 -1
  325. package/build/components/uploader/image.js +2 -6
  326. package/build/components/uploader/image.js.map +1 -1
  327. package/build/consent/component.d.ts +27 -0
  328. package/build/consent/component.d.ts.map +1 -0
  329. package/build/consent/component.js +60 -0
  330. package/build/consent/component.js.map +1 -0
  331. package/build/consent/consts.d.ts +2 -0
  332. package/build/consent/consts.d.ts.map +1 -0
  333. package/build/consent/consts.js +2 -0
  334. package/build/consent/consts.js.map +1 -0
  335. package/build/consent/consts.local.d.ts +9 -0
  336. package/build/consent/consts.local.d.ts.map +1 -0
  337. package/build/consent/consts.local.js +9 -0
  338. package/build/consent/consts.local.js.map +1 -0
  339. package/build/consent/geo.d.ts +17 -0
  340. package/build/consent/geo.d.ts.map +1 -0
  341. package/build/consent/geo.js +19 -0
  342. package/build/consent/geo.js.map +1 -0
  343. package/build/consent/index.d.ts +11 -0
  344. package/build/consent/index.d.ts.map +1 -0
  345. package/build/consent/index.js +9 -0
  346. package/build/consent/index.js.map +1 -0
  347. package/build/consent/language.d.ts +12 -0
  348. package/build/consent/language.d.ts.map +1 -0
  349. package/build/consent/language.js +11 -0
  350. package/build/consent/language.js.map +1 -0
  351. package/build/consent/menu-widget.d.ts +13 -0
  352. package/build/consent/menu-widget.d.ts.map +1 -0
  353. package/build/consent/menu-widget.js +20 -0
  354. package/build/consent/menu-widget.js.map +1 -0
  355. package/build/consent/presence.d.ts +30 -0
  356. package/build/consent/presence.d.ts.map +1 -0
  357. package/build/consent/presence.js +40 -0
  358. package/build/consent/presence.js.map +1 -0
  359. package/build/consent/service.d.ts +18 -0
  360. package/build/consent/service.d.ts.map +1 -0
  361. package/build/consent/service.js +53 -0
  362. package/build/consent/service.js.map +1 -0
  363. package/build/consent/translate.d.ts +14 -0
  364. package/build/consent/translate.d.ts.map +1 -0
  365. package/build/consent/translate.js +28 -0
  366. package/build/consent/translate.js.map +1 -0
  367. package/build/consent/types.d.ts +39 -0
  368. package/build/consent/types.d.ts.map +1 -0
  369. package/build/consent/types.js +2 -0
  370. package/build/consent/types.js.map +1 -0
  371. package/build/consent/types.local.d.ts +6 -0
  372. package/build/consent/types.local.d.ts.map +1 -0
  373. package/build/consent/types.local.js +2 -0
  374. package/build/consent/types.local.js.map +1 -0
  375. package/build/context.d.ts.map +1 -1
  376. package/build/context.js +10 -0
  377. package/build/context.js.map +1 -1
  378. package/build/editor/component.d.ts +4 -0
  379. package/build/editor/component.d.ts.map +1 -0
  380. package/build/editor/component.js +103 -0
  381. package/build/editor/component.js.map +1 -0
  382. package/build/editor/consts.local.d.ts +6 -0
  383. package/build/editor/consts.local.d.ts.map +1 -0
  384. package/build/editor/consts.local.js +58 -0
  385. package/build/editor/consts.local.js.map +1 -0
  386. package/build/editor/index.d.ts +3 -0
  387. package/build/editor/index.d.ts.map +1 -0
  388. package/build/editor/index.js +2 -0
  389. package/build/editor/index.js.map +1 -0
  390. package/build/editor/types.d.ts +24 -0
  391. package/build/editor/types.d.ts.map +1 -0
  392. package/build/editor/types.js +2 -0
  393. package/build/editor/types.js.map +1 -0
  394. package/build/entrypoints.d.ts +8 -0
  395. package/build/entrypoints.d.ts.map +1 -0
  396. package/build/entrypoints.js +4 -0
  397. package/build/entrypoints.js.map +1 -0
  398. package/build/exports.d.ts +6 -5
  399. package/build/exports.d.ts.map +1 -1
  400. package/build/exports.js +5 -5
  401. package/build/exports.js.map +1 -1
  402. package/build/index.d.ts +1 -1
  403. package/build/index.d.ts.map +1 -1
  404. package/build/index.js +1 -1
  405. package/build/index.js.map +1 -1
  406. package/build/main.d.ts +1 -4
  407. package/build/main.d.ts.map +1 -1
  408. package/build/main.js.map +1 -1
  409. package/build/modules.d.ts +1 -1
  410. package/build/modules.d.ts.map +1 -1
  411. package/build/permission/i18n/be.json +13 -0
  412. package/build/permission/i18n/de.json +13 -0
  413. package/build/permission/i18n/en.json +13 -0
  414. package/build/permission/i18n/es.json +13 -0
  415. package/build/permission/i18n/fr.json +13 -0
  416. package/build/permission/i18n/pl.json +13 -0
  417. package/build/permission/i18n/ru.json +13 -0
  418. package/build/permission/i18n/uk.json +13 -0
  419. package/build/permission/i18n.d.ts +2 -0
  420. package/build/permission/i18n.d.ts.map +1 -0
  421. package/build/permission/i18n.js +13 -0
  422. package/build/permission/i18n.js.map +1 -0
  423. package/build/permission/index.d.ts +6 -0
  424. package/build/permission/index.d.ts.map +1 -0
  425. package/build/permission/index.js +27 -0
  426. package/build/permission/index.js.map +1 -0
  427. package/build/permission/toast.d.ts +5 -0
  428. package/build/permission/toast.d.ts.map +1 -0
  429. package/build/permission/toast.js +8 -0
  430. package/build/permission/toast.js.map +1 -0
  431. package/build/permission/types.d.ts +6 -0
  432. package/build/permission/types.d.ts.map +1 -0
  433. package/build/permission/types.js +2 -0
  434. package/build/permission/types.js.map +1 -0
  435. package/build/picker/icons/consts.d.ts +9 -0
  436. package/build/picker/icons/consts.d.ts.map +1 -0
  437. package/build/picker/icons/consts.js +264 -0
  438. package/build/picker/icons/consts.js.map +1 -0
  439. package/build/picker/icons/types.d.ts +18 -0
  440. package/build/picker/icons/types.d.ts.map +1 -0
  441. package/build/picker/icons/types.js +2 -0
  442. package/build/picker/icons/types.js.map +1 -0
  443. package/build/picker/icons.d.ts +4 -0
  444. package/build/picker/icons.d.ts.map +1 -0
  445. package/build/picker/icons.js +54 -0
  446. package/build/picker/icons.js.map +1 -0
  447. package/build/picker/index.d.ts +11 -0
  448. package/build/picker/index.d.ts.map +1 -0
  449. package/build/picker/index.js +10 -0
  450. package/build/picker/index.js.map +1 -0
  451. package/build/picker/utils/color/types.d.ts +35 -0
  452. package/build/picker/utils/color/types.d.ts.map +1 -0
  453. package/build/picker/utils/color/types.js +2 -0
  454. package/build/picker/utils/color/types.js.map +1 -0
  455. package/build/picker/utils/color.d.ts +4 -0
  456. package/build/picker/utils/color.d.ts.map +1 -0
  457. package/build/picker/utils/color.js +96 -0
  458. package/build/picker/utils/color.js.map +1 -0
  459. package/build/picker/vocabulary/consts.d.ts +26 -0
  460. package/build/picker/vocabulary/consts.d.ts.map +1 -0
  461. package/build/picker/vocabulary/consts.js +336 -0
  462. package/build/picker/vocabulary/consts.js.map +1 -0
  463. package/build/picker/vocabulary/types.d.ts +67 -0
  464. package/build/picker/vocabulary/types.d.ts.map +1 -0
  465. package/build/picker/vocabulary/types.js +2 -0
  466. package/build/picker/vocabulary/types.js.map +1 -0
  467. package/build/picker/vocabulary.d.ts +11 -0
  468. package/build/picker/vocabulary.d.ts.map +1 -0
  469. package/build/picker/vocabulary.js +83 -0
  470. package/build/picker/vocabulary.js.map +1 -0
  471. package/build/scheme/consts.d.ts +8 -0
  472. package/build/scheme/consts.d.ts.map +1 -0
  473. package/build/scheme/consts.js +8 -0
  474. package/build/scheme/consts.js.map +1 -0
  475. package/build/scheme/index.d.ts +4 -0
  476. package/build/scheme/index.d.ts.map +1 -0
  477. package/build/scheme/index.js +3 -0
  478. package/build/scheme/index.js.map +1 -0
  479. package/build/scheme/scheme.d.ts +16 -0
  480. package/build/scheme/scheme.d.ts.map +1 -0
  481. package/build/scheme/scheme.js +58 -0
  482. package/build/scheme/scheme.js.map +1 -0
  483. package/build/scheme/types.d.ts +30 -0
  484. package/build/scheme/types.d.ts.map +1 -0
  485. package/build/scheme/types.js +2 -0
  486. package/build/scheme/types.js.map +1 -0
  487. package/build/types.d.ts +18 -2
  488. package/build/types.d.ts.map +1 -1
  489. package/package.json +107 -52
  490. package/src/@/components/ui/alert-dialog.tsx +156 -0
  491. package/src/@/components/ui/alert.tsx +1 -1
  492. package/src/@/components/ui/button.tsx +1 -1
  493. package/src/@/components/ui/card.tsx +1 -1
  494. package/src/@/components/ui/input.tsx +1 -1
  495. package/src/@/components/ui/label.tsx +1 -1
  496. package/src/@/components/ui/navigation-menu.tsx +1 -1
  497. package/src/@/components/ui/popover.tsx +47 -0
  498. package/src/@/components/ui/progress.tsx +1 -1
  499. package/src/@/components/ui/separator.tsx +1 -1
  500. package/src/@/components/ui/sheet.tsx +142 -0
  501. package/src/auth/context.ts +0 -2
  502. package/src/auth/entrypoints.ts +5 -0
  503. package/src/auth/exports.ts +4 -4
  504. package/src/auth/plugins/basic-ed25519.tsx +4 -4
  505. package/src/auth/plugins/re-captcha.tsx +3 -3
  506. package/src/auth/plugins/tunnel-consumer.tsx +1 -1
  507. package/src/components/block.tsx +2 -2
  508. package/src/components/consts.local.ts +29 -0
  509. package/src/components/footer/component.tsx +58 -16
  510. package/src/components/footer/credit.tsx +61 -0
  511. package/src/components/footer/index.ts +1 -0
  512. package/src/components/footer/types.ts +22 -1
  513. package/src/components/form/button/component.tsx +7 -4
  514. package/src/components/form/component.tsx +2 -2
  515. package/src/components/form/text/component.tsx +2 -2
  516. package/src/components/helper.ts +1 -13
  517. package/src/components/index.ts +4 -0
  518. package/src/components/link.tsx +3 -3
  519. package/src/components/login/append.ts +34 -0
  520. package/src/components/login/consts.local.ts +10 -0
  521. package/src/components/login/consts.ts +2 -0
  522. package/src/components/login/credit.tsx +33 -0
  523. package/src/components/login/i18n/be.json +10 -0
  524. package/src/components/login/i18n/de.json +10 -0
  525. package/src/components/login/i18n/en.json +10 -0
  526. package/src/components/login/i18n/es.json +10 -0
  527. package/src/components/login/i18n/fr.json +10 -0
  528. package/src/components/login/i18n/pl.json +10 -0
  529. package/src/components/login/i18n/ru.json +10 -0
  530. package/src/components/login/i18n/uk.json +10 -0
  531. package/src/components/login/i18n.ts +29 -0
  532. package/src/components/login/icons.tsx +39 -0
  533. package/src/components/login/index.ts +11 -0
  534. package/src/components/login/notify.ts +48 -0
  535. package/src/components/login/provider.tsx +57 -0
  536. package/src/components/login/screen.tsx +178 -0
  537. package/src/components/login/terms.tsx +75 -0
  538. package/src/components/login/types.ts +30 -0
  539. package/src/components/nav/consts.local.ts +64 -0
  540. package/src/components/nav/index.ts +1 -0
  541. package/src/components/nav/layout.tsx +184 -26
  542. package/src/components/nav/mobile.tsx +165 -0
  543. package/src/components/nav/side.tsx +43 -27
  544. package/src/components/nav/top.tsx +44 -22
  545. package/src/components/nav/types.ts +65 -2
  546. package/src/components/nav/viewport.ts +16 -0
  547. package/src/components/panel-app/component.tsx +9 -1
  548. package/src/components/picker/color-picker.tsx +15 -0
  549. package/src/components/picker/consts.local.ts +267 -0
  550. package/src/components/picker/dot.tsx +21 -0
  551. package/src/components/picker/grid.tsx +138 -0
  552. package/src/components/picker/i18n/be.json +60 -0
  553. package/src/components/picker/i18n/de.json +60 -0
  554. package/src/components/picker/i18n/en.json +60 -0
  555. package/src/components/picker/i18n/es.json +60 -0
  556. package/src/components/picker/i18n/fr.json +60 -0
  557. package/src/components/picker/i18n/pl.json +60 -0
  558. package/src/components/picker/i18n/ru.json +60 -0
  559. package/src/components/picker/i18n/uk.json +60 -0
  560. package/src/components/picker/i18n.ts +19 -0
  561. package/src/components/picker/icon-color-picker.tsx +25 -0
  562. package/src/components/picker/icon-picker.tsx +13 -0
  563. package/src/components/picker/index.ts +11 -0
  564. package/src/components/picker/panel.tsx +61 -0
  565. package/src/components/picker/root.tsx +81 -0
  566. package/src/components/picker/roving.ts +70 -0
  567. package/src/components/picker/surface.tsx +62 -0
  568. package/src/components/picker/swatches/custom.tsx +110 -0
  569. package/src/components/picker/swatches.tsx +67 -0
  570. package/src/components/picker/text.ts +46 -0
  571. package/src/components/picker/tile.tsx +35 -0
  572. package/src/components/picker/translate.ts +15 -0
  573. package/src/components/picker/trigger.tsx +54 -0
  574. package/src/components/picker/types.local.ts +154 -0
  575. package/src/components/picker/types.ts +125 -0
  576. package/src/components/scheme/consts.local.ts +13 -0
  577. package/src/components/scheme/hook.ts +62 -0
  578. package/src/components/scheme/index.ts +4 -0
  579. package/src/components/scheme/toggle.tsx +32 -0
  580. package/src/components/scheme/types.ts +23 -0
  581. package/src/components/socket/i18n/be.json +9 -0
  582. package/src/components/socket/i18n/de.json +9 -0
  583. package/src/components/socket/i18n/en.json +9 -0
  584. package/src/components/socket/i18n/es.json +9 -0
  585. package/src/components/socket/i18n/fr.json +9 -0
  586. package/src/components/socket/i18n/pl.json +9 -0
  587. package/src/components/socket/i18n/ru.json +9 -0
  588. package/src/components/socket/i18n/uk.json +9 -0
  589. package/src/components/socket/i18n.ts +19 -0
  590. package/src/components/socket/index.ts +2 -0
  591. package/src/components/socket/reload-dialog.tsx +61 -0
  592. package/src/components/status.tsx +1 -1
  593. package/src/components/text.tsx +2 -14
  594. package/src/components/toaster.tsx +65 -0
  595. package/src/components/uploader/consts.local.ts +7 -0
  596. package/src/components/uploader/image.tsx +2 -6
  597. package/src/consent/component.tsx +84 -0
  598. package/src/consent/consts.local.ts +10 -0
  599. package/src/consent/consts.ts +1 -0
  600. package/src/consent/geo.ts +26 -0
  601. package/src/consent/index.ts +24 -0
  602. package/src/consent/language.ts +12 -0
  603. package/src/consent/menu-widget.tsx +22 -0
  604. package/src/consent/presence.ts +45 -0
  605. package/src/consent/service.ts +75 -0
  606. package/src/consent/translate.ts +31 -0
  607. package/src/consent/types.local.ts +6 -0
  608. package/src/consent/types.ts +43 -0
  609. package/src/context.ts +12 -0
  610. package/src/editor/component.tsx +172 -0
  611. package/src/editor/consts.local.ts +62 -0
  612. package/src/editor/index.ts +2 -0
  613. package/src/editor/types.ts +24 -0
  614. package/src/entrypoints.ts +5 -0
  615. package/src/exports.ts +6 -5
  616. package/src/index.ts +1 -1
  617. package/src/main.tsx +2 -6
  618. package/src/permission/i18n/be.json +13 -0
  619. package/src/permission/i18n/de.json +13 -0
  620. package/src/permission/i18n/en.json +13 -0
  621. package/src/permission/i18n/es.json +13 -0
  622. package/src/permission/i18n/fr.json +13 -0
  623. package/src/permission/i18n/pl.json +13 -0
  624. package/src/permission/i18n/ru.json +13 -0
  625. package/src/permission/i18n/uk.json +13 -0
  626. package/src/permission/i18n.ts +13 -0
  627. package/src/permission/index.ts +27 -0
  628. package/src/permission/toast.tsx +20 -0
  629. package/src/permission/types.ts +5 -0
  630. package/src/picker/icons/consts.ts +309 -0
  631. package/src/picker/icons/types.ts +18 -0
  632. package/src/picker/icons.ts +70 -0
  633. package/src/picker/index.ts +11 -0
  634. package/src/picker/utils/color/types.ts +37 -0
  635. package/src/picker/utils/color.ts +119 -0
  636. package/src/picker/vocabulary/consts.ts +347 -0
  637. package/src/picker/vocabulary/types.ts +72 -0
  638. package/src/picker/vocabulary.ts +111 -0
  639. package/src/scheme/consts.ts +8 -0
  640. package/src/scheme/index.ts +3 -0
  641. package/src/scheme/scheme.ts +66 -0
  642. package/src/scheme/types.ts +30 -0
  643. package/src/types.ts +19 -2
  644. package/tests/consent-language.spec.ts +31 -0
  645. package/tests/consent.spec.ts +112 -0
  646. package/tests/context.ts +4 -0
  647. package/tests/editor.spec.ts +58 -0
  648. package/tests/harness/editor.tsx +32 -0
  649. package/tests/harness/index.html +1 -0
  650. package/tests/harness/lazy-screen.tsx +9 -0
  651. package/tests/harness/mount.tsx +370 -29
  652. package/tests/harness/picker.tsx +110 -0
  653. package/tests/lazy.spec.ts +104 -0
  654. package/tests/login-provider.spec.ts +114 -0
  655. package/tests/login.spec.ts +447 -0
  656. package/tests/nav.spec.ts +449 -3
  657. package/tests/package-boundary.spec.ts +19 -0
  658. package/tests/picker-shots.spec.ts +174 -0
  659. package/tests/picker-vocabulary.spec.ts +217 -0
  660. package/tests/picker.spec.ts +333 -0
  661. package/tests/scheme.spec.ts +149 -0
  662. package/tests/smoke.spec.ts +2 -2
  663. package/tests/socket-dialog.spec.ts +154 -0
  664. package/tests/toaster.spec.ts +59 -0
  665. package/zz-tw.d.mts +2 -0
  666. package/zz-tw.d.mts.map +1 -0
  667. package/build/.gitkeep +0 -0
  668. package/src/auth/modules.ts +0 -5
  669. package/src/modules.ts +0 -5
@@ -0,0 +1,13 @@
1
+ {
2
+ "title": "Дзеянне адхілена",
3
+ "description": "Сервер адхіліў дзеянне паводле бягучых правіл доступу. Калі вы чакалі доступу, звярніцеся да адміністратара.",
4
+ "technical-details": "Тэхнічныя падрабязнасці",
5
+ "endpoint": "Канцавы пункт",
6
+ "status": "Статус",
7
+ "incident": "Ідэнтыфікатар інцыдэнту",
8
+ "area-title": "Доступ забаронены",
9
+ "area-description": "Ваш уліковы запіс не можа адкрыць гэты раздзел. Калі вы чакалі доступу, звярніцеся да адміністратара.",
10
+ "area": "Раздзел",
11
+ "required-permissions": "Патрэбныя дазволы",
12
+ "logout": "Выйсці"
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "title": "Aktion verweigert",
3
+ "description": "Der Server hat diese Aktion gemäß den aktuellen Berechtigungen verweigert. Wenn Sie Zugriff erwartet haben, fragen Sie eine Administratorin oder einen Administrator.",
4
+ "technical-details": "Technische Details",
5
+ "endpoint": "Endpunkt",
6
+ "status": "Status",
7
+ "incident": "Vorfall-ID",
8
+ "area-title": "Zugriff verweigert",
9
+ "area-description": "Ihr Konto kann diesen Bereich nicht öffnen. Wenn Sie Zugriff erwartet haben, wenden Sie sich an die Administration.",
10
+ "area": "Bereich",
11
+ "required-permissions": "Erforderliche Berechtigungen",
12
+ "logout": "Abmelden"
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "title": "Action denied",
3
+ "description": "The server denied this action under the current permission rules. If you expected access, ask an administrator.",
4
+ "technical-details": "Technical details",
5
+ "endpoint": "Endpoint",
6
+ "status": "Status",
7
+ "incident": "Incident ID",
8
+ "area-title": "Access denied",
9
+ "area-description": "Your account cannot open this area. Ask an administrator if you expected access.",
10
+ "area": "Area",
11
+ "required-permissions": "Required permissions",
12
+ "logout": "Log out"
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "title": "Acción denegada",
3
+ "description": "El servidor denegó esta acción según las reglas de permisos actuales. Si esperaba tener acceso, consulte a un administrador.",
4
+ "technical-details": "Detalles técnicos",
5
+ "endpoint": "Punto de acceso",
6
+ "status": "Estado",
7
+ "incident": "ID del incidente",
8
+ "area-title": "Acceso denegado",
9
+ "area-description": "Su cuenta no puede abrir esta sección. Si esperaba tener acceso, consulte a un administrador.",
10
+ "area": "Sección",
11
+ "required-permissions": "Permisos necesarios",
12
+ "logout": "Cerrar sesión"
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "title": "Action refusée",
3
+ "description": "Le serveur a refusé cette action selon les autorisations actuelles. Si vous pensiez avoir accès, contactez un administrateur.",
4
+ "technical-details": "Détails techniques",
5
+ "endpoint": "Point de terminaison",
6
+ "status": "Statut",
7
+ "incident": "ID de l’incident",
8
+ "area-title": "Accès refusé",
9
+ "area-description": "Votre compte ne peut pas ouvrir cette section. Si vous pensiez avoir accès, contactez un administrateur.",
10
+ "area": "Section",
11
+ "required-permissions": "Autorisations requises",
12
+ "logout": "Se déconnecter"
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "title": "Działanie odrzucone",
3
+ "description": "Serwer odrzucił to działanie zgodnie z obecnymi uprawnieniami. Jeśli oczekujesz dostępu, skontaktuj się z administratorem.",
4
+ "technical-details": "Szczegóły techniczne",
5
+ "endpoint": "Punkt końcowy",
6
+ "status": "Status",
7
+ "incident": "Identyfikator incydentu",
8
+ "area-title": "Odmowa dostępu",
9
+ "area-description": "Twoje konto nie może otworzyć tego obszaru. Jeśli oczekujesz dostępu, skontaktuj się z administratorem.",
10
+ "area": "Obszar",
11
+ "required-permissions": "Wymagane uprawnienia",
12
+ "logout": "Wyloguj się"
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "title": "Действие отклонено",
3
+ "description": "Сервер отклонил действие согласно текущим правилам доступа. Если вам нужен доступ, обратитесь к администратору.",
4
+ "technical-details": "Технические подробности",
5
+ "endpoint": "Конечная точка",
6
+ "status": "Статус",
7
+ "incident": "Идентификатор инцидента",
8
+ "area-title": "Доступ запрещён",
9
+ "area-description": "Ваша учётная запись не может открыть этот раздел. Если вам нужен доступ, обратитесь к администратору.",
10
+ "area": "Раздел",
11
+ "required-permissions": "Необходимые разрешения",
12
+ "logout": "Выйти"
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "title": "Дію відхилено",
3
+ "description": "Сервер відхилив цю дію згідно з поточними правилами доступу. Якщо ви очікували доступу, зверніться до адміністратора.",
4
+ "technical-details": "Технічні подробиці",
5
+ "endpoint": "Кінцева точка",
6
+ "status": "Статус",
7
+ "incident": "Ідентифікатор інциденту",
8
+ "area-title": "Доступ заборонено",
9
+ "area-description": "Ваш обліковий запис не може відкрити цей розділ. Якщо ви очікували доступу, зверніться до адміністратора.",
10
+ "area": "Розділ",
11
+ "required-permissions": "Потрібні дозволи",
12
+ "logout": "Вийти"
13
+ }
@@ -0,0 +1,13 @@
1
+ import { i18nHelper } from '@owlmeans/i18n'
2
+ import en from './i18n/en.json'
3
+ import pl from './i18n/pl.json'
4
+ import ru from './i18n/ru.json'
5
+ import be from './i18n/be.json'
6
+ import uk from './i18n/uk.json'
7
+ import es from './i18n/es.json'
8
+ import de from './i18n/de.json'
9
+ import fr from './i18n/fr.json'
10
+
11
+ for (const [language, chunk] of Object.entries({ en, pl, ru, be, uk, es, de, fr })) {
12
+ i18nHelper.addI18nLib(language, 'permission-denied', chunk)
13
+ }
@@ -0,0 +1,27 @@
1
+ import './i18n.js'
2
+ import { createElement } from 'react'
3
+ import { toast } from 'sonner'
4
+ import type { BasicContext } from '@owlmeans/context'
5
+ import { ensureEntrypointFailureService } from '@owlmeans/client-entrypoint'
6
+ import { apiStatusHelper } from '@owlmeans/api/status'
7
+ import { PermissionDeniedToast } from './toast.js'
8
+
9
+ export { PermissionDeniedToast } from './toast.js'
10
+
11
+ /** Opt-in adapter for the context's entrypoint failures; mount one Toaster in the app shell. */
12
+ export const appendPermissionDeniedToast = <T extends BasicContext<any>>(context: T): T => {
13
+ const seen = new Map<string, number>()
14
+ ensureEntrypointFailureService(context).registerPlugin({
15
+ alias: 'web-panel:permission-denied-toast',
16
+ onFailure: ({ alias, error }) => {
17
+ if (!apiStatusHelper.isAccessDenied(error)) return
18
+ const now = Date.now()
19
+ if (now - (seen.get(alias) ?? 0) < 2000) return
20
+ seen.set(alias, now)
21
+ toast.warning(createElement(PermissionDeniedToast, {
22
+ alias, status: apiStatusHelper.httpStatusOf(error), incidentId: apiStatusHelper.incidentIdOf(error),
23
+ }))
24
+ },
25
+ })
26
+ return context
27
+ }
@@ -0,0 +1,20 @@
1
+ import type { FC } from 'react'
2
+ import { useI18nLib } from '@owlmeans/client-i18n'
3
+ import type { PermissionDeniedToastProps } from './types.js'
4
+
5
+ /** A refusal is actionable context for the user, with diagnostics outside the explanation. */
6
+ export const PermissionDeniedToast: FC<PermissionDeniedToastProps> = ({ alias, status, incidentId }) => {
7
+ const t = useI18nLib('permission-denied')
8
+ return <div className="space-y-2 max-w-sm text-sm">
9
+ <p className="font-semibold">{t('title')}</p>
10
+ <p>{t('description')}</p>
11
+ <details className="text-xs">
12
+ <summary className="cursor-pointer">{t('technical-details')}</summary>
13
+ <dl className="mt-2 grid grid-cols-[auto_1fr] gap-x-2 break-all">
14
+ <dt>{t('endpoint')}</dt><dd>{alias}</dd>
15
+ {status != null && <><dt>{t('status')}</dt><dd>{status}</dd></>}
16
+ {incidentId != null && <><dt>{t('incident')}</dt><dd>{incidentId}</dd></>}
17
+ </dl>
18
+ </details>
19
+ </div>
20
+ }
@@ -0,0 +1,5 @@
1
+ export interface PermissionDeniedToastProps {
2
+ alias: string
3
+ status: number | null
4
+ incidentId: string | null
5
+ }
@@ -0,0 +1,309 @@
1
+ import type { LucideIcon } from 'lucide-react'
2
+ import {
3
+ BriefcaseIcon, FolderIcon, FolderOpenIcon, FolderKanbanIcon, FileIcon, FileTextIcon,
4
+ FilesIcon, ClipboardListIcon, ClipboardCheckIcon, ListChecksIcon, ListTodoIcon, SquareCheckIcon,
5
+ KanbanIcon, CalendarIcon, CalendarCheckIcon, CalendarDaysIcon, CalendarClockIcon, ClockIcon,
6
+ TimerIcon, HourglassIcon, TargetIcon, FlagIcon, MilestoneIcon, RocketIcon,
7
+ LightbulbIcon, BookOpenIcon, NotebookPenIcon, PresentationIcon, LayersIcon, LayoutGridIcon,
8
+ WorkflowIcon, GoalIcon, TrophyIcon, AwardIcon, PenLineIcon, ArchiveIcon,
9
+ PaperclipIcon, UserIcon, UserRoundIcon, UserRoundCheckIcon, UserRoundPlusIcon, UserCheckIcon,
10
+ UserPlusIcon, UsersIcon, UsersRoundIcon, ContactIcon, IdCardIcon, HandshakeIcon,
11
+ PersonStandingIcon, AccessibilityIcon, FaceSlightlySmilingIcon, HeartHandshakeIcon, GraduationCapIcon, UserCogIcon,
12
+ CrownIcon, HandIcon, ThumbsUpIcon, MailIcon, MailOpenIcon, InboxIcon,
13
+ SendIcon, MessageSquareIcon, MessageCircleIcon, MessagesSquareIcon, PhoneIcon, PhoneCallIcon,
14
+ MegaphoneIcon, BellIcon, BellRingIcon, AtSignIcon, HeadsetIcon, VideoIcon,
15
+ MicIcon, Share2Icon, ReplyIcon, LanguagesIcon, NewspaperIcon, ShoppingCartIcon,
16
+ ShoppingBagIcon, StoreIcon, ReceiptIcon, CreditCardIcon, WalletIcon, BanknoteIcon,
17
+ CoinsIcon, PiggyBankIcon, DollarSignIcon, EuroIcon, PercentIcon, TagIcon,
18
+ TagsIcon, TicketIcon, GiftIcon, PackageIcon, BadgePercentIcon, TrendingUpIcon,
19
+ TrendingDownIcon, ScaleIcon, LandmarkIcon, CalculatorIcon, HandCoinsIcon, ChartLineIcon,
20
+ ChartColumnIcon, ChartPieIcon, WrenchIcon, HammerIcon, SettingsIcon, CogIcon,
21
+ SlidersHorizontalIcon, FunnelIcon, TruckIcon, WarehouseIcon, FactoryIcon, ContainerIcon,
22
+ BoxesIcon, PackageCheckIcon, RouteIcon, GaugeIcon, ActivityIcon, SirenIcon,
23
+ ShieldIcon, ShieldCheckIcon, LockIcon, KeyIcon, HardHatIcon, ConstructionIcon,
24
+ RecycleIcon, StampIcon, BuildingIcon, BuildingComplexIcon, HouseIcon, HotelIcon,
25
+ SchoolIcon, HospitalIcon, MapIcon, MapPinIcon, MapPinnedIcon, GlobeIcon,
26
+ EarthIcon, CompassIcon, NavigationIcon, PlaneIcon, CarIcon, BusIcon,
27
+ TrainFrontIcon, ShipIcon, BikeIcon, MountainIcon, CodeIcon, TerminalIcon,
28
+ ServerIcon, DatabaseIcon, CloudIcon, CpuIcon, MonitorIcon, LaptopIcon,
29
+ SmartphoneIcon, TabletIcon, WifiIcon, BluetoothIcon, PlugIcon, HardDriveIcon,
30
+ GitBranchIcon, GitPullRequestIcon, BotIcon, BrainIcon, PuzzleIcon, BlocksIcon,
31
+ BugIcon, WebhookIcon, LinkIcon, QrCodeIcon, KeyboardIcon, PrinterIcon,
32
+ CircleIcon, CircleCheckIcon, CircleXIcon, CircleAlertIcon, CircleQuestionMarkIcon, CirclePauseIcon,
33
+ CirclePlayIcon, CircleDotIcon, CircleDashedIcon, TriangleAlertIcon, OctagonAlertIcon, InfoIcon,
34
+ BanIcon, CheckIcon, XIcon, LoaderIcon, RefreshCwIcon, EyeIcon,
35
+ EyeOffIcon, FlameIcon, ZapIcon, SparklesIcon, StarIcon, HeartIcon,
36
+ ThumbsDownIcon, BadgeCheckIcon, ShieldAlertIcon, BookmarkIcon, PinIcon, BookIcon,
37
+ PenIcon, PencilIcon, PaletteIcon, BrushIcon, CameraIcon, ImageIcon,
38
+ MusicIcon, HeadphonesIcon, Gamepad2Icon, UmbrellaIcon, ShirtIcon, WatchIcon,
39
+ CoffeeIcon, UtensilsIcon, LampIcon, ArmchairIcon, BedIcon, ScissorsIcon,
40
+ RulerIcon, TrashIcon, BoxIcon, MagnetIcon, FlaskConicalIcon, MicroscopeIcon,
41
+ StethoscopeIcon, PillIcon, DumbbellIcon, LeafIcon, TreePineIcon, TreesIcon,
42
+ FlowerIcon, Flower2Icon, SproutIcon, SunIcon, MoonIcon, CloudRainIcon,
43
+ CloudSunIcon, SnowflakeIcon, DropletIcon, WavesHorizontalIcon, WindIcon, MountainSnowIcon,
44
+ BirdIcon, FishIcon, CatIcon, DogIcon, PawPrintIcon, FeatherIcon,
45
+ AppleIcon, CarrotIcon,
46
+ } from 'lucide-react'
47
+
48
+ /**
49
+ * Every catalogue icon by its stored name, each a statically imported lucide component — so a
50
+ * bundler keeps exactly these and nothing else, and a target bundle needs no dynamic import. Never
51
+ * `dynamicIconImports`, `DynamicIcon` or a namespace import: each pulls the whole set (~2,100 icons).
52
+ * Keys equal `PICKER_ICON_NAMES` (`tests/picker-vocabulary.spec.ts`).
53
+ */
54
+ export const PICKER_ICONS: Readonly<Record<string, LucideIcon>> = Object.freeze({
55
+ 'briefcase': BriefcaseIcon,
56
+ 'folder': FolderIcon,
57
+ 'folder-open': FolderOpenIcon,
58
+ 'folder-kanban': FolderKanbanIcon,
59
+ 'file': FileIcon,
60
+ 'file-text': FileTextIcon,
61
+ 'files': FilesIcon,
62
+ 'clipboard-list': ClipboardListIcon,
63
+ 'clipboard-check': ClipboardCheckIcon,
64
+ 'list-checks': ListChecksIcon,
65
+ 'list-todo': ListTodoIcon,
66
+ 'square-check': SquareCheckIcon,
67
+ 'kanban': KanbanIcon,
68
+ 'calendar': CalendarIcon,
69
+ 'calendar-check': CalendarCheckIcon,
70
+ 'calendar-days': CalendarDaysIcon,
71
+ 'calendar-clock': CalendarClockIcon,
72
+ 'clock': ClockIcon,
73
+ 'timer': TimerIcon,
74
+ 'hourglass': HourglassIcon,
75
+ 'target': TargetIcon,
76
+ 'flag': FlagIcon,
77
+ 'milestone': MilestoneIcon,
78
+ 'rocket': RocketIcon,
79
+ 'lightbulb': LightbulbIcon,
80
+ 'book-open': BookOpenIcon,
81
+ 'notebook-pen': NotebookPenIcon,
82
+ 'presentation': PresentationIcon,
83
+ 'layers': LayersIcon,
84
+ 'layout-grid': LayoutGridIcon,
85
+ 'workflow': WorkflowIcon,
86
+ 'goal': GoalIcon,
87
+ 'trophy': TrophyIcon,
88
+ 'award': AwardIcon,
89
+ 'pen-line': PenLineIcon,
90
+ 'archive': ArchiveIcon,
91
+ 'paperclip': PaperclipIcon,
92
+ 'user': UserIcon,
93
+ 'user-round': UserRoundIcon,
94
+ 'user-round-check': UserRoundCheckIcon,
95
+ 'user-round-plus': UserRoundPlusIcon,
96
+ 'user-check': UserCheckIcon,
97
+ 'user-plus': UserPlusIcon,
98
+ 'users': UsersIcon,
99
+ 'users-round': UsersRoundIcon,
100
+ 'contact': ContactIcon,
101
+ 'id-card': IdCardIcon,
102
+ 'handshake': HandshakeIcon,
103
+ 'person-standing': PersonStandingIcon,
104
+ 'accessibility': AccessibilityIcon,
105
+ 'face-slightly-smiling': FaceSlightlySmilingIcon,
106
+ 'heart-handshake': HeartHandshakeIcon,
107
+ 'graduation-cap': GraduationCapIcon,
108
+ 'user-cog': UserCogIcon,
109
+ 'crown': CrownIcon,
110
+ 'hand': HandIcon,
111
+ 'thumbs-up': ThumbsUpIcon,
112
+ 'mail': MailIcon,
113
+ 'mail-open': MailOpenIcon,
114
+ 'inbox': InboxIcon,
115
+ 'send': SendIcon,
116
+ 'message-square': MessageSquareIcon,
117
+ 'message-circle': MessageCircleIcon,
118
+ 'messages-square': MessagesSquareIcon,
119
+ 'phone': PhoneIcon,
120
+ 'phone-call': PhoneCallIcon,
121
+ 'megaphone': MegaphoneIcon,
122
+ 'bell': BellIcon,
123
+ 'bell-ring': BellRingIcon,
124
+ 'at-sign': AtSignIcon,
125
+ 'headset': HeadsetIcon,
126
+ 'video': VideoIcon,
127
+ 'mic': MicIcon,
128
+ 'share-2': Share2Icon,
129
+ 'reply': ReplyIcon,
130
+ 'languages': LanguagesIcon,
131
+ 'newspaper': NewspaperIcon,
132
+ 'shopping-cart': ShoppingCartIcon,
133
+ 'shopping-bag': ShoppingBagIcon,
134
+ 'store': StoreIcon,
135
+ 'receipt': ReceiptIcon,
136
+ 'credit-card': CreditCardIcon,
137
+ 'wallet': WalletIcon,
138
+ 'banknote': BanknoteIcon,
139
+ 'coins': CoinsIcon,
140
+ 'piggy-bank': PiggyBankIcon,
141
+ 'dollar-sign': DollarSignIcon,
142
+ 'euro': EuroIcon,
143
+ 'percent': PercentIcon,
144
+ 'tag': TagIcon,
145
+ 'tags': TagsIcon,
146
+ 'ticket': TicketIcon,
147
+ 'gift': GiftIcon,
148
+ 'package': PackageIcon,
149
+ 'badge-percent': BadgePercentIcon,
150
+ 'trending-up': TrendingUpIcon,
151
+ 'trending-down': TrendingDownIcon,
152
+ 'scale': ScaleIcon,
153
+ 'landmark': LandmarkIcon,
154
+ 'calculator': CalculatorIcon,
155
+ 'hand-coins': HandCoinsIcon,
156
+ 'chart-line': ChartLineIcon,
157
+ 'chart-column': ChartColumnIcon,
158
+ 'chart-pie': ChartPieIcon,
159
+ 'wrench': WrenchIcon,
160
+ 'hammer': HammerIcon,
161
+ 'settings': SettingsIcon,
162
+ 'cog': CogIcon,
163
+ 'sliders-horizontal': SlidersHorizontalIcon,
164
+ 'funnel': FunnelIcon,
165
+ 'truck': TruckIcon,
166
+ 'warehouse': WarehouseIcon,
167
+ 'factory': FactoryIcon,
168
+ 'container': ContainerIcon,
169
+ 'boxes': BoxesIcon,
170
+ 'package-check': PackageCheckIcon,
171
+ 'route': RouteIcon,
172
+ 'gauge': GaugeIcon,
173
+ 'activity': ActivityIcon,
174
+ 'siren': SirenIcon,
175
+ 'shield': ShieldIcon,
176
+ 'shield-check': ShieldCheckIcon,
177
+ 'lock': LockIcon,
178
+ 'key': KeyIcon,
179
+ 'hard-hat': HardHatIcon,
180
+ 'construction': ConstructionIcon,
181
+ 'recycle': RecycleIcon,
182
+ 'stamp': StampIcon,
183
+ 'building': BuildingIcon,
184
+ 'building-complex': BuildingComplexIcon,
185
+ 'house': HouseIcon,
186
+ 'hotel': HotelIcon,
187
+ 'school': SchoolIcon,
188
+ 'hospital': HospitalIcon,
189
+ 'map': MapIcon,
190
+ 'map-pin': MapPinIcon,
191
+ 'map-pinned': MapPinnedIcon,
192
+ 'globe': GlobeIcon,
193
+ 'earth': EarthIcon,
194
+ 'compass': CompassIcon,
195
+ 'navigation': NavigationIcon,
196
+ 'plane': PlaneIcon,
197
+ 'car': CarIcon,
198
+ 'bus': BusIcon,
199
+ 'train-front': TrainFrontIcon,
200
+ 'ship': ShipIcon,
201
+ 'bike': BikeIcon,
202
+ 'mountain': MountainIcon,
203
+ 'code': CodeIcon,
204
+ 'terminal': TerminalIcon,
205
+ 'server': ServerIcon,
206
+ 'database': DatabaseIcon,
207
+ 'cloud': CloudIcon,
208
+ 'cpu': CpuIcon,
209
+ 'monitor': MonitorIcon,
210
+ 'laptop': LaptopIcon,
211
+ 'smartphone': SmartphoneIcon,
212
+ 'tablet': TabletIcon,
213
+ 'wifi': WifiIcon,
214
+ 'bluetooth': BluetoothIcon,
215
+ 'plug': PlugIcon,
216
+ 'hard-drive': HardDriveIcon,
217
+ 'git-branch': GitBranchIcon,
218
+ 'git-pull-request': GitPullRequestIcon,
219
+ 'bot': BotIcon,
220
+ 'brain': BrainIcon,
221
+ 'puzzle': PuzzleIcon,
222
+ 'blocks': BlocksIcon,
223
+ 'bug': BugIcon,
224
+ 'webhook': WebhookIcon,
225
+ 'link': LinkIcon,
226
+ 'qr-code': QrCodeIcon,
227
+ 'keyboard': KeyboardIcon,
228
+ 'printer': PrinterIcon,
229
+ 'circle': CircleIcon,
230
+ 'circle-check': CircleCheckIcon,
231
+ 'circle-x': CircleXIcon,
232
+ 'circle-alert': CircleAlertIcon,
233
+ 'circle-question-mark': CircleQuestionMarkIcon,
234
+ 'circle-pause': CirclePauseIcon,
235
+ 'circle-play': CirclePlayIcon,
236
+ 'circle-dot': CircleDotIcon,
237
+ 'circle-dashed': CircleDashedIcon,
238
+ 'triangle-alert': TriangleAlertIcon,
239
+ 'octagon-alert': OctagonAlertIcon,
240
+ 'info': InfoIcon,
241
+ 'ban': BanIcon,
242
+ 'check': CheckIcon,
243
+ 'x': XIcon,
244
+ 'loader': LoaderIcon,
245
+ 'refresh-cw': RefreshCwIcon,
246
+ 'eye': EyeIcon,
247
+ 'eye-off': EyeOffIcon,
248
+ 'flame': FlameIcon,
249
+ 'zap': ZapIcon,
250
+ 'sparkles': SparklesIcon,
251
+ 'star': StarIcon,
252
+ 'heart': HeartIcon,
253
+ 'thumbs-down': ThumbsDownIcon,
254
+ 'badge-check': BadgeCheckIcon,
255
+ 'shield-alert': ShieldAlertIcon,
256
+ 'bookmark': BookmarkIcon,
257
+ 'pin': PinIcon,
258
+ 'book': BookIcon,
259
+ 'pen': PenIcon,
260
+ 'pencil': PencilIcon,
261
+ 'palette': PaletteIcon,
262
+ 'brush': BrushIcon,
263
+ 'camera': CameraIcon,
264
+ 'image': ImageIcon,
265
+ 'music': MusicIcon,
266
+ 'headphones': HeadphonesIcon,
267
+ 'gamepad-2': Gamepad2Icon,
268
+ 'umbrella': UmbrellaIcon,
269
+ 'shirt': ShirtIcon,
270
+ 'watch': WatchIcon,
271
+ 'coffee': CoffeeIcon,
272
+ 'utensils': UtensilsIcon,
273
+ 'lamp': LampIcon,
274
+ 'armchair': ArmchairIcon,
275
+ 'bed': BedIcon,
276
+ 'scissors': ScissorsIcon,
277
+ 'ruler': RulerIcon,
278
+ 'trash': TrashIcon,
279
+ 'box': BoxIcon,
280
+ 'magnet': MagnetIcon,
281
+ 'flask-conical': FlaskConicalIcon,
282
+ 'microscope': MicroscopeIcon,
283
+ 'stethoscope': StethoscopeIcon,
284
+ 'pill': PillIcon,
285
+ 'dumbbell': DumbbellIcon,
286
+ 'leaf': LeafIcon,
287
+ 'tree-pine': TreePineIcon,
288
+ 'trees': TreesIcon,
289
+ 'flower': FlowerIcon,
290
+ 'flower-2': Flower2Icon,
291
+ 'sprout': SproutIcon,
292
+ 'sun': SunIcon,
293
+ 'moon': MoonIcon,
294
+ 'cloud-rain': CloudRainIcon,
295
+ 'cloud-sun': CloudSunIcon,
296
+ 'snowflake': SnowflakeIcon,
297
+ 'droplet': DropletIcon,
298
+ 'waves-horizontal': WavesHorizontalIcon,
299
+ 'wind': WindIcon,
300
+ 'mountain-snow': MountainSnowIcon,
301
+ 'bird': BirdIcon,
302
+ 'fish': FishIcon,
303
+ 'cat': CatIcon,
304
+ 'dog': DogIcon,
305
+ 'paw-print': PawPrintIcon,
306
+ 'feather': FeatherIcon,
307
+ 'apple': AppleIcon,
308
+ 'carrot': CarrotIcon,
309
+ })
@@ -0,0 +1,18 @@
1
+ import type { LucideIcon } from 'lucide-react'
2
+ import type { PickerIconCategory, PickerIconEntry } from '../vocabulary/types.js'
3
+
4
+ /** Looks icons up and searches the catalogue. */
5
+ export interface PickerIconHelper {
6
+ /** The component for a stored name; unknown, empty or absent → the fallback icon (`circle`). */
7
+ iconOf: (name?: string | null) => LucideIcon
8
+ /** Whether a value names a catalogue icon. */
9
+ has: (name: unknown) => name is string
10
+ /**
11
+ * Catalogue entries matching a query — every word must start a word of the name, a search word or
12
+ * the category; the closest names first. An empty query lists them all. `names` narrows the
13
+ * catalogue and sets the order (an application's own icon list).
14
+ */
15
+ search: (query: string, names?: readonly string[]) => PickerIconEntry[]
16
+ /** The entries of one category, in catalogue order (or `names`' order). */
17
+ byCategory: (category: PickerIconCategory, names?: readonly string[]) => PickerIconEntry[]
18
+ }
@@ -0,0 +1,70 @@
1
+ import type { LucideIcon } from 'lucide-react'
2
+ import { PICKER_ICONS } from './icons/consts.js'
3
+ import type { PickerIconHelper } from './icons/types.js'
4
+ import { PICKER_FALLBACK_ICON, PICKER_ICON_ENTRIES } from './vocabulary/consts.js'
5
+ import type { PickerIconCategory, PickerIconEntry } from './vocabulary/types.js'
6
+
7
+ export const createPickerIconHelper = (): PickerIconHelper => {
8
+ const wordsOf = (text: string): string[] => text.toLowerCase().split(/[\s,-]+/).filter(word => word !== '')
9
+ const byName = new Map(PICKER_ICON_ENTRIES.map(entry => [entry.name, entry]))
10
+ // Each entry's words split once: its name's and its search words'.
11
+ const words = new Map(PICKER_ICON_ENTRIES.map(entry => [entry.name, {
12
+ name: wordsOf(entry.name), search: entry.keywords.flatMap(wordsOf),
13
+ }]))
14
+ const fallback = PICKER_ICONS[PICKER_FALLBACK_ICON]
15
+
16
+ const has = (name: unknown): name is string =>
17
+ typeof name === 'string' && Object.prototype.hasOwnProperty.call(PICKER_ICONS, name)
18
+
19
+ const iconOf = (name?: string | null): LucideIcon => has(name) ? PICKER_ICONS[name] : fallback
20
+
21
+ const scope = (names?: readonly string[]): PickerIconEntry[] => names == null
22
+ ? [...PICKER_ICON_ENTRIES]
23
+ : names.flatMap(name => {
24
+ const entry = byName.get(name)
25
+
26
+ return entry != null ? [entry] : []
27
+ })
28
+
29
+ /** 0 exact name, 1 name prefix, 2 a name word, 3 a search word, 4 the category; -1 no match. */
30
+ const rank = (entry: PickerIconEntry, query: string, terms: string[]): number => {
31
+ if (entry.name === query) {
32
+ return 0
33
+ }
34
+ const own = words.get(entry.name) ?? { name: [], search: [] }
35
+ const starts = (pool: string[]) => terms.every(term => pool.some(word => word.startsWith(term)))
36
+ if (!starts([...own.name, ...own.search, entry.category])) {
37
+ return -1
38
+ }
39
+ if (entry.name.startsWith(query.replace(/\s+/g, '-'))) {
40
+ return 1
41
+ }
42
+ if (starts(own.name)) {
43
+ return 2
44
+ }
45
+
46
+ return starts([...own.name, ...own.search]) ? 3 : 4
47
+ }
48
+
49
+ const search = (query: string, names?: readonly string[]): PickerIconEntry[] => {
50
+ const entries = scope(names)
51
+ const normalized = query.trim().toLowerCase().replace(/\s+/g, ' ')
52
+ if (normalized === '') {
53
+ return entries
54
+ }
55
+ const terms = wordsOf(normalized)
56
+
57
+ return entries
58
+ .map((entry, order) => ({ entry, order, score: rank(entry, normalized, terms) }))
59
+ .filter(hit => hit.score >= 0)
60
+ .sort((a, b) => a.score - b.score || a.order - b.order)
61
+ .map(hit => hit.entry)
62
+ }
63
+
64
+ const byCategory = (category: PickerIconCategory, names?: readonly string[]): PickerIconEntry[] =>
65
+ scope(names).filter(entry => entry.category === category)
66
+
67
+ return { iconOf, has, search, byCategory }
68
+ }
69
+
70
+ export const pickerIconHelper = createPickerIconHelper()
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `@owlmeans/web-panel/picker` — the standard icon + colour picker and the parts it is made of,
3
+ * plus everything of `./picker/vocabulary`. Not re-exported by the package root: only a bundle that
4
+ * imports this subpath carries the icon catalogue.
5
+ */
6
+
7
+ export * from './vocabulary.js'
8
+ export { PICKER_ICONS } from './icons/consts.js'
9
+ export { pickerIconHelper, createPickerIconHelper } from './icons.js'
10
+ export type * from './icons/types.js'
11
+ export * from '../components/picker/index.js'
@@ -0,0 +1,37 @@
1
+ /** An sRGB colour, each channel 0..1. */
2
+ export interface Rgb {
3
+ r: number
4
+ g: number
5
+ b: number
6
+ }
7
+
8
+ /** A colour in OKLCH: lightness 0..1, chroma, hue in radians. */
9
+ export interface Oklch {
10
+ l: number
11
+ c: number
12
+ h: number
13
+ }
14
+
15
+ /** The four mode-dependent values a custom colour needs, each a lowercase `#rrggbb`. */
16
+ export interface DerivedColor {
17
+ ink: string
18
+ soft: string
19
+ inkDark: string
20
+ softDark: string
21
+ }
22
+
23
+ /** Colour arithmetic for custom colours: parsing, WCAG contrast and OKLCH with gamut fitting. */
24
+ export interface ColorUtils {
25
+ /** A six-digit `#rrggbb` (any case) → channels; anything else → `null`. */
26
+ parse: (hex: string) => Rgb | null
27
+ /** Channels → lowercase `#rrggbb`, clamped and rounded. */
28
+ hex: (rgb: Rgb) => string
29
+ /** WCAG 2 contrast ratio of two six-digit hex colours, 1..21. */
30
+ contrast: (a: string, b: string) => number
31
+ /**
32
+ * The ink and ground a custom colour renders with in both modes: grounds in the colour's hue,
33
+ * inks moved only as far in lightness as it takes to keep 4.5:1 on the ground and on the page
34
+ * (white, black). A colour that already reads well keeps its own value as the light ink.
35
+ */
36
+ derive: (hex: string) => DerivedColor
37
+ }