@logicplanes/kaeso-ui 0.1.0 → 0.2.0

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 (246) hide show
  1. package/AGENTS.md +1 -0
  2. package/LICENSE +1 -1
  3. package/ai/component-guides.md +269 -7
  4. package/ai/component-registry.json +600 -800
  5. package/ai/component-registry.md +200 -141
  6. package/ai/icons.md +2 -2
  7. package/ai/tokens.md +1 -1
  8. package/dist/blocks/delete-resource.js +1 -1
  9. package/dist/blocks/pages.js +3 -3
  10. package/dist/blocks/resource-list.js +2 -2
  11. package/dist/chunks/app-frame-BXh-06HL.js +214 -0
  12. package/dist/chunks/app-frame-BXh-06HL.js.map +1 -0
  13. package/dist/chunks/{banner-BiziJuBZ.js → banner-DxGBPQ7p.js} +2 -2
  14. package/dist/chunks/{banner-BiziJuBZ.js.map → banner-DxGBPQ7p.js.map} +1 -1
  15. package/dist/chunks/{button-BHKAE6ui.js → button-DQvoOxVQ.js} +2 -2
  16. package/dist/chunks/{button-BHKAE6ui.js.map → button-DQvoOxVQ.js.map} +1 -1
  17. package/dist/chunks/{calendar-B5SSTE56.js → calendar-CN3YJi2k.js} +3 -3
  18. package/dist/chunks/{calendar-B5SSTE56.js.map → calendar-CN3YJi2k.js.map} +1 -1
  19. package/dist/chunks/code-BADhvsgC.js +33 -0
  20. package/dist/chunks/code-BADhvsgC.js.map +1 -0
  21. package/dist/chunks/{code-block-BbK6E4Eo.js → code-block-DxtladFW.js} +41 -37
  22. package/dist/chunks/code-block-DxtladFW.js.map +1 -0
  23. package/dist/chunks/{combobox-D8pQk22r.js → combobox-D30Wt11R.js} +4 -4
  24. package/dist/chunks/{combobox-D8pQk22r.js.map → combobox-D30Wt11R.js.map} +1 -1
  25. package/dist/chunks/{copy-button-mAzHjYXq.js → copy-button-DXxn-YYZ.js} +4 -4
  26. package/dist/chunks/{copy-button-mAzHjYXq.js.map → copy-button-DXxn-YYZ.js.map} +1 -1
  27. package/dist/chunks/{core-Bgefcs3z.js → core-K960A4OT.js} +119 -120
  28. package/dist/chunks/core-K960A4OT.js.map +1 -0
  29. package/dist/chunks/{date-popup-Er1oQwtU.js → date-popup-B-6xhb-1.js} +3 -3
  30. package/dist/chunks/{date-popup-Er1oQwtU.js.map → date-popup-B-6xhb-1.js.map} +1 -1
  31. package/dist/chunks/{de-BCg1eRVd.js → de-CTAo4KL7.js} +10 -10
  32. package/dist/chunks/de-CTAo4KL7.js.map +1 -0
  33. package/dist/chunks/dialog-LNKgPEsV.js +319 -0
  34. package/dist/chunks/dialog-LNKgPEsV.js.map +1 -0
  35. package/dist/chunks/{icon-Bha63LaN.js → icon-CBzvyEqC.js} +30 -29
  36. package/dist/chunks/icon-CBzvyEqC.js.map +1 -0
  37. package/dist/chunks/{icon-button-Bw67oKtx.js → icon-button-_x1RUphC.js} +3 -3
  38. package/dist/chunks/{icon-button-Bw67oKtx.js.map → icon-button-_x1RUphC.js.map} +1 -1
  39. package/dist/chunks/{identity-DQinp-Ep.js → identity-BtZC_d_Q.js} +3 -3
  40. package/dist/chunks/{identity-DQinp-Ep.js.map → identity-BtZC_d_Q.js.map} +1 -1
  41. package/dist/chunks/{input-Biakz6GB.js → input-CNTfI6YE.js} +2 -2
  42. package/dist/chunks/{input-Biakz6GB.js.map → input-CNTfI6YE.js.map} +1 -1
  43. package/dist/chunks/{input-group-DQqEPFj_.js → input-group-CYA1MEoZ.js} +2 -2
  44. package/dist/chunks/{input-group-DQqEPFj_.js.map → input-group-CYA1MEoZ.js.map} +1 -1
  45. package/dist/chunks/{iso-field-CznqNVrH.js → iso-field-1qmg7TP8.js} +2 -2
  46. package/dist/chunks/{iso-field-CznqNVrH.js.map → iso-field-1qmg7TP8.js.map} +1 -1
  47. package/dist/chunks/linear-scale-BWKeRqDX.js +37 -0
  48. package/dist/chunks/linear-scale-BWKeRqDX.js.map +1 -0
  49. package/dist/chunks/{link-tTapNTpM.js → link-vz9aV8WX.js} +9 -2
  50. package/dist/chunks/link-vz9aV8WX.js.map +1 -0
  51. package/dist/chunks/{list-CN8pO8lv.js → list-CzaiyNja.js} +119 -111
  52. package/dist/chunks/list-CzaiyNja.js.map +1 -0
  53. package/dist/chunks/{markdown-C-iJsYnd.js → markdown-5NyaHHfN.js} +6 -6
  54. package/dist/chunks/{markdown-C-iJsYnd.js.map → markdown-5NyaHHfN.js.map} +1 -1
  55. package/dist/chunks/{menu-OURWt_hD.js → menu-DyVPwgfF.js} +2 -2
  56. package/dist/chunks/{menu-OURWt_hD.js.map → menu-DyVPwgfF.js.map} +1 -1
  57. package/dist/chunks/nav-sheet-BIErlV74.js +58 -0
  58. package/dist/chunks/nav-sheet-BIErlV74.js.map +1 -0
  59. package/dist/chunks/{logo-VmXYhIJL.js → nav-wordmark-DLkItdvo.js} +12 -93
  60. package/dist/chunks/nav-wordmark-DLkItdvo.js.map +1 -0
  61. package/dist/chunks/observe-resize-DhxhmoyB.js +25 -0
  62. package/dist/chunks/observe-resize-DhxhmoyB.js.map +1 -0
  63. package/dist/chunks/{page-header-BIRswR73.js → page-header-CEPZzhRp.js} +2 -2
  64. package/dist/chunks/{page-header-BIRswR73.js.map → page-header-CEPZzhRp.js.map} +1 -1
  65. package/dist/chunks/{pagination-DYdLm18-.js → pagination-CCMxQ5pH.js} +3 -3
  66. package/dist/chunks/{pagination-DYdLm18-.js.map → pagination-CCMxQ5pH.js.map} +1 -1
  67. package/dist/chunks/{range-popup-AbRzgHtY.js → range-popup-DGOnGGag.js} +4 -4
  68. package/dist/chunks/{range-popup-AbRzgHtY.js.map → range-popup-DGOnGGag.js.map} +1 -1
  69. package/dist/chunks/resize-motion-CMaidkwe.js +101 -0
  70. package/dist/chunks/resize-motion-CMaidkwe.js.map +1 -0
  71. package/dist/chunks/{rights-CXo7zEf6.js → rights-BbiJ0AJB.js} +4 -4
  72. package/dist/chunks/{rights-CXo7zEf6.js.map → rights-BbiJ0AJB.js.map} +1 -1
  73. package/dist/chunks/{section-XStLtXKa.js → section-DzOLLN1p.js} +3 -3
  74. package/dist/chunks/section-DzOLLN1p.js.map +1 -0
  75. package/dist/chunks/{segmented-CDTx2n29.js → segmented-MrinfDL8.js} +36 -35
  76. package/dist/chunks/segmented-MrinfDL8.js.map +1 -0
  77. package/dist/chunks/select-Bc4kRiSG.js +227 -0
  78. package/dist/chunks/select-Bc4kRiSG.js.map +1 -0
  79. package/dist/chunks/{sidebar-C4fL_KMm.js → sidebar-5IA18LuP.js} +180 -183
  80. package/dist/chunks/sidebar-5IA18LuP.js.map +1 -0
  81. package/dist/chunks/{sidebar-menu-sd9vCpDy.js → sidebar-menu-DRWRxcJ3.js} +2 -2
  82. package/dist/chunks/{sidebar-menu-sd9vCpDy.js.map → sidebar-menu-DRWRxcJ3.js.map} +1 -1
  83. package/dist/chunks/{switch-CztLhA8F.js → switch-XMY_CQE-.js} +2 -2
  84. package/dist/chunks/{switch-CztLhA8F.js.map → switch-XMY_CQE-.js.map} +1 -1
  85. package/dist/chunks/{tag-BsmQ1xPj.js → tag-Dg89uYpV.js} +3 -3
  86. package/dist/chunks/{tag-BsmQ1xPj.js.map → tag-Dg89uYpV.js.map} +1 -1
  87. package/dist/chunks/{text-BPglS3vq.js → text--5MKh2G4.js} +3 -3
  88. package/dist/chunks/{text-BPglS3vq.js.map → text--5MKh2G4.js.map} +1 -1
  89. package/dist/chunks/{textarea-Bvk7N2bh.js → textarea-Cj8iR82R.js} +3 -3
  90. package/dist/chunks/{textarea-Bvk7N2bh.js.map → textarea-Cj8iR82R.js.map} +1 -1
  91. package/dist/chunks/theme-provider-DJhORMlc.js +72 -0
  92. package/dist/chunks/theme-provider-DJhORMlc.js.map +1 -0
  93. package/dist/chunks/tooltip-DEbCCsru.js +151 -0
  94. package/dist/chunks/tooltip-DEbCCsru.js.map +1 -0
  95. package/dist/chunks/{tooltip-root-DWhtAtFb.js → tooltip-root-DRd4ciUv.js} +2 -2
  96. package/dist/chunks/{tooltip-root-DWhtAtFb.js.map → tooltip-root-DRd4ciUv.js.map} +1 -1
  97. package/dist/chunks/use-layout-width-CbSDbRb0.js +28 -0
  98. package/dist/chunks/use-layout-width-CbSDbRb0.js.map +1 -0
  99. package/dist/chunks/use-scroll-margin-DfdTc_5D.js +26 -0
  100. package/dist/chunks/use-scroll-margin-DfdTc_5D.js.map +1 -0
  101. package/dist/chunks/use-truncated-CW0hByYt.js +24 -0
  102. package/dist/chunks/use-truncated-CW0hByYt.js.map +1 -0
  103. package/dist/chunks/{virtual-rows-BgMdVelU.js → virtual-rows-BZe49bKi.js} +2 -2
  104. package/dist/chunks/{virtual-rows-BgMdVelU.js.map → virtual-rows-BZe49bKi.js.map} +1 -1
  105. package/dist/chunks/{zh-CN-cPjO1OOo.js → zh-CN-C7GmVswt.js} +15 -15
  106. package/dist/chunks/zh-CN-C7GmVswt.js.map +1 -0
  107. package/dist/components/app-frame.js +3 -1
  108. package/dist/components/banner.js +1 -1
  109. package/dist/components/button-group.js +2 -2
  110. package/dist/components/button.js +1 -1
  111. package/dist/components/calendar.js +1 -1
  112. package/dist/components/charts/bar.js +78 -77
  113. package/dist/components/charts/bar.js.map +1 -1
  114. package/dist/components/charts/donut.js +2 -2
  115. package/dist/components/charts/gauge.js +1 -1
  116. package/dist/components/charts/sankey.js +1 -1
  117. package/dist/components/charts/timeseries.js +75 -75
  118. package/dist/components/charts/timeseries.js.map +1 -1
  119. package/dist/components/charts.js +1 -1
  120. package/dist/components/code-block.js +1 -1
  121. package/dist/components/code.js +1 -1
  122. package/dist/components/combobox.js +1 -1
  123. package/dist/components/command-palette.js +105 -97
  124. package/dist/components/command-palette.js.map +1 -1
  125. package/dist/components/copy-button.js +1 -1
  126. package/dist/components/data-table.js +94 -95
  127. package/dist/components/data-table.js.map +1 -1
  128. package/dist/components/date-picker.js +3 -3
  129. package/dist/components/date-picker.js.map +1 -1
  130. package/dist/components/dialog.js +141 -153
  131. package/dist/components/dialog.js.map +1 -1
  132. package/dist/components/display-options.js +5 -5
  133. package/dist/components/filter-chip.js +1 -1
  134. package/dist/components/flow.js +37 -36
  135. package/dist/components/flow.js.map +1 -1
  136. package/dist/components/icon-button.js +1 -1
  137. package/dist/components/icon.js +1 -1
  138. package/dist/components/input.js +5 -5
  139. package/dist/components/kaeso/conversation.js +2 -2
  140. package/dist/components/kaeso/identity.js +1 -1
  141. package/dist/components/kaeso/moments.js +3 -3
  142. package/dist/components/kaeso/rights.js +1 -1
  143. package/dist/components/kaeso/usage.js +1 -1
  144. package/dist/components/kaeso.js +4 -4
  145. package/dist/components/key-value.js +3 -3
  146. package/dist/components/link.js +1 -1
  147. package/dist/components/list.js +1 -1
  148. package/dist/components/logo.js +101 -1
  149. package/dist/components/logo.js.map +1 -0
  150. package/dist/components/markdown.js +1 -1
  151. package/dist/components/menu.js +1 -1
  152. package/dist/components/page-header.js +1 -1
  153. package/dist/components/pagination.js +1 -1
  154. package/dist/components/playground.js +8 -8
  155. package/dist/components/scroll-area.js +30 -23
  156. package/dist/components/scroll-area.js.map +1 -1
  157. package/dist/components/section.js +1 -1
  158. package/dist/components/segmented.js +1 -1
  159. package/dist/components/select.js +1 -1
  160. package/dist/components/sheet.js +46 -41
  161. package/dist/components/sheet.js.map +1 -1
  162. package/dist/components/sidebar.js +1 -1
  163. package/dist/components/stat.js +75 -76
  164. package/dist/components/stat.js.map +1 -1
  165. package/dist/components/switch.js +1 -1
  166. package/dist/components/tag.js +1 -1
  167. package/dist/components/text.js +1 -1
  168. package/dist/components/theme-image.js +38 -0
  169. package/dist/components/theme-image.js.map +1 -0
  170. package/dist/components/theme-menu.js +3 -3
  171. package/dist/components/theme-select.js +58 -0
  172. package/dist/components/theme-select.js.map +1 -0
  173. package/dist/components/toast.js +91 -92
  174. package/dist/components/toast.js.map +1 -1
  175. package/dist/components/tooltip.js +1 -1
  176. package/dist/i18n-provider.js +1 -1
  177. package/dist/index.js +76 -74
  178. package/dist/kaeso.css +39 -16
  179. package/dist/styles.css +1 -1
  180. package/dist/theme.js +1 -1
  181. package/dist/types/components/app-frame/app-frame.d.ts +2 -10
  182. package/dist/types/components/app-frame/docs.d.ts +1 -0
  183. package/dist/types/components/app-frame/index.d.ts +1 -0
  184. package/dist/types/components/app-frame/nav-sheet.d.ts +11 -0
  185. package/dist/types/components/charts/linear-scale.d.ts +17 -0
  186. package/dist/types/components/code/code.d.ts +16 -0
  187. package/dist/types/components/code/docs.d.ts +1 -0
  188. package/dist/types/components/code-block/code-block.d.ts +2 -0
  189. package/dist/types/components/code-block/docs.d.ts +4 -0
  190. package/dist/types/components/command-palette/command-palette.d.ts +1 -0
  191. package/dist/types/components/command-palette/docs.d.ts +1 -0
  192. package/dist/types/components/dialog/dialog.d.ts +5 -2
  193. package/dist/types/components/dialog/docs.d.ts +10 -0
  194. package/dist/types/components/dialog/index.d.ts +1 -0
  195. package/dist/types/components/dialog/scope.d.ts +9 -0
  196. package/dist/types/components/dialog/step-dialog.d.ts +9 -1
  197. package/dist/types/components/link/link.d.ts +8 -0
  198. package/dist/types/components/logo/nav-wordmark.d.ts +6 -0
  199. package/dist/types/components/scroll-area/scroll-area.d.ts +3 -3
  200. package/dist/types/components/theme-image/docs.d.ts +13 -0
  201. package/dist/types/components/theme-image/index.d.ts +1 -0
  202. package/dist/types/components/theme-image/theme-image.d.ts +23 -0
  203. package/dist/types/components/theme-select/docs.d.ts +10 -0
  204. package/dist/types/components/theme-select/index.d.ts +1 -0
  205. package/dist/types/components/theme-select/theme-select.d.ts +34 -0
  206. package/dist/types/icons/groups.d.ts +1 -1
  207. package/dist/types/icons/vocabulary.d.ts +5 -0
  208. package/dist/types/index.d.ts +2 -0
  209. package/dist/types/theme/theme-provider.d.ts +1 -1
  210. package/dist/types/utils/dialog-scope.d.ts +7 -0
  211. package/dist/types/utils/lazy-module.d.ts +7 -2
  212. package/dist/types/utils/observe-resize.d.ts +1 -0
  213. package/dist/types/utils/resize-motion.d.ts +2 -0
  214. package/foundations/motion.md +1 -0
  215. package/package.json +2 -2
  216. package/dist/chunks/app-frame-BBIMch8X.js +0 -224
  217. package/dist/chunks/app-frame-BBIMch8X.js.map +0 -1
  218. package/dist/chunks/code-DDyOlIFO.js +0 -23
  219. package/dist/chunks/code-DDyOlIFO.js.map +0 -1
  220. package/dist/chunks/code-block-BbK6E4Eo.js.map +0 -1
  221. package/dist/chunks/core-Bgefcs3z.js.map +0 -1
  222. package/dist/chunks/de-BCg1eRVd.js.map +0 -1
  223. package/dist/chunks/dialog-CVqSVk3T.js +0 -283
  224. package/dist/chunks/dialog-CVqSVk3T.js.map +0 -1
  225. package/dist/chunks/icon-Bha63LaN.js.map +0 -1
  226. package/dist/chunks/link-tTapNTpM.js.map +0 -1
  227. package/dist/chunks/list-CN8pO8lv.js.map +0 -1
  228. package/dist/chunks/logo-VmXYhIJL.js.map +0 -1
  229. package/dist/chunks/restore-focus-Cap1Q-R3.js +0 -19
  230. package/dist/chunks/restore-focus-Cap1Q-R3.js.map +0 -1
  231. package/dist/chunks/section-XStLtXKa.js.map +0 -1
  232. package/dist/chunks/segmented-CDTx2n29.js.map +0 -1
  233. package/dist/chunks/select-Ca3HGsN1.js +0 -223
  234. package/dist/chunks/select-Ca3HGsN1.js.map +0 -1
  235. package/dist/chunks/sidebar-C4fL_KMm.js.map +0 -1
  236. package/dist/chunks/theme-provider-mgUaQK7L.js +0 -69
  237. package/dist/chunks/theme-provider-mgUaQK7L.js.map +0 -1
  238. package/dist/chunks/tooltip-CDu00nzg.js +0 -124
  239. package/dist/chunks/tooltip-CDu00nzg.js.map +0 -1
  240. package/dist/chunks/use-layout-width-DZaLOQMT.js +0 -27
  241. package/dist/chunks/use-layout-width-DZaLOQMT.js.map +0 -1
  242. package/dist/chunks/use-scroll-margin-DWcfIXac.js +0 -25
  243. package/dist/chunks/use-scroll-margin-DWcfIXac.js.map +0 -1
  244. package/dist/chunks/use-truncated-DmQoePvG.js +0 -25
  245. package/dist/chunks/use-truncated-DmQoePvG.js.map +0 -1
  246. package/dist/chunks/zh-CN-cPjO1OOo.js.map +0 -1
@@ -1,37 +1,38 @@
1
- import { Add01Icon as e, AiBrain01Icon as t, Alert02Icon as n, AlertCircleIcon as r, Analytics01Icon as i, ArrowDataTransferVerticalIcon as a, ArrowDown01Icon as o, ArrowExpand01Icon as s, ArrowLeft01Icon as c, ArrowReloadHorizontalIcon as l, ArrowRight01Icon as u, ArrowShrink02Icon as d, ArrowUp01Icon as f, ArrowUpRight01Icon as p, Audit01Icon as m, Building03Icon as h, Calendar03Icon as g, Cancel01Icon as _, ChartLineData01Icon as v, CheckmarkCircle02Icon as y, Clock01Icon as b, CodeIcon as x, ComputerIcon as S, Copy01Icon as C, CpuIcon as w, DashboardSquare01Icon as T, Database01Icon as E, Delete02Icon as D, Download01Icon as O, Edit02Icon as k, EyeIcon as A, FilterHorizontalIcon as j, Folder01Icon as M, GaugeIcon as N, GithubIcon as P, GridViewIcon as F, HelpCircleIcon as I, Home01Icon as L, Image01Icon as R, InformationCircleIcon as z, Key01Icon as B, KeyboardIcon as V, LaptopIcon as H, Layers01Icon as ee, LeftToRightListBulletIcon as U, Link01Icon as W, LinkSquare02Icon as G, LockKeyIcon as K, Logout01Icon as q, Mail01Icon as J, Menu01Icon as Y, MinusSignIcon as X, Moon02Icon as Z, MoreHorizontalIcon as Q, Notification03Icon as $, Pdf01Icon as te, PlugSocketIcon as ne, Refresh01Icon as re, Robot01Icon as ie, Route01Icon as ae, Search01Icon as oe, ServerStack01Icon as se, Settings01Icon as ce, ShieldKeyIcon as le, SidebarLeftIcon as ue, SidebarRightIcon as de, SlidersHorizontalIcon as fe, Sorting05Icon as pe, SourceCodeIcon as me, Sun03Icon as he, TestTube01Icon as ge, Tick02Icon as _e, ToolsIcon as ve, UnfoldMoreIcon as ye, Upload01Icon as be, User03Icon as xe, UserGroupIcon as Se, ViewIcon as Ce, ViewOffSlashIcon as we, Wallet01Icon as Te } from "@hugeicons/core-free-icons";
1
+ import { Add01Icon as e, AiBrain01Icon as t, Alert02Icon as n, AlertCircleIcon as r, Analytics01Icon as i, ArrowDataTransferVerticalIcon as a, ArrowDown01Icon as o, ArrowExpand01Icon as s, ArrowLeft01Icon as c, ArrowReloadHorizontalIcon as l, ArrowRight01Icon as u, ArrowShrink02Icon as d, ArrowUp01Icon as f, ArrowUpRight01Icon as p, Audit01Icon as m, Building03Icon as h, Calendar03Icon as g, Cancel01Icon as _, ChartLineData01Icon as v, CheckmarkCircle02Icon as y, Clock01Icon as b, CodeIcon as x, ComputerIcon as S, Copy01Icon as C, CpuIcon as w, DashboardSquare01Icon as T, Database01Icon as E, Delete02Icon as D, Download01Icon as O, Edit02Icon as k, EyeIcon as A, FilterHorizontalIcon as j, Folder01Icon as M, GaugeIcon as N, GithubIcon as P, GridViewIcon as F, HelpCircleIcon as I, Home01Icon as L, Image01Icon as R, InformationCircleIcon as z, Key01Icon as B, KeyboardIcon as V, LaptopIcon as H, Layers01Icon as ee, LeftToRightListBulletIcon as U, Link01Icon as W, LinkSquare02Icon as G, LockKeyIcon as K, Logout01Icon as q, Mail01Icon as J, Menu01Icon as Y, MinusSignIcon as X, Moon02Icon as Z, MoreHorizontalIcon as Q, Notification03Icon as $, PackageReceive01Icon as te, Pdf01Icon as ne, PlugSocketIcon as re, Refresh01Icon as ie, Robot01Icon as ae, Route01Icon as oe, Search01Icon as se, ServerStack01Icon as ce, Settings01Icon as le, ShieldKeyIcon as ue, SidebarLeftIcon as de, SidebarRightIcon as fe, SlidersHorizontalIcon as pe, Sorting05Icon as me, SourceCodeIcon as he, Sun03Icon as ge, TestTube01Icon as _e, Tick02Icon as ve, ToolsIcon as ye, UnfoldMoreIcon as be, Upload01Icon as xe, User03Icon as Se, UserGroupIcon as Ce, ViewIcon as we, ViewOffSlashIcon as Te, Wallet01Icon as Ee } from "@hugeicons/core-free-icons";
2
2
  //#region src/icons/vocabulary.ts
3
- var Ee = {
3
+ var De = {
4
4
  key: B,
5
- providerKey: le,
5
+ providerKey: ue,
6
6
  project: M,
7
7
  organization: h,
8
8
  model: t,
9
- playground: ge,
9
+ playground: _e,
10
10
  alias: W,
11
11
  limit: N,
12
- budget: Te,
12
+ budget: Ee,
13
13
  requestLog: U,
14
14
  usage: i,
15
- member: xe,
16
- members: Se,
17
- serviceAccount: ie,
18
- settings: ce,
15
+ member: Se,
16
+ members: Ce,
17
+ serviceAccount: ae,
18
+ settings: le,
19
19
  audit: m,
20
- instance: se,
21
- provider: ne,
22
- route: ae,
20
+ instance: ce,
21
+ provider: re,
22
+ route: oe,
23
23
  gateway: a,
24
24
  database: E,
25
+ update: te,
25
26
  security: K,
26
27
  session: H,
27
28
  overview: T,
28
29
  chart: v,
29
30
  home: L,
30
- tools: ve,
31
+ tools: ye,
31
32
  reasoning: w,
32
33
  vision: R,
33
- pdf: te,
34
- structuredOutput: me,
34
+ pdf: ne,
35
+ structuredOutput: he,
35
36
  signOut: q,
36
37
  copy: C,
37
38
  externalLink: p,
@@ -41,27 +42,27 @@ var Ee = {
41
42
  edit: k,
42
43
  delete: D,
43
44
  download: O,
44
- upload: be,
45
- refresh: re,
45
+ upload: xe,
46
+ refresh: ie,
46
47
  retry: l,
47
- search: oe,
48
+ search: se,
48
49
  filter: j,
49
- displayOptions: fe,
50
+ displayOptions: pe,
50
51
  more: Q,
51
52
  menu: Y,
52
- sort: pe,
53
- switcher: ye,
53
+ sort: me,
54
+ switcher: be,
54
55
  expand: s,
55
56
  collapse: d,
56
- show: Ce,
57
- hide: we,
57
+ show: we,
58
+ hide: Te,
58
59
  reveal: A,
59
- sidebar: ue,
60
- sidePanel: de,
60
+ sidebar: de,
61
+ sidePanel: fe,
61
62
  list: U,
62
63
  board: F,
63
64
  stack: ee,
64
- check: _e,
65
+ check: ve,
65
66
  success: y,
66
67
  warning: n,
67
68
  error: r,
@@ -80,11 +81,11 @@ var Ee = {
80
81
  keyboard: V,
81
82
  help: I,
82
83
  github: P,
83
- themeLight: he,
84
+ themeLight: ge,
84
85
  themeDark: Z,
85
86
  themeSystem: S
86
87
  };
87
88
  //#endregion
88
- export { Ee as t };
89
+ export { De as t };
89
90
 
90
- //# sourceMappingURL=icon-Bha63LaN.js.map
91
+ //# sourceMappingURL=icon-CBzvyEqC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-CBzvyEqC.js","names":["icons","Key01Icon","ShieldKeyIcon","Folder01Icon","Building03Icon","AiBrain01Icon","TestTube01Icon","Link01Icon","GaugeIcon","Wallet01Icon","LeftToRightListBulletIcon","Analytics01Icon","User03Icon","UserGroupIcon","Robot01Icon","Settings01Icon","Audit01Icon","ServerStack01Icon","PlugSocketIcon","Route01Icon","ArrowDataTransferVerticalIcon","Database01Icon","PackageReceive01Icon","LockKeyIcon","LaptopIcon","DashboardSquare01Icon","ChartLineData01Icon","Home01Icon","ToolsIcon","CpuIcon","Image01Icon","Pdf01Icon","SourceCodeIcon","Logout01Icon","Copy01Icon","ArrowUpRight01Icon","LinkSquare02Icon","Add01Icon","Cancel01Icon","Edit02Icon","Delete02Icon","Download01Icon","Upload01Icon","Refresh01Icon","ArrowReloadHorizontalIcon","Search01Icon","FilterHorizontalIcon","SlidersHorizontalIcon","MoreHorizontalIcon","Menu01Icon","Sorting05Icon","UnfoldMoreIcon","ArrowExpand01Icon","ArrowShrink02Icon","ViewIcon","ViewOffSlashIcon","EyeIcon","SidebarLeftIcon","SidebarRightIcon","GridViewIcon","Layers01Icon","Tick02Icon","CheckmarkCircle02Icon","Alert02Icon","AlertCircleIcon","InformationCircleIcon","MinusSignIcon","Notification03Icon","ArrowDown01Icon","ArrowUp01Icon","ArrowLeft01Icon","ArrowRight01Icon","Calendar03Icon","Clock01Icon","CodeIcon","Mail01Icon","KeyboardIcon","HelpCircleIcon","GithubIcon","Sun03Icon","Moon02Icon","ComputerIcon"],"sources":["../../src/icons/vocabulary.ts"],"sourcesContent":["import {\n Add01Icon,\n AiBrain01Icon,\n TestTube01Icon,\n Alert02Icon,\n AlertCircleIcon,\n Analytics01Icon,\n ArrowDown01Icon,\n ArrowLeft01Icon,\n ArrowRight01Icon,\n ArrowUp01Icon,\n ArrowUpRight01Icon,\n ArrowDataTransferVerticalIcon,\n Audit01Icon,\n Building03Icon,\n Calendar03Icon,\n Cancel01Icon,\n CheckmarkCircle02Icon,\n Clock01Icon,\n CodeIcon,\n Copy01Icon,\n CpuIcon,\n Database01Icon,\n Delete02Icon,\n Download01Icon,\n Edit02Icon,\n EyeIcon,\n FilterHorizontalIcon,\n Folder01Icon,\n GaugeIcon,\n GithubIcon,\n HelpCircleIcon,\n Home01Icon,\n Image01Icon,\n InformationCircleIcon,\n Key01Icon,\n KeyboardIcon,\n LeftToRightListBulletIcon,\n Link01Icon,\n LinkSquare02Icon,\n LockKeyIcon,\n Logout01Icon,\n Mail01Icon,\n Menu01Icon,\n Moon02Icon,\n MoreHorizontalIcon,\n PackageReceive01Icon,\n Pdf01Icon,\n PlugSocketIcon,\n Refresh01Icon,\n Robot01Icon,\n Route01Icon,\n Search01Icon,\n ServerStack01Icon,\n Settings01Icon,\n ShieldKeyIcon,\n SidebarLeftIcon,\n SidebarRightIcon,\n SlidersHorizontalIcon,\n Sorting05Icon,\n SourceCodeIcon,\n Sun03Icon,\n Tick02Icon,\n ToolsIcon,\n User03Icon,\n UserGroupIcon,\n ViewIcon,\n ViewOffSlashIcon,\n Wallet01Icon,\n ComputerIcon,\n DashboardSquare01Icon,\n ChartLineData01Icon,\n GridViewIcon,\n Layers01Icon,\n ArrowExpand01Icon,\n ArrowShrink02Icon,\n MinusSignIcon,\n Upload01Icon,\n Notification03Icon,\n ArrowReloadHorizontalIcon,\n UnfoldMoreIcon,\n LaptopIcon,\n} from \"@hugeicons/core-free-icons\";\n\nexport const icons = {\n key: Key01Icon,\n providerKey: ShieldKeyIcon,\n project: Folder01Icon,\n organization: Building03Icon,\n model: AiBrain01Icon,\n playground: TestTube01Icon,\n alias: Link01Icon,\n limit: GaugeIcon,\n budget: Wallet01Icon,\n requestLog: LeftToRightListBulletIcon,\n usage: Analytics01Icon,\n member: User03Icon,\n members: UserGroupIcon,\n serviceAccount: Robot01Icon,\n settings: Settings01Icon,\n audit: Audit01Icon,\n instance: ServerStack01Icon,\n provider: PlugSocketIcon,\n route: Route01Icon,\n gateway: ArrowDataTransferVerticalIcon,\n database: Database01Icon,\n update: PackageReceive01Icon,\n security: LockKeyIcon,\n session: LaptopIcon,\n overview: DashboardSquare01Icon,\n chart: ChartLineData01Icon,\n home: Home01Icon,\n tools: ToolsIcon,\n reasoning: CpuIcon,\n vision: Image01Icon,\n pdf: Pdf01Icon,\n structuredOutput: SourceCodeIcon,\n signOut: Logout01Icon,\n copy: Copy01Icon,\n externalLink: ArrowUpRight01Icon,\n openExternal: LinkSquare02Icon,\n add: Add01Icon,\n close: Cancel01Icon,\n edit: Edit02Icon,\n delete: Delete02Icon,\n download: Download01Icon,\n upload: Upload01Icon,\n refresh: Refresh01Icon,\n retry: ArrowReloadHorizontalIcon,\n search: Search01Icon,\n filter: FilterHorizontalIcon,\n displayOptions: SlidersHorizontalIcon,\n more: MoreHorizontalIcon,\n menu: Menu01Icon,\n sort: Sorting05Icon,\n switcher: UnfoldMoreIcon,\n expand: ArrowExpand01Icon,\n collapse: ArrowShrink02Icon,\n show: ViewIcon,\n hide: ViewOffSlashIcon,\n reveal: EyeIcon,\n sidebar: SidebarLeftIcon,\n sidePanel: SidebarRightIcon,\n list: LeftToRightListBulletIcon,\n board: GridViewIcon,\n stack: Layers01Icon,\n check: Tick02Icon,\n success: CheckmarkCircle02Icon,\n warning: Alert02Icon,\n error: AlertCircleIcon,\n info: InformationCircleIcon,\n minus: MinusSignIcon,\n notification: Notification03Icon,\n chevronDown: ArrowDown01Icon,\n chevronUp: ArrowUp01Icon,\n chevronLeft: ArrowLeft01Icon,\n chevronRight: ArrowRight01Icon,\n arrowRight: ArrowRight01Icon,\n calendar: Calendar03Icon,\n time: Clock01Icon,\n code: CodeIcon,\n mail: Mail01Icon,\n keyboard: KeyboardIcon,\n help: HelpCircleIcon,\n github: GithubIcon,\n themeLight: Sun03Icon,\n themeDark: Moon02Icon,\n themeSystem: ComputerIcon,\n} as const;\n\nexport type IconName = keyof typeof icons;\n"],"mappings":";;AAoFA,IAAaA,KAAQ;CACnB,KAAKC;CACL,aAAaC;CACb,SAASC;CACT,cAAcC;CACd,OAAOC;CACP,YAAYC;CACZ,OAAOC;CACP,OAAOC;CACP,QAAQC;CACR,YAAYC;CACZ,OAAOC;CACP,QAAQC;CACR,SAASC;CACT,gBAAgBC;CAChB,UAAUC;CACV,OAAOC;CACP,UAAUC;CACV,UAAUC;CACV,OAAOC;CACP,SAASC;CACT,UAAUC;CACV,QAAQC;CACR,UAAUC;CACV,SAASC;CACT,UAAUC;CACV,OAAOC;CACP,MAAMC;CACN,OAAOC;CACP,WAAWC;CACX,QAAQC;CACR,KAAKC;CACL,kBAAkBC;CAClB,SAASC;CACT,MAAMC;CACN,cAAcC;CACd,cAAcC;CACd,KAAKC;CACL,OAAOC;CACP,MAAMC;CACN,QAAQC;CACR,UAAUC;CACV,QAAQC;CACR,SAASC;CACT,OAAOC;CACP,QAAQC;CACR,QAAQC;CACR,gBAAgBC;CAChB,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,UAAUC;CACV,QAAQC;CACR,UAAUC;CACV,MAAMC;CACN,MAAMC;CACN,QAAQC;CACR,SAASC;CACT,WAAWC;CACX,MAAMhD;CACN,OAAOiD;CACP,OAAOC;CACP,OAAOC;CACP,SAASC;CACT,SAASC;CACT,OAAOC;CACP,MAAMC;CACN,OAAOC;CACP,cAAcC;CACd,aAAaC;CACb,WAAWC;CACX,aAAaC;CACb,cAAcC;CACd,YAAYA;CACZ,UAAUC;CACV,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,UAAUC;CACV,MAAMC;CACN,QAAQC;CACR,YAAYC;CACZ,WAAWC;CACX,aAAaC;AACf"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { r as e } from "./tooltip-CDu00nzg.js";
3
- import { n as t } from "./button-BHKAE6ui.js";
2
+ import { r as e } from "./tooltip-DEbCCsru.js";
3
+ import { n as t } from "./button-DQvoOxVQ.js";
4
4
  import { forwardRef as n } from "react";
5
5
  import { jsx as r } from "react/jsx-runtime";
6
6
  //#region src/components/icon-button/icon-button.tsx
@@ -47,4 +47,4 @@ process.env.NODE_ENV !== "production" && (o.displayName = "IconButton");
47
47
  //#endregion
48
48
  export { a as n, i as r, o as t };
49
49
 
50
- //# sourceMappingURL=icon-button-Bw67oKtx.js.map
50
+ //# sourceMappingURL=icon-button-_x1RUphC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icon-button-Bw67oKtx.js","names":["Tooltip","Button","KAESO_ICON_BUTTON_VARIANTS","KAESO_ICON_BUTTON_DEFAULT_VARIANTS","IconButton","label","props","btn","disabled","disabledReason","tooltip","tooltipSide","shortcut"],"sources":["../../src/components/icon-button/icon-button.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Button, type ButtonSize, type ButtonVariant } from \"../button/button.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport type { IconData } from \"../icon/icon.js\";\n\nexport const KAESO_ICON_BUTTON_VARIANTS = {\n variant: {\n ghost: { classes: \"material-ghost\" },\n quiet: { classes: \"material-ghost text-fg-secondary hover:text-fg\" },\n secondary: { classes: \"material-secondary\" },\n soft: { classes: \"material-soft\" },\n primary: { classes: \"material-primary\" },\n danger: { classes: \"material-danger\" },\n \"danger-secondary\": { classes: \"material-danger-secondary\" },\n },\n size: {\n xs: { classes: \"size-24\" },\n sm: { classes: \"size-32\" },\n md: { classes: \"size-36\" },\n lg: { classes: \"size-40\" },\n xl: { classes: \"size-48\" },\n },\n} as const;\nexport const KAESO_ICON_BUTTON_DEFAULT_VARIANTS = { variant: \"ghost\", size: \"sm\" } as const;\n\nexport interface IconButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n icon: IconData;\n \"aria-label\": string;\n variant?: Exclude<ButtonVariant, \"link\"> | undefined;\n size?: ButtonSize | undefined;\n shortcut?: string[] | string[][] | undefined;\n tooltip?: boolean | undefined;\n tooltipSide?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined;\n loading?: boolean | undefined;\n disabledReason?: string | undefined;\n href?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const IconButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { icon, variant = \"ghost\", size = \"sm\", shortcut, tooltip = true, tooltipSide = \"top\", \"aria-label\": label, disabledReason, disabled, ...props },\n ref,\n) {\n const btn = (\n <Button\n ref={ref as React.Ref<HTMLButtonElement & HTMLAnchorElement>}\n shape=\"circle\"\n icon={icon}\n aria-label={label}\n variant={variant}\n size={size}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(disabledReason !== undefined ? { disabledReason } : {})}\n {...props}\n />\n );\n if (!tooltip || disabled) return btn;\n return (\n <Tooltip content={label} side={tooltipSide} {...(shortcut ? { shortcut } : {})}>\n {btn}\n </Tooltip>\n );\n});\nif (process.env.NODE_ENV !== \"production\") IconButton.displayName = \"IconButton\";\n"],"mappings":";;;;;;AAMA,IAAaE,IAA6B;CACxC,SAAS;EACP,OAAO,EAAE,SAAS,iBAAiB;EACnC,OAAO,EAAE,SAAS,iDAAiD;EACnE,WAAW,EAAE,SAAS,qBAAqB;EAC3C,MAAM,EAAE,SAAS,gBAAgB;EACjC,SAAS,EAAE,SAAS,mBAAmB;EACvC,QAAQ,EAAE,SAAS,kBAAkB;EACrC,oBAAoB,EAAE,SAAS,4BAA4B;CAC7D;CACA,MAAM;EACJ,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;CAC3B;AACF,GACaC,IAAqC;CAAE,SAAS;CAAS,MAAM;AAAK,GAgBpEC,IAA6B,kBAA+C,SACvF,EAAE,SAAM,aAAU,SAAS,UAAO,MAAM,aAAU,aAAU,IAAM,iBAAc,OAAO,cAAcC,GAAO,mBAAgB,aAAU,GAAGC,KACzI,GACA;CACA,IAAMC,IACJ,kBAACN,GAAD;EACO;EACL,OAAM;EACA;EACN,cAAYI;EACH;EACH;EACN,GAAKG,MAAa,KAAA,IAA2B,CAAC,IAAhB,EAAE,YAAS;EACzC,GAAKC,MAAmB,KAAA,IAAiC,CAAC,IAAtB,EAAE,kBAAe;EACrD,GAAIH;CACL,CAAA;CAGH,OADI,CAACI,KAAWF,IAAiBD,IAE/B,kBAACP,GAAD;EAAS,SAASK;EAAO,MAAMM;EAAa,GAAKC,IAAW,EAAE,YAAS,IAAI,CAAC;EACzE,UAAAL;CACM,CAAA;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
1
+ {"version":3,"file":"icon-button-_x1RUphC.js","names":["Tooltip","Button","KAESO_ICON_BUTTON_VARIANTS","KAESO_ICON_BUTTON_DEFAULT_VARIANTS","IconButton","label","props","btn","disabled","disabledReason","tooltip","tooltipSide","shortcut"],"sources":["../../src/components/icon-button/icon-button.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Button, type ButtonSize, type ButtonVariant } from \"../button/button.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport type { IconData } from \"../icon/icon.js\";\n\nexport const KAESO_ICON_BUTTON_VARIANTS = {\n variant: {\n ghost: { classes: \"material-ghost\" },\n quiet: { classes: \"material-ghost text-fg-secondary hover:text-fg\" },\n secondary: { classes: \"material-secondary\" },\n soft: { classes: \"material-soft\" },\n primary: { classes: \"material-primary\" },\n danger: { classes: \"material-danger\" },\n \"danger-secondary\": { classes: \"material-danger-secondary\" },\n },\n size: {\n xs: { classes: \"size-24\" },\n sm: { classes: \"size-32\" },\n md: { classes: \"size-36\" },\n lg: { classes: \"size-40\" },\n xl: { classes: \"size-48\" },\n },\n} as const;\nexport const KAESO_ICON_BUTTON_DEFAULT_VARIANTS = { variant: \"ghost\", size: \"sm\" } as const;\n\nexport interface IconButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n icon: IconData;\n \"aria-label\": string;\n variant?: Exclude<ButtonVariant, \"link\"> | undefined;\n size?: ButtonSize | undefined;\n shortcut?: string[] | string[][] | undefined;\n tooltip?: boolean | undefined;\n tooltipSide?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined;\n loading?: boolean | undefined;\n disabledReason?: string | undefined;\n href?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const IconButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { icon, variant = \"ghost\", size = \"sm\", shortcut, tooltip = true, tooltipSide = \"top\", \"aria-label\": label, disabledReason, disabled, ...props },\n ref,\n) {\n const btn = (\n <Button\n ref={ref as React.Ref<HTMLButtonElement & HTMLAnchorElement>}\n shape=\"circle\"\n icon={icon}\n aria-label={label}\n variant={variant}\n size={size}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(disabledReason !== undefined ? { disabledReason } : {})}\n {...props}\n />\n );\n if (!tooltip || disabled) return btn;\n return (\n <Tooltip content={label} side={tooltipSide} {...(shortcut ? { shortcut } : {})}>\n {btn}\n </Tooltip>\n );\n});\nif (process.env.NODE_ENV !== \"production\") IconButton.displayName = \"IconButton\";\n"],"mappings":";;;;;;AAMA,IAAaE,IAA6B;CACxC,SAAS;EACP,OAAO,EAAE,SAAS,iBAAiB;EACnC,OAAO,EAAE,SAAS,iDAAiD;EACnE,WAAW,EAAE,SAAS,qBAAqB;EAC3C,MAAM,EAAE,SAAS,gBAAgB;EACjC,SAAS,EAAE,SAAS,mBAAmB;EACvC,QAAQ,EAAE,SAAS,kBAAkB;EACrC,oBAAoB,EAAE,SAAS,4BAA4B;CAC7D;CACA,MAAM;EACJ,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;CAC3B;AACF,GACaC,IAAqC;CAAE,SAAS;CAAS,MAAM;AAAK,GAgBpEC,IAA6B,kBAA+C,SACvF,EAAE,SAAM,aAAU,SAAS,UAAO,MAAM,aAAU,aAAU,IAAM,iBAAc,OAAO,cAAcC,GAAO,mBAAgB,aAAU,GAAGC,KACzI,GACA;CACA,IAAMC,IACJ,kBAACN,GAAD;EACO;EACL,OAAM;EACA;EACN,cAAYI;EACH;EACH;EACN,GAAKG,MAAa,KAAA,IAA2B,CAAC,IAAhB,EAAE,YAAS;EACzC,GAAKC,MAAmB,KAAA,IAAiC,CAAC,IAAtB,EAAE,kBAAe;EACrD,GAAIH;CACL,CAAA;CAGH,OADI,CAACI,KAAWF,IAAiBD,IAE/B,kBAACP,GAAD;EAAS,SAASK;EAAO,MAAMM;EAAa,GAAKC,IAAW,EAAE,YAAS,IAAI,CAAC;EACzE,UAAAL;CACM,CAAA;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
@@ -3,8 +3,8 @@ import { t as e } from "./cn-CidVUKMm.js";
3
3
  import { i as t } from "./context-BELWW79w.js";
4
4
  import { formatNumber as n } from "../format.js";
5
5
  import { t as r } from "./icon-CeNQtobn.js";
6
- import { r as i } from "./tooltip-CDu00nzg.js";
7
- import { n as a } from "./copy-button-mAzHjYXq.js";
6
+ import { r as i } from "./tooltip-DEbCCsru.js";
7
+ import { n as a } from "./copy-button-DXxn-YYZ.js";
8
8
  import { t as o } from "./badge-Dkyhs0_j.js";
9
9
  import { forwardRef as s } from "react";
10
10
  import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
@@ -339,4 +339,4 @@ process.env.NODE_ENV !== "production" && (I.displayName = "ProviderCard");
339
339
  //#endregion
340
340
  export { C as a, P as c, D as i, x as l, _ as n, I as o, j as r, F as s, v as t };
341
341
 
342
- //# sourceMappingURL=identity-DQinp-Ep.js.map
342
+ //# sourceMappingURL=identity-BtZC_d_Q.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity-DQinp-Ep.js","names":["__icon_ToolsIcon","__icon_CpuIcon","__icon_Image01Icon","__icon_Pdf01Icon","__icon_SourceCodeIcon","_Fragment","cn","useUiText","Icon","Tooltip","CopyButton","Badge","Fragment$1","PROVIDER_MARKS","KAESO_IDENTITY_VARIANTS","KAESO_IDENTITY_DEFAULT_VARIANTS","PROVIDER_LETTERS","PROVIDER_NAMES","providerName","id","MARK_SIZE","ProviderBadge","path","provider","mark","withName","size","className","CAP_ICON","ToolsIcon","CpuIcon","Image01Icon","Pdf01Icon","SourceCodeIcon","capabilityLabels","t","SHORT_ID","ModelLabel","capLabel","name","model","capabilities","c","KEY_TONE","accessLabels","stateLabels","KeyDisplay","state","redacted","access","copy","STATUS_CLASS","code","statusTexts","StatusCode","text","tone","color","el","showText","RequestTimeline","ratio","totalMs","ttfbMs","fmt","ms","formatNumber","width","ProviderCard","status","connected","keyLabel","detail","actions"],"sources":["../../src/components/kaeso/provider-marks.ts","../../src/components/kaeso/identity.tsx"],"sourcesContent":["export const PROVIDER_MARKS: Record<string, string> = {\n openai:\n \"M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z\",\n anthropic:\n \"M13.827 3.52h3.603L24 20h-3.603l-6.57-16.48zm-7.258 0h3.767L16.906 20h-3.674l-1.343-3.461H5.017l-1.344 3.46H0L6.57 3.522zm4.132 9.959L8.453 7.687 6.205 13.48H10.7z\",\n};\n","import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { ToolsIcon as __icon_ToolsIcon, CpuIcon as __icon_CpuIcon, Image01Icon as __icon_Image01Icon, Pdf01Icon as __icon_Pdf01Icon, SourceCodeIcon as __icon_SourceCodeIcon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { CopyButton } from \"../copy-button/copy-button.js\";\nimport { PROVIDER_MARKS } from \"./provider-marks.js\";\nimport { formatNumber } from \"../../format/index.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_IDENTITY_VARIANTS = {\n provider: {\n sm: { classes: \"size-16 rounded-cell text-micro\" },\n md: { classes: \"size-20 rounded-avatar text-micro\" },\n lg: { classes: \"size-28 rounded-org text-caption\" },\n xl: { classes: \"size-40 rounded-org text-body\" },\n },\n} as const;\nexport const KAESO_IDENTITY_DEFAULT_VARIANTS = { provider: \"md\" } as const;\n\nconst PROVIDER_LETTERS: Record<string, string> = {\n openai: \"O\",\n anthropic: \"A\",\n google: \"G\",\n mistral: \"M\",\n groq: \"Gq\",\n deepseek: \"D\",\n xai: \"X\",\n cohere: \"C\",\n bedrock: \"B\",\n azure: \"Az\",\n ollama: \"Ol\",\n};\nconst PROVIDER_NAMES: Record<string, string> = {\n openai: \"OpenAI\",\n anthropic: \"Anthropic\",\n google: \"Google\",\n mistral: \"Mistral\",\n groq: \"Groq\",\n deepseek: \"DeepSeek\",\n xai: \"xAI\",\n cohere: \"Cohere\",\n bedrock: \"Amazon Bedrock\",\n azure: \"Azure OpenAI\",\n ollama: \"Ollama\",\n};\nexport const providerName = (id: string) => PROVIDER_NAMES[id] ?? id;\n\nconst MARK_SIZE = { sm: \"size-10\", md: \"size-12\", lg: \"size-16\", xl: \"size-24\" } as const;\n\nexport const ProviderBadge = /* @__PURE__ */ forwardRef<\n HTMLSpanElement,\n { provider: string; size?: keyof typeof KAESO_IDENTITY_VARIANTS.provider | undefined; withName?: boolean | undefined; className?: string | undefined }\n>(function ProviderBadge({ provider, size = \"md\", withName, className }, ref) {\n const path = PROVIDER_MARKS[provider];\n const mark = (\n <span\n aria-hidden={withName || undefined}\n {...(!withName ? { role: \"img\", \"aria-label\": providerName(provider) } : {})}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center bg-fill-1 font-semibold shadow-ring\",\n path ? \"text-fg\" : \"text-fg-secondary\",\n KAESO_IDENTITY_VARIANTS.provider[size].classes,\n )}\n >\n {path ? (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" fillRule=\"evenodd\" aria-hidden className={MARK_SIZE[size]}>\n <path d={path} />\n </svg>\n ) : (\n (PROVIDER_LETTERS[provider] ?? provider.slice(0, 1).toUpperCase())\n )}\n </span>\n );\n if (!withName)\n return (\n <span ref={ref} className={cn(\"inline-flex\", className)}>\n {mark}\n </span>\n );\n return (\n <span ref={ref} className={cn(\"inline-flex max-w-full min-w-0 items-center gap-8 text-body text-fg\", className)}>\n {mark}\n <span className=\"min-w-0 truncate\">{providerName(provider)}</span>\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ProviderBadge.displayName = \"ProviderBadge\";\n\nexport type Capability = \"tools\" | \"reasoning\" | \"vision\" | \"pdf\" | \"structuredOutput\";\nconst CAP_ICON: Record<Capability, IconData> = {\n tools: __icon_ToolsIcon,\n reasoning: __icon_CpuIcon,\n vision: __icon_Image01Icon,\n pdf: __icon_Pdf01Icon,\n structuredOutput: __icon_SourceCodeIcon,\n};\nfunction capabilityLabels(t: UiText): Record<Capability, string> {\n return {\n tools: t(\"modelLabel.toolCalling\", \"Tool calling\"),\n reasoning: t(\"modelLabel.reasoning\", \"Reasoning\"),\n vision: t(\"modelLabel.imageInput\", \"Image input\"),\n pdf: t(\"modelLabel.pdfInput\", \"PDF input\"),\n structuredOutput: t(\"modelLabel.structuredOutput\", \"Structured output\"),\n };\n}\n\nconst SHORT_ID = 14;\n\nexport interface ModelLabelProps {\n provider: string;\n model: string;\n name?: string | undefined;\n capabilities?: Capability[] | undefined;\n className?: string | undefined;\n}\n\nexport const ModelLabel = /* @__PURE__ */ forwardRef<HTMLSpanElement, ModelLabelProps>(function ModelLabel({ provider, model, name, capabilities = [], className }, ref) {\n const t = useUiText();\n const capLabel = capabilityLabels(t);\n return (\n <span ref={ref} className={cn(\"inline-flex max-w-full min-w-0 items-center gap-8\", className)}>\n <ProviderBadge provider={provider} />\n {name ? (\n <>\n <span className=\"min-w-0 truncate text-body text-fg\">{name}</span>\n <span className=\"flex h-20 min-w-0 flex-1 basis-0 flex-wrap content-start items-center overflow-hidden\">\n <span aria-hidden className=\"h-20 w-0\" />\n <span className={cn(\"flex-1 truncate mono text-small text-fg-secondary\", model.length <= SHORT_ID ? \"min-w-max\" : \"min-w-96\")}>{model}</span>\n </span>\n </>\n ) : (\n <span className=\"min-w-0 truncate mono text-small text-fg\">{model}</span>\n )}\n {capabilities.length > 0 && (\n <span\n role=\"img\"\n className=\"hidden shrink-0 items-center gap-2 sm:flex\"\n aria-label={t(\"modelLabel.capabilities\", \"Capabilities: {list}\", {\n list: capabilities.map((c) => capLabel[c]).join(t(\"modelLabel.listSeparator\", \", \")),\n })}\n >\n {capabilities.map((c) => (\n <Tooltip key={c} content={capLabel[c]}>\n <span className=\"inline-flex size-20 items-center justify-center rounded-pill text-fg-tertiary hover:text-fg\">\n <Icon icon={CAP_ICON[c]} size=\"xs\" />\n </span>\n </Tooltip>\n ))}\n </span>\n )}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ModelLabel.displayName = \"ModelLabel\";\n\nexport type KeyState = \"active\" | \"disabled\" | \"expired\" | \"archived\";\nconst KEY_TONE: Record<KeyState, \"success\" | \"neutral\" | \"warning\"> = { active: \"success\", disabled: \"neutral\", expired: \"warning\", archived: \"neutral\" };\n\nexport interface KeyDisplayProps {\n redacted: string;\n state?: KeyState | undefined;\n access?: \"inference\" | \"platform\" | \"both\" | undefined;\n copy?: boolean | undefined;\n className?: string | undefined;\n}\n\nfunction accessLabels(t: UiText) {\n return {\n inference: t(\"keyDisplay.inference\", \"Inference\"),\n platform: t(\"keyDisplay.platform\", \"Platform\"),\n both: t(\"keyDisplay.inferenceAndPlatform\", \"Inference + platform\"),\n };\n}\n\nfunction stateLabels(t: UiText): Record<KeyState, string> {\n return {\n active: t(\"keyDisplay.active\", \"Active\"),\n disabled: t(\"keyDisplay.disabled\", \"Disabled\"),\n expired: t(\"keyDisplay.expired\", \"Expired\"),\n archived: t(\"keyDisplay.archived\", \"Archived\"),\n };\n}\n\nexport const KeyDisplay = /* @__PURE__ */ forwardRef<HTMLSpanElement, KeyDisplayProps>(function KeyDisplay(\n { redacted, state = \"active\", access, copy = true, className },\n ref,\n) {\n const t = useUiText();\n return (\n <span ref={ref} className={cn(\"group/key inline-flex max-w-full min-w-0 items-center gap-8\", className)}>\n <span className={cn(\"min-w-0 truncate mono text-small\", state === \"active\" ? \"text-fg\" : \"text-fg-secondary\")}>{redacted}</span>\n {state !== \"active\" && <Badge tone={KEY_TONE[state] === \"warning\" ? \"warning\" : \"neutral\"}>{stateLabels(t)[state]}</Badge>}\n {access && <Badge tone={access === \"inference\" ? \"neutral\" : \"outline\"}>{accessLabels(t)[access]}</Badge>}\n {copy && (\n <span className=\"opacity-0 transition-control group-hover/key:opacity-100 coarse:opacity-100 focus-within:opacity-100\">\n <CopyButton value={redacted} size=\"xs\" label={t(\"keyDisplay.copyRedactedKey\", \"Copy redacted key\")} />\n </span>\n )}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") KeyDisplay.displayName = \"KeyDisplay\";\n\nconst STATUS_CLASS = (code: number) => (code >= 500 ? \"danger\" : code >= 400 ? \"warning\" : \"neutral\") as \"danger\" | \"warning\" | \"neutral\";\nfunction statusTexts(t: UiText): Record<number, string> {\n return {\n 200: t(\"statusCode.ok\", \"OK\"),\n 201: t(\"statusCode.created\", \"Created\"),\n 204: t(\"statusCode.noContent\", \"No content\"),\n 400: t(\"statusCode.badRequest\", \"Bad request\"),\n 401: t(\"statusCode.unauthorized\", \"Unauthorized\"),\n 403: t(\"statusCode.forbidden\", \"Forbidden\"),\n 404: t(\"statusCode.notFound\", \"Not found\"),\n 408: t(\"statusCode.timeout\", \"Timeout\"),\n 409: t(\"statusCode.conflict\", \"Conflict\"),\n 413: t(\"statusCode.tooLarge\", \"Too large\"),\n 422: t(\"statusCode.unprocessable\", \"Unprocessable\"),\n 429: t(\"statusCode.rateLimited\", \"Rate limited\"),\n 499: t(\"statusCode.clientClosed\", \"Client closed\"),\n 500: t(\"statusCode.serverError\", \"Server error\"),\n 502: t(\"statusCode.badGateway\", \"Bad gateway\"),\n 503: t(\"statusCode.unavailable\", \"Unavailable\"),\n 504: t(\"statusCode.gatewayTimeout\", \"Gateway timeout\"),\n 529: t(\"statusCode.overloaded\", \"Overloaded\"),\n };\n}\n\nexport const StatusCode = /* @__PURE__ */ forwardRef<HTMLSpanElement, { code: number; showText?: boolean | undefined; className?: string | undefined }>(function StatusCode(\n { code, showText, className },\n ref,\n) {\n const t = useUiText();\n const text = statusTexts(t)[code];\n const tone = STATUS_CLASS(code);\n const color = { danger: \"text-danger-text\", warning: \"text-warning-text\", neutral: code >= 200 && code < 300 ? \"text-fg\" : \"text-fg-secondary\" }[tone];\n const el = (\n <span ref={ref} tabIndex={showText ? undefined : 0} className={cn(\"inline-flex items-center gap-6 outline-none\", className)}>\n <span className={cn(\"mono text-small font-medium tabular\", color)}>{code}</span>\n {showText && <span className=\"text-small text-fg-secondary\">{text ?? \"\"}</span>}\n <span className=\"sr-only\">{text ?? \"\"}</span>\n </span>\n );\n return showText || !text ? el : <Tooltip content={t(\"statusCode.tooltip\", \"{code} {text}\", { code: String(code), text })}>{el}</Tooltip>;\n});\nif (process.env.NODE_ENV !== \"production\") StatusCode.displayName = \"StatusCode\";\n\nexport const RequestTimeline = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n { ttfbMs: number; totalMs: number; width?: 160 | 240 | \"full\" | undefined; className?: string | undefined }\n>(function RequestTimeline({ ttfbMs, totalMs, width = 240, className }, ref) {\n const t = useUiText();\n const ratio = totalMs > 0 ? Math.min(1, ttfbMs / totalMs) : 0;\n const fmt = (ms: number) =>\n ms < 1000 ? `${Math.round(ms)} ms` : `${formatNumber(ms / 1000, { minimumFractionDigits: 1, maximumFractionDigits: 1, useGrouping: false })} s`;\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col gap-6\", width === \"full\" ? \"w-full\" : width === 240 ? \"w-240\" : \"w-160\", className)}\n role=\"img\"\n aria-label={t(\"requestTimeline.label\", \"Time to first byte {ttfb} of {total} total\", { ttfb: fmt(ttfbMs), total: fmt(totalMs) })}\n >\n <div className=\"flex h-6 w-full gap-2 overflow-hidden rounded-pill\">\n <span className=\"h-full rounded-l-pill bg-viz-1\" style={{ width: `${ratio * 100}%` }} />\n <span className=\"h-full flex-1 rounded-r-pill bg-fill-3\" />\n </div>\n <div className=\"flex justify-between gap-8 text-caption font-medium text-fg-tertiary\">\n <span className=\"flex min-w-0 flex-col\">\n <span className=\"whitespace-nowrap text-fg-secondary tabular\">{fmt(ttfbMs)}</span>\n <span className=\"wrap-break-word\">{t(\"requestTimeline.firstByte\", \"First byte\")}</span>\n </span>\n <span className=\"flex min-w-0 flex-col items-end text-right\">\n <span className=\"whitespace-nowrap text-fg-secondary tabular\">{fmt(totalMs)}</span>\n <span className=\"wrap-break-word\">{t(\"requestTimeline.totalTime\", \"Total\")}</span>\n </span>\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") RequestTimeline.displayName = \"RequestTimeline\";\n\nexport interface ProviderCardProps {\n provider: string;\n connected: boolean;\n status: ReactNode;\n keyLabel?: ReactNode | undefined;\n detail?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nexport const ProviderCard = /* @__PURE__ */ forwardRef<HTMLDivElement, ProviderCardProps>(function ProviderCard(\n { provider, connected, status, keyLabel, detail, actions, className },\n ref,\n) {\n const t = useUiText();\n return (\n <section ref={ref} aria-label={providerName(provider)} className={cn(\"flex min-w-0 flex-col gap-16 rounded-group bg-raised p-20 shadow-xs\", className)}>\n <div className=\"flex min-w-0 items-center gap-12\">\n <ProviderBadge provider={provider} size=\"xl\" />\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <h3 className=\"truncate text-body-lg font-semibold text-fg\">{providerName(provider)}</h3>\n <span className=\"text-small text-fg-secondary text-pretty\">{status}</span>\n </div>\n <Badge tone={connected ? \"success\" : \"neutral\"}>\n {connected ? t(\"providerCard.connected\", \"Connected\") : t(\"providerCard.notConnected\", \"Not connected\")}\n </Badge>\n </div>\n {(keyLabel || detail) && (\n <div className=\"flex min-w-0 flex-col gap-2 rounded-well bg-fill-1 px-12 py-10\">\n {keyLabel && <span className=\"truncate text-body text-fg\">{keyLabel}</span>}\n {detail && <span className=\"truncate text-small text-fg-tertiary\">{detail}</span>}\n </div>\n )}\n {actions && <div className=\"mt-auto flex flex-wrap items-center gap-8\">{actions}</div>}\n </section>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ProviderCard.displayName = \"ProviderCard\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"identity-BtZC_d_Q.js","names":["__icon_ToolsIcon","__icon_CpuIcon","__icon_Image01Icon","__icon_Pdf01Icon","__icon_SourceCodeIcon","_Fragment","cn","useUiText","Icon","Tooltip","CopyButton","Badge","Fragment$1","PROVIDER_MARKS","KAESO_IDENTITY_VARIANTS","KAESO_IDENTITY_DEFAULT_VARIANTS","PROVIDER_LETTERS","PROVIDER_NAMES","providerName","id","MARK_SIZE","ProviderBadge","path","provider","mark","withName","size","className","CAP_ICON","ToolsIcon","CpuIcon","Image01Icon","Pdf01Icon","SourceCodeIcon","capabilityLabels","t","SHORT_ID","ModelLabel","capLabel","name","model","capabilities","c","KEY_TONE","accessLabels","stateLabels","KeyDisplay","state","redacted","access","copy","STATUS_CLASS","code","statusTexts","StatusCode","text","tone","color","el","showText","RequestTimeline","ratio","totalMs","ttfbMs","fmt","ms","formatNumber","width","ProviderCard","status","connected","keyLabel","detail","actions"],"sources":["../../src/components/kaeso/provider-marks.ts","../../src/components/kaeso/identity.tsx"],"sourcesContent":["export const PROVIDER_MARKS: Record<string, string> = {\n openai:\n \"M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z\",\n anthropic:\n \"M13.827 3.52h3.603L24 20h-3.603l-6.57-16.48zm-7.258 0h3.767L16.906 20h-3.674l-1.343-3.461H5.017l-1.344 3.46H0L6.57 3.522zm4.132 9.959L8.453 7.687 6.205 13.48H10.7z\",\n};\n","import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { ToolsIcon as __icon_ToolsIcon, CpuIcon as __icon_CpuIcon, Image01Icon as __icon_Image01Icon, Pdf01Icon as __icon_Pdf01Icon, SourceCodeIcon as __icon_SourceCodeIcon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { CopyButton } from \"../copy-button/copy-button.js\";\nimport { PROVIDER_MARKS } from \"./provider-marks.js\";\nimport { formatNumber } from \"../../format/index.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_IDENTITY_VARIANTS = {\n provider: {\n sm: { classes: \"size-16 rounded-cell text-micro\" },\n md: { classes: \"size-20 rounded-avatar text-micro\" },\n lg: { classes: \"size-28 rounded-org text-caption\" },\n xl: { classes: \"size-40 rounded-org text-body\" },\n },\n} as const;\nexport const KAESO_IDENTITY_DEFAULT_VARIANTS = { provider: \"md\" } as const;\n\nconst PROVIDER_LETTERS: Record<string, string> = {\n openai: \"O\",\n anthropic: \"A\",\n google: \"G\",\n mistral: \"M\",\n groq: \"Gq\",\n deepseek: \"D\",\n xai: \"X\",\n cohere: \"C\",\n bedrock: \"B\",\n azure: \"Az\",\n ollama: \"Ol\",\n};\nconst PROVIDER_NAMES: Record<string, string> = {\n openai: \"OpenAI\",\n anthropic: \"Anthropic\",\n google: \"Google\",\n mistral: \"Mistral\",\n groq: \"Groq\",\n deepseek: \"DeepSeek\",\n xai: \"xAI\",\n cohere: \"Cohere\",\n bedrock: \"Amazon Bedrock\",\n azure: \"Azure OpenAI\",\n ollama: \"Ollama\",\n};\nexport const providerName = (id: string) => PROVIDER_NAMES[id] ?? id;\n\nconst MARK_SIZE = { sm: \"size-10\", md: \"size-12\", lg: \"size-16\", xl: \"size-24\" } as const;\n\nexport const ProviderBadge = /* @__PURE__ */ forwardRef<\n HTMLSpanElement,\n { provider: string; size?: keyof typeof KAESO_IDENTITY_VARIANTS.provider | undefined; withName?: boolean | undefined; className?: string | undefined }\n>(function ProviderBadge({ provider, size = \"md\", withName, className }, ref) {\n const path = PROVIDER_MARKS[provider];\n const mark = (\n <span\n aria-hidden={withName || undefined}\n {...(!withName ? { role: \"img\", \"aria-label\": providerName(provider) } : {})}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center bg-fill-1 font-semibold shadow-ring\",\n path ? \"text-fg\" : \"text-fg-secondary\",\n KAESO_IDENTITY_VARIANTS.provider[size].classes,\n )}\n >\n {path ? (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" fillRule=\"evenodd\" aria-hidden className={MARK_SIZE[size]}>\n <path d={path} />\n </svg>\n ) : (\n (PROVIDER_LETTERS[provider] ?? provider.slice(0, 1).toUpperCase())\n )}\n </span>\n );\n if (!withName)\n return (\n <span ref={ref} className={cn(\"inline-flex\", className)}>\n {mark}\n </span>\n );\n return (\n <span ref={ref} className={cn(\"inline-flex max-w-full min-w-0 items-center gap-8 text-body text-fg\", className)}>\n {mark}\n <span className=\"min-w-0 truncate\">{providerName(provider)}</span>\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ProviderBadge.displayName = \"ProviderBadge\";\n\nexport type Capability = \"tools\" | \"reasoning\" | \"vision\" | \"pdf\" | \"structuredOutput\";\nconst CAP_ICON: Record<Capability, IconData> = {\n tools: __icon_ToolsIcon,\n reasoning: __icon_CpuIcon,\n vision: __icon_Image01Icon,\n pdf: __icon_Pdf01Icon,\n structuredOutput: __icon_SourceCodeIcon,\n};\nfunction capabilityLabels(t: UiText): Record<Capability, string> {\n return {\n tools: t(\"modelLabel.toolCalling\", \"Tool calling\"),\n reasoning: t(\"modelLabel.reasoning\", \"Reasoning\"),\n vision: t(\"modelLabel.imageInput\", \"Image input\"),\n pdf: t(\"modelLabel.pdfInput\", \"PDF input\"),\n structuredOutput: t(\"modelLabel.structuredOutput\", \"Structured output\"),\n };\n}\n\nconst SHORT_ID = 14;\n\nexport interface ModelLabelProps {\n provider: string;\n model: string;\n name?: string | undefined;\n capabilities?: Capability[] | undefined;\n className?: string | undefined;\n}\n\nexport const ModelLabel = /* @__PURE__ */ forwardRef<HTMLSpanElement, ModelLabelProps>(function ModelLabel({ provider, model, name, capabilities = [], className }, ref) {\n const t = useUiText();\n const capLabel = capabilityLabels(t);\n return (\n <span ref={ref} className={cn(\"inline-flex max-w-full min-w-0 items-center gap-8\", className)}>\n <ProviderBadge provider={provider} />\n {name ? (\n <>\n <span className=\"min-w-0 truncate text-body text-fg\">{name}</span>\n <span className=\"flex h-20 min-w-0 flex-1 basis-0 flex-wrap content-start items-center overflow-hidden\">\n <span aria-hidden className=\"h-20 w-0\" />\n <span className={cn(\"flex-1 truncate mono text-small text-fg-secondary\", model.length <= SHORT_ID ? \"min-w-max\" : \"min-w-96\")}>{model}</span>\n </span>\n </>\n ) : (\n <span className=\"min-w-0 truncate mono text-small text-fg\">{model}</span>\n )}\n {capabilities.length > 0 && (\n <span\n role=\"img\"\n className=\"hidden shrink-0 items-center gap-2 sm:flex\"\n aria-label={t(\"modelLabel.capabilities\", \"Capabilities: {list}\", {\n list: capabilities.map((c) => capLabel[c]).join(t(\"modelLabel.listSeparator\", \", \")),\n })}\n >\n {capabilities.map((c) => (\n <Tooltip key={c} content={capLabel[c]}>\n <span className=\"inline-flex size-20 items-center justify-center rounded-pill text-fg-tertiary hover:text-fg\">\n <Icon icon={CAP_ICON[c]} size=\"xs\" />\n </span>\n </Tooltip>\n ))}\n </span>\n )}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ModelLabel.displayName = \"ModelLabel\";\n\nexport type KeyState = \"active\" | \"disabled\" | \"expired\" | \"archived\";\nconst KEY_TONE: Record<KeyState, \"success\" | \"neutral\" | \"warning\"> = { active: \"success\", disabled: \"neutral\", expired: \"warning\", archived: \"neutral\" };\n\nexport interface KeyDisplayProps {\n redacted: string;\n state?: KeyState | undefined;\n access?: \"inference\" | \"platform\" | \"both\" | undefined;\n copy?: boolean | undefined;\n className?: string | undefined;\n}\n\nfunction accessLabels(t: UiText) {\n return {\n inference: t(\"keyDisplay.inference\", \"Inference\"),\n platform: t(\"keyDisplay.platform\", \"Platform\"),\n both: t(\"keyDisplay.inferenceAndPlatform\", \"Inference + platform\"),\n };\n}\n\nfunction stateLabels(t: UiText): Record<KeyState, string> {\n return {\n active: t(\"keyDisplay.active\", \"Active\"),\n disabled: t(\"keyDisplay.disabled\", \"Disabled\"),\n expired: t(\"keyDisplay.expired\", \"Expired\"),\n archived: t(\"keyDisplay.archived\", \"Archived\"),\n };\n}\n\nexport const KeyDisplay = /* @__PURE__ */ forwardRef<HTMLSpanElement, KeyDisplayProps>(function KeyDisplay(\n { redacted, state = \"active\", access, copy = true, className },\n ref,\n) {\n const t = useUiText();\n return (\n <span ref={ref} className={cn(\"group/key inline-flex max-w-full min-w-0 items-center gap-8\", className)}>\n <span className={cn(\"min-w-0 truncate mono text-small\", state === \"active\" ? \"text-fg\" : \"text-fg-secondary\")}>{redacted}</span>\n {state !== \"active\" && <Badge tone={KEY_TONE[state] === \"warning\" ? \"warning\" : \"neutral\"}>{stateLabels(t)[state]}</Badge>}\n {access && <Badge tone={access === \"inference\" ? \"neutral\" : \"outline\"}>{accessLabels(t)[access]}</Badge>}\n {copy && (\n <span className=\"opacity-0 transition-control group-hover/key:opacity-100 coarse:opacity-100 focus-within:opacity-100\">\n <CopyButton value={redacted} size=\"xs\" label={t(\"keyDisplay.copyRedactedKey\", \"Copy redacted key\")} />\n </span>\n )}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") KeyDisplay.displayName = \"KeyDisplay\";\n\nconst STATUS_CLASS = (code: number) => (code >= 500 ? \"danger\" : code >= 400 ? \"warning\" : \"neutral\") as \"danger\" | \"warning\" | \"neutral\";\nfunction statusTexts(t: UiText): Record<number, string> {\n return {\n 200: t(\"statusCode.ok\", \"OK\"),\n 201: t(\"statusCode.created\", \"Created\"),\n 204: t(\"statusCode.noContent\", \"No content\"),\n 400: t(\"statusCode.badRequest\", \"Bad request\"),\n 401: t(\"statusCode.unauthorized\", \"Unauthorized\"),\n 403: t(\"statusCode.forbidden\", \"Forbidden\"),\n 404: t(\"statusCode.notFound\", \"Not found\"),\n 408: t(\"statusCode.timeout\", \"Timeout\"),\n 409: t(\"statusCode.conflict\", \"Conflict\"),\n 413: t(\"statusCode.tooLarge\", \"Too large\"),\n 422: t(\"statusCode.unprocessable\", \"Unprocessable\"),\n 429: t(\"statusCode.rateLimited\", \"Rate limited\"),\n 499: t(\"statusCode.clientClosed\", \"Client closed\"),\n 500: t(\"statusCode.serverError\", \"Server error\"),\n 502: t(\"statusCode.badGateway\", \"Bad gateway\"),\n 503: t(\"statusCode.unavailable\", \"Unavailable\"),\n 504: t(\"statusCode.gatewayTimeout\", \"Gateway timeout\"),\n 529: t(\"statusCode.overloaded\", \"Overloaded\"),\n };\n}\n\nexport const StatusCode = /* @__PURE__ */ forwardRef<HTMLSpanElement, { code: number; showText?: boolean | undefined; className?: string | undefined }>(function StatusCode(\n { code, showText, className },\n ref,\n) {\n const t = useUiText();\n const text = statusTexts(t)[code];\n const tone = STATUS_CLASS(code);\n const color = { danger: \"text-danger-text\", warning: \"text-warning-text\", neutral: code >= 200 && code < 300 ? \"text-fg\" : \"text-fg-secondary\" }[tone];\n const el = (\n <span ref={ref} tabIndex={showText ? undefined : 0} className={cn(\"inline-flex items-center gap-6 outline-none\", className)}>\n <span className={cn(\"mono text-small font-medium tabular\", color)}>{code}</span>\n {showText && <span className=\"text-small text-fg-secondary\">{text ?? \"\"}</span>}\n <span className=\"sr-only\">{text ?? \"\"}</span>\n </span>\n );\n return showText || !text ? el : <Tooltip content={t(\"statusCode.tooltip\", \"{code} {text}\", { code: String(code), text })}>{el}</Tooltip>;\n});\nif (process.env.NODE_ENV !== \"production\") StatusCode.displayName = \"StatusCode\";\n\nexport const RequestTimeline = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n { ttfbMs: number; totalMs: number; width?: 160 | 240 | \"full\" | undefined; className?: string | undefined }\n>(function RequestTimeline({ ttfbMs, totalMs, width = 240, className }, ref) {\n const t = useUiText();\n const ratio = totalMs > 0 ? Math.min(1, ttfbMs / totalMs) : 0;\n const fmt = (ms: number) =>\n ms < 1000 ? `${Math.round(ms)} ms` : `${formatNumber(ms / 1000, { minimumFractionDigits: 1, maximumFractionDigits: 1, useGrouping: false })} s`;\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col gap-6\", width === \"full\" ? \"w-full\" : width === 240 ? \"w-240\" : \"w-160\", className)}\n role=\"img\"\n aria-label={t(\"requestTimeline.label\", \"Time to first byte {ttfb} of {total} total\", { ttfb: fmt(ttfbMs), total: fmt(totalMs) })}\n >\n <div className=\"flex h-6 w-full gap-2 overflow-hidden rounded-pill\">\n <span className=\"h-full rounded-l-pill bg-viz-1\" style={{ width: `${ratio * 100}%` }} />\n <span className=\"h-full flex-1 rounded-r-pill bg-fill-3\" />\n </div>\n <div className=\"flex justify-between gap-8 text-caption font-medium text-fg-tertiary\">\n <span className=\"flex min-w-0 flex-col\">\n <span className=\"whitespace-nowrap text-fg-secondary tabular\">{fmt(ttfbMs)}</span>\n <span className=\"wrap-break-word\">{t(\"requestTimeline.firstByte\", \"First byte\")}</span>\n </span>\n <span className=\"flex min-w-0 flex-col items-end text-right\">\n <span className=\"whitespace-nowrap text-fg-secondary tabular\">{fmt(totalMs)}</span>\n <span className=\"wrap-break-word\">{t(\"requestTimeline.totalTime\", \"Total\")}</span>\n </span>\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") RequestTimeline.displayName = \"RequestTimeline\";\n\nexport interface ProviderCardProps {\n provider: string;\n connected: boolean;\n status: ReactNode;\n keyLabel?: ReactNode | undefined;\n detail?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nexport const ProviderCard = /* @__PURE__ */ forwardRef<HTMLDivElement, ProviderCardProps>(function ProviderCard(\n { provider, connected, status, keyLabel, detail, actions, className },\n ref,\n) {\n const t = useUiText();\n return (\n <section ref={ref} aria-label={providerName(provider)} className={cn(\"flex min-w-0 flex-col gap-16 rounded-group bg-raised p-20 shadow-xs\", className)}>\n <div className=\"flex min-w-0 items-center gap-12\">\n <ProviderBadge provider={provider} size=\"xl\" />\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <h3 className=\"truncate text-body-lg font-semibold text-fg\">{providerName(provider)}</h3>\n <span className=\"text-small text-fg-secondary text-pretty\">{status}</span>\n </div>\n <Badge tone={connected ? \"success\" : \"neutral\"}>\n {connected ? t(\"providerCard.connected\", \"Connected\") : t(\"providerCard.notConnected\", \"Not connected\")}\n </Badge>\n </div>\n {(keyLabel || detail) && (\n <div className=\"flex min-w-0 flex-col gap-2 rounded-well bg-fill-1 px-12 py-10\">\n {keyLabel && <span className=\"truncate text-body text-fg\">{keyLabel}</span>}\n {detail && <span className=\"truncate text-small text-fg-tertiary\">{detail}</span>}\n </div>\n )}\n {actions && <div className=\"mt-auto flex flex-wrap items-center gap-8\">{actions}</div>}\n </section>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ProviderCard.displayName = \"ProviderCard\";\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { i as t } from "./context-BELWW79w.js";
4
4
  import { t as n } from "./icon-CeNQtobn.js";
5
5
  import { i as r } from "./kbd-CBcBDvqU.js";
6
6
  import { a as i, o as a, s as o } from "./field-d8V94bvZ.js";
7
- import { n as s, t as c } from "./input-group-DQqEPFj_.js";
7
+ import { n as s, t as c } from "./input-group-CYA1MEoZ.js";
8
8
  import { forwardRef as l, useRef as u, useState as d } from "react";
9
9
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
10
10
  import { Cancel01Icon as m, Search01Icon as h } from "@hugeicons/core-free-icons";
@@ -111,4 +111,4 @@ process.env.NODE_ENV !== "production" && (b.displayName = "SearchInput");
111
111
  //#endregion
112
112
  export { b as i, _ as n, g as r, v as t };
113
113
 
114
- //# sourceMappingURL=input-Biakz6GB.js.map
114
+ //# sourceMappingURL=input-CNTfI6YE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-Biakz6GB.js","names":["__icon_Search01Icon","__icon_Cancel01Icon","warnStylingClassName","useUiText","Icon","KbdSequence","useField","useFieldControl","withField","InputGroup","INPUT_ICON_SIZE","KAESO_INPUT_VARIANTS","KAESO_INPUT_DEFAULT_VARIANTS","Input","force","rest","props","className","field","fc","inner","InputGroupFromField","invalid","error","label","description","align","id","leadingIcon","trailing","size","prefix","children","suffix","SearchInput","t","setInner","useState","defaultValue","controlled","value","current","input","useRef","clear","el","onClear","ref","Search01Icon","placeholder","onChange","onKeyDown","Cancel01Icon","shortcut"],"sources":["../../src/components/input/input.tsx"],"sourcesContent":["import { forwardRef, useRef, useState, type InputHTMLAttributes, type KeyboardEvent, type ReactNode } from \"react\";\nimport { warnStylingClassName } from \"../../utils/dev.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { InputGroup, INPUT_ICON_SIZE, type InputSize } from \"./input-group.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { KbdSequence } from \"../kbd/kbd.js\";\nimport { Search01Icon as __icon_Search01Icon, Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_INPUT_VARIANTS = {\n size: {\n sm: { classes: \"h-32\" },\n md: { classes: \"h-36\" },\n lg: { classes: \"h-40\" },\n xl: { classes: \"h-48\" },\n },\n} as const;\nexport const KAESO_INPUT_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\">, FieldWrapProps {\n size?: InputSize | undefined;\n leadingIcon?: IconData | undefined;\n prefix?: ReactNode | undefined;\n suffix?: ReactNode | undefined;\n trailing?: ReactNode | undefined;\n invalid?: boolean | undefined;\n align?: \"start\" | \"end\" | undefined;\n \"data-force\"?: string | undefined;\n className?: string | undefined;\n}\n\nexport const Input = /* @__PURE__ */ forwardRef<HTMLInputElement, InputProps>(function Input(props, ref) {\n const {\n size = \"md\",\n leadingIcon,\n prefix,\n suffix,\n trailing,\n invalid,\n align,\n label,\n description,\n error,\n optional,\n required,\n layout,\n className,\n disabled,\n readOnly,\n id,\n \"data-force\": force,\n ...rest\n } = props;\n warnStylingClassName(\"Input\", className);\n const field = useField();\n const fc = useFieldControl(props);\n const inner = (\n <InputGroupFromField\n size={size}\n leadingIcon={leadingIcon}\n prefix={prefix}\n suffix={suffix}\n trailing={trailing}\n invalid={invalid || !!error}\n disabled={disabled}\n readOnly={readOnly}\n force={force}\n className={label || description || error ? undefined : className}\n >\n <InputGroup.Input\n ref={ref}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n className={align === \"end\" ? \"text-right tabular\" : undefined}\n {...(id ? { id } : {})}\n {...fc.controlProps}\n {...(invalid || error ? { \"aria-invalid\": true } : {})}\n {...rest}\n />\n </InputGroupFromField>\n );\n if (field) return inner;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, inner);\n});\nif (process.env.NODE_ENV !== \"production\") Input.displayName = \"Input\";\n\nfunction InputGroupFromField({\n size,\n leadingIcon,\n prefix,\n suffix,\n trailing,\n invalid,\n disabled,\n readOnly,\n force,\n className,\n children,\n}: {\n size: InputSize;\n leadingIcon?: IconData | undefined;\n prefix?: ReactNode | undefined;\n suffix?: ReactNode | undefined;\n trailing?: ReactNode | undefined;\n invalid?: boolean | undefined;\n disabled?: boolean | undefined;\n readOnly?: boolean | undefined;\n force?: string | undefined;\n className?: string | undefined;\n children: ReactNode;\n}) {\n return (\n <InputGroup\n size={size}\n leadingIcon={!!leadingIcon}\n trailingButton={!!trailing}\n invalid={invalid}\n disabled={disabled}\n readOnly={readOnly}\n className={className}\n {...(force ? { \"data-force\": force } : {})}\n >\n {leadingIcon && <Icon icon={leadingIcon} size={INPUT_ICON_SIZE[size]} className=\"text-fg-tertiary\" />}\n {prefix && <InputGroup.Addon>{prefix}</InputGroup.Addon>}\n {children}\n {suffix && <InputGroup.Addon>{suffix}</InputGroup.Addon>}\n {trailing}\n </InputGroup>\n );\n}\n\nexport interface SearchInputProps extends Omit<InputProps, \"leadingIcon\" | \"type\" | \"prefix\" | \"suffix\"> {\n shortcut?: string[] | undefined;\n onClear?: (() => void) | undefined;\n placeholder?: string | undefined;\n}\n\nexport const SearchInput = /* @__PURE__ */ forwardRef<HTMLInputElement, SearchInputProps>(function SearchInput(\n { shortcut, onClear, value, defaultValue, onChange, onKeyDown, placeholder, size = \"sm\", ...props },\n ref,\n) {\n const t = useUiText();\n const [inner, setInner] = useState(String(defaultValue ?? \"\"));\n const controlled = value !== undefined;\n const current = controlled ? String(value) : inner;\n const input = useRef<HTMLInputElement | null>(null);\n const clear = () => {\n const el = input.current;\n if (!controlled) setInner(\"\");\n else if (el && !onClear) {\n Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, \"value\")?.set?.call(el, \"\");\n el.dispatchEvent(new Event(\"input\", { bubbles: true }));\n }\n onClear?.();\n el?.focus();\n };\n return (\n <Input\n ref={(el) => {\n input.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n type=\"search\"\n size={size}\n leadingIcon={__icon_Search01Icon}\n placeholder={placeholder ?? t(\"searchInput.placeholder\", \"Search\")}\n autoComplete=\"off\"\n spellCheck={false}\n value={current}\n onChange={(e) => {\n if (!controlled) setInner(e.target.value);\n onChange?.(e);\n }}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\" && current) {\n e.stopPropagation();\n clear();\n }\n onKeyDown?.(e);\n }}\n trailing={current ? <InputGroup.Button icon={__icon_Cancel01Icon} aria-label={t(\"searchInput.clear\", \"Clear search\")} onClick={clear} /> : undefined}\n suffix={!current && shortcut ? <KbdSequence keys={shortcut} /> : undefined}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") SearchInput.displayName = \"SearchInput\";\n"],"mappings":";;;;;;;;;;;AASA,IAAaW,IAAuB,EAClC,MAAM;CACJ,IAAI,EAAE,SAAS,OAAO;CACtB,IAAI,EAAE,SAAS,OAAO;CACtB,IAAI,EAAE,SAAS,OAAO;CACtB,IAAI,EAAE,SAAS,OAAO;AACxB,EACF,GACaC,IAA+B,EAAE,MAAM,KAAK,GAc5CC,IAAwB,kBAAyC,SAAe,GAAO,GAAK;CACvG,IAAM,EACJ,UAAO,MACP,gBACA,WACA,WACA,aACA,YACA,UACA,UACA,gBACA,UACA,aACA,aACA,WACA,cACA,aACA,aACA,OACA,cAAcC,GACd,GAAGC,MACDC;CACJ,EAAqB,SAASC,CAAS;CACvC,IAAMC,IAAQZ,EAAS,GACjBa,IAAKZ,EAAgBS,CAAK,GAC1BI,IACJ,kBAACC,GAAD;EACQ;EACO;EACL;EACA;EACE;EACV,SAASC,KAAW,CAAC,CAACC;EACZ;EACA;EACH;EACP,WAAWC,KAASC,KAAeF,IAAQ,KAAA,IAAYN;EAEvD,UAAA,kBAACR,EAAW,OAAZ;GACO;GACK;GACA;GACA;GACV,WAAWiB,MAAU,QAAQ,uBAAuB,KAAA;GACpD,GAAKC,IAAK,EAAE,MAAG,IAAI,CAAC;GACpB,GAAIR,EAAG;GACP,GAAKG,KAAWC,IAAQ,EAAE,gBAAgB,GAAK,IAAI,CAAC;GACpD,GAAIR;EACL,CAAA;CACkB,CAAA;CAGvB,OADIG,IAAcE,IACXZ,EAAU;EAAE;EAAO;EAAa;EAAO;EAAU;EAAU;EAAQ,IAAIW,EAAG,UAAUQ;EAAI;EAAU;CAAU,GAAGP,CAAK;AAC7H,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc;AAE/D,SAASC,EAAoB,EAC3B,SACA,gBACA,WACA,WACA,aACA,YACA,aACA,aACA,UACA,cACA,eAaC;CACD,OACE,kBAACZ,GAAD;EACQ;EACN,aAAa,CAAC,CAACmB;EACf,gBAAgB,CAAC,CAACC;EACT;EACC;EACA;EACC;EACX,GAAKf,IAAQ,EAAE,cAAcA,EAAM,IAAI,CAAC;EAR1C,UAAA;GAUGc,KAAe,kBAACxB,GAAD;IAAM,MAAMwB;IAAa,MAAMlB,EAAgBoB;IAAO,WAAU;GAAoB,CAAA;GACnGC,KAAU,kBAACtB,EAAW,OAAZ,EAAA,UAAmBsB,EAAyB,CAAA;GACtDC;GACAC,KAAU,kBAACxB,EAAW,OAAZ,EAAA,UAAmBwB,EAAyB,CAAA;GACtDJ;EACS;;AAEhB;AAQA,IAAaK,IAA8B,kBAA+C,SACxF,EAAE,aAAU,YAAS,UAAO,iBAAc,aAAU,cAAW,gBAAa,UAAO,MAAM,GAAGlB,KAC5F,GACA;CACA,IAAMmB,IAAIhC,EAAU,GACd,CAACiB,GAAOgB,KAAYC,EAAS,OAAOC,KAAgB,EAAE,CAAC,GACvDC,IAAaC,MAAU,KAAA,GACvBC,IAAUF,IAAa,OAAOC,CAAK,IAAIpB,GACvCsB,IAAQC,EAAgC,IAAI,GAC5CC,UAAc;EAClB,IAAMC,IAAKH,EAAM;EAOjB,AANKH,IACIM,KAAM,CAACC,MACd,OAAO,yBAAyB,iBAAiB,WAAW,OAAO,CAAC,EAAE,KAAK,KAAKD,GAAI,EAAE,GACtFA,EAAG,cAAc,IAAI,MAAM,SAAS,EAAE,SAAS,GAAK,CAAC,CAAC,KAHvCT,EAAS,EAAE,GAK5BU,IAAU,GACVD,GAAI,MAAM;CACZ;CACA,OACE,kBAAChC,GAAD;EACE,MAAM,MAAO;GAEX,AADA,EAAM,UAAUgC,GACZ,OAAOE,KAAQ,aAAYA,EAAIF,CAAE,IAC5BE,MAAK,EAAI,UAAUF;EAC9B;EACA,MAAK;EACC;EACN,aAAa7C;EACb,aAAaiD,KAAed,EAAE,2BAA2B,QAAQ;EACjE,cAAa;EACb,YAAY;EACZ,OAAOM;EACP,WAAW,MAAM;GAEf,AADKF,KAAYH,EAAS,EAAE,OAAO,KAAK,GACxCc,IAAW,CAAC;EACd;EACA,YAAY,MAAuC;GAKjD,AAJI,EAAE,QAAQ,YAAYT,MACxB,EAAE,gBAAgB,GAClBG,EAAM,IAERO,IAAY,CAAC;EACf;EACA,UAAUV,IAAU,kBAAChC,EAAW,QAAZ;GAAmB,MAAMR;GAAqB,cAAYkC,EAAE,qBAAqB,cAAc;GAAG,SAASS;EAAQ,CAAA,IAAI,KAAA;EAC3I,QAAQ,CAACH,KAAWY,IAAW,kBAAChD,GAAD,EAAa,MAAMgD,EAAW,CAAA,IAAI,KAAA;EACjE,GAAIrC;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAY,cAAc"}
1
+ {"version":3,"file":"input-CNTfI6YE.js","names":["__icon_Search01Icon","__icon_Cancel01Icon","warnStylingClassName","useUiText","Icon","KbdSequence","useField","useFieldControl","withField","InputGroup","INPUT_ICON_SIZE","KAESO_INPUT_VARIANTS","KAESO_INPUT_DEFAULT_VARIANTS","Input","force","rest","props","className","field","fc","inner","InputGroupFromField","invalid","error","label","description","align","id","leadingIcon","trailing","size","prefix","children","suffix","SearchInput","t","setInner","useState","defaultValue","controlled","value","current","input","useRef","clear","el","onClear","ref","Search01Icon","placeholder","onChange","onKeyDown","Cancel01Icon","shortcut"],"sources":["../../src/components/input/input.tsx"],"sourcesContent":["import { forwardRef, useRef, useState, type InputHTMLAttributes, type KeyboardEvent, type ReactNode } from \"react\";\nimport { warnStylingClassName } from \"../../utils/dev.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { InputGroup, INPUT_ICON_SIZE, type InputSize } from \"./input-group.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { KbdSequence } from \"../kbd/kbd.js\";\nimport { Search01Icon as __icon_Search01Icon, Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_INPUT_VARIANTS = {\n size: {\n sm: { classes: \"h-32\" },\n md: { classes: \"h-36\" },\n lg: { classes: \"h-40\" },\n xl: { classes: \"h-48\" },\n },\n} as const;\nexport const KAESO_INPUT_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\">, FieldWrapProps {\n size?: InputSize | undefined;\n leadingIcon?: IconData | undefined;\n prefix?: ReactNode | undefined;\n suffix?: ReactNode | undefined;\n trailing?: ReactNode | undefined;\n invalid?: boolean | undefined;\n align?: \"start\" | \"end\" | undefined;\n \"data-force\"?: string | undefined;\n className?: string | undefined;\n}\n\nexport const Input = /* @__PURE__ */ forwardRef<HTMLInputElement, InputProps>(function Input(props, ref) {\n const {\n size = \"md\",\n leadingIcon,\n prefix,\n suffix,\n trailing,\n invalid,\n align,\n label,\n description,\n error,\n optional,\n required,\n layout,\n className,\n disabled,\n readOnly,\n id,\n \"data-force\": force,\n ...rest\n } = props;\n warnStylingClassName(\"Input\", className);\n const field = useField();\n const fc = useFieldControl(props);\n const inner = (\n <InputGroupFromField\n size={size}\n leadingIcon={leadingIcon}\n prefix={prefix}\n suffix={suffix}\n trailing={trailing}\n invalid={invalid || !!error}\n disabled={disabled}\n readOnly={readOnly}\n force={force}\n className={label || description || error ? undefined : className}\n >\n <InputGroup.Input\n ref={ref}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n className={align === \"end\" ? \"text-right tabular\" : undefined}\n {...(id ? { id } : {})}\n {...fc.controlProps}\n {...(invalid || error ? { \"aria-invalid\": true } : {})}\n {...rest}\n />\n </InputGroupFromField>\n );\n if (field) return inner;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, inner);\n});\nif (process.env.NODE_ENV !== \"production\") Input.displayName = \"Input\";\n\nfunction InputGroupFromField({\n size,\n leadingIcon,\n prefix,\n suffix,\n trailing,\n invalid,\n disabled,\n readOnly,\n force,\n className,\n children,\n}: {\n size: InputSize;\n leadingIcon?: IconData | undefined;\n prefix?: ReactNode | undefined;\n suffix?: ReactNode | undefined;\n trailing?: ReactNode | undefined;\n invalid?: boolean | undefined;\n disabled?: boolean | undefined;\n readOnly?: boolean | undefined;\n force?: string | undefined;\n className?: string | undefined;\n children: ReactNode;\n}) {\n return (\n <InputGroup\n size={size}\n leadingIcon={!!leadingIcon}\n trailingButton={!!trailing}\n invalid={invalid}\n disabled={disabled}\n readOnly={readOnly}\n className={className}\n {...(force ? { \"data-force\": force } : {})}\n >\n {leadingIcon && <Icon icon={leadingIcon} size={INPUT_ICON_SIZE[size]} className=\"text-fg-tertiary\" />}\n {prefix && <InputGroup.Addon>{prefix}</InputGroup.Addon>}\n {children}\n {suffix && <InputGroup.Addon>{suffix}</InputGroup.Addon>}\n {trailing}\n </InputGroup>\n );\n}\n\nexport interface SearchInputProps extends Omit<InputProps, \"leadingIcon\" | \"type\" | \"prefix\" | \"suffix\"> {\n shortcut?: string[] | undefined;\n onClear?: (() => void) | undefined;\n placeholder?: string | undefined;\n}\n\nexport const SearchInput = /* @__PURE__ */ forwardRef<HTMLInputElement, SearchInputProps>(function SearchInput(\n { shortcut, onClear, value, defaultValue, onChange, onKeyDown, placeholder, size = \"sm\", ...props },\n ref,\n) {\n const t = useUiText();\n const [inner, setInner] = useState(String(defaultValue ?? \"\"));\n const controlled = value !== undefined;\n const current = controlled ? String(value) : inner;\n const input = useRef<HTMLInputElement | null>(null);\n const clear = () => {\n const el = input.current;\n if (!controlled) setInner(\"\");\n else if (el && !onClear) {\n Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, \"value\")?.set?.call(el, \"\");\n el.dispatchEvent(new Event(\"input\", { bubbles: true }));\n }\n onClear?.();\n el?.focus();\n };\n return (\n <Input\n ref={(el) => {\n input.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n type=\"search\"\n size={size}\n leadingIcon={__icon_Search01Icon}\n placeholder={placeholder ?? t(\"searchInput.placeholder\", \"Search\")}\n autoComplete=\"off\"\n spellCheck={false}\n value={current}\n onChange={(e) => {\n if (!controlled) setInner(e.target.value);\n onChange?.(e);\n }}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\" && current) {\n e.stopPropagation();\n clear();\n }\n onKeyDown?.(e);\n }}\n trailing={current ? <InputGroup.Button icon={__icon_Cancel01Icon} aria-label={t(\"searchInput.clear\", \"Clear search\")} onClick={clear} /> : undefined}\n suffix={!current && shortcut ? <KbdSequence keys={shortcut} /> : undefined}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") SearchInput.displayName = \"SearchInput\";\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { t as e } from "./cn-CidVUKMm.js";
3
3
  import { t } from "./icon-CeNQtobn.js";
4
- import { n } from "./button-BHKAE6ui.js";
4
+ import { n } from "./button-DQvoOxVQ.js";
5
5
  import { t as r } from "./field-press-DwzBFafd.js";
6
6
  import { createContext as i, forwardRef as a, useContext as o } from "react";
7
7
  import { jsx as s, jsxs as c } from "react/jsx-runtime";
@@ -84,4 +84,4 @@ var y = /* @__PURE__ */ Object.assign(h, {
84
84
  //#endregion
85
85
  export { b as a, l as i, y as n, u as r, p as t };
86
86
 
87
- //# sourceMappingURL=input-group-DQqEPFj_.js.map
87
+ //# sourceMappingURL=input-group-CYA1MEoZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-group-DQqEPFj_.js","names":["cn","focusInputOnPress","KAESO_INPUT_GROUP_VARIANTS","KAESO_INPUT_GROUP_DEFAULT_VARIANTS","LEADING","TRAILING_BUTTON","INPUT_ICON_SIZE","Ctx","Root","props","size","leadingIcon","trailingButton","disabled","className","invalid","readOnly","Input","Addon","useContext","icon","Icon","children","GroupButton","Button","InputGroup","useInputGroupSize"],"sources":["../../src/components/input/input-group.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { createContext, forwardRef, useContext, type HTMLAttributes, type InputHTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { focusInputOnPress } from \"../../utils/field-press.js\";\nimport { Icon, type IconData, type IconSize } from \"../icon/icon.js\";\nimport { Button } from \"../button/button.js\";\n\nexport const KAESO_INPUT_GROUP_VARIANTS = {\n size: {\n sm: { classes: \"h-32 px-12 gap-6 text-body\" },\n md: { classes: \"h-36 px-16 gap-8 text-body\" },\n lg: { classes: \"h-40 px-18 gap-8 text-body\" },\n xl: { classes: \"h-48 px-22 gap-8 text-body-lg\" },\n },\n} as const;\nexport const KAESO_INPUT_GROUP_DEFAULT_VARIANTS = { size: \"md\" } as const;\nexport type InputSize = keyof typeof KAESO_INPUT_GROUP_VARIANTS.size;\n\nconst LEADING: Record<InputSize, string> = { sm: \"pl-10\", md: \"pl-14\", lg: \"pl-16\", xl: \"pl-20\" };\nconst TRAILING_BUTTON: Record<InputSize, string> = { sm: \"pr-4\", md: \"pr-2\", lg: \"pr-4\", xl: \"pr-6\" };\nexport const INPUT_ICON_SIZE: Record<InputSize, IconSize> = { sm: \"sm\", md: \"sm\", lg: \"md\", xl: \"lg\" };\n\nconst Ctx = /* @__PURE__ */ createContext<{ size: InputSize }>({ size: \"md\" });\n\nexport interface InputGroupProps extends HTMLAttributes<HTMLDivElement> {\n size?: InputSize | undefined;\n leadingIcon?: boolean | undefined;\n trailingButton?: boolean | undefined;\n invalid?: boolean | undefined;\n disabled?: boolean | undefined;\n readOnly?: boolean | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, InputGroupProps>(function InputGroup(\n { size = \"md\", leadingIcon, trailingButton, invalid, disabled, readOnly, className, children, ...props },\n ref,\n) {\n return (\n <Ctx.Provider value={{ size }}>\n <div\n ref={ref}\n className={cn(\n \"relative flex w-full min-w-0 items-center rounded-pill material-field transition-control cursor-text\",\n KAESO_INPUT_GROUP_VARIANTS.size[size].classes,\n leadingIcon && LEADING[size],\n trailingButton && TRAILING_BUTTON[size],\n disabled && \"cursor-not-allowed\",\n className,\n )}\n {...(invalid ? { \"data-invalid\": \"\" } : {})}\n {...(disabled ? { \"data-disabled\": \"\" } : {})}\n {...(readOnly ? { \"data-readonly\": \"\" } : {})}\n onMouseDown={focusInputOnPress}\n {...props}\n >\n {children}\n </div>\n </Ctx.Provider>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"InputGroup\";\n\nexport interface InputGroupInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\"> {}\n\nconst Input = /* @__PURE__ */ forwardRef<HTMLInputElement, InputGroupInputProps>(function InputGroupInput({ className, ...props }, ref) {\n return (\n <input\n ref={ref}\n className={cn(\n \"min-w-0 flex-1 bg-transparent bidi-plaintext text-inherit text-fg outline-none placeholder:text-fg-tertiary disabled:cursor-not-allowed disabled:text-fg-disabled read-only:cursor-text\",\n className,\n )}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Input.displayName = \"InputGroup.Input\";\n\nexport interface InputGroupAddonProps extends HTMLAttributes<HTMLSpanElement> {\n icon?: IconData | undefined;\n}\n\nconst Addon = /* @__PURE__ */ forwardRef<HTMLSpanElement, InputGroupAddonProps>(function InputGroupAddon({ icon, className, children, ...props }, ref) {\n const { size } = useContext(Ctx);\n return (\n <span ref={ref} className={cn(\"inline-flex shrink-0 items-center gap-4 bidi-plaintext text-fg-secondary select-none\", className)} {...props}>\n {icon && <Icon icon={icon} size={INPUT_ICON_SIZE[size]} />}\n {children}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Addon.displayName = \"InputGroup.Addon\";\n\nexport interface InputGroupButtonProps {\n icon: IconData;\n \"aria-label\": string;\n onClick?: (() => void) | undefined;\n disabled?: boolean | undefined;\n className?: string | undefined;\n}\n\nconst GroupButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, InputGroupButtonProps>(function InputGroupButton({ icon, className, ...props }, ref) {\n const { size } = useContext(Ctx);\n return (\n <Button\n ref={ref as React.Ref<HTMLButtonElement & HTMLAnchorElement>}\n shape=\"circle\"\n variant=\"quiet\"\n size={size === \"xl\" ? \"md\" : size === \"lg\" ? \"sm\" : size === \"md\" ? \"sm\" : \"xs\"}\n icon={icon}\n className={className}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") GroupButton.displayName = \"InputGroup.Button\";\n\nexport const InputGroup = /* @__PURE__ */ Object.assign(Root, { Input, Addon, Button: GroupButton });\nexport const useInputGroupSize = () => useContext(Ctx).size;\n"],"mappings":";;;;;;;;AAOA,IAAaE,IAA6B,EACxC,MAAM;CACJ,IAAI,EAAE,SAAS,6BAA6B;CAC5C,IAAI,EAAE,SAAS,6BAA6B;CAC5C,IAAI,EAAE,SAAS,6BAA6B;CAC5C,IAAI,EAAE,SAAS,gCAAgC;AACjD,EACF,GACaC,IAAqC,EAAE,MAAM,KAAK,GAGzDC,IAAqC;CAAE,IAAI;CAAS,IAAI;CAAS,IAAI;CAAS,IAAI;AAAQ,GAC1FC,IAA6C;CAAE,IAAI;CAAQ,IAAI;CAAQ,IAAI;CAAQ,IAAI;AAAO,GACvFC,IAA+C;CAAE,IAAI;CAAM,IAAI;CAAM,IAAI;CAAM,IAAI;AAAK,GAE/FC,IAAsB,kBAAmC,EAAE,MAAM,KAAK,CAAC,GAYvEC,IAAuB,kBAA4C,SACvE,EAAE,UAAO,MAAM,gBAAa,mBAAgB,YAAS,aAAU,aAAU,cAAW,aAAU,GAAGC,KACjG,GACA;CACA,OACE,kBAACF,EAAI,UAAL;EAAc,OAAO,EAAE,QAAK;EAC1B,UAAA,kBAAC,OAAD;GACO;GACL,WAAWP,EACT,wGACAE,EAA2B,KAAKQ,EAAK,CAAC,SACtCC,KAAeP,EAAQM,IACvBE,KAAkBP,EAAgBK,IAClCG,KAAY,sBACZC,CACF;GACA,GAAKC,IAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;GACzC,GAAKF,IAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;GAC3C,GAAKG,IAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;GAC3C,aAAaf;GACb,GAAIQ;GAEH;EACE,CAAA;CACO,CAAA;AAElB,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc;AAI9D,IAAMQ,IAAwB,kBAAmD,SAAyB,EAAE,cAAW,GAAGR,KAAS,GAAK;CACtI,OACE,kBAAC,SAAD;EACO;EACL,WAAWT,EACT,2LACAc,CACF;EACA,GAAIL;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc;AAM/D,IAAMS,IAAwB,kBAAkD,SAAyB,EAAE,SAAM,cAAW,aAAU,GAAGT,KAAS,GAAK;CACrJ,IAAM,EAAE,YAASU,EAAWZ,CAAG;CAC/B,OACE,kBAAC,QAAD;EAAW;EAAK,WAAWP,EAAG,wFAAwFc,CAAS;EAAG,GAAIL;EAAtI,UAAA,CACGW,KAAQ,kBAACC,GAAD;GAAY;GAAM,MAAMf,EAAgBI;EAAQ,CAAA,GACxDY,CACG;;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc;AAU/D,IAAMC,IAA8B,kBAAqD,SAA0B,EAAE,SAAM,cAAW,GAAGd,KAAS,GAAK;CACrJ,IAAM,EAAE,YAASU,EAAWZ,CAAG;CAC/B,OACE,kBAACiB,GAAD;EACO;EACL,OAAM;EACN,SAAQ;EACR,MAAMd,MAAS,OAAO,OAAOA,MAAS,QAAcA,MAAS,OAAhB,OAA8B;EACrE;EACK;EACX,GAAID;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAY,cAAc;AAErE,IAAagB,IAA6B,uBAAO,OAAOjB,GAAM;CAAE;CAAO;CAAO,QAAQe;AAAY,CAAC,GACtFG,UAA0BP,EAAWZ,CAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"input-group-CYA1MEoZ.js","names":["cn","focusInputOnPress","KAESO_INPUT_GROUP_VARIANTS","KAESO_INPUT_GROUP_DEFAULT_VARIANTS","LEADING","TRAILING_BUTTON","INPUT_ICON_SIZE","Ctx","Root","props","size","leadingIcon","trailingButton","disabled","className","invalid","readOnly","Input","Addon","useContext","icon","Icon","children","GroupButton","Button","InputGroup","useInputGroupSize"],"sources":["../../src/components/input/input-group.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { createContext, forwardRef, useContext, type HTMLAttributes, type InputHTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { focusInputOnPress } from \"../../utils/field-press.js\";\nimport { Icon, type IconData, type IconSize } from \"../icon/icon.js\";\nimport { Button } from \"../button/button.js\";\n\nexport const KAESO_INPUT_GROUP_VARIANTS = {\n size: {\n sm: { classes: \"h-32 px-12 gap-6 text-body\" },\n md: { classes: \"h-36 px-16 gap-8 text-body\" },\n lg: { classes: \"h-40 px-18 gap-8 text-body\" },\n xl: { classes: \"h-48 px-22 gap-8 text-body-lg\" },\n },\n} as const;\nexport const KAESO_INPUT_GROUP_DEFAULT_VARIANTS = { size: \"md\" } as const;\nexport type InputSize = keyof typeof KAESO_INPUT_GROUP_VARIANTS.size;\n\nconst LEADING: Record<InputSize, string> = { sm: \"pl-10\", md: \"pl-14\", lg: \"pl-16\", xl: \"pl-20\" };\nconst TRAILING_BUTTON: Record<InputSize, string> = { sm: \"pr-4\", md: \"pr-2\", lg: \"pr-4\", xl: \"pr-6\" };\nexport const INPUT_ICON_SIZE: Record<InputSize, IconSize> = { sm: \"sm\", md: \"sm\", lg: \"md\", xl: \"lg\" };\n\nconst Ctx = /* @__PURE__ */ createContext<{ size: InputSize }>({ size: \"md\" });\n\nexport interface InputGroupProps extends HTMLAttributes<HTMLDivElement> {\n size?: InputSize | undefined;\n leadingIcon?: boolean | undefined;\n trailingButton?: boolean | undefined;\n invalid?: boolean | undefined;\n disabled?: boolean | undefined;\n readOnly?: boolean | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, InputGroupProps>(function InputGroup(\n { size = \"md\", leadingIcon, trailingButton, invalid, disabled, readOnly, className, children, ...props },\n ref,\n) {\n return (\n <Ctx.Provider value={{ size }}>\n <div\n ref={ref}\n className={cn(\n \"relative flex w-full min-w-0 items-center rounded-pill material-field transition-control cursor-text\",\n KAESO_INPUT_GROUP_VARIANTS.size[size].classes,\n leadingIcon && LEADING[size],\n trailingButton && TRAILING_BUTTON[size],\n disabled && \"cursor-not-allowed\",\n className,\n )}\n {...(invalid ? { \"data-invalid\": \"\" } : {})}\n {...(disabled ? { \"data-disabled\": \"\" } : {})}\n {...(readOnly ? { \"data-readonly\": \"\" } : {})}\n onMouseDown={focusInputOnPress}\n {...props}\n >\n {children}\n </div>\n </Ctx.Provider>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"InputGroup\";\n\nexport interface InputGroupInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\"> {}\n\nconst Input = /* @__PURE__ */ forwardRef<HTMLInputElement, InputGroupInputProps>(function InputGroupInput({ className, ...props }, ref) {\n return (\n <input\n ref={ref}\n className={cn(\n \"min-w-0 flex-1 bg-transparent bidi-plaintext text-inherit text-fg outline-none placeholder:text-fg-tertiary disabled:cursor-not-allowed disabled:text-fg-disabled read-only:cursor-text\",\n className,\n )}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Input.displayName = \"InputGroup.Input\";\n\nexport interface InputGroupAddonProps extends HTMLAttributes<HTMLSpanElement> {\n icon?: IconData | undefined;\n}\n\nconst Addon = /* @__PURE__ */ forwardRef<HTMLSpanElement, InputGroupAddonProps>(function InputGroupAddon({ icon, className, children, ...props }, ref) {\n const { size } = useContext(Ctx);\n return (\n <span ref={ref} className={cn(\"inline-flex shrink-0 items-center gap-4 bidi-plaintext text-fg-secondary select-none\", className)} {...props}>\n {icon && <Icon icon={icon} size={INPUT_ICON_SIZE[size]} />}\n {children}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Addon.displayName = \"InputGroup.Addon\";\n\nexport interface InputGroupButtonProps {\n icon: IconData;\n \"aria-label\": string;\n onClick?: (() => void) | undefined;\n disabled?: boolean | undefined;\n className?: string | undefined;\n}\n\nconst GroupButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, InputGroupButtonProps>(function InputGroupButton({ icon, className, ...props }, ref) {\n const { size } = useContext(Ctx);\n return (\n <Button\n ref={ref as React.Ref<HTMLButtonElement & HTMLAnchorElement>}\n shape=\"circle\"\n variant=\"quiet\"\n size={size === \"xl\" ? \"md\" : size === \"lg\" ? \"sm\" : size === \"md\" ? \"sm\" : \"xs\"}\n icon={icon}\n className={className}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") GroupButton.displayName = \"InputGroup.Button\";\n\nexport const InputGroup = /* @__PURE__ */ Object.assign(Root, { Input, Addon, Button: GroupButton });\nexport const useInputGroupSize = () => useContext(Ctx).size;\n"],"mappings":";;;;;;;;AAOA,IAAaE,IAA6B,EACxC,MAAM;CACJ,IAAI,EAAE,SAAS,6BAA6B;CAC5C,IAAI,EAAE,SAAS,6BAA6B;CAC5C,IAAI,EAAE,SAAS,6BAA6B;CAC5C,IAAI,EAAE,SAAS,gCAAgC;AACjD,EACF,GACaC,IAAqC,EAAE,MAAM,KAAK,GAGzDC,IAAqC;CAAE,IAAI;CAAS,IAAI;CAAS,IAAI;CAAS,IAAI;AAAQ,GAC1FC,IAA6C;CAAE,IAAI;CAAQ,IAAI;CAAQ,IAAI;CAAQ,IAAI;AAAO,GACvFC,IAA+C;CAAE,IAAI;CAAM,IAAI;CAAM,IAAI;CAAM,IAAI;AAAK,GAE/FC,IAAsB,kBAAmC,EAAE,MAAM,KAAK,CAAC,GAYvEC,IAAuB,kBAA4C,SACvE,EAAE,UAAO,MAAM,gBAAa,mBAAgB,YAAS,aAAU,aAAU,cAAW,aAAU,GAAGC,KACjG,GACA;CACA,OACE,kBAACF,EAAI,UAAL;EAAc,OAAO,EAAE,QAAK;EAC1B,UAAA,kBAAC,OAAD;GACO;GACL,WAAWP,EACT,wGACAE,EAA2B,KAAKQ,EAAK,CAAC,SACtCC,KAAeP,EAAQM,IACvBE,KAAkBP,EAAgBK,IAClCG,KAAY,sBACZC,CACF;GACA,GAAKC,IAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;GACzC,GAAKF,IAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;GAC3C,GAAKG,IAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;GAC3C,aAAaf;GACb,GAAIQ;GAEH;EACE,CAAA;CACO,CAAA;AAElB,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc;AAI9D,IAAMQ,IAAwB,kBAAmD,SAAyB,EAAE,cAAW,GAAGR,KAAS,GAAK;CACtI,OACE,kBAAC,SAAD;EACO;EACL,WAAWT,EACT,2LACAc,CACF;EACA,GAAIL;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc;AAM/D,IAAMS,IAAwB,kBAAkD,SAAyB,EAAE,SAAM,cAAW,aAAU,GAAGT,KAAS,GAAK;CACrJ,IAAM,EAAE,YAASU,EAAWZ,CAAG;CAC/B,OACE,kBAAC,QAAD;EAAW;EAAK,WAAWP,EAAG,wFAAwFc,CAAS;EAAG,GAAIL;EAAtI,UAAA,CACGW,KAAQ,kBAACC,GAAD;GAAY;GAAM,MAAMf,EAAgBI;EAAQ,CAAA,GACxDY,CACG;;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc;AAU/D,IAAMC,IAA8B,kBAAqD,SAA0B,EAAE,SAAM,cAAW,GAAGd,KAAS,GAAK;CACrJ,IAAM,EAAE,YAASU,EAAWZ,CAAG;CAC/B,OACE,kBAACiB,GAAD;EACO;EACL,OAAM;EACN,SAAQ;EACR,MAAMd,MAAS,OAAO,OAAOA,MAAS,QAAcA,MAAS,OAAhB,OAA8B;EACrE;EACK;EACX,GAAID;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAY,cAAc;AAErE,IAAagB,IAA6B,uBAAO,OAAOjB,GAAM;CAAE;CAAO;CAAO,QAAQe;AAAY,CAAC,GACtFG,UAA0BP,EAAWZ,CAAG,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { i as e } from "./context-BELWW79w.js";
3
3
  import { formatISODate as t, parseISODate as n } from "../format.js";
4
- import { n as r } from "./input-group-DQqEPFj_.js";
4
+ import { n as r } from "./input-group-CYA1MEoZ.js";
5
5
  import { useState as i } from "react";
6
6
  import { jsx as a } from "react/jsx-runtime";
7
7
  //#region src/components/date-picker/iso-field.tsx
@@ -28,4 +28,4 @@ function o({ label: o, value: s, onCommit: c }) {
28
28
  //#endregion
29
29
  export { o as t };
30
30
 
31
- //# sourceMappingURL=iso-field-CznqNVrH.js.map
31
+ //# sourceMappingURL=iso-field-1qmg7TP8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"iso-field-CznqNVrH.js","names":["useUiText","InputGroup","IsoField","t","text","setText","useState","value","formatISODate","shown","setShown","label","d","parseISODate","onCommit"],"sources":["../../src/components/date-picker/iso-field.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { InputGroup } from \"../input/input-group.js\";\nimport { formatISODate, parseISODate } from \"../../format/index.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport function IsoField({ label, value, onCommit }: { label: string; value: Date | undefined; onCommit: (d: Date) => boolean | void }) {\n const t = useUiText();\n const [text, setText] = useState(value ? formatISODate(value) : \"\");\n const [shown, setShown] = useState(value);\n if (value !== shown) {\n setShown(value);\n setText(value ? formatISODate(value) : \"\");\n }\n return (\n <InputGroup size=\"sm\" className=\"flex-1\">\n <InputGroup.Input\n aria-label={label}\n placeholder={t(\"datePicker.isoPlaceholder\", \"YYYY-MM-DD\")}\n value={text}\n inputMode=\"numeric\"\n className=\"mono text-small\"\n onChange={(e) => setText(e.target.value)}\n onBlur={() => {\n const d = parseISODate(text);\n if (!d || onCommit(d) === false) setText(value ? formatISODate(value) : \"\");\n }}\n onKeyDown={(e) => e.key === \"Enter\" && (e.target as HTMLInputElement).blur()}\n />\n </InputGroup>\n );\n}\n"],"mappings":";;;;;;;AAKA,SAAgBE,EAAS,EAAE,UAAO,UAAO,eAA+F;CACtI,IAAMC,IAAIH,EAAU,GACd,CAACI,GAAMC,KAAWC,EAASC,IAAQC,EAAcD,CAAK,IAAI,EAAE,GAC5D,CAACE,GAAOC,KAAYJ,EAASC,CAAK;CAKxC,OAJIA,MAAUE,MACZC,EAASH,CAAK,GACdF,EAAQE,IAAQC,EAAcD,CAAK,IAAI,EAAE,IAGzC,kBAACN,GAAD;EAAY,MAAK;EAAK,WAAU;EAC9B,UAAA,kBAACA,EAAW,OAAZ;GACE,cAAYU;GACZ,aAAaR,EAAE,6BAA6B,YAAY;GACxD,OAAOC;GACP,WAAU;GACV,WAAU;GACV,WAAW,MAAMC,EAAQ,EAAE,OAAO,KAAK;GACvC,cAAc;IACZ,IAAMO,IAAIC,EAAaT,CAAI;IAC3B,CAAI,CAACQ,KAAKE,EAASF,CAAC,MAAM,OAAOP,EAAQE,IAAQC,EAAcD,CAAK,IAAI,EAAE;GAC5E;GACA,YAAY,MAAM,EAAE,QAAQ,WAAY,EAAE,OAA4B,KAAK;EAC5E,CAAA;CACS,CAAA;AAEhB"}
1
+ {"version":3,"file":"iso-field-1qmg7TP8.js","names":["useUiText","InputGroup","IsoField","t","text","setText","useState","value","formatISODate","shown","setShown","label","d","parseISODate","onCommit"],"sources":["../../src/components/date-picker/iso-field.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { InputGroup } from \"../input/input-group.js\";\nimport { formatISODate, parseISODate } from \"../../format/index.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport function IsoField({ label, value, onCommit }: { label: string; value: Date | undefined; onCommit: (d: Date) => boolean | void }) {\n const t = useUiText();\n const [text, setText] = useState(value ? formatISODate(value) : \"\");\n const [shown, setShown] = useState(value);\n if (value !== shown) {\n setShown(value);\n setText(value ? formatISODate(value) : \"\");\n }\n return (\n <InputGroup size=\"sm\" className=\"flex-1\">\n <InputGroup.Input\n aria-label={label}\n placeholder={t(\"datePicker.isoPlaceholder\", \"YYYY-MM-DD\")}\n value={text}\n inputMode=\"numeric\"\n className=\"mono text-small\"\n onChange={(e) => setText(e.target.value)}\n onBlur={() => {\n const d = parseISODate(text);\n if (!d || onCommit(d) === false) setText(value ? formatISODate(value) : \"\");\n }}\n onKeyDown={(e) => e.key === \"Enter\" && (e.target as HTMLInputElement).blur()}\n />\n </InputGroup>\n );\n}\n"],"mappings":";;;;;;;AAKA,SAAgBE,EAAS,EAAE,UAAO,UAAO,eAA+F;CACtI,IAAMC,IAAIH,EAAU,GACd,CAACI,GAAMC,KAAWC,EAASC,IAAQC,EAAcD,CAAK,IAAI,EAAE,GAC5D,CAACE,GAAOC,KAAYJ,EAASC,CAAK;CAKxC,OAJIA,MAAUE,MACZC,EAASH,CAAK,GACdF,EAAQE,IAAQC,EAAcD,CAAK,IAAI,EAAE,IAGzC,kBAACN,GAAD;EAAY,MAAK;EAAK,WAAU;EAC9B,UAAA,kBAACA,EAAW,OAAZ;GACE,cAAYU;GACZ,aAAaR,EAAE,6BAA6B,YAAY;GACxD,OAAOC;GACP,WAAU;GACV,WAAU;GACV,WAAW,MAAMC,EAAQ,EAAE,OAAO,KAAK;GACvC,cAAc;IACZ,IAAMO,IAAIC,EAAaT,CAAI;IAC3B,CAAI,CAACQ,KAAKE,EAASF,CAAC,MAAM,OAAOP,EAAQE,IAAQC,EAAcD,CAAK,IAAI,EAAE;GAC5E;GACA,YAAY,MAAM,EAAE,QAAQ,WAAY,EAAE,OAA4B,KAAK;EAC5E,CAAA;CACS,CAAA;AAEhB"}
@@ -0,0 +1,37 @@
1
+ import { tickIncrement as e, ticks as t } from "d3-array";
2
+ //#region src/components/charts/linear-scale.ts
3
+ function n(e, t) {
4
+ let [n, r] = e[1] < e[0] ? [e[1], e[0]] : e, [i, a] = e[1] < e[0] ? [t[1], t[0]] : t, o = r - n;
5
+ return (e) => {
6
+ let t = o ? (+e - n) / o : Number.isNaN(o) ? NaN : .5;
7
+ return i * (1 - t) + a * t;
8
+ };
9
+ }
10
+ function r([t, n], r) {
11
+ let i = n < t, a = i ? n : t, o = i ? t : n, s;
12
+ for (let t = 0; t < 10; t++) {
13
+ let t = e(a, o, r);
14
+ if (t === s) return i ? [o, a] : [a, o];
15
+ if (t > 0) a = Math.floor(a / t) * t, o = Math.ceil(o / t) * t;
16
+ else if (t < 0) a = Math.ceil(a * t) / t, o = Math.floor(o * t) / t;
17
+ else break;
18
+ s = t;
19
+ }
20
+ return [t, n];
21
+ }
22
+ function i(e = [0, 1], a = [0, 1]) {
23
+ let o = [e[0], e[1]], s = [a[0], a[1]], c = n(o, s), l = n(s, o), u = () => {
24
+ c = n(o, s), l = n(s, o);
25
+ }, d = ((e) => c(e));
26
+ function f(e) {
27
+ return e ? (o = [+e[0], +e[1]], u(), d) : [o[0], o[1]];
28
+ }
29
+ function p(e) {
30
+ return e ? (s = [+e[0], +e[1]], u(), d) : [s[0], s[1]];
31
+ }
32
+ return d.domain = f, d.range = p, d.nice = (e = 10) => f(r(o, e)), d.ticks = (e = 10) => t(o[0], o[1], e), d.invert = (e) => l(e), d.copy = () => i(o, s), d;
33
+ }
34
+ //#endregion
35
+ export { i as t };
36
+
37
+ //# sourceMappingURL=linear-scale-BWKeRqDX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear-scale-BWKeRqDX.js","names":["map","a","b","from","c","d","to","span","value","niceDomain","lo","hi","reversed","start","stop","previous","i","step","tickIncrement","count","scaleLinear","domain","r","range","forward","backward","rescale","scale","domainOf","next","rangeOf","ticks"],"sources":["../../src/components/charts/linear-scale.ts"],"sourcesContent":["import { tickIncrement, ticks } from \"d3-array\";\n\ntype Pair = readonly [number, number];\ntype NumberLike = number | { valueOf(): number };\n\nexport interface LinearScale {\n (value: NumberLike): number;\n domain(): [number, number];\n domain(next: Pair): LinearScale;\n range(): [number, number];\n range(next: Pair): LinearScale;\n nice(count?: number): LinearScale;\n ticks(count?: number): number[];\n invert(value: number): number;\n copy(): LinearScale;\n}\n\nfunction map(from: Pair, to: Pair): (value: NumberLike) => number {\n const [a, b] = from[1] < from[0] ? [from[1], from[0]] : from;\n const [c, d] = from[1] < from[0] ? [to[1], to[0]] : to;\n const span = b - a;\n return (value) => {\n const t = span ? (+value - a) / span : Number.isNaN(span) ? NaN : 0.5;\n return c * (1 - t) + d * t;\n };\n}\n\nfunction niceDomain([lo, hi]: Pair, count: number): [number, number] {\n const reversed = hi < lo;\n let start = reversed ? hi : lo;\n let stop = reversed ? lo : hi;\n let previous: number | undefined;\n for (let i = 0; i < 10; i++) {\n const step = tickIncrement(start, stop, count);\n if (step === previous) return reversed ? [stop, start] : [start, stop];\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else break;\n previous = step;\n }\n return [lo, hi];\n}\n\nexport function scaleLinear(domain: Pair = [0, 1], range: Pair = [0, 1]): LinearScale {\n let d: [number, number] = [domain[0], domain[1]];\n let r: [number, number] = [range[0], range[1]];\n let forward = map(d, r);\n let backward = map(r, d);\n const rescale = () => {\n forward = map(d, r);\n backward = map(r, d);\n };\n const scale = ((value: NumberLike) => forward(value)) as LinearScale;\n function domainOf(): [number, number];\n function domainOf(next: Pair): LinearScale;\n function domainOf(next?: Pair) {\n if (!next) return [d[0], d[1]];\n d = [+next[0], +next[1]];\n rescale();\n return scale;\n }\n function rangeOf(): [number, number];\n function rangeOf(next: Pair): LinearScale;\n function rangeOf(next?: Pair) {\n if (!next) return [r[0], r[1]];\n r = [+next[0], +next[1]];\n rescale();\n return scale;\n }\n scale.domain = domainOf;\n scale.range = rangeOf;\n scale.nice = (count = 10) => domainOf(niceDomain(d, count));\n scale.ticks = (count = 10) => ticks(d[0], d[1], count);\n scale.invert = (value) => backward(value);\n scale.copy = () => scaleLinear(d, r);\n return scale;\n}\n"],"mappings":";;AAiBA,SAASA,EAAI,GAAY,GAAyC;CAChE,IAAM,CAACC,GAAGC,KAAKC,EAAK,KAAKA,EAAK,KAAK,CAACA,EAAK,IAAIA,EAAK,EAAE,IAAIA,GAClD,CAACC,GAAGC,KAAKF,EAAK,KAAKA,EAAK,KAAK,CAACG,EAAG,IAAIA,EAAG,EAAE,IAAIA,GAC9CC,IAAOL,IAAID;CACjB,QAAQ,MAAU;EAChB,IAAM,IAAIM,KAAQ,CAACC,IAAQP,KAAKM,IAAO,OAAO,MAAMA,CAAI,IAAI,MAAM;EAClE,OAAOH,KAAK,IAAI,KAAKC,IAAI;CAC3B;AACF;AAEA,SAASI,EAAW,CAACC,GAAIC,IAAW,GAAiC;CACnE,IAAMC,IAAWD,IAAKD,GAClBG,IAAQD,IAAWD,IAAKD,GACxBI,IAAOF,IAAWF,IAAKC,GACvBI;CACJ,KAAK,IAAIC,IAAI,GAAGA,IAAI,IAAI,KAAK;EAC3B,IAAMC,IAAOC,EAAcL,GAAOC,GAAMK,CAAK;EAC7C,IAAIF,MAASF,GAAU,OAAOH,IAAW,CAACE,GAAMD,CAAK,IAAI,CAACA,GAAOC,CAAI;EACrE,IAAIG,IAAO,GAET,AADA,IAAQ,KAAK,MAAMJ,IAAQI,CAAI,IAAIA,GACnC,IAAO,KAAK,KAAKH,IAAOG,CAAI,IAAIA;OAC3B,IAAIA,IAAO,GAEhB,AADA,IAAQ,KAAK,KAAKJ,IAAQI,CAAI,IAAIA,GAClC,IAAO,KAAK,MAAMH,IAAOG,CAAI,IAAIA;OAC5B;EACP,IAAWA;CACb;CACA,OAAO,CAACP,GAAIC,CAAE;AAChB;AAEA,SAAgBS,EAAY,IAAe,CAAC,GAAG,CAAC,GAAG,IAAc,CAAC,GAAG,CAAC,GAAgB;CACpF,IAAIf,IAAsB,CAACgB,EAAO,IAAIA,EAAO,EAAE,GAC3CC,IAAsB,CAACC,EAAM,IAAIA,EAAM,EAAE,GACzCC,IAAUxB,EAAIK,GAAGiB,CAAC,GAClBG,IAAWzB,EAAIsB,GAAGjB,CAAC,GACjBqB,UAAgB;EAEpB,AADA,IAAU1B,EAAIK,GAAGiB,CAAC,GAClB,IAAWtB,EAAIsB,GAAGjB,CAAC;CACrB,GACMsB,MAAU,MAAsBH,EAAQhB,CAAK;CAGnD,SAASoB,EAAS,GAAa;EAI7B,OAHKC,KACL,IAAI,CAAC,CAACA,EAAK,IAAI,CAACA,EAAK,EAAE,GACvBH,EAAQ,GACDC,KAHW,CAACtB,EAAE,IAAIA,EAAE,EAAE;CAI/B;CAGA,SAASyB,EAAQ,GAAa;EAI5B,OAHKD,KACL,IAAI,CAAC,CAACA,EAAK,IAAI,CAACA,EAAK,EAAE,GACvBH,EAAQ,GACDC,KAHW,CAACL,EAAE,IAAIA,EAAE,EAAE;CAI/B;CAOA,OANA,EAAM,SAASM,GACf,EAAM,QAAQE,GACd,EAAM,QAAQ,IAAQ,OAAOF,EAASnB,EAAWJ,GAAGc,CAAK,CAAC,GAC1D,EAAM,SAAS,IAAQ,OAAOY,EAAM1B,EAAE,IAAIA,EAAE,IAAIc,CAAK,GACrD,EAAM,UAAU,MAAUM,EAASjB,CAAK,GACxC,EAAM,aAAaY,EAAYf,GAAGiB,CAAC,GAC5BK;AACT"}
@@ -10,7 +10,9 @@ import { ArrowUpRight01Icon as c } from "@hugeicons/core-free-icons";
10
10
  var l = { variant: {
11
11
  inline: { classes: "text-inherit underline decoration-line-strong decoration-1 underline-offset-3 hover:decoration-current" },
12
12
  quiet: { classes: "text-fg-secondary no-underline hover:text-fg" },
13
- standalone: { classes: "font-medium text-fg no-underline hover:underline hover:decoration-line-strong hover:underline-offset-3" }
13
+ standalone: { classes: "font-medium text-fg no-underline hover:underline hover:decoration-line-strong hover:underline-offset-3" },
14
+ heading: { classes: "group/heading text-inherit no-underline" },
15
+ card: { classes: "mx-0 flex flex-col gap-4 rounded-well bg-fill-1 px-16 py-12 text-fg no-underline hover:bg-fill-2" }
14
16
  } }, u = { variant: "inline" }, d = /* @__PURE__ */ a(function({ href: a, variant: u = "inline", external: d, className: f, children: p, ...m }, h) {
15
17
  let g = n(), _ = r(), v = d ?? t(a);
16
18
  return /* @__PURE__ */ s(g, {
@@ -24,6 +26,11 @@ var l = { variant: {
24
26
  ...m,
25
27
  children: [
26
28
  p,
29
+ u === "heading" && /* @__PURE__ */ o("span", {
30
+ "aria-hidden": "true",
31
+ className: "ml-8 inline-block text-fg-tertiary opacity-0 transition-control group-hover/heading:opacity-100 group-focus-visible/heading:opacity-100",
32
+ children: "#"
33
+ }),
27
34
  v && /* @__PURE__ */ s("span", {
28
35
  "aria-hidden": "true",
29
36
  className: "whitespace-nowrap",
@@ -44,4 +51,4 @@ process.env.NODE_ENV !== "production" && (d.displayName = "Link");
44
51
  //#endregion
45
52
  export { l as n, d as r, u as t };
46
53
 
47
- //# sourceMappingURL=link-tTapNTpM.js.map
54
+ //# sourceMappingURL=link-vz9aV8WX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-vz9aV8WX.js","names":["__icon_ArrowUpRight01Icon","cn","isExternalHref","useLinkComponent","useUiText","Icon","KAESO_LINK_VARIANTS","KAESO_LINK_DEFAULT_VARIANTS","Link","props","LinkComp","t","isExternal","external","href","variant","className","children","ArrowUpRight01Icon"],"sources":["../../src/components/link/link.tsx"],"sourcesContent":["import { forwardRef, type AnchorHTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { isExternalHref, useLinkComponent } from \"../../utils/link-provider.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { ArrowUpRight01Icon as __icon_ArrowUpRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_LINK_VARIANTS = {\n variant: {\n inline: {\n classes: \"text-inherit underline decoration-line-strong decoration-1 underline-offset-3 hover:decoration-current\",\n },\n quiet: {\n classes: \"text-fg-secondary no-underline hover:text-fg\",\n },\n standalone: {\n classes: \"font-medium text-fg no-underline hover:underline hover:decoration-line-strong hover:underline-offset-3\",\n },\n heading: {\n classes: \"group/heading text-inherit no-underline\",\n },\n card: {\n classes: \"mx-0 flex flex-col gap-4 rounded-well bg-fill-1 px-16 py-12 text-fg no-underline hover:bg-fill-2\",\n },\n },\n} as const;\nexport const KAESO_LINK_DEFAULT_VARIANTS = { variant: \"inline\" } as const;\n\nexport interface LinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n href: string;\n variant?: keyof typeof KAESO_LINK_VARIANTS.variant | undefined;\n external?: boolean | undefined;\n children: ReactNode;\n}\n\nexport const Link = /* @__PURE__ */ forwardRef<HTMLAnchorElement, LinkProps>(function Link({ href, variant = \"inline\", external, className, children, ...props }, ref) {\n const LinkComp = useLinkComponent();\n const t = useUiText();\n const isExternal = external ?? isExternalHref(href);\n return (\n <LinkComp\n ref={ref}\n href={href}\n className={cn(\n \"relative -mx-2 box-decoration-clone rounded-code px-2 transition-control focus-ring tap-target\",\n KAESO_LINK_VARIANTS.variant[variant].classes,\n className,\n )}\n {...(isExternal ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n {...props}\n >\n {children}\n {variant === \"heading\" && (\n <span\n aria-hidden=\"true\"\n className=\"ml-8 inline-block text-fg-tertiary opacity-0 transition-control group-hover/heading:opacity-100 group-focus-visible/heading:opacity-100\"\n >\n #\n </span>\n )}\n {isExternal && (\n <span aria-hidden=\"true\" className=\"whitespace-nowrap\">\n {\"\\u2060\"}\n <Icon icon={__icon_ArrowUpRight01Icon} size=\"xs\" className=\"ml-2 inline-block align-middle\" />\n </span>\n )}\n {isExternal && <span className=\"sr-only\">{t(\"link.opensInNewTab\", \" (opens in a new tab)\")}</span>}\n </LinkComp>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Link.displayName = \"Link\";\n"],"mappings":";;;;;;;;;AAOA,IAAaM,IAAsB,EACjC,SAAS;CACP,QAAQ,EACN,SAAS,yGACX;CACA,OAAO,EACL,SAAS,+CACX;CACA,YAAY,EACV,SAAS,yGACX;CACA,SAAS,EACP,SAAS,0CACX;CACA,MAAM,EACJ,SAAS,mGACX;AACF,EACF,GACaC,IAA8B,EAAE,SAAS,SAAS,GASlDC,IAAuB,kBAAyC,SAAc,EAAE,SAAM,aAAU,UAAU,aAAU,cAAW,aAAU,GAAGC,KAAS,GAAK;CACrK,IAAMC,IAAWP,EAAiB,GAC5BQ,IAAIP,EAAU,GACdQ,IAAaC,KAAYX,EAAeY,CAAI;CAClD,OACE,kBAACJ,GAAD;EACO;EACC;EACN,WAAWT,EACT,kGACAK,EAAoB,QAAQS,EAAQ,CAAC,SACrCC,CACF;EACA,GAAKJ,IAAa;GAAE,QAAQ;GAAU,KAAK;EAAsB,IAAI,CAAC;EACtE,GAAIH;EATN,UAAA;GAWGQ;GACAF,MAAY,aACX,kBAAC,QAAD;IACE,eAAY;IACZ,WAAU;IACX,UAAA;GAEK,CAAA;GAEPH,KACC,kBAAC,QAAD;IAAM,eAAY;IAAO,WAAU;IAAnC,UAAA,CACG,KACD,kBAACP,GAAD;KAAM,MAAML;KAA2B,MAAK;KAAK,WAAU;IAAkC,CAAA,CACzF;;GAEPY,KAAc,kBAAC,QAAD;IAAM,WAAU;IAAW,UAAAD,EAAE,sBAAsB,uBAAuB;GAAQ,CAAA;EACzF;;AAEd,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc"}