@shipit-ai/cli 1.173.2 → 1.174.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 (210) hide show
  1. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.js +46 -1
  2. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.d.ts.map +1 -1
  3. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.js +1 -3
  4. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.d.ts.map +1 -1
  5. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.js +2 -8
  6. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.d.ts.map +1 -1
  7. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.js +5 -4
  8. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-icon.d.ts +45 -0
  9. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-icon.d.ts.map +1 -0
  10. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-icon.js +138 -0
  11. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.d.ts.map +1 -1
  12. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.js +7 -6
  13. package/dist/src/presentation/web/components/features/mcp-servers/vendor-brand-icons.d.ts +29 -0
  14. package/dist/src/presentation/web/components/features/mcp-servers/vendor-brand-icons.d.ts.map +1 -0
  15. package/dist/src/presentation/web/components/features/mcp-servers/vendor-brand-icons.js +25 -0
  16. package/dist/tsconfig.build.tsbuildinfo +1 -1
  17. package/package.json +1 -1
  18. package/web/.next/BUILD_ID +1 -1
  19. package/web/.next/build-manifest.json +3 -3
  20. package/web/.next/fallback-build-manifest.json +3 -3
  21. package/web/.next/prerender-manifest.json +3 -3
  22. package/web/.next/required-server-files.js +2 -2
  23. package/web/.next/required-server-files.json +2 -2
  24. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  25. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  26. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  27. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  28. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  29. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  30. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +31 -31
  31. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  32. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  33. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  34. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
  37. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  38. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  39. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  40. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  41. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  42. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  43. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  44. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  45. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  46. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +31 -31
  49. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  50. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  52. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  53. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
  55. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  56. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  58. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  61. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  62. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  63. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  64. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  65. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/_global-error.html +1 -1
  67. package/web/.next/server/app/_global-error.rsc +1 -1
  68. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  69. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  70. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  71. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  72. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  73. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  74. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  75. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  76. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  77. package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  78. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  79. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  80. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  81. package/web/.next/server/app/mcp-servers/page/server-reference-manifest.json +13 -13
  82. package/web/.next/server/app/mcp-servers/page.js.nft.json +1 -1
  83. package/web/.next/server/app/mcp-servers/page_client-reference-manifest.js +1 -1
  84. package/web/.next/server/app/plugins/page/server-reference-manifest.json +15 -15
  85. package/web/.next/server/app/plugins/page.js.nft.json +1 -1
  86. package/web/.next/server/app/plugins/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/app/settings/page/server-reference-manifest.json +12 -12
  88. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  89. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  91. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  92. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  93. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  94. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  95. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  96. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  97. package/web/.next/server/app/version/page.js.nft.json +1 -1
  98. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  99. package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
  100. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
  101. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
  102. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
  103. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
  104. package/web/.next/server/chunks/ssr/0j.8_web_components_features_mcp-servers_mcp-servers-page-client_tsx_0dda8ih._.js +2 -2
  105. package/web/.next/server/chunks/ssr/0j.8_web_components_features_mcp-servers_mcp-servers-page-client_tsx_0dda8ih._.js.map +1 -1
  106. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
  107. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
  108. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
  109. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
  110. package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js +1 -1
  111. package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js.map +1 -1
  112. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js +1 -1
  113. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js.map +1 -1
  114. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js +1 -1
  115. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__0mwao26._.js +1 -1
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__0mwao26._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js +1 -1
  119. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js.map +1 -1
  120. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
  121. package/web/.next/server/chunks/ssr/[root-of-the-server]__0tq2syh._.js +1 -1
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js +1 -1
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js.map +1 -1
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js +1 -1
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js.map +1 -1
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js +1 -1
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js.map +1 -1
  128. package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
  129. package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
  130. package/web/.next/server/chunks/ssr/_069y.js._.js +2 -2
  131. package/web/.next/server/chunks/ssr/_069y.js._.js.map +1 -1
  132. package/web/.next/server/chunks/ssr/{_1031n_-._.js → _083k45~._.js} +2 -2
  133. package/web/.next/server/chunks/ssr/{_1031n_-._.js.map → _083k45~._.js.map} +1 -1
  134. package/web/.next/server/chunks/ssr/{_09b301s._.js → _087x~el._.js} +2 -2
  135. package/web/.next/server/chunks/ssr/{_09b301s._.js.map → _087x~el._.js.map} +1 -1
  136. package/web/.next/server/chunks/ssr/_0__4si~._.js +1 -1
  137. package/web/.next/server/chunks/ssr/_0__4si~._.js.map +1 -1
  138. package/web/.next/server/chunks/ssr/_0_m17kl._.js +1 -1
  139. package/web/.next/server/chunks/ssr/_0_m17kl._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/{_0~d-l61._.js → _0bknjp-._.js} +2 -2
  141. package/web/.next/server/chunks/ssr/{_0~d-l61._.js.map → _0bknjp-._.js.map} +1 -1
  142. package/web/.next/server/chunks/ssr/_0d4miu.._.js +1 -1
  143. package/web/.next/server/chunks/ssr/_0d4miu.._.js.map +1 -1
  144. package/web/.next/server/chunks/ssr/_0e8ern9._.js +1 -1
  145. package/web/.next/server/chunks/ssr/_0e8ern9._.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/_0fswe4r._.js +1 -1
  147. package/web/.next/server/chunks/ssr/{_0u09c2.._.js → _0glox21._.js} +2 -2
  148. package/web/.next/server/chunks/ssr/{_0u09c2.._.js.map → _0glox21._.js.map} +1 -1
  149. package/web/.next/server/chunks/ssr/_0p3~u8u._.js +2 -2
  150. package/web/.next/server/chunks/ssr/_0p3~u8u._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/_0r.3n~3._.js +1 -1
  152. package/web/.next/server/chunks/ssr/_0r.3n~3._.js.map +1 -1
  153. package/web/.next/server/chunks/ssr/_0t59q8r._.js +1 -1
  154. package/web/.next/server/chunks/ssr/_0t59q8r._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/{_096x3u~._.js → _0vq0c0x._.js} +2 -2
  156. package/web/.next/server/chunks/ssr/{_096x3u~._.js.map → _0vq0c0x._.js.map} +1 -1
  157. package/web/.next/server/chunks/ssr/_0vyfc4b._.js +1 -1
  158. package/web/.next/server/chunks/ssr/_0vyfc4b._.js.map +1 -1
  159. package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
  160. package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
  161. package/web/.next/server/chunks/ssr/_0zk-h5w._.js +1 -1
  162. package/web/.next/server/chunks/ssr/_0zk-h5w._.js.map +1 -1
  163. package/web/.next/server/chunks/ssr/_0~7lwu_._.js +1 -1
  164. package/web/.next/server/chunks/ssr/_0~7lwu_._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/_0~g5-.e._.js +3 -0
  166. package/web/.next/server/chunks/ssr/_0~g5-.e._.js.map +1 -0
  167. package/web/.next/server/chunks/ssr/_1161g9x._.js +1 -1
  168. package/web/.next/server/chunks/ssr/_1161g9x._.js.map +1 -1
  169. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_mcp-servers_page_actions_0d.r4q..js +1 -1
  170. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_mcp-servers_page_actions_0d.r4q..js.map +1 -1
  171. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js +1 -1
  172. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js.map +1 -1
  173. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js +1 -1
  174. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js +1 -1
  176. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js +1 -1
  178. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
  179. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
  180. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
  181. package/web/.next/server/middleware-build-manifest.js +3 -3
  182. package/web/.next/server/pages/500.html +1 -1
  183. package/web/.next/server/server-reference-manifest.js +1 -1
  184. package/web/.next/server/server-reference-manifest.json +57 -57
  185. package/web/.next/static/chunks/{08w-qt8wfe5u..js → 030tqac1cx-fj.js} +1 -1
  186. package/web/.next/static/chunks/{0~9hrc9~63dvr.js → 093...bdsa2vi.js} +1 -1
  187. package/web/.next/static/chunks/0a~-dbzk6tkpw.css +1 -0
  188. package/web/.next/static/chunks/0c.5-5ohi38wu.js +1 -0
  189. package/web/.next/static/chunks/{0ul697ie_gsw9.js → 0djvgyu139qht.js} +1 -1
  190. package/web/.next/static/chunks/{159n33nvplqug.js → 0etn4uwpbu0p..js} +1 -1
  191. package/web/.next/static/chunks/{0whqmoyf3zd67.js → 0fzx4yzxqtc6v.js} +1 -1
  192. package/web/.next/static/chunks/{10p0lo4adb2~5.js → 0iey6w_th4w6t.js} +1 -1
  193. package/web/.next/static/chunks/{15lkkh2eg.w0h.js → 0mukkm1m79wpt.js} +1 -1
  194. package/web/.next/static/chunks/{0pb77veci.7gd.js → 0ou6vmrmvv4.f.js} +1 -1
  195. package/web/.next/static/chunks/{0t~1ohqb2m7ma.js → 0q1rh6cwq8q~e.js} +1 -1
  196. package/web/.next/static/chunks/{06_a861w0tkp6.js → 0w9~abfpfmxwe.js} +1 -1
  197. package/web/.next/static/chunks/{050mn~oci41h6.js → 0zwhmf.myybu0.js} +3 -3
  198. package/web/.next/static/chunks/{10j-adknfho63.js → 10rtagfoabp3b.js} +1 -1
  199. package/web/.next/static/chunks/{0xee.1sl6c~24.js → 113fyg.4c74k~.js} +1 -1
  200. package/web/.next/static/chunks/{07kpqi8hle98h.js → 11n8b8mq7xbv9.js} +1 -1
  201. package/web/.next/static/chunks/11v7w0zh-u9s8.js +8 -0
  202. package/web/.next/static/chunks/{0mekjif_lg0-r.js → 164.6ma3h~kkp.js} +1 -1
  203. package/web/.next/server/chunks/ssr/_0vm01xk._.js +0 -3
  204. package/web/.next/server/chunks/ssr/_0vm01xk._.js.map +0 -1
  205. package/web/.next/static/chunks/0h2nh2s2b3ma2.css +0 -1
  206. package/web/.next/static/chunks/14ixmk5pm1-rc.js +0 -8
  207. package/web/.next/static/chunks/167z9~gq-q~oy.js +0 -1
  208. /package/web/.next/static/{q4u94V1z_KGlqS1uxSgT2 → G6UvAet1r3tmTZHz91Byx}/_buildManifest.js +0 -0
  209. /package/web/.next/static/{q4u94V1z_KGlqS1uxSgT2 → G6UvAet1r3tmTZHz91Byx}/_clientMiddlewareManifest.js +0 -0
  210. /package/web/.next/static/{q4u94V1z_KGlqS1uxSgT2 → G6UvAet1r3tmTZHz91Byx}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/external-link.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/terminal.ts","../../../../../../../src/presentation/web/components/common/base-drawer/index.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/folder-open.ts","../../../../../../../src/presentation/web/components/common/empty-state/empty-state.tsx","../../../../../../../src/presentation/web/components/ui/card.tsx","../../../../../../../src/presentation/web/components/common/page-header/page-header.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-detail-drawer.tsx","../../../../../../../src/presentation/web/components/features/skills/skills-page-client.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-card.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-list.tsx","../../../../../../../src/presentation/web/components/features/skills/category-filter.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n];\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgM2g2djYiIC8+CiAgPHBhdGggZD0iTTEwIDE0IDIxIDMiIC8+CiAgPHBhdGggZD0iTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('external-link', __iconNode);\n\nexport default ExternalLink;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 19h8', key: 'baeox8' }],\n ['path', { d: 'm4 17 6-6-6-6', key: '1yngyt' }],\n];\n\n/**\n * @component @name Terminal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMTloOCIgLz4KICA8cGF0aCBkPSJtNCAxNyA2LTYtNi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/terminal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Terminal = createLucideIcon('terminal', __iconNode);\n\nexport default Terminal;\n","export { BaseDrawer, type BaseDrawerProps } from './base-drawer';\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2',\n key: 'usdka0',\n },\n ],\n];\n\n/**\n * @component @name FolderOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiAxNCAxLjUtMi45QTIgMiAwIDAgMSA5LjI0IDEwSDIwYTIgMiAwIDAgMSAxLjk0IDIuNWwtMS41NCA2YTIgMiAwIDAgMS0xLjk1IDEuNUg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDMuOWEyIDIgMCAwIDEgMS42OS45bC44MSAxLjJhMiAyIDAgMCAwIDEuNjcuOUgxOGEyIDIgMCAwIDEgMiAydjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/folder-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FolderOpen = createLucideIcon('folder-open', __iconNode);\n\nexport default FolderOpen;\n","import type { ReactNode, HTMLAttributes } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {\n icon?: ReactNode;\n title: string;\n description?: string;\n action?: ReactNode;\n}\n\nexport function EmptyState({\n icon,\n title,\n description,\n action,\n className,\n ...props\n}: EmptyStateProps) {\n return (\n <div\n className={cn('flex flex-col items-center gap-4 px-4 py-12 text-center', className)}\n {...props}\n >\n {icon ? <div className=\"text-muted-foreground\">{icon}</div> : null}\n <h3 className=\"text-lg font-semibold\">{title}</h3>\n {description ? <p className=\"text-muted-foreground max-w-md text-sm\">{description}</p> : null}\n {action ? <div className=\"mt-2\">{action}</div> : null}\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/*\n * Card — shadcn primitive extended with Stitch's editorial-shadow utility.\n * The `editorial-shadow` class (globals.css) replaces the old `shadow` class\n * with a subtle shadow + ring combination that gives cards a \"lifted\" look\n * and renders consistently against the editorial surface palette in both\n * light and dark modes. The `border` class stays for explicit border visibility\n * in dense grids; editorial-shadow's ring provides the soft lift on top.\n */\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('bg-card text-card-foreground editorial-shadow rounded-xl border', className)}\n {...props}\n />\n )\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n )\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('leading-none font-semibold tracking-tight', className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-muted-foreground text-sm', className)} {...props} />\n )\n);\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n )\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />\n )\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import { cn } from '@/lib/utils';\n\nexport interface PageHeaderProps {\n title: string;\n description?: string;\n /** Optional eyebrow label above the title (e.g., \"DEVELOPER PORTAL\") */\n eyebrow?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\n/*\n * PageHeader — Stitch editorial page header pattern.\n * Renders: tiny uppercase eyebrow → large bold title → muted description.\n * Matches the tools-page-client.tsx header treatment.\n * See .scratchpad/stitch/shipit-developer-portal/src/App.tsx:161\n */\nexport function PageHeader({ title, description, eyebrow, children, className }: PageHeaderProps) {\n return (\n <header className={cn('flex items-center justify-between gap-4', className)}>\n <div className=\"space-y-1.5\">\n {eyebrow ? (\n <span className=\"text-[10px] font-bold tracking-[0.2em] text-slate-400 uppercase\">\n {eyebrow}\n </span>\n ) : null}\n <div className=\"flex items-baseline gap-3\">\n <h1 className=\"text-foreground text-3xl font-black tracking-tight\">{title}</h1>\n </div>\n {description ? (\n <p className=\"text-muted-foreground text-sm font-medium\">{description}</p>\n ) : null}\n </div>\n {children ? <div data-slot=\"actions\">{children}</div> : null}\n </header>\n );\n}\n","'use client';\n\nimport Markdown, { type Components } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Badge } from '@/components/ui/badge';\nimport { Separator } from '@/components/ui/separator';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport { FolderOpen } from 'lucide-react';\nimport type { SkillData } from '@/lib/skills';\n\n/*\n * Markdown component overrides for skill body rendering.\n * Styled to match the editorial palette and fit within the drawer's\n * constrained width. Uses the same pattern as tech-decisions-review.\n */\nconst mdComponents: Components = {\n h1: ({ children }) => (\n <h1 className=\"text-foreground mt-6 mb-3 text-lg font-bold tracking-tight first:mt-0\">\n {children}\n </h1>\n ),\n h2: ({ children }) => (\n <h2 className=\"text-foreground mt-5 mb-2 text-base font-bold tracking-tight\">{children}</h2>\n ),\n h3: ({ children }) => <h3 className=\"text-foreground mt-4 mb-2 text-sm font-bold\">{children}</h3>,\n p: ({ children }) => (\n <p className=\"text-muted-foreground mb-3 text-sm leading-relaxed last:mb-0\">{children}</p>\n ),\n strong: ({ children }) => <strong className=\"text-foreground font-semibold\">{children}</strong>,\n em: ({ children }) => <em className=\"italic\">{children}</em>,\n code: ({ children, className }) =>\n className ? (\n <code className={`${className} text-xs`}>{children}</code>\n ) : (\n <code className=\"bg-muted text-foreground rounded-md px-1.5 py-0.5 font-mono text-xs\">\n {children}\n </code>\n ),\n pre: ({ children }) => (\n <pre className=\"bg-muted my-3 overflow-x-auto rounded-lg border p-3 text-xs\">{children}</pre>\n ),\n ul: ({ children }) => (\n <ul className=\"text-muted-foreground mb-3 list-disc space-y-1 ps-5 text-sm\">{children}</ul>\n ),\n ol: ({ children }) => (\n <ol className=\"text-muted-foreground mb-3 list-decimal space-y-1 ps-5 text-sm\">{children}</ol>\n ),\n li: ({ children }) => <li className=\"leading-relaxed\">{children}</li>,\n hr: () => <Separator className=\"my-4\" />,\n a: ({ href, children }) => (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary hover:text-primary/80 underline underline-offset-2\"\n >\n {children}\n </a>\n ),\n blockquote: ({ children }) => (\n <blockquote className=\"border-primary/30 text-muted-foreground my-3 border-l-2 pl-4 italic\">\n {children}\n </blockquote>\n ),\n};\n\nexport interface SkillDetailDrawerProps {\n skill: SkillData | null;\n onClose: () => void;\n}\n\nexport function SkillDetailDrawer({ skill, onClose }: SkillDetailDrawerProps) {\n return (\n <BaseDrawer\n open={skill !== null}\n onClose={onClose}\n size=\"sm\"\n modal\n data-testid=\"skill-detail-drawer\"\n header={\n skill ? (\n <>\n <DrawerTitle>{skill.displayName}</DrawerTitle>\n <DrawerDescription>{skill.name}</DrawerDescription>\n </>\n ) : undefined\n }\n >\n {skill ? (\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 pb-4\">\n {/* Description */}\n <p className=\"text-muted-foreground text-sm\">{skill.description}</p>\n\n {/* Badges with explanatory tooltips */}\n <div className=\"mt-4 flex flex-wrap items-center gap-1.5\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge\n variant={skill.source === 'project' ? 'secondary' : 'outline'}\n className=\"cursor-default\"\n >\n {skill.source === 'project' ? 'Project' : 'Global'}\n </Badge>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n {skill.source === 'project'\n ? 'Installed in this project\\u2019s .claude/skills/ directory'\n : 'Installed globally in your user profile'}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge variant=\"outline\" className=\"cursor-default\">\n {skill.category}\n </Badge>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n Skill category \\u2014 used for filtering on the Skills page\n </TooltipContent>\n </Tooltip>\n {skill.context ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge variant=\"outline\" className=\"cursor-default\">\n {skill.context}\n </Badge>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n Context restriction \\u2014 this skill only activates in this context\n </TooltipContent>\n </Tooltip>\n ) : null}\n </div>\n\n {/* Allowed Tools */}\n {skill.allowedTools ? (\n <>\n <Separator className=\"my-4\" />\n <div>\n <h3 className=\"text-sm font-semibold\">Allowed Tools</h3>\n <p className=\"text-muted-foreground mt-1 text-sm\">{skill.allowedTools}</p>\n </div>\n </>\n ) : null}\n\n {/* Resources */}\n {skill.resources.length > 0 ? (\n <>\n <Separator className=\"my-4\" />\n <div>\n <h3 className=\"text-sm font-semibold\">Resources</h3>\n <ul className=\"mt-2 space-y-1.5\">\n {skill.resources.map((resource) => (\n <li\n key={resource.name}\n className=\"text-muted-foreground flex items-center gap-2 text-sm\"\n >\n <FolderOpen className=\"size-3.5 shrink-0\" />\n <span>\n {resource.name}/ — {resource.fileCount}{' '}\n {resource.fileCount === 1 ? 'file' : 'files'}\n </span>\n </li>\n ))}\n </ul>\n </div>\n </>\n ) : null}\n\n {/* Body — rendered as markdown for proper heading/list/code formatting */}\n {skill.body ? (\n <>\n <Separator className=\"my-4\" />\n <div className=\"prose-sm\">\n <Markdown remarkPlugins={[remarkGfm]} components={mdComponents}>\n {skill.body}\n </Markdown>\n </div>\n </>\n ) : null}\n </div>\n ) : null}\n </BaseDrawer>\n );\n}\n","'use client';\n\nimport { useState, useMemo } from 'react';\nimport { Search, Puzzle } from 'lucide-react';\nimport { Input } from '@/components/ui/input';\nimport { Button } from '@/components/ui/button';\nimport { PageHeader } from '@/components/common/page-header';\nimport { EmptyState } from '@/components/common/empty-state';\nimport { SkillList } from './skill-list';\nimport { CategoryFilter } from './category-filter';\nimport { SkillDetailDrawer } from './skill-detail-drawer';\nimport type { SkillCategory, SkillData, SkillSource } from '@/lib/skills';\n\nexport interface SkillsPageClientProps {\n skills: SkillData[];\n}\n\nfunction computeCategoryCounts(skills: SkillData[]): Record<SkillCategory, number> {\n const counts: Record<SkillCategory, number> = {\n Workflow: 0,\n 'Code Generation': 0,\n Analysis: 0,\n Reference: 0,\n };\n for (const skill of skills) {\n counts[skill.category]++;\n }\n return counts;\n}\n\nexport function SkillsPageClient({ skills }: SkillsPageClientProps) {\n const [searchQuery, setSearchQuery] = useState('');\n const [activeCategory, setActiveCategory] = useState<SkillCategory | null>(null);\n const [sourceFilter, setSourceFilter] = useState<SkillSource | null>(null);\n const [selectedSkill, setSelectedSkill] = useState<SkillData | null>(null);\n\n const categoryCounts = useMemo(() => computeCategoryCounts(skills), [skills]);\n\n const filteredSkills = useMemo(() => {\n const query = searchQuery.toLowerCase();\n return skills.filter((skill) => {\n if (activeCategory && skill.category !== activeCategory) return false;\n if (sourceFilter && skill.source !== sourceFilter) return false;\n if (query) {\n const matchesName = skill.name.toLowerCase().includes(query);\n const matchesDescription = skill.description.toLowerCase().includes(query);\n if (!matchesName && !matchesDescription) return false;\n }\n return true;\n });\n }, [skills, searchQuery, activeCategory, sourceFilter]);\n\n const clearFilters = () => {\n setSearchQuery('');\n setActiveCategory(null);\n setSourceFilter(null);\n };\n\n // No skills installed at all\n if (skills.length === 0) {\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader\n eyebrow=\"Developer Portal\"\n title=\"Skills\"\n description=\"Claude Code skills installed in this project\"\n />\n <EmptyState\n icon={<Puzzle className=\"size-10\" />}\n title=\"No skills found\"\n description=\"No Claude Code skills are installed. Add skills to .claude/skills/ to get started.\"\n />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader\n eyebrow=\"Developer Portal\"\n title=\"Skills\"\n description=\"Claude Code skills installed in this project\"\n />\n\n {/* Search */}\n <div className=\"relative\">\n <Search className=\"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2\" />\n <Input\n placeholder=\"Search skills...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"ps-9\"\n />\n </div>\n\n {/* Category Filter */}\n <CategoryFilter\n activeCategory={activeCategory}\n onCategoryChange={setActiveCategory}\n counts={categoryCounts}\n />\n\n {/* Source Filter */}\n <div className=\"flex flex-wrap gap-2\">\n <Button\n variant={sourceFilter === null ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSourceFilter(null)}\n >\n All Sources\n </Button>\n <Button\n variant={sourceFilter === 'project' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSourceFilter('project')}\n >\n Project\n </Button>\n <Button\n variant={sourceFilter === 'global' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSourceFilter('global')}\n >\n Global\n </Button>\n </div>\n\n {/* Skill List or Empty Filter State */}\n {filteredSkills.length > 0 ? (\n <SkillList skills={filteredSkills} onSkillSelect={setSelectedSkill} />\n ) : (\n <EmptyState\n icon={<Search className=\"size-10\" />}\n title=\"No matching skills\"\n description=\"No skills match your current search and filter criteria.\"\n action={\n <Button variant=\"outline\" onClick={clearFilters}>\n Clear filters\n </Button>\n }\n />\n )}\n\n {/* Skill Detail Drawer */}\n <SkillDetailDrawer skill={selectedSkill} onClose={() => setSelectedSkill(null)} />\n </div>\n );\n}\n","import { Card } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport type { SkillData } from '@/lib/skills';\nimport { FolderOpen } from 'lucide-react';\n\nexport interface SkillCardProps {\n skill: SkillData;\n onSelect: (skill: SkillData) => void;\n}\n\nexport function SkillCard({ skill, onSelect }: SkillCardProps) {\n return (\n <Card\n className=\"cursor-pointer p-5 transition-all duration-300 hover:-translate-y-0.5 hover:shadow-md hover:ring-slate-300 dark:hover:ring-slate-600\"\n role=\"button\"\n tabIndex={0}\n onClick={() => onSelect(skill)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect(skill);\n }\n }}\n data-testid={`skill-card-${skill.name}`}\n >\n {/* Title + monospace name — matches ToolCard's tight editorial header */}\n <h3 className=\"text-foreground text-sm leading-tight font-bold tracking-tight\">\n {skill.displayName}\n </h3>\n <p className=\"text-muted-foreground mt-1 font-mono text-xs\">{skill.name}</p>\n\n {/* Description */}\n <p className=\"text-muted-foreground mt-3 line-clamp-2 text-xs leading-relaxed\">\n {skill.description}\n </p>\n\n {/* Badges — bottom of card */}\n <div className=\"mt-4 flex flex-wrap items-center gap-1.5\">\n <Badge variant={skill.source === 'project' ? 'secondary' : 'outline'}>\n {skill.source === 'project' ? 'Project' : 'Global'}\n </Badge>\n {skill.context ? <Badge variant=\"outline\">{skill.context}</Badge> : null}\n {skill.allowedTools ? <Badge variant=\"outline\">Tools</Badge> : null}\n {skill.resources.length > 0 ? (\n <span className=\"text-muted-foreground inline-flex items-center gap-1 text-xs\">\n <FolderOpen className=\"size-3\" />\n {skill.resources.length} {skill.resources.length === 1 ? 'resource' : 'resources'}\n </span>\n ) : null}\n </div>\n </Card>\n );\n}\n","import { SkillCard } from './skill-card';\nimport type { SkillCategory, SkillData } from '@/lib/skills';\n\nconst CATEGORY_ORDER: SkillCategory[] = ['Workflow', 'Code Generation', 'Analysis', 'Reference'];\n\nexport interface SkillListProps {\n skills: SkillData[];\n onSkillSelect: (skill: SkillData) => void;\n}\n\nfunction groupByCategory(skills: SkillData[]): Map<SkillCategory, SkillData[]> {\n const groups = new Map<SkillCategory, SkillData[]>();\n for (const skill of skills) {\n const group = groups.get(skill.category) ?? [];\n group.push(skill);\n groups.set(skill.category, group);\n }\n return groups;\n}\n\nexport function SkillList({ skills, onSkillSelect }: SkillListProps) {\n const groups = groupByCategory(skills);\n\n return (\n <div className=\"space-y-12\">\n {CATEGORY_ORDER.map((category) => {\n const categorySkills = groups.get(category);\n if (!categorySkills || categorySkills.length === 0) return null;\n\n return (\n <section key={category}>\n <h2 className=\"text-foreground mb-6 text-xl font-bold tracking-tight\">\n {category}{' '}\n <span className=\"text-muted-foreground text-sm font-normal\">\n ({categorySkills.length})\n </span>\n </h2>\n <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2 xl:grid-cols-3\">\n {categorySkills.map((skill) => (\n <SkillCard key={skill.name} skill={skill} onSelect={onSkillSelect} />\n ))}\n </div>\n </section>\n );\n })}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\nimport type { SkillCategory } from '@/lib/skills';\n\nconst CATEGORIES: { label: string; value: SkillCategory | null }[] = [\n { label: 'All', value: null },\n { label: 'Workflow', value: 'Workflow' },\n { label: 'Code Generation', value: 'Code Generation' },\n { label: 'Analysis', value: 'Analysis' },\n { label: 'Reference', value: 'Reference' },\n];\n\nexport interface CategoryFilterProps {\n activeCategory: SkillCategory | null;\n onCategoryChange: (category: SkillCategory | null) => void;\n counts?: Record<SkillCategory, number>;\n}\n\n/*\n * Category filter — editorial tab treatment matching the Tools page.\n * Uses bg-card container with editorial-shadow, active pill with bg-muted +\n * text-primary + ring lift, inactive pills with muted text and hover affordance.\n */\nexport function CategoryFilter({ activeCategory, onCategoryChange, counts }: CategoryFilterProps) {\n return (\n <div\n className=\"bg-card editorial-shadow inline-flex flex-wrap items-center gap-1 rounded-lg p-1\"\n role=\"group\"\n aria-label=\"Filter by category\"\n >\n {CATEGORIES.map(({ label, value }) => {\n const isActive = activeCategory === value;\n return (\n <button\n key={label}\n type=\"button\"\n onClick={() => onCategoryChange(value)}\n className={cn(\n 'cursor-pointer rounded-md px-3 py-1.5 text-xs font-bold transition-all',\n isActive\n ? 'bg-muted text-primary shadow-sm ring-1 ring-slate-200/70 dark:ring-slate-700/50'\n : 'text-muted-foreground hover:text-foreground'\n )}\n >\n {label}\n {counts != null && value != null ? (\n <span className=\"ms-1 opacity-70\">({counts[value]})</span>\n ) : null}\n </button>\n );\n })}\n </div>\n );\n}\n"],"names":["EmptyState","icon","title","description","action","className","props","Card","ref","displayName","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","PageHeader","eyebrow","children","mdComponents","h1","h2","h3","p","strong","em","code","pre","ul","ol","li","hr","a","href","target","rel","blockquote","SkillDetailDrawer","skill","onClose","open","size","modal","header","name","undefined","asChild","variant","source","side","category","context","allowedTools","resources","length","map","resource","fileCount","body","remarkPlugins","components","SkillCard","onSelect","role","tabIndex","onClick","onKeyDown","e","key","preventDefault"],"mappings":"mCAoBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAf,AAAe,CAAf,AAAe,CAAf,AAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAjBF,CAiBmB,AAhBrD,CAgBqD,AAhBpD,CAgBoD,AAhBpD,CAAA,AAgBoD,CAAA,AAhBpD,CAAA,AAgBoD,CAAA,AAhBpD,CAAA,AAgBoD,CAhBpD,AAAQ,AAgB4C,CAhB5C,AAgB4C,AAhB1C,CAgBoD,CAAA,AAhBjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,AAAb,CAAa,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC1C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAe,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC5C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,AAAR,CAAQ,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAA4D,CAAA,CAAA,CAAA,CAAK,AAAL,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC3F,qDCYA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAW,CAAA,CAAA,CAAX,AAAW,CAAX,AAAW,CAAX,AAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAhBE,CAgBU,AAf5C,CAe4C,AAf3C,CAAA,AAe2C,CAf3C,AAe2C,CAf3C,AAe2C,CAf3C,AAe2C,CAf3C,AAe2C,CAf3C,AAe2C,CAf3C,AAAQ,AAemC,CAfnC,AAAE,AAeiC,CAAU,CAAA,AAfxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAE,AAAF,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAiB,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAChD,qDCNA,EAAA,CAAA,CAAA,uCCwBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,AAAb,CAAa,AAAb,CAAa,AAAb,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CArBA,CAClC,AAoBiD,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAlB/C,AAkB+C,CAjB7C,AAiB6C,CAjB7C,AAiBuD,CAAA,AAjBpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACP,CAEJ,+ECVA,EAAA,EAAA,CAAA,CAAA,2BASO,SAASA,AAAW,MACzBC,CAAI,OACJC,CAAK,aACLC,CAAW,QACXC,CAAM,WACNC,CAAS,CACT,GAAGC,EACa,EAChB,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACCD,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,0DAA2DA,GACxE,GAAGC,CAAK,WAERL,EAAO,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAII,UAAU,iCAAyBJ,IAAc,KAC9D,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGI,UAAU,iCAAyBH,IACtCC,EAAc,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEE,UAAU,kDAA0CF,IAAmB,KACxFC,EAAS,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIC,UAAU,gBAAQD,IAAgB,OAGvD,iEC7BA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,OAUA,IAAMG,EAAO,EAAA,UAAgB,CAC3B,CAAC,WAAEF,CAAS,CAAE,GAAGC,EAAO,CAAEE,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACCA,IAAKA,EACLH,UAAW,CAAA,EAAA,EAAA,EAAE,AAAF,EAAG,kEAAmEA,GAChF,GAAGC,CAAK,GAIfC,GAAKE,WAAW,CAAG,OAEnB,IAAMC,EAAa,EAAA,UAAgB,CACjC,CAAC,WAAEL,CAAS,CAAE,GAAGC,EAAO,CAAEE,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,IAAKA,EAAKH,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,gCAAiCA,GAAa,GAAGC,CAAK,IAGvFI,EAAWD,WAAW,CAAG,aAEzB,IAAME,EAAY,EAAA,UAAgB,CAChC,CAAC,WAAEN,CAAS,CAAE,GAAGC,EAAO,CAAEE,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACCA,IAAKA,EACLH,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,4CAA6CA,GAC1D,GAAGC,CAAK,IAIfK,EAAUF,WAAW,CAAG,YAExB,IAAMG,EAAkB,EAAA,UAAgB,CACtC,CAAC,WAAEP,CAAS,CAAE,GAAGC,EAAO,CAAEE,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,IAAKA,EAAKH,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,gCAAiCA,GAAa,GAAGC,CAAK,IAGvFM,EAAgBH,WAAW,CAAG,kBAE9B,IAAMI,EAAc,EAAA,UAAgB,CAClC,CAAC,CAAER,WAAS,CAAE,GAAGC,EAAO,CAAEE,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,IAAKA,EAAKH,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,WAAYA,GAAa,GAAGC,CAAK,IAGlEO,EAAYJ,WAAW,CAAG,cAEP,AAKnBK,EALmB,UAAgB,CACjC,CAAC,CAAET,WAAS,CAAE,GAAGC,EAAO,CAAEE,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,IAAKA,EAAKH,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,6BAA8BA,GAAa,GAAGC,CAAK,IAGzEG,WAAW,CAAG,uJC5DzB,EAAA,EAAA,CAAA,CAAA,2BAiBO,SAAoB,AAAXM,OAAab,CAAK,aAAEC,CAAW,SAAEa,CAAO,UAAEC,CAAQ,WAAEZ,CAAS,CAAmB,EAC9F,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAOA,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,0CAA2CA,aAC/D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,wBACZW,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKX,UAAU,2EACbW,IAED,KACJ,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIX,UAAU,qCACb,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,8DAAsDH,MAErEC,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEE,UAAU,qDAA6CF,IACxD,QAELc,EAAW,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,YAAU,mBAAWA,IAAkB,OAG9D,+DClCA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAQA,IAAMC,EAA2B,CAC/BC,GAAI,CAAC,UAAEF,CAAQ,CAAE,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGZ,UAAU,iFACXY,IAGLG,GAAI,CAAC,UAAEH,CAAQ,CAAE,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGZ,UAAU,wEAAgEY,IAEhFI,GAAI,CAAC,UAAEJ,CAAQ,CAAE,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGZ,UAAU,uDAA+CY,IACnFK,EAAG,CAAC,CAAEL,UAAQ,CAAE,GACd,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEZ,UAAU,wEAAgEY,IAE/EM,OAAQ,CAAC,UAAEN,CAAQ,CAAE,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAOZ,UAAU,yCAAiCY,IAC7EO,GAAI,CAAC,UAAEP,CAAQ,CAAE,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGZ,UAAU,kBAAUY,IAC9CQ,KAAM,CAAC,UAAER,CAAQ,WAAEZ,CAAS,CAAE,GAC5BA,EACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAW,CAAA,EAAGA,EAAU,QAAQ,CAAC,UAAGY,IAE1C,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKZ,UAAU,+EACbY,IAGPS,IAAK,CAAC,UAAET,CAAQ,CAAE,GAChB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIZ,UAAU,uEAA+DY,IAEhFU,GAAI,CAAC,UAAEV,CAAQ,CAAE,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGZ,UAAU,uEAA+DY,IAE/EW,GAAI,CAAC,UAAEX,CAAQ,CAAE,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGZ,UAAU,0EAAkEY,IAElFY,GAAI,CAAC,UAAEZ,CAAQ,CAAE,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGZ,UAAU,2BAAmBY,IACvDa,GAAI,IAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAACzB,UAAU,SAC/B0B,EAAG,CAAC,MAAEC,CAAI,UAAEf,CAAQ,CAAE,GACpB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CACCe,KAAMA,EACNC,OAAO,SACPC,IAAI,sBACJ7B,UAAU,2EAETY,IAGLkB,WAAY,CAAC,UAAElB,CAAQ,CAAE,GACvB,CAAA,EAAA,EAAA,GAAA,EAAC,aAAA,CAAWZ,UAAU,+EACnBY,GAGP,6BAOO,SAASmB,AAAkB,OAAEC,CAAK,SAAEC,CAAO,CAA0B,EAC1E,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACTC,KAAgB,OAAVF,EACNC,QAASA,EACTE,KAAK,KACLC,KAAK,CAAA,CAAA,EACL,cAAY,sBACZC,OACEL,EACE,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,UAAEA,EAAM5B,WAAW,GAC/B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,iBAAiB,CAAA,UAAE4B,EAAMM,IAAI,WAE9BC,WAGLP,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIhC,UAAU,qDAEb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEA,UAAU,yCAAiCgC,EAAMlC,WAAW,GAG/D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIE,UAAU,qDACb,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACwC,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJC,QAA0B,YAAjBT,EAAMU,MAAM,CAAiB,YAAc,UACpD1C,UAAU,0BAEQ,YAAjBgC,EAAMU,MAAM,CAAiB,UAAY,aAG9C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACC,KAAK,kBACD,YAAjBX,EAAMU,MAAM,CACT,wDACA,+CAGR,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACF,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACC,QAAQ,UAAUzC,UAAU,0BAChCgC,EAAMY,QAAQ,KAGnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACD,KAAK,kBAAS,oEAI/BX,EAAMa,OAAO,CACZ,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACL,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACC,QAAQ,UAAUzC,UAAU,0BAChCgC,EAAMa,OAAO,KAGlB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACF,KAAK,kBAAS,6EAI9B,QAILX,EAAMc,YAAY,CACjB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAC9C,UAAU,SACrB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,iCAAwB,kBACtC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEA,UAAU,8CAAsCgC,EAAMc,YAAY,SAGvE,KAGHd,EAAMe,SAAS,CAACC,MAAM,CAAG,EACxB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAChD,UAAU,SACrB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,iCAAwB,cACtC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,4BACXgC,EAAMe,SAAS,CAACE,GAAG,CAAC,AAACC,GACpB,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAEClD,UAAU,kEAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAACA,UAAU,sBACtB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WACEkD,EAASZ,IAAI,CAAC,OAAKY,EAASC,SAAS,CAAE,IAChB,IAAvBD,EAASC,SAAS,CAAS,OAAS,aANlCD,EAASZ,IAAI,WAa1B,KAGHN,EAAMoB,IAAI,CACT,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAACpD,UAAU,SACrB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,oBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAQ,CAAA,CAACqD,cAAe,CAAC,EAAA,OAAS,CAAC,CAAEC,WAAYzC,WAC/CmB,EAAMoB,IAAI,QAIf,QAEJ,MAGV,6CCxLA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OCPA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,OAOO,SAASG,EAAU,OAAEvB,CAAK,UAAEwB,CAAQ,CAAkB,EAC3D,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,IAAI,CAAA,CACHxD,UAAU,uIACVyD,KAAK,SACLC,SAAU,EACVC,QAAS,IAAMH,EAASxB,GACxB4B,UAAW,AAACC,IACNA,CAAU,YAARC,GAAG,EAA0B,MAAVD,EAAEC,GAAQ,AAAL,GAAU,CACtCD,EAAEE,cAAc,GAChBP,EAASxB,GAEb,EACA,cAAa,CAAC,WAAW,EAAEA,EAAMM,IAAI,CAAA,CAAE,WAGvC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGtC,UAAU,0EACXgC,EAAM5B,WAAW,GAEpB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEJ,UAAU,wDAAgDgC,EAAMM,IAAI,GAGvE,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEtC,UAAU,2EACVgC,EAAMlC,WAAW,GAIpB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIE,UAAU,qDACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACyC,QAA0B,YAAjBT,EAAMU,MAAM,CAAiB,YAAc,mBACvC,YAAjBV,EAAMU,MAAM,CAAiB,UAAY,WAE3CV,EAAMa,OAAO,CAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACJ,QAAQ,mBAAWT,EAAMa,OAAO,GAAY,KACnEb,EAAMc,YAAY,CAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACL,QAAQ,mBAAU,UAAgB,KAC9DT,EAAMe,SAAS,CAACC,MAAM,CAAG,EACxB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAKhD,UAAU,yEACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAACA,UAAU,WACrBgC,EAAMe,SAAS,CAACC,MAAM,CAAC,IAA6B,IAA3BhB,EAAMe,SAAS,CAACC,MAAM,CAAS,WAAa,eAEtE,UAIZ,CCjDA,IAAM,EAAkC,CAAC,WAAY,kBAAmB,WAAY,YAAY,CAiBzF,SAASa,EAAU,CAAE,QAAM,eAAE,CAAa,CAAkB,EACjE,IAAM,EAXR,AAWiB,SAXR,AAAgB,CAAmB,EAC1C,IAAM,EAAS,IAAI,IACnB,IAAK,IAAM,KAAS,EAAQ,CAC1B,IAAM,EAAQ,EAAO,GAAG,CAAC,EAAM,QAAQ,GAAK,EAAE,CAC9C,EAAM,IAAI,CAAC,GACX,EAAO,GAAG,CAAC,EAAM,QAAQ,CAAE,EAC7B,CACA,OAAO,CACT,EAGiC,GAE/B,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,sBACZ,EAAe,GAAG,CAAC,AAAC,IACnB,IAAM,EAAiB,EAAO,GAAG,CAAC,UAClC,AAAI,AAAC,GAAkB,AAA0B,GAAG,GAAd,MAAM,CAG1C,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,WACC,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,kEACX,EAAU,IACX,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,sDAA4C,IACxD,EAAe,MAAM,CAAC,UAG5B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,gEACZ,EAAe,GAAG,CAAC,AAAC,GACnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAA2B7B,MAAO,EAAO,SAAU,GAApC,EAAM,IAAI,OATlB,GAH2C,IAiB7D,IAGN,CC/CA,IAAA,EAAA,EAAA,CAAA,CAAA,OAGA,IAAM,EAA+D,CACnE,CAAE,MAAO,MAAO,MAAO,IAAK,EAC5B,CAAE,MAAO,WAAY,MAAO,UAAW,EACvC,CAAE,MAAO,kBAAmB,MAAO,iBAAkB,EACrD,CAAEuB,MAAO,WAAYC,MAAO,UAAW,EACvC,CAAE,MAAO,YAAa,MAAO,WAAY,EAC1C,CAaM,SAAS,EAAe,gBAAE,CAAc,kBAAE,CAAgB,QAAE,CAAM,CAAuB,EAC9F,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,UAAU,mFACV,KAAK,QACL,aAAW,8BAEV,EAAW,GAAG,CAAC,CAAC,OAAE,CAAK,OAAE,CAAK,CAAE,IAC/B,IAAM,EAAW,IAAmB,EACpC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAEC,KAAK,SACL,QAASxD,IAAM,EAAiB,GAChC,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,yEACA,EACI,kFACA,yDAGL,EACU,MAAV,GAA2B,MAAT,EACjB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,4BAAkB,IAAE,CAAM,CAAC,EAAM,CAAC,OAChD,OAbC,EAgBX,IAGN,CH1CA,IAAA,EAAA,EAAA,CAAA,CAAA,+BAoBO,SAAS,AAAiB,QAAE,CAAM,CAAyB,EAChE,GAAM,CAAC,EAAaA,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACzC,CAAC,EAAgB,EAAkB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAuB,MACrE,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAqB,MAC/DF,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAmB,MAE/D,EAAiB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,IAAM,CAnBvC,SAAS,AAAsB,CAAmB,EAChD,IAAM,EAAwC,CAC5C,SAAU,EACV,kBAAmB,EACnB,SAAU,EACV,UAAW,CACb,EACA,IAAK,IAAM,KAAS,EAClB,CAAM,CAAC,EAAM,CADa,OACL,CAAC,GAExB,OAAO,CACT,GAQ6D,GAAS,CAAC,EAAO,EAEtE,EAAiB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,KAC7B,IAAM,EAAQ,EAAY,WAAW,GACrC,OAAO,EAAO,MAAM,CAAC,AAAC,IACpB,GAAI,GAAkB,EAAM,QAAQ,GAAK,GACrC,GAAgB,EAAM,MAAM,GAAK,EADoB,OAAO,EAEhE,GADmD,AAC/C,EAAO,CACT,IAFwD,AAElD,EAAckD,EAAM,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAChD,EAAqB,EAAM,WAAW,CAAC,WAAW,GAAG,QAAQ,CAAC,GACpE,GAAI,CAAC,GAAe,CAAC,EAAoB,MAAO,EAClDD,CACA,MAAO,EACT,EACF,EAAG,CAAC,EAAQ,EAAa,EAAgB,EAAa,SAStD,AAAsB,GAAG,CAArB,EAAO,MAAM,CAEb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,QAAQ,mBACR,MAAM,SACN,YAAY,iDAEd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,YACxB,MAAM,kBACN,YAAY,0FAOlB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,QAAQ,mBACR,MAAM,SACN,YAAY,iDAId,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,qBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,0EAClB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ,YAAY,mBACZ,MAAO,EACP,SAAU,AAAC,GAAM,EAAe,EAAE,MAAM,CAAC,KAAK,EAC9C,UAAU,YAKd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,eAAgB,EAChB,iBAAkB,EAClB,OAAQ,IAIV,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,iCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAAS,AAAiB,SAAO,UAAY,UAC7C,KAAK,KACL,QAAS,IAAM,EAAgB,eAChC,gBAGD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAAS,AAAiB,cAAY,UAAY,UAClD,KAAK,KACL,QAAS,IAAM,EAAgB,oBAChC,YAGD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAA0B,WAAjB,EAA4B,UAAY,UACjD,KAAK,KACL,QAAS,IAAM,EAAgB,mBAChC,cAMF,EAAe,MAAM,CAAG,EACvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAU,OAAQ,EAAgB,cAAe,IAElD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,YACxB,MAAM,qBACN,YAAY,2DACZ,OACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,QAAQ,UAAU,QApFf,CAoFwB,IAnF3C,EAAe,IACf,EAAkB,MAClB,EAAgB,KAClB,WAgF2D,oBAQvD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,iBAAiB,CAAA,CAAC,MAAO,EAAe,QAAS,IAAM,EAAiB,UAG/E","ignoreList":[0,1,3]}
1
+ {"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/external-link.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/terminal.ts","../../../../../../../src/presentation/web/components/common/base-drawer/index.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/folder-open.ts","../../../../../../../src/presentation/web/components/ui/card.tsx","../../../../../../../src/presentation/web/components/common/empty-state/empty-state.tsx","../../../../../../../src/presentation/web/components/common/page-header/page-header.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-detail-drawer.tsx","../../../../../../../src/presentation/web/components/features/skills/skills-page-client.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-card.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-list.tsx","../../../../../../../src/presentation/web/components/features/skills/category-filter.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n];\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgM2g2djYiIC8+CiAgPHBhdGggZD0iTTEwIDE0IDIxIDMiIC8+CiAgPHBhdGggZD0iTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('external-link', __iconNode);\n\nexport default ExternalLink;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 19h8', key: 'baeox8' }],\n ['path', { d: 'm4 17 6-6-6-6', key: '1yngyt' }],\n];\n\n/**\n * @component @name Terminal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMTloOCIgLz4KICA8cGF0aCBkPSJtNCAxNyA2LTYtNi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/terminal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Terminal = createLucideIcon('terminal', __iconNode);\n\nexport default Terminal;\n","export { BaseDrawer, type BaseDrawerProps } from './base-drawer';\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2',\n key: 'usdka0',\n },\n ],\n];\n\n/**\n * @component @name FolderOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiAxNCAxLjUtMi45QTIgMiAwIDAgMSA5LjI0IDEwSDIwYTIgMiAwIDAgMSAxLjk0IDIuNWwtMS41NCA2YTIgMiAwIDAgMS0xLjk1IDEuNUg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDMuOWEyIDIgMCAwIDEgMS42OS45bC44MSAxLjJhMiAyIDAgMCAwIDEuNjcuOUgxOGEyIDIgMCAwIDEgMiAydjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/folder-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FolderOpen = createLucideIcon('folder-open', __iconNode);\n\nexport default FolderOpen;\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/*\n * Card — shadcn primitive extended with Stitch's editorial-shadow utility.\n * The `editorial-shadow` class (globals.css) replaces the old `shadow` class\n * with a subtle shadow + ring combination that gives cards a \"lifted\" look\n * and renders consistently against the editorial surface palette in both\n * light and dark modes. The `border` class stays for explicit border visibility\n * in dense grids; editorial-shadow's ring provides the soft lift on top.\n */\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('bg-card text-card-foreground editorial-shadow rounded-xl border', className)}\n {...props}\n />\n )\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n )\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('leading-none font-semibold tracking-tight', className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-muted-foreground text-sm', className)} {...props} />\n )\n);\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n )\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />\n )\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import type { ReactNode, HTMLAttributes } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {\n icon?: ReactNode;\n title: string;\n description?: string;\n action?: ReactNode;\n}\n\nexport function EmptyState({\n icon,\n title,\n description,\n action,\n className,\n ...props\n}: EmptyStateProps) {\n return (\n <div\n className={cn('flex flex-col items-center gap-4 px-4 py-12 text-center', className)}\n {...props}\n >\n {icon ? <div className=\"text-muted-foreground\">{icon}</div> : null}\n <h3 className=\"text-lg font-semibold\">{title}</h3>\n {description ? <p className=\"text-muted-foreground max-w-md text-sm\">{description}</p> : null}\n {action ? <div className=\"mt-2\">{action}</div> : null}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport interface PageHeaderProps {\n title: string;\n description?: string;\n /** Optional eyebrow label above the title (e.g., \"DEVELOPER PORTAL\") */\n eyebrow?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\n/*\n * PageHeader — Stitch editorial page header pattern.\n * Renders: tiny uppercase eyebrow → large bold title → muted description.\n * Matches the tools-page-client.tsx header treatment.\n * See .scratchpad/stitch/shipit-developer-portal/src/App.tsx:161\n */\nexport function PageHeader({ title, description, eyebrow, children, className }: PageHeaderProps) {\n return (\n <header className={cn('flex items-center justify-between gap-4', className)}>\n <div className=\"space-y-1.5\">\n {eyebrow ? (\n <span className=\"text-[10px] font-bold tracking-[0.2em] text-slate-400 uppercase\">\n {eyebrow}\n </span>\n ) : null}\n <div className=\"flex items-baseline gap-3\">\n <h1 className=\"text-foreground text-3xl font-black tracking-tight\">{title}</h1>\n </div>\n {description ? (\n <p className=\"text-muted-foreground text-sm font-medium\">{description}</p>\n ) : null}\n </div>\n {children ? <div data-slot=\"actions\">{children}</div> : null}\n </header>\n );\n}\n","'use client';\n\nimport Markdown, { type Components } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Badge } from '@/components/ui/badge';\nimport { Separator } from '@/components/ui/separator';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport { FolderOpen } from 'lucide-react';\nimport type { SkillData } from '@/lib/skills';\n\n/*\n * Markdown component overrides for skill body rendering.\n * Styled to match the editorial palette and fit within the drawer's\n * constrained width. Uses the same pattern as tech-decisions-review.\n */\nconst mdComponents: Components = {\n h1: ({ children }) => (\n <h1 className=\"text-foreground mt-6 mb-3 text-lg font-bold tracking-tight first:mt-0\">\n {children}\n </h1>\n ),\n h2: ({ children }) => (\n <h2 className=\"text-foreground mt-5 mb-2 text-base font-bold tracking-tight\">{children}</h2>\n ),\n h3: ({ children }) => <h3 className=\"text-foreground mt-4 mb-2 text-sm font-bold\">{children}</h3>,\n p: ({ children }) => (\n <p className=\"text-muted-foreground mb-3 text-sm leading-relaxed last:mb-0\">{children}</p>\n ),\n strong: ({ children }) => <strong className=\"text-foreground font-semibold\">{children}</strong>,\n em: ({ children }) => <em className=\"italic\">{children}</em>,\n code: ({ children, className }) =>\n className ? (\n <code className={`${className} text-xs`}>{children}</code>\n ) : (\n <code className=\"bg-muted text-foreground rounded-md px-1.5 py-0.5 font-mono text-xs\">\n {children}\n </code>\n ),\n pre: ({ children }) => (\n <pre className=\"bg-muted my-3 overflow-x-auto rounded-lg border p-3 text-xs\">{children}</pre>\n ),\n ul: ({ children }) => (\n <ul className=\"text-muted-foreground mb-3 list-disc space-y-1 ps-5 text-sm\">{children}</ul>\n ),\n ol: ({ children }) => (\n <ol className=\"text-muted-foreground mb-3 list-decimal space-y-1 ps-5 text-sm\">{children}</ol>\n ),\n li: ({ children }) => <li className=\"leading-relaxed\">{children}</li>,\n hr: () => <Separator className=\"my-4\" />,\n a: ({ href, children }) => (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary hover:text-primary/80 underline underline-offset-2\"\n >\n {children}\n </a>\n ),\n blockquote: ({ children }) => (\n <blockquote className=\"border-primary/30 text-muted-foreground my-3 border-l-2 pl-4 italic\">\n {children}\n </blockquote>\n ),\n};\n\nexport interface SkillDetailDrawerProps {\n skill: SkillData | null;\n onClose: () => void;\n}\n\nexport function SkillDetailDrawer({ skill, onClose }: SkillDetailDrawerProps) {\n return (\n <BaseDrawer\n open={skill !== null}\n onClose={onClose}\n size=\"sm\"\n modal\n data-testid=\"skill-detail-drawer\"\n header={\n skill ? (\n <>\n <DrawerTitle>{skill.displayName}</DrawerTitle>\n <DrawerDescription>{skill.name}</DrawerDescription>\n </>\n ) : undefined\n }\n >\n {skill ? (\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 pb-4\">\n {/* Description */}\n <p className=\"text-muted-foreground text-sm\">{skill.description}</p>\n\n {/* Badges with explanatory tooltips */}\n <div className=\"mt-4 flex flex-wrap items-center gap-1.5\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge\n variant={skill.source === 'project' ? 'secondary' : 'outline'}\n className=\"cursor-default\"\n >\n {skill.source === 'project' ? 'Project' : 'Global'}\n </Badge>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n {skill.source === 'project'\n ? 'Installed in this project\\u2019s .claude/skills/ directory'\n : 'Installed globally in your user profile'}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge variant=\"outline\" className=\"cursor-default\">\n {skill.category}\n </Badge>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n Skill category \\u2014 used for filtering on the Skills page\n </TooltipContent>\n </Tooltip>\n {skill.context ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge variant=\"outline\" className=\"cursor-default\">\n {skill.context}\n </Badge>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n Context restriction \\u2014 this skill only activates in this context\n </TooltipContent>\n </Tooltip>\n ) : null}\n </div>\n\n {/* Allowed Tools */}\n {skill.allowedTools ? (\n <>\n <Separator className=\"my-4\" />\n <div>\n <h3 className=\"text-sm font-semibold\">Allowed Tools</h3>\n <p className=\"text-muted-foreground mt-1 text-sm\">{skill.allowedTools}</p>\n </div>\n </>\n ) : null}\n\n {/* Resources */}\n {skill.resources.length > 0 ? (\n <>\n <Separator className=\"my-4\" />\n <div>\n <h3 className=\"text-sm font-semibold\">Resources</h3>\n <ul className=\"mt-2 space-y-1.5\">\n {skill.resources.map((resource) => (\n <li\n key={resource.name}\n className=\"text-muted-foreground flex items-center gap-2 text-sm\"\n >\n <FolderOpen className=\"size-3.5 shrink-0\" />\n <span>\n {resource.name}/ — {resource.fileCount}{' '}\n {resource.fileCount === 1 ? 'file' : 'files'}\n </span>\n </li>\n ))}\n </ul>\n </div>\n </>\n ) : null}\n\n {/* Body — rendered as markdown for proper heading/list/code formatting */}\n {skill.body ? (\n <>\n <Separator className=\"my-4\" />\n <div className=\"prose-sm\">\n <Markdown remarkPlugins={[remarkGfm]} components={mdComponents}>\n {skill.body}\n </Markdown>\n </div>\n </>\n ) : null}\n </div>\n ) : null}\n </BaseDrawer>\n );\n}\n","'use client';\n\nimport { useState, useMemo } from 'react';\nimport { Search, Puzzle } from 'lucide-react';\nimport { Input } from '@/components/ui/input';\nimport { Button } from '@/components/ui/button';\nimport { PageHeader } from '@/components/common/page-header';\nimport { EmptyState } from '@/components/common/empty-state';\nimport { SkillList } from './skill-list';\nimport { CategoryFilter } from './category-filter';\nimport { SkillDetailDrawer } from './skill-detail-drawer';\nimport type { SkillCategory, SkillData, SkillSource } from '@/lib/skills';\n\nexport interface SkillsPageClientProps {\n skills: SkillData[];\n}\n\nfunction computeCategoryCounts(skills: SkillData[]): Record<SkillCategory, number> {\n const counts: Record<SkillCategory, number> = {\n Workflow: 0,\n 'Code Generation': 0,\n Analysis: 0,\n Reference: 0,\n };\n for (const skill of skills) {\n counts[skill.category]++;\n }\n return counts;\n}\n\nexport function SkillsPageClient({ skills }: SkillsPageClientProps) {\n const [searchQuery, setSearchQuery] = useState('');\n const [activeCategory, setActiveCategory] = useState<SkillCategory | null>(null);\n const [sourceFilter, setSourceFilter] = useState<SkillSource | null>(null);\n const [selectedSkill, setSelectedSkill] = useState<SkillData | null>(null);\n\n const categoryCounts = useMemo(() => computeCategoryCounts(skills), [skills]);\n\n const filteredSkills = useMemo(() => {\n const query = searchQuery.toLowerCase();\n return skills.filter((skill) => {\n if (activeCategory && skill.category !== activeCategory) return false;\n if (sourceFilter && skill.source !== sourceFilter) return false;\n if (query) {\n const matchesName = skill.name.toLowerCase().includes(query);\n const matchesDescription = skill.description.toLowerCase().includes(query);\n if (!matchesName && !matchesDescription) return false;\n }\n return true;\n });\n }, [skills, searchQuery, activeCategory, sourceFilter]);\n\n const clearFilters = () => {\n setSearchQuery('');\n setActiveCategory(null);\n setSourceFilter(null);\n };\n\n // No skills installed at all\n if (skills.length === 0) {\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader\n eyebrow=\"Developer Portal\"\n title=\"Skills\"\n description=\"Claude Code skills installed in this project\"\n />\n <EmptyState\n icon={<Puzzle className=\"size-10\" />}\n title=\"No skills found\"\n description=\"No Claude Code skills are installed. Add skills to .claude/skills/ to get started.\"\n />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader\n eyebrow=\"Developer Portal\"\n title=\"Skills\"\n description=\"Claude Code skills installed in this project\"\n />\n\n {/* Search */}\n <div className=\"relative\">\n <Search className=\"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2\" />\n <Input\n placeholder=\"Search skills...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"ps-9\"\n />\n </div>\n\n {/* Category Filter */}\n <CategoryFilter\n activeCategory={activeCategory}\n onCategoryChange={setActiveCategory}\n counts={categoryCounts}\n />\n\n {/* Source Filter */}\n <div className=\"flex flex-wrap gap-2\">\n <Button\n variant={sourceFilter === null ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSourceFilter(null)}\n >\n All Sources\n </Button>\n <Button\n variant={sourceFilter === 'project' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSourceFilter('project')}\n >\n Project\n </Button>\n <Button\n variant={sourceFilter === 'global' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSourceFilter('global')}\n >\n Global\n </Button>\n </div>\n\n {/* Skill List or Empty Filter State */}\n {filteredSkills.length > 0 ? (\n <SkillList skills={filteredSkills} onSkillSelect={setSelectedSkill} />\n ) : (\n <EmptyState\n icon={<Search className=\"size-10\" />}\n title=\"No matching skills\"\n description=\"No skills match your current search and filter criteria.\"\n action={\n <Button variant=\"outline\" onClick={clearFilters}>\n Clear filters\n </Button>\n }\n />\n )}\n\n {/* Skill Detail Drawer */}\n <SkillDetailDrawer skill={selectedSkill} onClose={() => setSelectedSkill(null)} />\n </div>\n );\n}\n","import { Card } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport type { SkillData } from '@/lib/skills';\nimport { FolderOpen } from 'lucide-react';\n\nexport interface SkillCardProps {\n skill: SkillData;\n onSelect: (skill: SkillData) => void;\n}\n\nexport function SkillCard({ skill, onSelect }: SkillCardProps) {\n return (\n <Card\n className=\"cursor-pointer p-5 transition-all duration-300 hover:-translate-y-0.5 hover:shadow-md hover:ring-slate-300 dark:hover:ring-slate-600\"\n role=\"button\"\n tabIndex={0}\n onClick={() => onSelect(skill)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect(skill);\n }\n }}\n data-testid={`skill-card-${skill.name}`}\n >\n {/* Title + monospace name — matches ToolCard's tight editorial header */}\n <h3 className=\"text-foreground text-sm leading-tight font-bold tracking-tight\">\n {skill.displayName}\n </h3>\n <p className=\"text-muted-foreground mt-1 font-mono text-xs\">{skill.name}</p>\n\n {/* Description */}\n <p className=\"text-muted-foreground mt-3 line-clamp-2 text-xs leading-relaxed\">\n {skill.description}\n </p>\n\n {/* Badges — bottom of card */}\n <div className=\"mt-4 flex flex-wrap items-center gap-1.5\">\n <Badge variant={skill.source === 'project' ? 'secondary' : 'outline'}>\n {skill.source === 'project' ? 'Project' : 'Global'}\n </Badge>\n {skill.context ? <Badge variant=\"outline\">{skill.context}</Badge> : null}\n {skill.allowedTools ? <Badge variant=\"outline\">Tools</Badge> : null}\n {skill.resources.length > 0 ? (\n <span className=\"text-muted-foreground inline-flex items-center gap-1 text-xs\">\n <FolderOpen className=\"size-3\" />\n {skill.resources.length} {skill.resources.length === 1 ? 'resource' : 'resources'}\n </span>\n ) : null}\n </div>\n </Card>\n );\n}\n","import { SkillCard } from './skill-card';\nimport type { SkillCategory, SkillData } from '@/lib/skills';\n\nconst CATEGORY_ORDER: SkillCategory[] = ['Workflow', 'Code Generation', 'Analysis', 'Reference'];\n\nexport interface SkillListProps {\n skills: SkillData[];\n onSkillSelect: (skill: SkillData) => void;\n}\n\nfunction groupByCategory(skills: SkillData[]): Map<SkillCategory, SkillData[]> {\n const groups = new Map<SkillCategory, SkillData[]>();\n for (const skill of skills) {\n const group = groups.get(skill.category) ?? [];\n group.push(skill);\n groups.set(skill.category, group);\n }\n return groups;\n}\n\nexport function SkillList({ skills, onSkillSelect }: SkillListProps) {\n const groups = groupByCategory(skills);\n\n return (\n <div className=\"space-y-12\">\n {CATEGORY_ORDER.map((category) => {\n const categorySkills = groups.get(category);\n if (!categorySkills || categorySkills.length === 0) return null;\n\n return (\n <section key={category}>\n <h2 className=\"text-foreground mb-6 text-xl font-bold tracking-tight\">\n {category}{' '}\n <span className=\"text-muted-foreground text-sm font-normal\">\n ({categorySkills.length})\n </span>\n </h2>\n <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2 xl:grid-cols-3\">\n {categorySkills.map((skill) => (\n <SkillCard key={skill.name} skill={skill} onSelect={onSkillSelect} />\n ))}\n </div>\n </section>\n );\n })}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\nimport type { SkillCategory } from '@/lib/skills';\n\nconst CATEGORIES: { label: string; value: SkillCategory | null }[] = [\n { label: 'All', value: null },\n { label: 'Workflow', value: 'Workflow' },\n { label: 'Code Generation', value: 'Code Generation' },\n { label: 'Analysis', value: 'Analysis' },\n { label: 'Reference', value: 'Reference' },\n];\n\nexport interface CategoryFilterProps {\n activeCategory: SkillCategory | null;\n onCategoryChange: (category: SkillCategory | null) => void;\n counts?: Record<SkillCategory, number>;\n}\n\n/*\n * Category filter — editorial tab treatment matching the Tools page.\n * Uses bg-card container with editorial-shadow, active pill with bg-muted +\n * text-primary + ring lift, inactive pills with muted text and hover affordance.\n */\nexport function CategoryFilter({ activeCategory, onCategoryChange, counts }: CategoryFilterProps) {\n return (\n <div\n className=\"bg-card editorial-shadow inline-flex flex-wrap items-center gap-1 rounded-lg p-1\"\n role=\"group\"\n aria-label=\"Filter by category\"\n >\n {CATEGORIES.map(({ label, value }) => {\n const isActive = activeCategory === value;\n return (\n <button\n key={label}\n type=\"button\"\n onClick={() => onCategoryChange(value)}\n className={cn(\n 'cursor-pointer rounded-md px-3 py-1.5 text-xs font-bold transition-all',\n isActive\n ? 'bg-muted text-primary shadow-sm ring-1 ring-slate-200/70 dark:ring-slate-700/50'\n : 'text-muted-foreground hover:text-foreground'\n )}\n >\n {label}\n {counts != null && value != null ? (\n <span className=\"ms-1 opacity-70\">({counts[value]})</span>\n ) : null}\n </button>\n );\n })}\n </div>\n );\n}\n"],"names":["Card","className","props","ref","displayName","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","EmptyState","icon","title","description","action","PageHeader","eyebrow","children","mdComponents","h1","h2","h3","p","strong","em","code","pre","ul","ol","li","hr","a","href","target","rel","blockquote","SkillDetailDrawer","skill","onClose","open","size","modal","header","name","undefined","asChild","variant","source","side","category","context","allowedTools","resources","length","map","resource","fileCount","body","remarkPlugins","components","SkillCard","onSelect","role","tabIndex","onClick","onKeyDown","e","key","preventDefault"],"mappings":"mCAoBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAf,AAAe,CAAf,AAAe,CAAf,AAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAjBF,CAiBmB,AAhBrD,CAgBqD,AAhBpD,CAgBoD,AAhBpD,CAAA,AAgBoD,CAAA,AAhBpD,CAAA,AAgBoD,CAAA,AAhBpD,CAAA,AAgBoD,CAhBpD,AAAQ,AAgB4C,CAhB5C,AAgB4C,AAhB1C,CAgBoD,CAAA,AAhBjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,AAAb,CAAa,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC1C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAe,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC5C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,AAAR,CAAQ,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAA4D,CAAA,CAAA,CAAA,CAAK,AAAL,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC3F,qDCYA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAW,CAAA,CAAA,CAAX,AAAW,CAAX,AAAW,CAAX,AAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAhBE,CAgBU,AAf5C,CAe4C,AAf3C,CAAA,AAe2C,CAf3C,AAe2C,CAf3C,AAe2C,CAf3C,AAe2C,CAf3C,AAe2C,CAf3C,AAe2C,CAf3C,AAAQ,AAemC,CAfnC,AAAE,AAeiC,CAAU,CAAA,AAfxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAE,AAAF,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAiB,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAChD,qDCNA,EAAA,CAAA,CAAA,uCCwBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,AAAb,CAAa,AAAb,CAAa,AAAb,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CArBA,CAClC,AAoBiD,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAlB/C,AAkB+C,CAjB7C,AAiB6C,CAjB7C,AAiBuD,CAAA,AAjBpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACP,CAEJ,yECXA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,OAUA,IAAMA,EAAO,EAAA,UAAgB,CAC3B,CAAC,WAAEC,CAAS,CAAE,GAAGC,EAAO,CAAEC,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACCA,IAAKA,EACLF,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,kEAAmEA,GAChF,GAAGC,CAAK,GAIfF,GAAKI,WAAW,CAAG,OAEnB,IAAMC,EAAa,EAAA,UAAgB,CACjC,CAAC,WAAEJ,CAAS,CAAE,GAAGC,EAAO,CAAEC,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,IAAKA,EAAKF,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,gCAAiCA,GAAa,GAAGC,CAAK,IAGvFG,EAAWD,WAAW,CAAG,aAEzB,IAAME,EAAY,EAAA,UAAgB,CAChC,CAAC,WAAEL,CAAS,CAAE,GAAGC,EAAO,CAAEC,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACCA,IAAKA,EACLF,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,4CAA6CA,GAC1D,GAAGC,CAAK,IAIfI,EAAUF,WAAW,CAAG,YAExB,IAAMG,EAAkB,EAAA,UAAgB,CACtC,CAAC,WAAEN,CAAS,CAAE,GAAGC,EAAO,CAAEC,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,IAAKA,EAAKF,UAAW,CAAA,EAAA,EAAA,EAAE,AAAF,EAAG,gCAAiCA,GAAa,GAAGC,CAAK,IAGvFK,EAAgBH,WAAW,CAAG,kBAE9B,IAAMI,EAAc,EAAA,UAAgB,CAClC,CAAC,WAAEP,CAAS,CAAE,GAAGC,EAAO,CAAEC,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,IAAKA,EAAKF,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,WAAYA,GAAa,GAAGC,CAAK,IAGlEM,EAAYJ,WAAW,CAAG,cAEP,AAKnBK,EALmB,UAAgB,CACjC,CAAC,WAAER,CAAS,CAAE,GAAGC,EAAO,CAAEC,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,IAAKA,EAAKF,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,6BAA8BA,GAAa,GAAGC,CAAK,IAGzEE,WAAW,CAAG,uJC3DzB,EAAA,EAAA,CAAA,CAAA,2BASO,SAASM,AAAW,MACzBC,CAAI,OACJC,CAAK,aACLC,CAAW,QACXC,CAAM,WACNb,CAAS,CACT,GAAGC,EACa,EAChB,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACCD,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,0DAA2DA,GACxE,GAAGC,CAAK,WAERS,EAAO,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIV,UAAU,iCAAyBU,IAAc,KAC9D,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGV,UAAU,iCAAyBW,IACtCC,EAAc,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEZ,UAAU,kDAA0CY,IAAmB,KACxFC,EAAS,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIb,UAAU,gBAAQa,IAAgB,OAGvD,uEC7BA,EAAA,EAAA,CAAA,CAAA,2BAiBO,SAAoB,AAAXC,OAAaH,CAAK,aAAEC,CAAW,SAAEG,CAAO,UAAEC,CAAQ,WAAEhB,CAAS,CAAmB,EAC9F,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAOA,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,0CAA2CA,aAC/D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,wBACZe,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKf,UAAU,2EACbe,IAED,KACJ,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIf,UAAU,qCACb,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,8DAAsDW,MAErEC,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEZ,UAAU,qDAA6CY,IACxD,QAELI,EAAW,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,YAAU,mBAAWA,IAAkB,OAG9D,+DClCA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAQA,IAAMC,EAA2B,CAC/BC,GAAI,CAAC,UAAEF,CAAQ,CAAE,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,iFACXgB,IAGLG,GAAI,CAAC,UAAEH,CAAQ,CAAE,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,wEAAgEgB,IAEhFI,GAAI,CAAC,UAAEJ,CAAQ,CAAE,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,uDAA+CgB,IACnFK,EAAG,CAAC,UAAEL,CAAQ,CAAE,GACd,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEhB,UAAU,wEAAgEgB,IAE/EM,OAAQ,CAAC,UAAEN,CAAQ,CAAE,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAOhB,UAAU,yCAAiCgB,IAC7EO,GAAI,CAAC,CAAEP,UAAQ,CAAE,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,kBAAUgB,IAC9CQ,KAAM,CAAC,UAAER,CAAQ,WAAEhB,CAAS,CAAE,GAC5BA,EACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAW,CAAA,EAAGA,EAAU,QAAQ,CAAC,UAAGgB,IAE1C,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKhB,UAAU,+EACbgB,IAGPS,IAAK,CAAC,UAAET,CAAQ,CAAE,GAChB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIhB,UAAU,uEAA+DgB,IAEhFU,GAAI,CAAC,UAAEV,CAAQ,CAAE,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,uEAA+DgB,IAE/EW,GAAI,CAAC,UAAEX,CAAQ,CAAE,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,0EAAkEgB,IAElFY,GAAI,CAAC,UAAEZ,CAAQ,CAAE,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,2BAAmBgB,IACvDa,GAAI,IAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAC7B,UAAU,SAC/B8B,EAAG,CAAC,MAAEC,CAAI,UAAEf,CAAQ,CAAE,GACpB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CACCe,KAAMA,EACNC,OAAO,SACPC,IAAI,sBACJjC,UAAU,2EAETgB,IAGLkB,WAAY,CAAC,UAAElB,CAAQ,CAAE,GACvB,CAAA,EAAA,EAAA,GAAA,EAAC,aAAA,CAAWhB,UAAU,+EACnBgB,GAGP,6BAOO,SAASmB,AAAkB,OAAEC,CAAK,SAAEC,CAAO,CAA0B,EAC1E,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACTC,KAAgB,OAAVF,EACNC,QAASA,EACTE,KAAK,KACLC,KAAK,CAAA,CAAA,EACL,cAAY,sBACZC,OACEL,EACE,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,UAAEA,EAAMjC,WAAW,GAC/B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,iBAAiB,CAAA,UAAEiC,EAAMM,IAAI,WAE9BC,WAGLP,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIpC,UAAU,qDAEb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEA,UAAU,yCAAiCoC,EAAMxB,WAAW,GAG/D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIZ,UAAU,qDACb,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC4C,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJC,QAA0B,YAAjBT,EAAMU,MAAM,CAAiB,YAAc,UACpD9C,UAAU,0BAEQ,YAAjBoC,EAAMU,MAAM,CAAiB,UAAY,aAG9C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACC,KAAK,kBACD,YAAjBX,EAAMU,MAAM,CACT,wDACA,+CAGR,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACF,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACC,QAAQ,UAAU7C,UAAU,0BAChCoC,EAAMY,QAAQ,KAGnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACD,KAAK,kBAAS,oEAI/BX,EAAMa,OAAO,CACZ,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACL,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACC,QAAQ,UAAU7C,UAAU,0BAChCoC,EAAMa,OAAO,KAGlB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACF,KAAK,kBAAS,6EAI9B,QAILX,EAAMc,YAAY,CACjB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAClD,UAAU,SACrB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,iCAAwB,kBACtC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEA,UAAU,8CAAsCoC,EAAMc,YAAY,SAGvE,KAGHd,EAAMe,SAAS,CAACC,MAAM,CAAG,EACxB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAACpD,UAAU,SACrB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,iCAAwB,cACtC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,4BACXoC,EAAMe,SAAS,CAACE,GAAG,CAAC,AAACC,GACpB,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAECtD,UAAU,kEAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAACA,UAAU,sBACtB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WACEsD,EAASZ,IAAI,CAAC,OAAKY,EAASC,SAAS,CAAE,IAChB,IAAvBD,EAASC,SAAS,CAAS,OAAS,aANlCD,EAASZ,IAAI,WAa1B,KAGHN,EAAMoB,IAAI,CACT,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAACxD,UAAU,SACrB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,oBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAQ,CAAA,CAACyD,cAAe,CAAC,EAAA,OAAS,CAAC,CAAEC,WAAYzC,WAC/CmB,EAAMoB,IAAI,QAIf,QAEJ,MAGV,6CCxLA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OCPA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,OAOO,SAASG,EAAU,OAAEvB,CAAK,UAAEwB,CAAQ,CAAkB,EAC3D,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,IAAI,CAAA,CACH5D,UAAU,uIACV6D,KAAK,SACLC,SAAU,EACVC,QAAS,IAAMH,EAASxB,GACxB4B,UAAW,AAACC,IACNA,CAAU,YAARC,GAAG,EAA0B,MAAVD,EAAEC,GAAQ,AAAL,GAAU,CACtCD,EAAEE,cAAc,GAChBP,EAASxB,GAEb,EACA,cAAa,CAAC,WAAW,EAAEA,EAAMM,IAAI,CAAA,CAAE,WAGvC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG1C,UAAU,0EACXoC,EAAMjC,WAAW,GAEpB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEH,UAAU,wDAAgDoC,EAAMM,IAAI,GAGvE,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE1C,UAAU,2EACVoC,EAAMxB,WAAW,GAIpB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIZ,UAAU,qDACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC6C,QAA0B,YAAjBT,EAAMU,MAAM,CAAiB,YAAc,mBACvC,YAAjBV,EAAMU,MAAM,CAAiB,UAAY,WAE3CV,EAAMa,OAAO,CAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACJ,QAAQ,mBAAWT,EAAMa,OAAO,GAAY,KACnEb,EAAMc,YAAY,CAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACL,QAAQ,mBAAU,UAAgB,KAC9DT,EAAMe,SAAS,CAACC,MAAM,CAAG,EACxB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAKpD,UAAU,yEACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAACA,UAAU,WACrBoC,EAAMe,SAAS,CAACC,MAAM,CAAC,IAA6B,IAA3BhB,EAAMe,SAAS,CAACC,MAAM,CAAS,WAAa,eAEtE,UAIZ,CCjDA,IAAM,EAAkC,CAAC,WAAY,kBAAmB,WAAY,YAAY,CAiBzF,SAASa,EAAU,CAAE,QAAM,eAAE,CAAa,CAAkB,EACjE,IAAM,EAXR,AAWiB,SAXR,AAAgB,CAAmB,EAC1C,IAAM,EAAS,IAAI,IACnB,IAAK,IAAM,KAAS,EAAQ,CAC1B,IAAM,EAAQ,EAAO,GAAG,CAAC,EAAM,QAAQ,GAAK,EAAE,CAC9C,EAAM,IAAI,CAAC,GACX,EAAO,GAAG,CAAC,EAAM,QAAQ,CAAE,EAC7B,CACA,OAAO,CACT,EAGiC,GAE/B,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,sBACZ,EAAe,GAAG,CAAC,AAAC,IACnB,IAAM,EAAiB,EAAO,GAAG,CAAC,UAClC,AAAI,AAAC,GAAkB,AAA0B,GAAG,GAAd,MAAM,CAG1C,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,WACC,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,kEACX,EAAU,IACX,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,sDAA4C,IACxD,EAAe,MAAM,CAAC,UAG5B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,gEACZ,EAAe,GAAG,CAAC,AAAC,GACnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAA2B7B,MAAO,EAAO,SAAU,GAApC,EAAM,IAAI,OATlB,GAH2C,IAiB7D,IAGN,CC/CA,IAAA,EAAA,EAAA,CAAA,CAAA,OAGA,IAAM,EAA+D,CACnE,CAAE,MAAO,MAAO,MAAO,IAAK,EAC5B,CAAE,MAAO,WAAY,MAAO,UAAW,EACvC,CAAE,MAAO,kBAAmB,MAAO,iBAAkB,EACrD,CAAEuB,MAAO,WAAYC,MAAO,UAAW,EACvC,CAAE,MAAO,YAAa,MAAO,WAAY,EAC1C,CAaM,SAAS,EAAe,gBAAE,CAAc,kBAAE,CAAgB,QAAE,CAAM,CAAuB,EAC9F,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,UAAU,mFACV,KAAK,QACL,aAAW,8BAEV,EAAW,GAAG,CAAC,CAAC,OAAE,CAAK,OAAE,CAAK,CAAE,IAC/B,IAAM,EAAW,IAAmB,EACpC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAEC,KAAK,SACL,QAAS5D,IAAM,EAAiB,GAChC,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,yEACA,EACI,kFACA,yDAGL,EACU,MAAV,GAA2B,MAAT,EACjB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,4BAAkB,IAAE,CAAM,CAAC,EAAM,CAAC,OAChD,OAbC,EAgBX,IAGN,CH1CA,IAAA,EAAA,EAAA,CAAA,CAAA,+BAoBO,SAAS,AAAiB,QAAE,CAAM,CAAyB,EAChE,GAAM,CAAC,EAAaA,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACzC,CAAC,EAAgB,EAAkB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAuB,MACrE,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAqB,MAC/DY,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAmB,MAE/D,EAAiB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,IAAM,CAnBvC,SAAS,AAAsB,CAAmB,EAChD,IAAM,EAAwC,CAC5C,SAAU,EACV,kBAAmB,EACnB,SAAU,EACV,UAAW,CACb,EACA,IAAK,IAAM,KAAS,EAClB,CAAM,CAAC,EAAM,CADa,OACL,CAAC,GAExB,OAAO,CACT,GAQ6D,GAAS,CAAC,EAAO,EAEtE,EAAiB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,KAC7B,IAAM,EAAQ,EAAY,WAAW,GACrC,OAAO,EAAO,MAAM,CAAC,AAAC,IACpB,GAAI,GAAkB,EAAM,QAAQ,GAAK,GACrC,GAAgB,EAAM,MAAM,GAAK,EADoB,OAAO,EAEhE,GADmD,AAC/C,EAAO,CACT,IAFwD,AAElD,EAAcwC,EAAM,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAChD,EAAqB,EAAM,WAAW,CAAC,WAAW,GAAG,QAAQ,CAAC,GACpE,GAAI,CAAC,GAAe,CAAC,EAAoB,MAAO,EAClDD,CACA,MAAO,EACT,EACF,EAAG,CAAC,EAAQ,EAAa,EAAgB,EAAa,SAStD,AAAsB,GAAG,CAArB,EAAO,MAAM,CAEb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,QAAQ,mBACR,MAAM,SACN,YAAY,iDAEd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,YACxB,MAAM,kBACN,YAAY,0FAOlB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,QAAQ,mBACR,MAAM,SACN,YAAY,iDAId,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,qBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,0EAClB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ,YAAY,mBACZ,MAAO,EACP,SAAU,AAAC,GAAM,EAAe,EAAE,MAAM,CAAC,KAAK,EAC9C,UAAU,YAKd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,eAAgB,EAChB,iBAAkB,EAClB,OAAQ,IAIV,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,iCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAAS,AAAiB,SAAO,UAAY,UAC7C,KAAK,KACL,QAAS,IAAM,EAAgB,eAChC,gBAGD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAAS,AAAiB,cAAY,UAAY,UAClD,KAAK,KACL,QAAS,IAAM,EAAgB,oBAChC,YAGD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAA0B,WAAjB,EAA4B,UAAY,UACjD,KAAK,KACL,QAAS,IAAM,EAAgB,mBAChC,cAMF,EAAe,MAAM,CAAG,EACvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAU,OAAQ,EAAgB,cAAe,IAElD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,YACxB,MAAM,qBACN,YAAY,2DACZ,OACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,QAAQ,UAAU,QApFf,CAoFwB,IAnF3C,EAAe,IACf,EAAkB,MAClB,EAAgB,KAClB,WAgF2D,oBAQvD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,iBAAiB,CAAA,CAAC,MAAO,EAAe,QAAS,IAAM,EAAiB,UAG/E","ignoreList":[0,1,3]}
@@ -1,5 +1,5 @@
1
1
  module.exports=[63652,(a,b,c)=>{"use strict";c._=function(a){return a&&a.__esModule?a:{default:a}}},94122,(a,b,c)=>{"use strict";function d({widthInt:a,heightInt:b,blurWidth:c,blurHeight:e,blurDataURL:f,objectFit:g}){let h=c?40*c:a,i=e?40*e:b,j=h&&i?`viewBox='0 0 ${h} ${i}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${j}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${j?"none":"contain"===g?"xMidYMid":"cover"===g?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${f}'/%3E%3C/svg%3E`}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"getImageBlurSvg",{enumerable:!0,get:function(){return d}})},88429,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={VALID_LOADERS:function(){return f},imageConfigDefault:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=["default","imgix","cloudinary","akamai","custom"],g={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},34856,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"getImgProps",{enumerable:!0,get:function(){return j}}),a.r(92527);let d=a.r(99760),e=a.r(94122),f=a.r(88429),g=["-moz-initial","fill","none","scale-down",void 0];function h(a){return void 0!==a.default}function i(a){return void 0===a?a:"number"==typeof a?Number.isFinite(a)?a:NaN:"string"==typeof a&&/^[0-9]+$/.test(a)?parseInt(a,10):NaN}function j({src:a,sizes:b,unoptimized:c=!1,priority:k=!1,preload:l=!1,loading:m,className:n,quality:o,width:p,height:q,fill:r=!1,style:s,overrideSrc:t,onLoad:u,onLoadingComplete:v,placeholder:w="empty",blurDataURL:x,fetchPriority:y,decoding:z="async",layout:A,objectFit:B,objectPosition:C,lazyBoundary:D,lazyRoot:E,...F},G){var H;let I,J,K,{imgConf:L,showAltText:M,blurComplete:N,defaultLoader:O}=G,P=L||f.imageConfigDefault;if("allSizes"in P)I=P;else{let a=[...P.deviceSizes,...P.imageSizes].sort((a,b)=>a-b),b=P.deviceSizes.sort((a,b)=>a-b),c=P.qualities?.sort((a,b)=>a-b);I={...P,allSizes:a,deviceSizes:b,qualities:c}}if(void 0===O)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let Q=F.loader||O;delete F.loader,delete F.srcSet;let R="__next_img_default"in Q;if(R){if("custom"===I.loader)throw Object.defineProperty(Error(`Image with src "${a}" is missing "loader" prop.
2
2
  Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let a=Q;Q=b=>{let{config:c,...d}=b;return a(d)}}if(A){"fill"===A&&(r=!0);let a={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[A];a&&(s={...s,...a});let c={responsive:"100vw",fill:"100vw"}[A];c&&!b&&(b=c)}let S="",T=i(p),U=i(q);if((H=a)&&"object"==typeof H&&(h(H)||void 0!==H.src)){let b=h(a)?a.default:a;if(!b.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(b)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!b.height||!b.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(b)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(J=b.blurWidth,K=b.blurHeight,x=x||b.blurDataURL,S=b.src,!r)if(T||U){if(T&&!U){let a=T/b.width;U=Math.round(b.height*a)}else if(!T&&U){let a=U/b.height;T=Math.round(b.width*a)}}else T=b.width,U=b.height}let V=!k&&!l&&("lazy"===m||void 0===m);(!(a="string"==typeof a?a:S)||a.startsWith("data:")||a.startsWith("blob:"))&&(c=!0,V=!1),I.unoptimized&&(c=!0),R&&!I.dangerouslyAllowSVG&&a.split("?",1)[0].endsWith(".svg")&&(c=!0);let W=i(o),X=Object.assign(r?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:B,objectPosition:C}:{},M?{}:{color:"transparent"},s),Y=N||"empty"===w?null:"blur"===w?`url("data:image/svg+xml;charset=utf-8,${(0,e.getImageBlurSvg)({widthInt:T,heightInt:U,blurWidth:J,blurHeight:K,blurDataURL:x||"",objectFit:X.objectFit})}")`:`url("${w}")`,Z=g.includes(X.objectFit)?"fill"===X.objectFit?"100% 100%":"cover":X.objectFit,$=Y?{backgroundSize:Z,backgroundPosition:X.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:Y}:{},_=function({config:a,src:b,unoptimized:c,width:e,quality:f,sizes:g,loader:h}){if(c){if(b.startsWith("/")&&!b.startsWith("//")){let a=(0,d.getDeploymentId)();if(a){let c=b.indexOf("?");if(-1!==c){let d=new URLSearchParams(b.slice(c+1));d.get("dpl")||(d.append("dpl",a),b=b.slice(0,c)+"?"+d.toString())}else b+=`?dpl=${a}`}}return{src:b,srcSet:void 0,sizes:void 0}}let{widths:i,kind:j}=function({deviceSizes:a,allSizes:b},c,d){if(d){let c=/(^|\s)(1?\d?\d)vw/g,e=[];for(let a;a=c.exec(d);)e.push(parseInt(a[2]));if(e.length){let c=.01*Math.min(...e);return{widths:b.filter(b=>b>=a[0]*c),kind:"w"}}return{widths:b,kind:"w"}}return"number"!=typeof c?{widths:a,kind:"w"}:{widths:[...new Set([c,2*c].map(a=>b.find(b=>b>=a)||b[b.length-1]))],kind:"x"}}(a,e,g),k=i.length-1;return{sizes:g||"w"!==j?g:"100vw",srcSet:i.map((c,d)=>`${h({config:a,src:b,quality:f,width:c})} ${"w"===j?c:d+1}${j}`).join(", "),src:h({config:a,src:b,quality:f,width:i[k]})}}({config:I,src:a,unoptimized:c,width:T,quality:W,sizes:b,loader:Q}),aa=V?"lazy":m;return{props:{...F,loading:aa,fetchPriority:y,width:T,height:U,decoding:z,className:n,style:{...X,...$},sizes:_.sizes,srcSet:_.srcSet,src:t||_.src},meta:{unoptimized:c,preload:l||k,placeholder:w,fill:r}}}},32103,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return f}});let d=a.r(11321),e=()=>{};function f(a){let{headManager:b,reduceComponentsToState:c}=a;function f(){if(b&&b.mountedInstances){let a=d.Children.toArray(Array.from(b.mountedInstances).filter(Boolean));b.updateHead(c(a))}}return b?.mountedInstances?.add(a.children),f(),e(()=>(b?.mountedInstances?.add(a.children),()=>{b?.mountedInstances?.delete(a.children)})),e(()=>(b&&(b._pendingUpdate=f),()=>{b&&(b._pendingUpdate=f)})),null}},93457,(a,b,c)=>{"use strict";b.exports=a.r(64440).vendored.contexts.HeadManagerContext},56930,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return p},defaultHead:function(){return l}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(63652),g=a.r(3988),h=a.r(53083),i=g._(a.r(11321)),j=f._(a.r(32103)),k=a.r(93457);function l(){return[(0,h.jsx)("meta",{charSet:"utf-8"},"charset"),(0,h.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function m(a,b){return"string"==typeof b||"number"==typeof b?a:b.type===i.default.Fragment?a.concat(i.default.Children.toArray(b.props.children).reduce((a,b)=>"string"==typeof b||"number"==typeof b?a:a.concat(b),[])):a.concat(b)}a.r(92527);let n=["name","httpEquiv","charSet","itemProp"];function o(a){let b,c,d,e;return a.reduce(m,[]).reverse().concat(l().reverse()).filter((b=new Set,c=new Set,d=new Set,e={},a=>{let f=!0,g=!1;if(a.key&&"number"!=typeof a.key&&a.key.indexOf("$")>0){g=!0;let c=a.key.slice(a.key.indexOf("$")+1);b.has(c)?f=!1:b.add(c)}switch(a.type){case"title":case"base":c.has(a.type)?f=!1:c.add(a.type);break;case"meta":for(let b=0,c=n.length;b<c;b++){let c=n[b];if(a.props.hasOwnProperty(c))if("charSet"===c)d.has(c)?f=!1:d.add(c);else{let b=a.props[c],d=e[c]||new Set;("name"!==c||!g)&&d.has(b)?f=!1:(d.add(b),e[c]=d)}}}return f})).reverse().map((a,b)=>{let c=a.key||b;return i.default.cloneElement(a,{key:c})})}let p=function({children:a}){let b=(0,i.useContext)(k.HeadManagerContext);return(0,h.jsx)(j.default,{reduceComponentsToState:o,headManager:b,children:a})};("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},95751,(a,b,c)=>{"use strict";b.exports=a.r(64440).vendored.contexts.ImageConfigContext},14791,(a,b,c)=>{"use strict";b.exports=a.r(64440).vendored.contexts.RouterContext},3449,(a,b,c)=>{"use strict";function d(a,b){let c=a||75;return b?.qualities?.length?b.qualities.reduce((a,b)=>Math.abs(b-c)<Math.abs(a-c)?b:a,b.qualities[0]):c}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"findClosestQuality",{enumerable:!0,get:function(){return d}})},68143,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return g}});let d=a.r(3449),e=a.r(99760);function f({config:a,src:b,width:c,quality:g}){let h=(0,e.getDeploymentId)();if(b.startsWith("/")&&!b.startsWith("//")){let a=b.indexOf("?");if(-1!==a){let c=new URLSearchParams(b.slice(a+1)),d=c.get("dpl");if(d){h=d,c.delete("dpl");let e=c.toString();b=b.slice(0,a)+(e?"?"+e:"")}}}if(b.startsWith("/")&&b.includes("?")&&a.localPatterns?.length===1&&"**"===a.localPatterns[0].pathname&&""===a.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${b}" is using a query string which is not configured in images.localPatterns.
3
- Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let i=(0,d.findClosestQuality)(g,a);return`${a.path}?url=${encodeURIComponent(b)}&w=${c}&q=${i}${b.startsWith("/")&&h?`&dpl=${h}`:""}`}f.__next_img_default=!0;let g=f},64698,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"Image",{enumerable:!0,get:function(){return u}});let d=a.r(63652),e=a.r(3988),f=a.r(53083),g=e._(a.r(11321)),h=d._(a.r(69214)),i=d._(a.r(56930)),j=a.r(34856),k=a.r(88429),l=a.r(95751);a.r(92527);let m=a.r(14791),n=d._(a.r(68143)),o=a.r(54233),p={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function q(a,b,c,d,e,f,g){let h=a?.src;a&&a["data-loaded-src"]!==h&&(a["data-loaded-src"]=h,("decode"in a?a.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(a.parentElement&&a.isConnected){if("empty"!==b&&e(!0),c?.current){let b=new Event("load");Object.defineProperty(b,"target",{writable:!1,value:a});let d=!1,e=!1;c.current({...b,nativeEvent:b,currentTarget:a,target:a,isDefaultPrevented:()=>d,isPropagationStopped:()=>e,persist:()=>{},preventDefault:()=>{d=!0,b.preventDefault()},stopPropagation:()=>{e=!0,b.stopPropagation()}})}d?.current&&d.current(a)}}))}function r(a){return g.use?{fetchPriority:a}:{fetchpriority:a}}globalThis.__NEXT_IMAGE_IMPORTED=!0;let s=(0,g.forwardRef)(({src:a,srcSet:b,sizes:c,height:d,width:e,decoding:h,className:i,style:j,fetchPriority:k,placeholder:l,loading:m,unoptimized:n,fill:p,onLoadRef:s,onLoadingCompleteRef:t,setBlurComplete:u,setShowAltText:v,sizesInput:w,onLoad:x,onError:y,...z},A)=>{let B=(0,g.useCallback)(a=>{a&&(y&&(a.src=a.src),a.complete&&q(a,l,s,t,u,n,w))},[a,l,s,t,u,y,n,w]),C=(0,o.useMergedRef)(A,B);return(0,f.jsx)("img",{...z,...r(k),loading:m,width:e,height:d,decoding:h,"data-nimg":p?"fill":"1",className:i,style:j,sizes:c,srcSet:b,src:a,ref:C,onLoad:a=>{q(a.currentTarget,l,s,t,u,n,w)},onError:a=>{v(!0),"empty"!==l&&u(!0),y&&y(a)}})});function t({isAppRouter:a,imgAttributes:b}){let c={as:"image",imageSrcSet:b.srcSet,imageSizes:b.sizes,crossOrigin:b.crossOrigin,referrerPolicy:b.referrerPolicy,...r(b.fetchPriority)};return a&&h.default.preload?(h.default.preload(b.src,c),null):(0,f.jsx)(i.default,{children:(0,f.jsx)("link",{rel:"preload",href:b.srcSet?void 0:b.src,...c},"__nimg-"+b.src+b.srcSet+b.sizes)})}let u=(0,g.forwardRef)((a,b)=>{let c=(0,g.useContext)(m.RouterContext),d=(0,g.useContext)(l.ImageConfigContext),e=(0,g.useMemo)(()=>{let a=p||d||k.imageConfigDefault,b=[...a.deviceSizes,...a.imageSizes].sort((a,b)=>a-b),c=a.deviceSizes.sort((a,b)=>a-b),e=a.qualities?.sort((a,b)=>a-b);return{...a,allSizes:b,deviceSizes:c,qualities:e,localPatterns:d?.localPatterns}},[d]),{onLoad:h,onLoadingComplete:i}=a,o=(0,g.useRef)(h);(0,g.useEffect)(()=>{o.current=h},[h]);let q=(0,g.useRef)(i);(0,g.useEffect)(()=>{q.current=i},[i]);let[r,u]=(0,g.useState)(!1),[v,w]=(0,g.useState)(!1),{props:x,meta:y}=(0,j.getImgProps)(a,{defaultLoader:n.default,imgConf:e,blurComplete:r,showAltText:v});return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(s,{...x,unoptimized:y.unoptimized,placeholder:y.placeholder,fill:y.fill,onLoadRef:o,onLoadingCompleteRef:q,setBlurComplete:u,setShowAltText:w,sizesInput:a.sizes,ref:b}),y.preload?(0,f.jsx)(t,{isAppRouter:!c,imgAttributes:x}):null]})});("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},26717,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return k},getImageProps:function(){return j}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(63652),g=a.r(34856),h=a.r(64698),i=f._(a.r(68143));function j(a){let{props:b}=(0,g.getImgProps)(a,{defaultLoader:i.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[a,c]of Object.entries(b))void 0===c&&delete b[a];return{props:b}}let k=h.Image},7077,(a,b,c)=>{b.exports=a.r(26717)},17606,a=>{"use strict";var b=a.i(53083),c=a.i(7077),d=a.i(85536);function e(a,e){function f({className:g}){return(0,b.jsx)(c.default,{src:a,alt:e,width:24,height:24,className:(0,d.cn)("rounded-sm object-contain",g)})}return f.displayName=`BrandIcon(${e})`,f}function f(a){return(0,b.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...a,children:[(0,b.jsx)("circle",{cx:"12",cy:"12",r:"9",stroke:"currentColor",strokeWidth:"2"}),(0,b.jsx)("circle",{cx:"12",cy:"12",r:"3",fill:"currentColor"})]})}let g={"claude-code":e("/icons/agents/claude-ai-icon.svg","Claude Code"),"codex-cli":e("/icons/agents/openai.svg","Codex CLI"),"copilot-cli":f,cursor:e("/icons/agents/cursor.jpeg","Cursor"),"gemini-cli":e("/icons/agents/gemini-cli.jpeg","Gemini CLI"),"rovo-dev":f};a.s(["agentTypeLabels",0,{"claude-code":"Claude Code","codex-cli":"Codex CLI","copilot-cli":"GitHub Copilot CLI",cursor:"Cursor","gemini-cli":"Gemini CLI","rovo-dev":"Rovo Dev CLI"},"getAgentTypeIcon",0,function(a){return a&&a in g?g[a]:f}])},83852,a=>{"use strict";let b={"claude-opus-4-6":{displayName:"Opus 4.6",description:"Most capable, complex tasks"},"claude-sonnet-4-6":{displayName:"Sonnet 4.6",description:"Fast & balanced"},"claude-haiku-4-5":{displayName:"Haiku 4.5",description:"Lightweight & quick"},"gemini-3.1-pro":{displayName:"Gemini 3.1 Pro",description:"Advanced reasoning"},"gemini-3-flash":{displayName:"Gemini 3 Flash",description:"Ultra-fast responses"},"gemini-2.5-pro":{displayName:"Gemini 2.5 Pro",description:"Reliable workhorse"},"gemini-2.5-flash":{displayName:"Gemini 2.5 Flash",description:"Speed-optimized"},"gpt-5.4-high":{displayName:"GPT-5.4",description:"Latest reasoning model"},"gpt-5.2":{displayName:"GPT-5.2",description:"Flagship model"},"gpt-5.3-codex":{displayName:"GPT-5.3 Codex",description:"Code specialist"},"composer-1.5":{displayName:"Composer 1.5",description:"Multi-file editing"},"grok-code":{displayName:"Grok Code",description:"xAI code model"},"gpt-8":{displayName:"GPT-8",description:"Writes code before you think it"},"opus-7":{displayName:"Opus 7",description:"Achieved consciousness, ships on time"}},c={displayName:"",description:""};a.s(["getModelMeta",0,function(a){let d=b[a];return d||{...c,displayName:a.replace(/^claude-/,"").replace(/^gemini-/,"Gemini ").replace(/^gpt-/,"GPT-").replace(/-/g," ").replace(/\b\w/g,a=>a.toUpperCase())}}])},29345,a=>{"use strict";let b=(0,a.i(97624).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["ChevronDown",0,b],29345)},40227,a=>{"use strict";let b=(0,a.i(97624).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);a.s(["ChevronLeft",0,b],40227)},38776,a=>{"use strict";let b=(0,a.i(97624).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",0,b],38776)},56651,92918,a=>{"use strict";var b=a.i(6120);let c=(0,b.createServerReference)("00ddc4d8c7bb21084a052886ac4dcdc379951a9c8d",b.callServer,void 0,b.findSourceMapURL,"getAllAgentModels");a.s(["getAllAgentModels",0,c],56651);let d=(0,b.createServerReference)("6047152bbf8b56805cdd8fbf99c731100a0b1dff9f",b.callServer,void 0,b.findSourceMapURL,"updateAgentAndModel");a.s(["updateAgentAndModel",0,d],92918)}];
3
+ Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let i=(0,d.findClosestQuality)(g,a);return`${a.path}?url=${encodeURIComponent(b)}&w=${c}&q=${i}${b.startsWith("/")&&h?`&dpl=${h}`:""}`}f.__next_img_default=!0;let g=f},64698,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"Image",{enumerable:!0,get:function(){return u}});let d=a.r(63652),e=a.r(3988),f=a.r(53083),g=e._(a.r(11321)),h=d._(a.r(69214)),i=d._(a.r(56930)),j=a.r(34856),k=a.r(88429),l=a.r(95751);a.r(92527);let m=a.r(14791),n=d._(a.r(68143)),o=a.r(54233),p={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function q(a,b,c,d,e,f,g){let h=a?.src;a&&a["data-loaded-src"]!==h&&(a["data-loaded-src"]=h,("decode"in a?a.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(a.parentElement&&a.isConnected){if("empty"!==b&&e(!0),c?.current){let b=new Event("load");Object.defineProperty(b,"target",{writable:!1,value:a});let d=!1,e=!1;c.current({...b,nativeEvent:b,currentTarget:a,target:a,isDefaultPrevented:()=>d,isPropagationStopped:()=>e,persist:()=>{},preventDefault:()=>{d=!0,b.preventDefault()},stopPropagation:()=>{e=!0,b.stopPropagation()}})}d?.current&&d.current(a)}}))}function r(a){return g.use?{fetchPriority:a}:{fetchpriority:a}}globalThis.__NEXT_IMAGE_IMPORTED=!0;let s=(0,g.forwardRef)(({src:a,srcSet:b,sizes:c,height:d,width:e,decoding:h,className:i,style:j,fetchPriority:k,placeholder:l,loading:m,unoptimized:n,fill:p,onLoadRef:s,onLoadingCompleteRef:t,setBlurComplete:u,setShowAltText:v,sizesInput:w,onLoad:x,onError:y,...z},A)=>{let B=(0,g.useCallback)(a=>{a&&(y&&(a.src=a.src),a.complete&&q(a,l,s,t,u,n,w))},[a,l,s,t,u,y,n,w]),C=(0,o.useMergedRef)(A,B);return(0,f.jsx)("img",{...z,...r(k),loading:m,width:e,height:d,decoding:h,"data-nimg":p?"fill":"1",className:i,style:j,sizes:c,srcSet:b,src:a,ref:C,onLoad:a=>{q(a.currentTarget,l,s,t,u,n,w)},onError:a=>{v(!0),"empty"!==l&&u(!0),y&&y(a)}})});function t({isAppRouter:a,imgAttributes:b}){let c={as:"image",imageSrcSet:b.srcSet,imageSizes:b.sizes,crossOrigin:b.crossOrigin,referrerPolicy:b.referrerPolicy,...r(b.fetchPriority)};return a&&h.default.preload?(h.default.preload(b.src,c),null):(0,f.jsx)(i.default,{children:(0,f.jsx)("link",{rel:"preload",href:b.srcSet?void 0:b.src,...c},"__nimg-"+b.src+b.srcSet+b.sizes)})}let u=(0,g.forwardRef)((a,b)=>{let c=(0,g.useContext)(m.RouterContext),d=(0,g.useContext)(l.ImageConfigContext),e=(0,g.useMemo)(()=>{let a=p||d||k.imageConfigDefault,b=[...a.deviceSizes,...a.imageSizes].sort((a,b)=>a-b),c=a.deviceSizes.sort((a,b)=>a-b),e=a.qualities?.sort((a,b)=>a-b);return{...a,allSizes:b,deviceSizes:c,qualities:e,localPatterns:d?.localPatterns}},[d]),{onLoad:h,onLoadingComplete:i}=a,o=(0,g.useRef)(h);(0,g.useEffect)(()=>{o.current=h},[h]);let q=(0,g.useRef)(i);(0,g.useEffect)(()=>{q.current=i},[i]);let[r,u]=(0,g.useState)(!1),[v,w]=(0,g.useState)(!1),{props:x,meta:y}=(0,j.getImgProps)(a,{defaultLoader:n.default,imgConf:e,blurComplete:r,showAltText:v});return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(s,{...x,unoptimized:y.unoptimized,placeholder:y.placeholder,fill:y.fill,onLoadRef:o,onLoadingCompleteRef:q,setBlurComplete:u,setShowAltText:w,sizesInput:a.sizes,ref:b}),y.preload?(0,f.jsx)(t,{isAppRouter:!c,imgAttributes:x}):null]})});("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},26717,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return k},getImageProps:function(){return j}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(63652),g=a.r(34856),h=a.r(64698),i=f._(a.r(68143));function j(a){let{props:b}=(0,g.getImgProps)(a,{defaultLoader:i.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[a,c]of Object.entries(b))void 0===c&&delete b[a];return{props:b}}let k=h.Image},7077,(a,b,c)=>{b.exports=a.r(26717)},17606,a=>{"use strict";var b=a.i(53083),c=a.i(7077),d=a.i(85536);function e(a,e){function f({className:g}){return(0,b.jsx)(c.default,{src:a,alt:e,width:24,height:24,className:(0,d.cn)("rounded-sm object-contain",g)})}return f.displayName=`BrandIcon(${e})`,f}function f(a){return(0,b.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...a,children:[(0,b.jsx)("circle",{cx:"12",cy:"12",r:"9",stroke:"currentColor",strokeWidth:"2"}),(0,b.jsx)("circle",{cx:"12",cy:"12",r:"3",fill:"currentColor"})]})}let g={"claude-code":e("/icons/agents/claude-ai-icon.svg","Claude Code"),"codex-cli":e("/icons/agents/openai.svg","Codex CLI"),"copilot-cli":f,cursor:e("/icons/agents/cursor.jpeg","Cursor"),"gemini-cli":e("/icons/agents/gemini-cli.jpeg","Gemini CLI"),"rovo-dev":f};a.s(["agentTypeLabels",0,{"claude-code":"Claude Code","codex-cli":"Codex CLI","copilot-cli":"GitHub Copilot CLI",cursor:"Cursor","gemini-cli":"Gemini CLI","rovo-dev":"Rovo Dev CLI"},"getAgentTypeIcon",0,function(a){return a&&a in g?g[a]:f}])},83852,a=>{"use strict";let b={"claude-opus-4-6":{displayName:"Opus 4.6",description:"Most capable, complex tasks"},"claude-sonnet-4-6":{displayName:"Sonnet 4.6",description:"Fast & balanced"},"claude-haiku-4-5":{displayName:"Haiku 4.5",description:"Lightweight & quick"},"gemini-3.1-pro":{displayName:"Gemini 3.1 Pro",description:"Advanced reasoning"},"gemini-3-flash":{displayName:"Gemini 3 Flash",description:"Ultra-fast responses"},"gemini-2.5-pro":{displayName:"Gemini 2.5 Pro",description:"Reliable workhorse"},"gemini-2.5-flash":{displayName:"Gemini 2.5 Flash",description:"Speed-optimized"},"gpt-5.4-high":{displayName:"GPT-5.4",description:"Latest reasoning model"},"gpt-5.2":{displayName:"GPT-5.2",description:"Flagship model"},"gpt-5.3-codex":{displayName:"GPT-5.3 Codex",description:"Code specialist"},"composer-1.5":{displayName:"Composer 1.5",description:"Multi-file editing"},"grok-code":{displayName:"Grok Code",description:"xAI code model"},"gpt-8":{displayName:"GPT-8",description:"Writes code before you think it"},"opus-7":{displayName:"Opus 7",description:"Achieved consciousness, ships on time"}},c={displayName:"",description:""};a.s(["getModelMeta",0,function(a){let d=b[a];return d||{...c,displayName:a.replace(/^claude-/,"").replace(/^gemini-/,"Gemini ").replace(/^gpt-/,"GPT-").replace(/-/g," ").replace(/\b\w/g,a=>a.toUpperCase())}}])},29345,a=>{"use strict";let b=(0,a.i(97624).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["ChevronDown",0,b],29345)},40227,a=>{"use strict";let b=(0,a.i(97624).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);a.s(["ChevronLeft",0,b],40227)},38776,a=>{"use strict";let b=(0,a.i(97624).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",0,b],38776)},79979,52494,a=>{"use strict";var b=a.i(6120);let c=(0,b.createServerReference)("009650030f059d19b156b02ee382360672c616ccf4",b.callServer,void 0,b.findSourceMapURL,"getAllAgentModels");a.s(["getAllAgentModels",0,c],79979);let d=(0,b.createServerReference)("601cecc3fa55ec2ab8d27bbe3cfa875665be52377c",b.callServer,void 0,b.findSourceMapURL,"updateAgentAndModel");a.s(["updateAgentAndModel",0,d],52494)}];
4
4
 
5
- //# sourceMappingURL=_09b301s._.js.map
5
+ //# sourceMappingURL=_087x~el._.js.map