cssints 0.1.0 → 0.3.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 (161) hide show
  1. package/README.md +107 -53
  2. package/dist/check.mjs +2 -2
  3. package/dist/{contrast-BUKVao74.mjs → contrast-B49XCnVX.mjs} +2 -2
  4. package/dist/devtools-link-D2YxsJKZ.mjs +94 -0
  5. package/dist/devtools-link.d.mts +55 -0
  6. package/dist/devtools-link.mjs +2 -0
  7. package/dist/group-common-9zpBxfUF.d.mts +1 -0
  8. package/dist/group-types-9ttphdku.d.mts +55 -0
  9. package/dist/groups/baseline-2015/with-downstream.d.mts +81 -0
  10. package/dist/groups/baseline-2015.d.mts +291 -0
  11. package/dist/groups/baseline-2016/with-downstream.d.mts +86 -0
  12. package/dist/groups/baseline-2016.d.mts +310 -0
  13. package/dist/groups/baseline-2017/with-downstream.d.mts +94 -0
  14. package/dist/groups/baseline-2017.d.mts +365 -0
  15. package/dist/groups/baseline-2018/with-downstream.d.mts +94 -0
  16. package/dist/groups/baseline-2018.d.mts +368 -0
  17. package/dist/groups/baseline-2019/with-downstream.d.mts +97 -0
  18. package/dist/groups/baseline-2019.d.mts +375 -0
  19. package/dist/groups/baseline-2020/with-downstream.d.mts +112 -0
  20. package/dist/groups/baseline-2020.d.mts +480 -0
  21. package/dist/groups/baseline-2021/with-downstream.d.mts +125 -0
  22. package/dist/groups/baseline-2021.d.mts +536 -0
  23. package/dist/groups/baseline-2022/with-downstream.d.mts +126 -0
  24. package/dist/groups/baseline-2022.d.mts +562 -0
  25. package/dist/groups/baseline-2023/with-downstream.d.mts +120 -0
  26. package/dist/groups/baseline-2023.d.mts +606 -0
  27. package/dist/groups/baseline-2024/with-downstream.d.mts +627 -0
  28. package/dist/groups/baseline-2024.d.mts +632 -0
  29. package/dist/groups/baseline-2025/with-downstream.d.mts +628 -0
  30. package/dist/groups/baseline-2025.d.mts +640 -0
  31. package/dist/groups/baseline-2026/with-downstream.d.mts +3 -0
  32. package/dist/groups/baseline-2026.d.mts +3 -0
  33. package/dist/groups/compositing-2.d.mts +20 -0
  34. package/dist/groups/css-align-3.d.mts +29 -0
  35. package/dist/groups/css-anchor-position-1.d.mts +49 -0
  36. package/dist/groups/css-anchor-position-2.d.mts +50 -0
  37. package/dist/groups/css-animations-1.d.mts +28 -0
  38. package/dist/groups/css-animations-2.d.mts +29 -0
  39. package/dist/groups/css-backgrounds-3.d.mts +27 -0
  40. package/dist/groups/css-backgrounds-4.d.mts +29 -0
  41. package/dist/groups/css-borders-4.d.mts +95 -0
  42. package/dist/groups/css-box-4.d.mts +38 -0
  43. package/dist/groups/css-break-4.d.mts +23 -0
  44. package/dist/groups/css-cascade-5.d.mts +18 -0
  45. package/dist/groups/css-cascade-6.d.mts +18 -0
  46. package/dist/groups/css-color-4.d.mts +29 -0
  47. package/dist/groups/css-color-5.d.mts +32 -0
  48. package/dist/groups/css-color-6.d.mts +32 -0
  49. package/dist/groups/css-color-adjust-1.d.mts +20 -0
  50. package/dist/groups/css-color-hdr-1.d.mts +19 -0
  51. package/dist/groups/css-conditional-3.d.mts +17 -0
  52. package/dist/groups/css-conditional-4.d.mts +17 -0
  53. package/dist/groups/css-conditional-5.d.mts +22 -0
  54. package/dist/groups/css-contain-2.d.mts +19 -0
  55. package/dist/groups/css-content-3.d.mts +23 -0
  56. package/dist/groups/css-counter-styles-3.d.mts +16 -0
  57. package/dist/groups/css-display-4.d.mts +22 -0
  58. package/dist/groups/css-easing-2.d.mts +18 -0
  59. package/dist/groups/css-env-1.d.mts +16 -0
  60. package/dist/groups/css-flexbox-1.d.mts +24 -0
  61. package/dist/groups/css-fonts-4.d.mts +46 -0
  62. package/dist/groups/css-fonts-5.d.mts +44 -0
  63. package/dist/groups/css-forms-1.d.mts +19 -0
  64. package/dist/groups/css-gaps-1.d.mts +21 -0
  65. package/dist/groups/css-gcpm-3.d.mts +20 -0
  66. package/dist/groups/css-gcpm-4.d.mts +20 -0
  67. package/dist/groups/css-grid-2.d.mts +34 -0
  68. package/dist/groups/css-grid-3.d.mts +34 -0
  69. package/dist/groups/css-images-3.d.mts +25 -0
  70. package/dist/groups/css-images-4.d.mts +32 -0
  71. package/dist/groups/css-images-5.d.mts +33 -0
  72. package/dist/groups/css-inline-3.d.mts +28 -0
  73. package/dist/groups/css-lists-3.d.mts +26 -0
  74. package/dist/groups/css-logical-1.d.mts +35 -0
  75. package/dist/groups/css-masking-1.d.mts +37 -0
  76. package/dist/groups/css-multicol-2.d.mts +24 -0
  77. package/dist/groups/css-overflow-3.d.mts +28 -0
  78. package/dist/groups/css-overflow-4.d.mts +29 -0
  79. package/dist/groups/css-overflow-5.d.mts +31 -0
  80. package/dist/groups/css-overscroll-1.d.mts +22 -0
  81. package/dist/groups/css-page-3.d.mts +18 -0
  82. package/dist/groups/css-page-floats-3.d.mts +19 -0
  83. package/dist/groups/css-position-3.d.mts +29 -0
  84. package/dist/groups/css-position-4.d.mts +30 -0
  85. package/dist/groups/css-rhythm-1.d.mts +18 -0
  86. package/dist/groups/css-round-display-1.d.mts +16 -0
  87. package/dist/groups/css-ruby-1.d.mts +21 -0
  88. package/dist/groups/css-scroll-anchoring-1.d.mts +18 -0
  89. package/dist/groups/css-scroll-snap-1.d.mts +42 -0
  90. package/dist/groups/css-scroll-snap-2.d.mts +43 -0
  91. package/dist/groups/css-scrollbars-1.d.mts +19 -0
  92. package/dist/groups/css-shapes-1.d.mts +27 -0
  93. package/dist/groups/css-shapes-2.d.mts +27 -0
  94. package/dist/groups/css-size-adjust-1.d.mts +18 -0
  95. package/dist/groups/css-sizing-3.d.mts +34 -0
  96. package/dist/groups/css-sizing-4.d.mts +33 -0
  97. package/dist/groups/css-speech-1.d.mts +18 -0
  98. package/dist/groups/css-tables-3.d.mts +22 -0
  99. package/dist/groups/css-text-3.d.mts +36 -0
  100. package/dist/groups/css-text-4.d.mts +40 -0
  101. package/dist/groups/css-text-decor-3.d.mts +30 -0
  102. package/dist/groups/css-text-decor-4.d.mts +31 -0
  103. package/dist/groups/css-transforms-1.d.mts +31 -0
  104. package/dist/groups/css-transforms-2.d.mts +48 -0
  105. package/dist/groups/css-transitions-1.d.mts +22 -0
  106. package/dist/groups/css-transitions-2.d.mts +23 -0
  107. package/dist/groups/css-ui-4.d.mts +35 -0
  108. package/dist/groups/css-values-4.d.mts +38 -0
  109. package/dist/groups/css-values-5.d.mts +43 -0
  110. package/dist/groups/css-variables-2.d.mts +6 -0
  111. package/dist/groups/css-view-transitions-2.d.mts +20 -0
  112. package/dist/groups/css-viewport.d.mts +18 -0
  113. package/dist/groups/css-will-change-1.d.mts +18 -0
  114. package/dist/groups/css-writing-modes-4.d.mts +22 -0
  115. package/dist/groups/css2.d.mts +19 -0
  116. package/dist/groups/fill-stroke-3.d.mts +27 -0
  117. package/dist/groups/filter-effects-1.d.mts +32 -0
  118. package/dist/groups/filter-effects-2.d.mts +33 -0
  119. package/dist/groups/limited-availability.d.mts +2 -0
  120. package/dist/groups/mediaqueries-4.d.mts +16 -0
  121. package/dist/groups/mediaqueries-5.d.mts +16 -0
  122. package/dist/groups/motion-1.d.mts +24 -0
  123. package/dist/groups/newly-available/with-downstream.d.mts +632 -0
  124. package/dist/groups/newly-available.d.mts +631 -0
  125. package/dist/groups/not-discouraged.d.mts +727 -0
  126. package/dist/groups/scroll-animations-1.d.mts +30 -0
  127. package/dist/groups/selectors-4.d.mts +54 -0
  128. package/dist/groups/selectors-5.d.mts +54 -0
  129. package/dist/groups/widely-available/with-downstream.d.mts +121 -0
  130. package/dist/groups/widely-available.d.mts +616 -0
  131. package/dist/index.d.mts +19 -5
  132. package/dist/index.mjs +166 -14
  133. package/dist/instrument-BqIZpbIU.mjs +3956 -0
  134. package/dist/{lowered-CeoXbm0P.mjs → lowered-aJVapQT6.mjs} +1 -1
  135. package/dist/{node-CdhAGmF3.d.mts → node-OJ_w_Usj.d.mts} +4 -0
  136. package/dist/plugin-types.d.mts +8 -1
  137. package/dist/plugin.d.mts +2 -2
  138. package/dist/plugin.mjs +8 -1
  139. package/dist/{registry-n9JCX4pl.mjs → registry-BUSEO32-.mjs} +8 -1
  140. package/dist/runtime-Dt4Tm0Q7.d.mts +19 -0
  141. package/dist/runtime.d.mts +1 -1
  142. package/dist/runtime.mjs +6 -2
  143. package/dist/{scope-oWEaWE9n.d.mts → scope-INuJD4RT.d.mts} +18 -5
  144. package/dist/{sheet-CO7a-mdA.mjs → sheet-BeHdq4xt.mjs} +2 -1
  145. package/dist/surface.d.mts +1 -1
  146. package/dist/{theme-BGEbFAYh.mjs → theme-SlQ73rFL.mjs} +31 -8
  147. package/dist/{theme-types-DHdtTZhz.d.mts → theme-types-Bqv0Ggz_.d.mts} +11 -6
  148. package/dist/tui-types.d.mts +1 -1
  149. package/dist/tui.d.mts +1 -8
  150. package/dist/tui.mjs +35 -7
  151. package/dist/types.d.mts +1 -1
  152. package/dist/vite.d.mts +20 -2
  153. package/dist/vite.mjs +90 -41
  154. package/docs/API.md +519 -251
  155. package/package.json +10 -2
  156. package/skills/cssints/SKILL.md +12 -9
  157. package/skills/cssints/references/errors.md +8 -7
  158. package/skills/cssints-plugin/SKILL.md +3 -1
  159. package/dist/instrument-Bdtk2INz.mjs +0 -172
  160. package/dist/lib-2OEIfPAE.d.mts +0 -9
  161. package/dist/runtime-CTvuM-Hm.d.mts +0 -5
package/dist/tui.mjs CHANGED
@@ -1,11 +1,35 @@
1
- import { a as registry } from "./registry-n9JCX4pl.mjs";
2
- import { O as fail, a as createTokens, i as createGlobalTheme } from "./theme-BGEbFAYh.mjs";
3
- import { g as evaluate, h as css } from "./sheet-CO7a-mdA.mjs";
4
- import { n as valueOf, t as together } from "./contrast-BUKVao74.mjs";
1
+ import { a as registry } from "./registry-BUSEO32-.mjs";
2
+ import { a as createTokens$1, i as createGlobalTheme$1, j as fail, s as sets } from "./theme-SlQ73rFL.mjs";
3
+ import { g as evaluate, h as css } from "./sheet-BeHdq4xt.mjs";
4
+ import { n as valueOf, t as together } from "./contrast-B49XCnVX.mjs";
5
5
  import { n as parseColor } from "./color-BYIxVLlS.mjs";
6
6
  import { Formatter } from "effect";
7
7
  import { clampRgb, formatHex, formatHex8 } from "culori/fn";
8
8
  //#region src/tui.ts
9
+ const terminal = registry.terminal ??= {
10
+ properties: /* @__PURE__ */ new Map(),
11
+ defs: /* @__PURE__ */ new Map(),
12
+ themed: /* @__PURE__ */ new Map()
13
+ };
14
+ const inTerminal = (f) => (...args) => {
15
+ const web = {
16
+ properties: registry.properties,
17
+ defs: registry.defs,
18
+ themed: registry.themed
19
+ };
20
+ Object.assign(registry, terminal);
21
+ try {
22
+ return f(...args);
23
+ } finally {
24
+ Object.assign(registry, web);
25
+ }
26
+ };
27
+ const createTokens = inTerminal((...args) => {
28
+ const root = createTokens$1(...args);
29
+ sets.get(root).terminal = true;
30
+ return root;
31
+ });
32
+ const createGlobalTheme = inTerminal(createGlobalTheme$1);
9
33
  const isTui = (v) => !!v && typeof v === "object" && Array.isArray(v.__tui);
10
34
  const node = (entries) => ({ __tui: entries });
11
35
  const say = (v) => typeof v === "string" ? `"${v}"` : Formatter.formatJson(v);
@@ -47,7 +71,7 @@ const VAR = /var\((--[\w-]+)\)/g;
47
71
  const colour = (prop, v) => {
48
72
  const text = String(v);
49
73
  for (const [, name] of text.matchAll(VAR)) {
50
- const def = registry.defs.get(name);
74
+ const def = terminal.defs.get(name);
51
75
  if (!def) throw fail(`cssints: ${prop}: ${name} is no token of createTokens`);
52
76
  if (def.kind !== "color" && text === `var(${name})`) throw fail(`cssints: ${prop}: ${def.path} is a ${def.kind} token, not a colour`);
53
77
  }
@@ -356,7 +380,7 @@ const put = (out, state, key, value) => {
356
380
  else (out[state] ??= {})[key] = value;
357
381
  };
358
382
  const resolved = (text, values) => {
359
- const flat = text.replace(VAR, (m, n) => valueOf(registry, n, values) ?? m);
383
+ const flat = text.replace(VAR, (m, n) => valueOf(terminal, n, values) ?? m);
360
384
  const hex = hexOf(flat);
361
385
  if (hex === void 0) throw fail(`cssints: ${say(text)} is ${say(flat)} here, not a colour a terminal can show`);
362
386
  return hex;
@@ -374,7 +398,11 @@ const replacement = (n) => {
374
398
  const tokens = n.__tui.filter((e) => e[3] && String(e[1]).includes("var("));
375
399
  if (tokens.length) {
376
400
  const themes = {};
377
- for (const { label, values } of together(registry)) {
401
+ const all = together({
402
+ themed: terminal.themed,
403
+ layers: registry.layers
404
+ });
405
+ for (const { label, values } of all) {
378
406
  if (label.startsWith("@")) continue;
379
407
  const overlay = {};
380
408
  for (const [k, v, s] of tokens) {
package/dist/types.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { $ as WebkitLineClamp, $a as future, $c as outlineStyle, $d as strokeWidth, $f as top, $i as emptyCells, $l as positionVisibility, $n as borderLeftWidth, $o as isolation, $p as Part, $r as columnWrap, $s as maskMode, $t as backgroundPosition, $u as scrollMarginInline, A as Wrap, Aa as fontOpticalSizing, Ac as objectFit, Ad as shapeMargin, Af as textJustify, Ai as cornerTopShape, Al as paletteMix, An as borderEndEndRadius, Ao as imageRendering, Ap as viewTimelineName, Ar as caretColor, As as marginBottom, At as animationRange, Au as rowGap, B as media, Ba as fontVariant, Bc as oklch, Bd as src, Bf as textWrap, Bi as cy, Bl as placeContent, Bn as borderInlineEnd, Bo as insetBlockEnd, Bp as willChange, Br as colorInterpolationFilters, Bs as markerMid, Bt as atan, Bu as scaleFn, C as Keyframes, Ca as focusVisible, Cc as mixBlendMode, Cd as scrollTimelineName, Cf as textDecorationStyle, Ci as cornerLeftShape, Cl as paddingInlineStart, Cn as borderBottomColor, Co as hwb, Cp as valid, Cr as brightness, Cs as listStyleType, Ct as animationDelay, Cu as rotate, D as QueryWrap, Da as fontFeatureSettings, Dc as mr, Dd as seeking, Df as textEmphasisPosition, Di as cornerStartStartShape, Dl as page, Dn as borderBottomWidth, Do as hypot, Dp as viewTimeline, Dr as captionSide, Ds as marginBlock, Dt as animationIterationCount, Du as rotateY, E as Prop, Ea as fontFamily, Ec as modal, Ed as scrollbarWidth, Ef as textEmphasisColor, Ei as cornerStartEndShape, El as paddingTop, En as borderBottomStyle, Eo as hyphens, Ep as view, Er as calcSize, Es as margin, Et as animationFillMode, Eu as rotateX, F as cv, Fa as fontSynthesis, Fc as offsetDistance, Fd as skew, Ff as textSizeAdjust, Fi as counterSet, Fl as perspective, Fn as borderImageSlice, Fo as initialLetter, Fp as volumeLocked, Fr as clear, Fs as marginRight, Ft as animationTrigger, Fu as rx, Ga as fontVariantLigatures, Gc as open, Gd as stroke, Gf as timelineTriggerExitRange, Gi as display, Gl as pointerEvents, Gn as borderInlineStartColor, Go as insetInlineStart, Gp as x, Gr as columnGap, Gs as maskBorderOutset, Gt as backfaceVisibility, Gu as scroll, H as style, Ha as fontVariantCaps, Hc as onlyOfType, Hd as steps, Hf as textWrapStyle, Hi as defined, Hl as placeSelf, Hn as borderInlineEndStyle, Ho as insetFn, Hp as wordSpacing, Hr as colorScheme, Hs as mask, Ht as attrFn, Hu as scaleY, I as firstThatWorks, Ia as fontSynthesisPosition, Ic as offsetPath, Id as skewX, If as textSpacingTrim, Ii as counters, Il as perspectiveFn, In as borderImageSource, Io as initialLetterAlign, Ip as whiteSpace, Ir as clipPath, Is as marginTop, It as anyLink, Iu as ry, J as cx, Ja as fontVariationSettings, Jc as orphans, Jd as strokeDashoffset, Jf as timelineTriggerName, Ji as dynamicRangeLimit, Jl as position, Jn as borderInlineStyle, Jo as interestDelayEnd, Jp as zIndex, Jr as columnRuleColor, Js as maskBorderSource, Jt as backgroundBlendMode, Ju as scrollMargin, K as within, Ka as fontVariantNumeric, Kc as optional, Kd as strokeColor, Kf as timelineTriggerExitRangeEnd, Ki as dominantBaseline, Kl as polygon, Kn as borderInlineStartStyle, Ko as interactivity, Kp as xywh, Kr as columnHeight, Ks as maskBorderRepeat, Kt as background, Ku as scrollBehavior, L as global, La as fontSynthesisSmallCaps, Lc as offsetPosition, Ld as skewY, Lf as textTransform, Li as crossFade, Ll as perspectiveOrigin, Ln as borderImageWidth, Lo as inlineSize, Lp as whiteSpaceCollapse, Lr as clipRule, Ls as marginTrim, Lt as appearance, Lu as saturate, M as cn, Ma as fontSize, Mc as objectViewBox, Md as shapeRendering, Mf as textOverflow, Mi as counter, Ml as path, Mn as borderImage, Mo as imageSet, Mp as viewTransitionName, Mr as checked, Ms as marginInlineEnd, Mt as animationRangeStart, Mu as rubyMerge, N as container, Na as fontSizeAdjust, Nc as offset, Nd as sign, Nf as textRendering, Ni as counterIncrement, Nl as paused, Nn as borderImageOutset, No as inRange, Np as visibility, Nr as circle, Ns as marginInlineStart, Nt as animationTimeline, Nu as rubyOverhang, O as StateWrap, Oa as fontKerning, Oc as mt, Od as sepia, Of as textEmphasisStyle, Oi as cornerTopLeftShape, Ol as paint, On as borderCollapse, Oo as image, Op as viewTimelineAxis, Or as caret, Os as marginBlockEnd, Ot as animationName, Ou as rotateZ, P as css, Pa as fontStyle, Pc as offsetAnchor, Pd as sin, Pf as textShadow, Pi as counterReset, Pl as pb, Pn as borderImageRepeat, Po as indeterminate, Pp as visited, Pr as clamp, Ps as marginLeft, Pt as animationTimingFunction, Pu as rubyPosition, Q as WebkitBoxReflect, Qa as fullscreen, Qc as outlineOffset, Qd as strokeOpacity, Qf as timelineTriggerSource, Qi as empty, Ql as positionTryOrder, Qn as borderLeftStyle, Qo as invert, Qp as Fallback, Qr as columnWidth, Qs as maskImage, Qt as backgroundOrigin, Qu as scrollMarginBottom, R as group, Ra as fontSynthesisStyle, Rc as offsetRotate, Rd as speakAs, Rf as textUnderlineOffset, Ri as cubicBezier, Rl as pictureInPicture, Rn as borderInline, Ro as inset, Rp as widows, Rr as color, Rs as marker, Rt as asin, Ru as scale, S as CvValue, Sa as focus, Sc as minmax, Sd as scrollTimelineAxis, Sf as textDecorationSkipInk, Si as cornerInlineStartShape, Sl as paddingInlineEnd, Sn as borderBottom, So as hueRotate, Sp as userValid, Sr as breakInside, Ss as listStylePosition, St as animationComposition, Su as root, T as PositionTry, Ta as font, Tc as mod, Td as scrollbarGutter, Tf as textEmphasis, Ti as cornerShape, Tl as paddingRight, Tn as borderBottomRightRadius, To as hyphenateLimitChars, Tp as verticalAlign, Tr as calc, Ts as m, Tt as animationDuration, Tu as rotateFn, U as supports, Ua as fontVariantEastAsian, Uc as opacity, Ud as stopColor, Uf as timelineScope, Ui as direction, Ul as placeholderShown, Un as borderInlineEndWidth, Uo as insetInline, Up as wordWrap, Ur as columnCount, Us as maskBorder, Ut as autofill, Uu as scaleZ, V as positionTry, Va as fontVariantAlternates, Vc as onlyChild, Vd as stalled, Vf as textWrapMode, Vi as d, Vl as placeItems, Vn as borderInlineEndColor, Vo as insetBlockStart, Vp as wordBreak, Vr as colorMix, Vs as markerStart, Vt as atan2, Vu as scaleX, W as token, Wa as fontVariantEmoji, Wc as opacityFn, Wd as stopOpacity, Wf as timelineTrigger, Wi as disabled, Wl as playing, Wn as borderInlineStart, Wo as insetInlineEnd, Wp as writingMode, Wr as columnFill, Ws as maskBorderMode, Wt as backdropFilter, Wu as scope, X as GridMethods, Xa as fontWidth, Xc as outline, Xd as strokeLinejoin, Xf as timelineTriggerRangeEnd, Xi as element, Xl as positionArea, Xn as borderLeft, Xo as interpolateSize, Xr as columnRuleWidth, Xs as maskClip, Xt as backgroundColor, Xu as scrollMarginBlockEnd, Y as FlexMethods, Ya as fontWeight, Yc as outOfRange, Yd as strokeLinecap, Yf as timelineTriggerRange, Yi as dynamicRangeLimitMix, Yl as positionAnchor, Yn as borderInlineWidth, Yo as interestDelayStart, Yp as zoom, Yr as columnRuleStyle, Ys as maskBorderWidth, Yt as backgroundClip, Yu as scrollMarginBlock, Z as WebkitBoxOrient, Za as forcedColorAdjust, Zc as outlineColor, Zd as strokeMiterlimit, Zf as timelineTriggerRangeStart, Zi as ellipse, Zl as positionTryFallbacks, Zn as borderLeftColor, Zo as invalid, Zr as columnSpan, Zs as maskComposite, Zt as backgroundImage, Zu as scrollMarginBlockStart, _ as CSSStyleValue, _a as flexWrap, _c as min, _d as scrollSnapAlign, _f as textDecoration, _i as cornerBottomRightShape, _l as paddingBlock, _n as borderBlockStartColor, _o as hangingPunctuation, _p as triggerScope, _r as boxDecorationBreak, _s as linear, _t as anchor, _u as required, a as DtcgUnit, aa as fillOpacity, ac as mathDepth, ad as scrollMarkerGroup, af as target, ai as containIntrinsicInlineSize, al as overflowInline, an as baselineSource, ao as gridAutoFlow, ap as transition, ar as borderSpacing, as as lastOfType, at as WebkitTouchCallout, au as r, b as CvConfig, ba as floodOpacity, bc as minInlineSize, bd as scrollTargetGroup, bf as textDecorationLine, bi as cornerEndStartShape, bl as paddingBottom, bn as borderBlockStyle, bo as hsl, bp as userInvalid, br as breakAfter, bs as listStyle, bt as anchorSize, bu as rgba, c as Tokens, ca as firstChild, cc as matrix, cd as scrollPaddingBlockEnd, cf as targetText, ci as containerName, cl as overflowY, cn as blur, co as gridColumnEnd, cp as transitionDuration, cr as borderStyle, cs as leader, ct as abs, cu as readOnly, d as createTokens, da as flex, dc as maxBlockSize, dd as scrollPaddingInline, df as textAnchor, di as contentVisibility, dl as overscrollBehaviorBlock, dn as borderBlockColor, do as gridRowEnd, dp as translate, dr as borderTopLeftRadius, ds as lightDark, dt as active, du as readingOrder, ea as enabled, ec as maskOrigin, ed as scrollMarginInlineEnd, ef as superellipse, ei as columns, el as outlineWidth, em as Style, en as backgroundPositionX, eo as gap, ep as touchAction, er as borderRadius, es as justifyContent, et as WebkitTapHighlightColor, eu as pow, f as layers, fa as flexBasis, fc as maxHeight, fd as scrollPaddingInlineEnd, ff as textAutospace, fi as contrast, fl as overscrollBehaviorInline, fn as borderBlockEnd, fo as gridRowStart, fp as translate3d, fr as borderTopRightRadius, fs as lightingColor, ft as alignContent, fu as rect, g as CSSImageValue, ga as flexShrink, gc as mb, gd as scrollPaddingTop, gf as textCombineUpright, gi as cornerBottomLeftShape, gl as padding, gn as borderBlockStart, go as gridTemplateRows, gp as translateZ, gr as bottom, gs as lineHeightStep, gt as all, gu as repeatingRadialGradient, h as CSSColorValue, ha as flexGrow, hc as maxWidth, hd as scrollPaddingRight, hf as textBoxTrim, hi as cornerBlockStartShape, hl as p, hn as borderBlockEndWidth, ho as gridTemplateColumns, hp as translateY, hr as borderWidth, hs as lineHeight, ht as alignmentBaseline, hu as repeatingLinearGradient, i as DtcgShadow, ia as fill, ic as maskType, id as scrollMarginTop, if as tan, ii as containIntrinsicHeight, il as overflowClipMargin, in as baselineShift, io as gridAutoColumns, ip as transformStyle, ir as borderRightWidth, is as lastChild, it as WebkitTextStrokeWidth, iu as quotes, j as attr, ja as fontPalette, jc as objectPosition, jd as shapeOutside, jf as textOrientation, ji as cos, jl as past, jn as borderEndStartRadius, jo as imageResolution, jp as viewTransitionClass, jr as caretShape, js as marginInline, jt as animationRangeEnd, ju as rubyAlign, k as Steps, ka as fontLanguageOverride, kc as muted, kd as shapeImageThreshold, kf as textIndent, ki as cornerTopRightShape, kl as paintOrder, kn as borderColor, ko as imageOrientation, kp as viewTimelineInset, kr as caretAnimation, ks as marginBlockStart, kt as animationPlayState, ku as round, l as check, la as firstOfType, lc as matrix3d, ld as scrollPaddingBlockStart, lf as textAlign, li as containerType, ll as overlay, ln as border, lo as gridColumnStart, lp as transitionProperty, lr as borderTop, ls as left, lt as accentColor, lu as readWrite, m as CSS, ma as flexFlow, mc as maxLines, md as scrollPaddingLeft, mf as textBoxEdge, mi as cornerBlockEndShape, ml as overscrollBehaviorY, mn as borderBlockEndStyle, mo as gridTemplateAreas, mp as translateX, mr as borderTopWidth, ms as lineClamp, mt as alignSelf, mu as repeatingConicGradient, n as DtcgColor, na as exp, nc as maskRepeat, nd as scrollMarginLeft, nf as tabSize, ni as contain, nl as overflowAnchor, nn as backgroundRepeat, no as grid, np as transformBox, nr as borderRightColor, ns as justifySelf, nt as WebkitTextStroke, nu as printColorAdjust, o as DtcgValue, oa as fillRule, oc as mathShift, od as scrollPadding, of as targetCounter, oi as containIntrinsicSize, ol as overflowWrap, on as bg, oo as gridAutoRows, op as transitionBehavior, or as borderStartEndRadius, os as layer, ot as WebkitUserModify, ou as radialGradient, p as AttrOp, pa as flexDirection, pc as maxInlineSize, pd as scrollPaddingInlineStart, pf as textBox, pi as contrastColor, pl as overscrollBehaviorX, pn as borderBlockEndColor, po as gridTemplate, pp as translateFn, pr as borderTopStyle, ps as lineBreak, pt as alignItems, pu as rem, q as ClassValue, qa as fontVariantPosition, qc as order, qd as strokeDasharray, qf as timelineTriggerExitRangeStart, qi as dropShadow, ql as popoverOpen, qn as borderInlineStartWidth, qo as interestDelay, qp as y, qr as columnRule, qs as maskBorderSlice, qt as backgroundAttachment, qu as scrollInitialTarget, r as DtcgCubicBezier, ra as fieldSizing, rc as maskSize, rd as scrollMarginRight, rf as tableLayout, ri as containIntrinsicBlockSize, rl as overflowBlock, rn as backgroundSize, ro as gridArea, rp as transformOrigin, rr as borderRightStyle, rs as lab, rt as WebkitTextStrokeColor, ru as pt, s as Overrides, sa as filter, sc as mathStyle, sd as scrollPaddingBlock, sf as targetCounters, si as containIntrinsicWidth, sl as overflowX, sn as blockSize, so as gridColumn, sp as transitionDelay, sr as borderStartStartRadius, ss as lch, st as _var, su as ray, t as CheckOverrides, ta as env, tc as maskPosition, td as scrollMarginInlineStart, tf as symbols, ti as conicGradient, tl as overflow, tn as backgroundPositionY, to as grayscale, tp as transform, tr as borderRight, ts as justifyItems, tt as WebkitTextFillColor, tu as pr, u as createGlobalTheme, ua as fitContent, uc as max, ud as scrollPaddingBottom, uf as textAlignLast, ui as content, ul as overscrollBehavior, un as borderBlock, uo as gridRow, up as transitionTimingFunction, ur as borderTopColor, us as letterSpacing, ut as acos, uu as readingFlow, v as CSSUnitValue, va as float, vc as minBlockSize, vd as scrollSnapStop, vf as textDecorationColor, vi as cornerBottomShape, vl as paddingBlockEnd, vn as borderBlockStartStyle, vo as height, vp as unicodeBidi, vr as boxShadow, vs as linearGradient, vt as anchorName, vu as resize, w as Layout, wa as focusWithin, wc as ml, wd as scrollbarColor, wf as textDecorationThickness, wi as cornerRightShape, wl as paddingLeft, wn as borderBottomLeftRadius, wo as hyphenateCharacter, wp as vectorEffect, wr as buffering, ws as log, wt as animationDirection, wu as rotate3d, x as CvProps, xa as flowTolerance, xc as minWidth, xd as scrollTimeline, xf as textDecorationSkip, xi as cornerInlineEndShape, xl as paddingInline, xn as borderBlockWidth, xo as hsla, xp as userSelect, xr as breakBefore, xs as listStyleImage, xt as animation, xu as right, y as Chain, ya as floodColor, yc as minHeight, yd as scrollSnapType, yf as textDecorationInset, yi as cornerEndEndShape, yl as paddingBlockStart, yn as borderBlockStartWidth, yo as hover, yp as url, yr as boxSizing, ys as link, yt as anchorScope, yu as rgb, z as keyframes, za as fontSynthesisWeight, zc as oklab, zd as sqrt, zf as textUnderlinePosition, zi as cursor, zl as pl, zn as borderInlineColor, zo as insetBlock, zp as width, zr as colorFn, zs as markerEnd, zt as aspectRatio, zu as scale3d } from "./theme-types-DHdtTZhz.mjs";
1
+ import { $ as WebkitTapHighlightColor, $a as future, $c as outlineStyle, $d as strokeWidth, $f as top, $i as emptyCells, $l as positionVisibility, $n as borderRadius, $o as isolation, $r as columns, $s as maskMode, $t as backgroundPositionX, $u as scrollMarginInline, A as Wrap, Aa as fontOpticalSizing, Ac as objectFit, Ad as shapeMargin, Af as textJustify, Ai as cos, Al as paletteMix, An as borderEndStartRadius, Ao as imageRendering, Ap as viewTimelineName, Ar as caretShape, As as marginBottom, At as animationRangeEnd, Au as rowGap, B as media, Ba as fontVariant, Bc as oklch, Bd as src, Bf as textWrap, Bi as cy, Bl as placeContent, Bn as borderInlineEndColor, Bo as insetBlockEnd, Bp as willChange, Br as colorMix, Bs as markerMid, Bt as atan2, Bu as scaleFn, C as Keyframes, Ca as focusVisible, Cc as mixBlendMode, Cd as scrollTimelineName, Cf as textDecorationStyle, Ci as cornerRightShape, Cl as paddingInlineStart, Cn as borderBottomLeftRadius, Co as hwb, Cp as valid, Cr as buffering, Cs as listStyleType, Ct as animationDirection, Cu as rotate, D as QueryWrap, Da as fontFeatureSettings, Dc as mr, Dd as seeking, Df as textEmphasisPosition, Di as cornerTopLeftShape, Dl as page, Dn as borderCollapse, Do as hypot, Dp as viewTimeline, Dr as caret, Ds as marginBlock, Dt as animationName, Du as rotateY, E as Prop, Ea as fontFamily, Ec as modal, Ed as scrollbarWidth, Ef as textEmphasisColor, Ei as cornerStartStartShape, El as paddingTop, En as borderBottomWidth, Eo as hyphens, Ep as view, Er as captionSide, Es as margin, Et as animationIterationCount, Eu as rotateX, F as cv, Fa as fontSynthesis, Fc as offsetDistance, Fd as skew, Ff as textSizeAdjust, Fi as counters, Fl as perspective, Fn as borderImageSource, Fo as initialLetter, Fp as volumeLocked, Fr as clipPath, Fs as marginRight, Ft as anyLink, Fu as rx, Ga as fontVariantLigatures, Gc as open, Gd as stroke, Gf as timelineTriggerExitRange, Gi as display, Gl as pointerEvents, Gn as borderInlineStartStyle, Go as insetInlineStart, Gp as x, Gr as columnHeight, Gs as maskBorderOutset, Gt as background, Gu as scroll, H as style, Ha as fontVariantCaps, Hc as onlyOfType, Hd as steps, Hf as textWrapStyle, Hi as defined, Hl as placeSelf, Hn as borderInlineEndWidth, Ho as insetFn, Hp as wordSpacing, Hr as columnCount, Hs as mask, Ht as autofill, Hu as scaleY, I as firstThatWorks, Ia as fontSynthesisPosition, Ic as offsetPath, Id as skewX, If as textSpacingTrim, Ii as crossFade, Il as perspectiveFn, In as borderImageWidth, Io as initialLetterAlign, Ip as whiteSpace, Ir as clipRule, Is as marginTop, It as appearance, Iu as ry, J as FlexMethods, Ja as fontVariationSettings, Jc as orphans, Jd as strokeDashoffset, Jf as timelineTriggerName, Ji as dynamicRangeLimit, Jl as position, Jn as borderInlineWidth, Jo as interestDelayEnd, Jp as zIndex, Jr as columnRuleStyle, Js as maskBorderSource, Jt as backgroundClip, Ju as scrollMargin, K as within, Ka as fontVariantNumeric, Kc as optional, Kd as strokeColor, Kf as timelineTriggerExitRangeEnd, Ki as dominantBaseline, Kl as polygon, Kn as borderInlineStartWidth, Ko as interactivity, Kp as xywh, Kr as columnRule, Ks as maskBorderRepeat, Kt as backgroundAttachment, Ku as scrollBehavior, L as global, La as fontSynthesisSmallCaps, Lc as offsetPosition, Ld as skewY, Lf as textTransform, Li as cubicBezier, Ll as perspectiveOrigin, Ln as borderInline, Lo as inlineSize, Lp as whiteSpaceCollapse, Lr as color, Ls as marginTrim, Lt as asin, Lu as saturate, M as cn, Ma as fontSize, Mc as objectViewBox, Md as shapeRendering, Mf as textOverflow, Mi as counterIncrement, Ml as path, Mn as borderImageOutset, Mo as imageSet, Mp as viewTransitionName, Mr as circle, Ms as marginInlineEnd, Mt as animationTimeline, Mu as rubyMerge, N as container, Na as fontSizeAdjust, Nc as offset, Nd as sign, Nf as textRendering, Ni as counterReset, Nl as paused, Nn as borderImageRepeat, No as inRange, Np as visibility, Nr as clamp, Ns as marginInlineStart, Nt as animationTimingFunction, Nu as rubyOverhang, O as StateWrap, Oa as fontKerning, Oc as mt, Od as sepia, Of as textEmphasisStyle, Oi as cornerTopRightShape, Ol as paint, On as borderColor, Oo as image, Op as viewTimelineAxis, Or as caretAnimation, Os as marginBlockEnd, Ot as animationPlayState, Ou as rotateZ, P as css, Pa as fontStyle, Pc as offsetAnchor, Pd as sin, Pf as textShadow, Pi as counterSet, Pl as pb, Pn as borderImageSlice, Po as indeterminate, Pp as visited, Pr as clear, Ps as marginLeft, Pt as animationTrigger, Pu as rubyPosition, Q as WebkitLineClamp, Qa as fullscreen, Qc as outlineOffset, Qd as strokeOpacity, Qf as timelineTriggerSource, Qi as empty, Ql as positionTryOrder, Qn as borderLeftWidth, Qo as invert, Qr as columnWrap, Qs as maskImage, Qt as backgroundPosition, Qu as scrollMarginBottom, R as group, Ra as fontSynthesisStyle, Rc as offsetRotate, Rd as speakAs, Rf as textUnderlineOffset, Ri as cursor, Rl as pictureInPicture, Rn as borderInlineColor, Ro as inset, Rp as widows, Rr as colorFn, Rs as marker, Rt as aspectRatio, Ru as scale, S as CvValue, Sa as focus, Sc as minmax, Sd as scrollTimelineAxis, Sf as textDecorationSkipInk, Si as cornerLeftShape, Sl as paddingInlineEnd, Sn as borderBottomColor, So as hueRotate, Sp as userValid, Sr as brightness, Ss as listStylePosition, St as animationDelay, Su as root, T as PositionTry, Ta as font, Tc as mod, Td as scrollbarGutter, Tf as textEmphasis, Ti as cornerStartEndShape, Tl as paddingRight, Tn as borderBottomStyle, To as hyphenateLimitChars, Tp as verticalAlign, Tr as calcSize, Ts as m, Tt as animationFillMode, Tu as rotateFn, U as supports, Ua as fontVariantEastAsian, Uc as opacity, Ud as stopColor, Uf as timelineScope, Ui as direction, Ul as placeholderShown, Un as borderInlineStart, Uo as insetInline, Up as wordWrap, Ur as columnFill, Us as maskBorder, Ut as backdropFilter, Uu as scaleZ, V as positionTry, Va as fontVariantAlternates, Vc as onlyChild, Vd as stalled, Vf as textWrapMode, Vi as d, Vl as placeItems, Vn as borderInlineEndStyle, Vo as insetBlockStart, Vp as wordBreak, Vr as colorScheme, Vs as markerStart, Vt as attrFn, Vu as scaleX, W as token, Wa as fontVariantEmoji, Wc as opacityFn, Wd as stopOpacity, Wf as timelineTrigger, Wi as disabled, Wl as playing, Wn as borderInlineStartColor, Wo as insetInlineEnd, Wp as writingMode, Wr as columnGap, Ws as maskBorderMode, Wt as backfaceVisibility, Wu as scope, X as WebkitBoxOrient, Xa as fontWidth, Xc as outline, Xd as strokeLinejoin, Xf as timelineTriggerRangeEnd, Xi as element, Xl as positionArea, Xn as borderLeftColor, Xo as interpolateSize, Xr as columnSpan, Xs as maskClip, Xt as backgroundImage, Xu as scrollMarginBlockEnd, Y as GridMethods, Ya as fontWeight, Yc as outOfRange, Yd as strokeLinecap, Yf as timelineTriggerRange, Yi as dynamicRangeLimitMix, Yl as positionAnchor, Yn as borderLeft, Yo as interestDelayStart, Yp as zoom, Yr as columnRuleWidth, Ys as maskBorderWidth, Yt as backgroundColor, Yu as scrollMarginBlock, Z as WebkitBoxReflect, Za as forcedColorAdjust, Zc as outlineColor, Zd as strokeMiterlimit, Zf as timelineTriggerRangeStart, Zi as ellipse, Zl as positionTryFallbacks, Zn as borderLeftStyle, Zo as invalid, Zr as columnWidth, Zs as maskComposite, Zt as backgroundOrigin, Zu as scrollMarginBlockStart, _ as CSSStyleValue, _a as flexWrap, _c as min, _d as scrollSnapAlign, _f as textDecoration, _i as cornerBottomShape, _l as paddingBlock, _n as borderBlockStartStyle, _o as hangingPunctuation, _p as triggerScope, _r as boxShadow, _s as linear, _t as anchorName, _u as required, a as DtcgUnit, aa as fillOpacity, ac as mathDepth, ad as scrollMarkerGroup, af as target, ai as containIntrinsicSize, al as overflowInline, am as Fallback, an as bg, ao as gridAutoFlow, ap as transition, ar as borderStartEndRadius, as as lastOfType, at as WebkitUserModify, au as r, b as CvConfig, ba as floodOpacity, bc as minInlineSize, bd as scrollTargetGroup, bf as textDecorationLine, bi as cornerInlineEndShape, bl as paddingBottom, bn as borderBlockWidth, bo as hsl, bp as userInvalid, br as breakBefore, bs as listStyle, bt as animation, bu as rgba, c as Tokens, ca as firstChild, cc as matrix, cd as scrollPaddingBlockEnd, cf as targetText, ci as containerType, cl as overflowY, cn as border, co as gridColumnEnd, cp as transitionDuration, cr as borderTop, cs as leader, ct as accentColor, cu as readOnly, d as createTokens, da as flex, dc as maxBlockSize, dd as scrollPaddingInline, df as textAnchor, di as contrast, dl as overscrollBehaviorBlock, dn as borderBlockEnd, do as gridRowEnd, dp as translate, dr as borderTopRightRadius, ds as lightDark, dt as alignContent, du as readingOrder, ea as enabled, ec as maskOrigin, ed as scrollMarginInlineEnd, ef as superellipse, ei as conicGradient, el as outlineWidth, en as backgroundPositionY, eo as gap, ep as touchAction, er as borderRight, es as justifyContent, et as WebkitTextFillColor, eu as pow, f as layers, fa as flexBasis, fc as maxHeight, fd as scrollPaddingInlineEnd, ff as textAutospace, fi as contrastColor, fl as overscrollBehaviorInline, fn as borderBlockEndColor, fo as gridRowStart, fp as translate3d, fr as borderTopStyle, fs as lightingColor, ft as alignItems, fu as rect, g as CSSImageValue, ga as flexShrink, gc as mb, gd as scrollPaddingTop, gf as textCombineUpright, gi as cornerBottomRightShape, gl as padding, gn as borderBlockStartColor, go as gridTemplateRows, gp as translateZ, gr as boxDecorationBreak, gs as lineHeightStep, gt as anchor, gu as repeatingRadialGradient, h as CSSColorValue, ha as flexGrow, hc as maxWidth, hd as scrollPaddingRight, hf as textBoxTrim, hi as cornerBottomLeftShape, hl as p, hn as borderBlockStart, ho as gridTemplateColumns, hp as translateY, hr as bottom, hs as lineHeight, ht as all, hu as repeatingLinearGradient, i as DtcgShadow, ia as fill, ic as maskType, id as scrollMarginTop, if as tan, ii as containIntrinsicInlineSize, il as overflowClipMargin, in as baselineSource, io as gridAutoColumns, ip as transformStyle, ir as borderSpacing, is as lastChild, it as WebkitTouchCallout, iu as quotes, j as attr, ja as fontPalette, jc as objectPosition, jd as shapeOutside, jf as textOrientation, ji as counter, jl as past, jn as borderImage, jo as imageResolution, jp as viewTransitionClass, jr as checked, js as marginInline, jt as animationRangeStart, ju as rubyAlign, k as Steps, ka as fontLanguageOverride, kc as muted, kd as shapeImageThreshold, kf as textIndent, ki as cornerTopShape, kl as paintOrder, kn as borderEndEndRadius, ko as imageOrientation, kp as viewTimelineInset, kr as caretColor, ks as marginBlockStart, kt as animationRange, ku as round, l as check, la as firstOfType, lc as matrix3d, ld as scrollPaddingBlockStart, lf as textAlign, li as content, ll as overlay, ln as borderBlock, lo as gridColumnStart, lp as transitionProperty, lr as borderTopColor, ls as left, lt as acos, lu as readWrite, m as CSS, ma as flexFlow, mc as maxLines, md as scrollPaddingLeft, mf as textBoxEdge, mi as cornerBlockStartShape, ml as overscrollBehaviorY, mn as borderBlockEndWidth, mo as gridTemplateAreas, mp as translateX, mr as borderWidth, ms as lineClamp, mt as alignmentBaseline, mu as repeatingConicGradient, n as DtcgColor, na as exp, nc as maskRepeat, nd as scrollMarginLeft, nf as tabSize, ni as containIntrinsicBlockSize, nl as overflowAnchor, nn as backgroundSize, no as grid, np as transformBox, nr as borderRightStyle, ns as justifySelf, nt as WebkitTextStrokeColor, nu as printColorAdjust, o as DtcgValue, oa as fillRule, oc as mathShift, od as scrollPadding, of as targetCounter, oi as containIntrinsicWidth, ol as overflowWrap, om as Part, on as blockSize, oo as gridAutoRows, op as transitionBehavior, or as borderStartStartRadius, os as layer, ot as _var, ou as radialGradient, p as AttrOp, pa as flexDirection, pc as maxInlineSize, pd as scrollPaddingInlineStart, pf as textBox, pi as cornerBlockEndShape, pl as overscrollBehaviorX, pn as borderBlockEndStyle, po as gridTemplate, pp as translateFn, pr as borderTopWidth, ps as lineBreak, pt as alignSelf, pu as rem, q as ClassValue, qa as fontVariantPosition, qc as order, qd as strokeDasharray, qf as timelineTriggerExitRangeStart, qi as dropShadow, ql as popoverOpen, qn as borderInlineStyle, qo as interestDelay, qp as y, qr as columnRuleColor, qs as maskBorderSlice, qt as backgroundBlendMode, qu as scrollInitialTarget, r as DtcgCubicBezier, ra as fieldSizing, rc as maskSize, rd as scrollMarginRight, rf as tableLayout, ri as containIntrinsicHeight, rl as overflowBlock, rn as baselineShift, ro as gridArea, rp as transformOrigin, rr as borderRightWidth, rs as lab, rt as WebkitTextStrokeWidth, ru as pt, s as Overrides, sa as filter, sc as mathStyle, sd as scrollPaddingBlock, sf as targetCounters, si as containerName, sl as overflowX, sm as Style, sn as blur, so as gridColumn, sp as transitionDelay, sr as borderStyle, ss as lch, st as abs, su as ray, t as CheckOverrides, ta as env, tc as maskPosition, td as scrollMarginInlineStart, tf as symbols, ti as contain, tl as overflow, tn as backgroundRepeat, to as grayscale, tp as transform, tr as borderRightColor, ts as justifyItems, tt as WebkitTextStroke, tu as pr, u as createGlobalTheme, ua as fitContent, uc as max, ud as scrollPaddingBottom, uf as textAlignLast, ui as contentVisibility, ul as overscrollBehavior, un as borderBlockColor, uo as gridRow, up as transitionTimingFunction, ur as borderTopLeftRadius, us as letterSpacing, ut as active, uu as readingFlow, v as CSSUnitValue, va as float, vc as minBlockSize, vd as scrollSnapStop, vf as textDecorationColor, vi as cornerEndEndShape, vl as paddingBlockEnd, vn as borderBlockStartWidth, vo as height, vp as unicodeBidi, vr as boxSizing, vs as linearGradient, vt as anchorScope, vu as resize, w as Layout, wa as focusWithin, wc as ml, wd as scrollbarColor, wf as textDecorationThickness, wi as cornerShape, wl as paddingLeft, wn as borderBottomRightRadius, wo as hyphenateCharacter, wp as vectorEffect, wr as calc, ws as log, wt as animationDuration, wu as rotate3d, x as CvProps, xa as flowTolerance, xc as minWidth, xd as scrollTimeline, xf as textDecorationSkip, xi as cornerInlineStartShape, xl as paddingInline, xn as borderBottom, xo as hsla, xp as userSelect, xr as breakInside, xs as listStyleImage, xt as animationComposition, xu as right, y as Chain, ya as floodColor, yc as minHeight, yd as scrollSnapType, yf as textDecorationInset, yi as cornerEndStartShape, yl as paddingBlockStart, yn as borderBlockStyle, yo as hover, yp as url, yr as breakAfter, ys as link, yt as anchorSize, yu as rgb, z as keyframes, za as fontSynthesisWeight, zc as oklab, zd as sqrt, zf as textUnderlinePosition, zi as cx, zl as pl, zn as borderInlineEnd, zo as insetBlock, zp as width, zr as colorInterpolationFilters, zs as markerEnd, zt as atan, zu as scale3d } from "./theme-types-Bqv0Ggz_.mjs";
2
2
  export { AttrOp, type CSS, type CSSColorValue, type CSSImageValue, type CSSStyleValue, type CSSUnitValue, Chain, CheckOverrides, type ClassValue, CvConfig, CvProps, CvValue, DtcgColor, DtcgCubicBezier, DtcgShadow, DtcgUnit, DtcgValue, type Fallback, FlexMethods, GridMethods, Keyframes, Layout, Overrides, type Part, PositionTry, Prop, QueryWrap, StateWrap, Steps, type Style, Tokens, WebkitBoxOrient, WebkitBoxReflect, WebkitLineClamp, WebkitTapHighlightColor, WebkitTextFillColor, WebkitTextStroke, WebkitTextStrokeColor, WebkitTextStrokeWidth, WebkitTouchCallout, WebkitUserModify, Wrap, abs, accentColor, acos, active, alignContent, alignItems, alignSelf, alignmentBaseline, all, anchor, anchorName, anchorScope, anchorSize, animation, animationComposition, animationDelay, animationDirection, animationDuration, animationFillMode, animationIterationCount, animationName, animationPlayState, animationRange, animationRangeEnd, animationRangeStart, animationTimeline, animationTimingFunction, animationTrigger, anyLink, appearance, asin, aspectRatio, atan, atan2, attr, attrFn, autofill, backdropFilter, backfaceVisibility, background, backgroundAttachment, backgroundBlendMode, backgroundClip, backgroundColor, backgroundImage, backgroundOrigin, backgroundPosition, backgroundPositionX, backgroundPositionY, backgroundRepeat, backgroundSize, baselineShift, baselineSource, bg, blockSize, blur, border, borderBlock, borderBlockColor, borderBlockEnd, borderBlockEndColor, borderBlockEndStyle, borderBlockEndWidth, borderBlockStart, borderBlockStartColor, borderBlockStartStyle, borderBlockStartWidth, borderBlockStyle, borderBlockWidth, borderBottom, borderBottomColor, borderBottomLeftRadius, borderBottomRightRadius, borderBottomStyle, borderBottomWidth, borderCollapse, borderColor, borderEndEndRadius, borderEndStartRadius, borderImage, borderImageOutset, borderImageRepeat, borderImageSlice, borderImageSource, borderImageWidth, borderInline, borderInlineColor, borderInlineEnd, borderInlineEndColor, borderInlineEndStyle, borderInlineEndWidth, borderInlineStart, borderInlineStartColor, borderInlineStartStyle, borderInlineStartWidth, borderInlineStyle, borderInlineWidth, borderLeft, borderLeftColor, borderLeftStyle, borderLeftWidth, borderRadius, borderRight, borderRightColor, borderRightStyle, borderRightWidth, borderSpacing, borderStartEndRadius, borderStartStartRadius, borderStyle, borderTop, borderTopColor, borderTopLeftRadius, borderTopRightRadius, borderTopStyle, borderTopWidth, borderWidth, bottom, boxDecorationBreak, boxShadow, boxSizing, breakAfter, breakBefore, breakInside, brightness, buffering, calc, calcSize, captionSide, caret, caretAnimation, caretColor, caretShape, check, checked, circle, clamp, clear, clipPath, clipRule, cn, color, colorFn, colorInterpolationFilters, colorMix, colorScheme, columnCount, columnFill, columnGap, columnHeight, columnRule, columnRuleColor, columnRuleStyle, columnRuleWidth, columnSpan, columnWidth, columnWrap, columns, conicGradient, contain, containIntrinsicBlockSize, containIntrinsicHeight, containIntrinsicInlineSize, containIntrinsicSize, containIntrinsicWidth, container, containerName, containerType, content, contentVisibility, contrast, contrastColor, cornerBlockEndShape, cornerBlockStartShape, cornerBottomLeftShape, cornerBottomRightShape, cornerBottomShape, cornerEndEndShape, cornerEndStartShape, cornerInlineEndShape, cornerInlineStartShape, cornerLeftShape, cornerRightShape, cornerShape, cornerStartEndShape, cornerStartStartShape, cornerTopLeftShape, cornerTopRightShape, cornerTopShape, cos, counter, counterIncrement, counterReset, counterSet, counters, createGlobalTheme, createTokens, crossFade, css, cubicBezier, cursor, cv, cx, cy, d, defined, direction, disabled, display, dominantBaseline, dropShadow, dynamicRangeLimit, dynamicRangeLimitMix, element, ellipse, empty, emptyCells, enabled, env, exp, fieldSizing, fill, fillOpacity, fillRule, filter, firstChild, firstOfType, firstThatWorks, fitContent, flex, flexBasis, flexDirection, flexFlow, flexGrow, flexShrink, flexWrap, float, floodColor, floodOpacity, flowTolerance, focus, focusVisible, focusWithin, font, fontFamily, fontFeatureSettings, fontKerning, fontLanguageOverride, fontOpticalSizing, fontPalette, fontSize, fontSizeAdjust, fontStyle, fontSynthesis, fontSynthesisPosition, fontSynthesisSmallCaps, fontSynthesisStyle, fontSynthesisWeight, fontVariant, fontVariantAlternates, fontVariantCaps, fontVariantEastAsian, fontVariantEmoji, fontVariantLigatures, fontVariantNumeric, fontVariantPosition, fontVariationSettings, fontWeight, fontWidth, forcedColorAdjust, fullscreen, future, gap, global, grayscale, grid, gridArea, gridAutoColumns, gridAutoFlow, gridAutoRows, gridColumn, gridColumnEnd, gridColumnStart, gridRow, gridRowEnd, gridRowStart, gridTemplate, gridTemplateAreas, gridTemplateColumns, gridTemplateRows, group, hangingPunctuation, height, hover, hsl, hsla, hueRotate, hwb, hyphenateCharacter, hyphenateLimitChars, hyphens, hypot, image, imageOrientation, imageRendering, imageResolution, imageSet, inRange, indeterminate, initialLetter, initialLetterAlign, inlineSize, inset, insetBlock, insetBlockEnd, insetBlockStart, insetFn, insetInline, insetInlineEnd, insetInlineStart, interactivity, interestDelay, interestDelayEnd, interestDelayStart, interpolateSize, invalid, invert, isolation, justifyContent, justifyItems, justifySelf, keyframes, lab, lastChild, lastOfType, layer, layers, lch, leader, left, letterSpacing, lightDark, lightingColor, lineBreak, lineClamp, lineHeight, lineHeightStep, linear, linearGradient, link, listStyle, listStyleImage, listStylePosition, listStyleType, log, m, margin, marginBlock, marginBlockEnd, marginBlockStart, marginBottom, marginInline, marginInlineEnd, marginInlineStart, marginLeft, marginRight, marginTop, marginTrim, marker, markerEnd, markerMid, markerStart, mask, maskBorder, maskBorderMode, maskBorderOutset, maskBorderRepeat, maskBorderSlice, maskBorderSource, maskBorderWidth, maskClip, maskComposite, maskImage, maskMode, maskOrigin, maskPosition, maskRepeat, maskSize, maskType, mathDepth, mathShift, mathStyle, matrix, matrix3d, max, maxBlockSize, maxHeight, maxInlineSize, maxLines, maxWidth, mb, media, min, minBlockSize, minHeight, minInlineSize, minWidth, minmax, mixBlendMode, ml, mod, modal, mr, mt, muted, objectFit, objectPosition, objectViewBox, offset, offsetAnchor, offsetDistance, offsetPath, offsetPosition, offsetRotate, oklab, oklch, onlyChild, onlyOfType, opacity, opacityFn, open, optional, order, orphans, outOfRange, outline, outlineColor, outlineOffset, outlineStyle, outlineWidth, overflow, overflowAnchor, overflowBlock, overflowClipMargin, overflowInline, overflowWrap, overflowX, overflowY, overlay, overscrollBehavior, overscrollBehaviorBlock, overscrollBehaviorInline, overscrollBehaviorX, overscrollBehaviorY, p, padding, paddingBlock, paddingBlockEnd, paddingBlockStart, paddingBottom, paddingInline, paddingInlineEnd, paddingInlineStart, paddingLeft, paddingRight, paddingTop, page, paint, paintOrder, paletteMix, past, path, paused, pb, perspective, perspectiveFn, perspectiveOrigin, pictureInPicture, pl, placeContent, placeItems, placeSelf, placeholderShown, playing, pointerEvents, polygon, popoverOpen, position, positionAnchor, positionArea, positionTry, positionTryFallbacks, positionTryOrder, positionVisibility, pow, pr, printColorAdjust, pt, quotes, r, radialGradient, ray, readOnly, readWrite, readingFlow, readingOrder, rect, rem, repeatingConicGradient, repeatingLinearGradient, repeatingRadialGradient, required, resize, rgb, rgba, right, root, rotate, rotate3d, rotateFn, rotateX, rotateY, rotateZ, round, rowGap, rubyAlign, rubyMerge, rubyOverhang, rubyPosition, rx, ry, saturate, scale, scale3d, scaleFn, scaleX, scaleY, scaleZ, scope, scroll, scrollBehavior, scrollInitialTarget, scrollMargin, scrollMarginBlock, scrollMarginBlockEnd, scrollMarginBlockStart, scrollMarginBottom, scrollMarginInline, scrollMarginInlineEnd, scrollMarginInlineStart, scrollMarginLeft, scrollMarginRight, scrollMarginTop, scrollMarkerGroup, scrollPadding, scrollPaddingBlock, scrollPaddingBlockEnd, scrollPaddingBlockStart, scrollPaddingBottom, scrollPaddingInline, scrollPaddingInlineEnd, scrollPaddingInlineStart, scrollPaddingLeft, scrollPaddingRight, scrollPaddingTop, scrollSnapAlign, scrollSnapStop, scrollSnapType, scrollTargetGroup, scrollTimeline, scrollTimelineAxis, scrollTimelineName, scrollbarColor, scrollbarGutter, scrollbarWidth, seeking, sepia, shapeImageThreshold, shapeMargin, shapeOutside, shapeRendering, sign, sin, skew, skewX, skewY, speakAs, sqrt, src, stalled, steps, stopColor, stopOpacity, stroke, strokeColor, strokeDasharray, strokeDashoffset, strokeLinecap, strokeLinejoin, strokeMiterlimit, strokeOpacity, strokeWidth, style, superellipse, supports, symbols, tabSize, tableLayout, tan, target, targetCounter, targetCounters, targetText, textAlign, textAlignLast, textAnchor, textAutospace, textBox, textBoxEdge, textBoxTrim, textCombineUpright, textDecoration, textDecorationColor, textDecorationInset, textDecorationLine, textDecorationSkip, textDecorationSkipInk, textDecorationStyle, textDecorationThickness, textEmphasis, textEmphasisColor, textEmphasisPosition, textEmphasisStyle, textIndent, textJustify, textOrientation, textOverflow, textRendering, textShadow, textSizeAdjust, textSpacingTrim, textTransform, textUnderlineOffset, textUnderlinePosition, textWrap, textWrapMode, textWrapStyle, timelineScope, timelineTrigger, timelineTriggerExitRange, timelineTriggerExitRangeEnd, timelineTriggerExitRangeStart, timelineTriggerName, timelineTriggerRange, timelineTriggerRangeEnd, timelineTriggerRangeStart, timelineTriggerSource, token, top, touchAction, transform, transformBox, transformOrigin, transformStyle, transition, transitionBehavior, transitionDelay, transitionDuration, transitionProperty, transitionTimingFunction, translate, translate3d, translateFn, translateX, translateY, translateZ, triggerScope, unicodeBidi, url, userInvalid, userSelect, userValid, valid, _var as var, vectorEffect, verticalAlign, view, viewTimeline, viewTimelineAxis, viewTimelineInset, viewTimelineName, viewTransitionClass, viewTransitionName, visibility, visited, volumeLocked, whiteSpace, whiteSpaceCollapse, widows, width, willChange, within, wordBreak, wordSpacing, wordWrap, writingMode, x, xywh, y, zIndex, zoom };
package/dist/vite.d.mts CHANGED
@@ -1,8 +1,9 @@
1
1
  import { i as GlobalRule } from "./author-types-C1AhsnrT.mjs";
2
2
  import { n as ImportError, r as MacroError } from "./errors-D4ZbcwRo.mjs";
3
- import { i as RegistryState, n as At, r as LayersDecl } from "./node-CdhAGmF3.mjs";
3
+ import { i as RegistryState, n as At, r as LayersDecl } from "./node-OJ_w_Usj.mjs";
4
4
  import { Effect } from "effect";
5
5
  import { ImportDeclaration } from "oxc-parser";
6
+ import MagicString from "magic-string";
6
7
  import { Plugin } from "vite";
7
8
  //#region src/devtools-server.d.ts
8
9
  /** A `css.*` call of a client module: where it is (1-based line, 0-based column) and the class names it produced. */
@@ -57,18 +58,35 @@ interface CssImports {
57
58
  locals: Set<string>;
58
59
  decls: ImportDeclaration[];
59
60
  }
61
+ /** A `cn(...)` with runtime arguments: the call is the runtime's `__cx`, which gets the runtime arguments. */
62
+ interface SiteGroup {
63
+ callee: {
64
+ start: number;
65
+ end: number;
66
+ };
67
+ args: {
68
+ start: number;
69
+ end: number;
70
+ runtime: boolean;
71
+ }[];
72
+ /** `[offset, site]` of the sites inside the runtime arguments, in source order: the parts that may or may not be active */
73
+ parts: [number, number][];
74
+ }
60
75
  interface Site {
61
76
  start: number;
62
77
  end: number;
63
78
  inFn: boolean;
79
+ /** dev with devtools: the readable class of a cn() or cv() site (`cs-Landing-logo`), see `tagged` */
80
+ name: string | undefined;
64
81
  locals: Set<string>;
82
+ group?: SiteGroup;
65
83
  }
66
84
  interface Instrumented {
67
85
  code: string;
68
86
  sites: Site[];
69
87
  imp: CssImports;
70
88
  }
71
- export declare const instrument: (code: string, id: string, client?: boolean | undefined) => Effect.Effect<Instrumented | null, ImportError, never>;
89
+ export declare const instrument: (code: string, id: string, client?: boolean | undefined, named?: boolean | undefined) => Effect.Effect<Instrumented | null, ImportError, never>;
72
90
  //#endregion
73
91
  //#region src/sheet.d.ts
74
92
  /** Adds a global rule (`*{box-sizing:border-box}`) of a plugin member, by its content, to the sheet of the module at `at`. `layer` names a declared top-level layer to wrap it in, no layer puts it in `_.k`. */
package/dist/vite.mjs CHANGED
@@ -1,15 +1,16 @@
1
- import { c as EvalError, d as MacroError, f as MemberError, i as forgetWarnings, l as HookError, n as forget, p as SiteMissingError, t as Registry } from "./registry-n9JCX4pl.mjs";
2
- import { C as fallbackEntries, T as runtimeNames, a as closeNames, b as DERIVED, c as layerEntries, f as themedEntries, l as layerStatements, m as usesDerived, n as addGlobal, o as globalEntries, r as addLayers, s as globalNames, t as LAYERS, u as renderSheet, v as kernelEntries, w as runtimeModule, x as RUNTIME_ID } from "./sheet-CO7a-mdA.mjs";
3
- import { i as keptImport, n as RUNTIME, r as instrument } from "./instrument-Bdtk2INz.mjs";
4
- import { r as verifyChecks } from "./contrast-BUKVao74.mjs";
1
+ import { c as EvalError, d as MacroError, f as MemberError, i as forgetWarnings, l as HookError, n as forget, p as SiteMissingError, t as Registry } from "./registry-BUSEO32-.mjs";
2
+ import { C as fallbackEntries, T as runtimeNames, a as closeNames, b as DERIVED, c as layerEntries, f as themedEntries, l as layerStatements, m as usesDerived, n as addGlobal, o as globalEntries, r as addLayers, s as globalNames, t as LAYERS, u as renderSheet, v as kernelEntries, w as runtimeModule, x as RUNTIME_ID } from "./sheet-BeHdq4xt.mjs";
3
+ import { a as runtimeImport, i as instrument, o as tagged, s as writeSite } from "./instrument-BqIZpbIU.mjs";
4
+ import { r as verifyChecks } from "./contrast-B49XCnVX.mjs";
5
+ import { i as serverId, n as gitRoot, o as sessionOf, r as register } from "./devtools-link-D2YxsJKZ.mjs";
5
6
  import { createRequire } from "node:module";
6
7
  import { targets as targets$1, useTargets } from "@cssints/css-grammar/support";
7
8
  import { Cause, Clock, Config, Data, Effect, Exit, Formatter, Option, Predicate, Result, Schema, Semaphore } from "effect";
8
9
  import { createHash } from "node:crypto";
9
- import { basename, join, relative, resolve, sep } from "node:path";
10
+ import { basename, join, relative, resolve } from "node:path";
10
11
  import { browserslistToTargets } from "lightningcss";
11
12
  import MagicString from "magic-string";
12
- import { existsSync, readFileSync } from "node:fs";
13
+ import { readFileSync } from "node:fs";
13
14
  import { readFile } from "node:fs/promises";
14
15
  import { browsers as browsers$1 } from "@cssints/css-grammar/browsers";
15
16
  import { createFilter, createServer, createServerModuleRunner, normalizePath, transformWithOxc } from "vite";
@@ -71,7 +72,7 @@ const failureOf = (id, registry) => (e) => {
71
72
  const m = e instanceof ReferenceError ? /^(?:(\S+) is not defined|Cannot access '(\S+)' before initialization)$/.exec(e.message) : null;
72
73
  const name = m?.[1] ?? m?.[2];
73
74
  return new MacroError({
74
- message: name ? `cssints: css arguments must be known at build time: \`${name}\` is not defined where the call is evaluated (a parameter, a prop or state). Use cx(on && p(4)), a cv variant, or a token in a style prop` : message,
75
+ message: name ? `cssints: css arguments must be known at build time: \`${name}\` is not defined where the call is evaluated (a parameter, a prop or state). Use cn(base, on && p(4)), a cv variant, or a token in a style prop` : message,
75
76
  cause: e,
76
77
  ...at
77
78
  });
@@ -80,6 +81,7 @@ const evaluateModule = Effect.fnUntraced(function* (runner, id, targets) {
80
81
  const registry = yield* Registry;
81
82
  useTargets(targets);
82
83
  registry.sites.delete(id);
84
+ registry.nodes.delete(id);
83
85
  forget(id);
84
86
  registry.at = void 0;
85
87
  registry.files.clear();
@@ -189,13 +191,30 @@ const table = Effect.fn("cssints.devtoolsTable")(function* (root, usedBy, callsO
189
191
  });
190
192
  const ASK = "cssints:devtools:ask";
191
193
  const ASKED = "cssints:devtools:asked";
194
+ const LINK = "cssints:devtools:link";
195
+ const LINKED = "cssints:devtools:linked";
192
196
  const MAX_PROMPT = 16e3;
193
197
  const Asking = Schema.Struct({
194
198
  ref: Schema.Finite,
195
199
  prompt: Schema.String
196
200
  });
197
201
  var OpenCodeError = class extends Data.TaggedError("OpenCodeError") {};
198
- const workspace = (root) => root.split(sep).map((_, i, parts) => parts.slice(0, parts.length - i).join(sep) || sep).find((dir) => existsSync(join(dir, ".git"))) ?? root;
202
+ const attachedTo = (root) => Effect.sync(() => {
203
+ const git = gitRoot(root);
204
+ return sessionOf(git, serverId(git, root));
205
+ });
206
+ const urlOf = (s) => {
207
+ const address = s.httpServer?.address();
208
+ return Predicate.hasProperty(address, "port") ? `${s.config.server.https ? "https" : "http"}://localhost:${address.port}/` : void 0;
209
+ };
210
+ const announce = (s) => Effect.try(() => {
211
+ const http = s.httpServer;
212
+ const url = urlOf(s);
213
+ if (!http || !url) return;
214
+ const remove = register(gitRoot(s.config.root), s.config.root, url);
215
+ http.once("close", remove);
216
+ process.once("exit", remove);
217
+ }).pipe(Effect.ignore);
199
218
  const connect = Effect.fn("cssints.opencodeConnect")(function* () {
200
219
  const unavailable = (message) => () => new OpenCodeError({
201
220
  status: "unavailable",
@@ -215,15 +234,36 @@ const connect = Effect.fn("cssints.opencodeConnect")(function* () {
215
234
  });
216
235
  if (!service) return yield* new OpenCodeError({
217
236
  status: "unavailable",
237
+ idle: true,
218
238
  message: "No OpenCode service is running. Start OpenCode (or `opencode serve --service`) and send again."
219
239
  });
220
- return OpenCode.make({
221
- baseUrl: service.url,
222
- headers: Service.headers(service)
223
- });
240
+ return {
241
+ url: service.url,
242
+ client: OpenCode.make({
243
+ baseUrl: service.url,
244
+ headers: Service.headers(service)
245
+ })
246
+ };
224
247
  });
225
- const ask = Effect.fn("cssints.opencodeAsk")(function* (root, options, ref, prompt, say) {
226
- const client = yield* connect();
248
+ const link = Effect.fn("cssints.opencodeLink")(function* (root) {
249
+ const directory = gitRoot(root);
250
+ const attached = yield* attachedTo(root);
251
+ const session = attached ? { session: attached } : {};
252
+ return yield* connect().pipe(Effect.map(({ url }) => ({
253
+ connected: true,
254
+ url,
255
+ directory,
256
+ ...session
257
+ })), Effect.catchTag("OpenCodeError", (e) => Effect.succeed({
258
+ connected: false,
259
+ directory,
260
+ ...session,
261
+ ...e.idle ? {} : { message: e.message }
262
+ })));
263
+ });
264
+ const appLine = (root, url) => `App: ${relative(gitRoot(root), root) || "."}${url ? ` (${url})` : ""}; file paths below are relative to it`;
265
+ const ask = Effect.fn("cssints.opencodeAsk")(function* (root, url, options, ref, prompt, say) {
266
+ const { client } = yield* connect();
227
267
  const call = (f) => Effect.tryPromise({
228
268
  try: f,
229
269
  catch: (e) => new OpenCodeError({
@@ -231,11 +271,16 @@ const ask = Effect.fn("cssints.opencodeAsk")(function* (root, options, ref, prom
231
271
  message: Predicate.isError(e) ? e.message : String(e)
232
272
  })
233
273
  });
234
- const { id } = yield* call(() => client.session.create({
274
+ const attached = yield* attachedTo(root);
275
+ if (attached) yield* call(() => client.session.get({ sessionID: attached })).pipe(Effect.mapError((e) => new OpenCodeError({
276
+ status: "failed",
277
+ message: `The attached session ${attached} is gone (${e.message}). Run /cssints-devtools in an OpenCode session to attach another.`
278
+ })));
279
+ const id = attached ?? (yield* call(() => client.session.create({
235
280
  title: "cssints devtools: UI change",
236
281
  ...options.agent ? { agent: options.agent } : {},
237
- location: { directory: workspace(root) }
238
- }));
282
+ location: { directory: gitRoot(root) }
283
+ }))).id;
239
284
  say({
240
285
  ref,
241
286
  status: "running",
@@ -243,7 +288,7 @@ const ask = Effect.fn("cssints.opencodeAsk")(function* (root, options, ref, prom
243
288
  });
244
289
  yield* call(() => client.session.prompt({
245
290
  sessionID: id,
246
- text: prompt.slice(0, MAX_PROMPT),
291
+ text: `${appLine(root, url)}\n${prompt}`.slice(0, MAX_PROMPT),
247
292
  ...options.skills?.length ? { skills: options.skills.map((s) => ({ id: s })) } : {}
248
293
  }));
249
294
  yield* call(() => client.session.wait({ sessionID: id }));
@@ -259,7 +304,7 @@ const hot = import.meta.hot;
259
304
  mount({
260
305
  root: ${Formatter.formatJson(root)},
261
306
  request: () => hot.send("cssints:devtools:get"),
262
- on: (event, listener) => hot.on(event, listener),${opencode ? `\n ask: (ref, prompt) => hot.send("${ASK}", { ref, prompt }),` : ""}
307
+ on: (event, listener) => hot.on(event, listener),${opencode ? `\n ask: (ref, prompt) => hot.send("${ASK}", { ref, prompt }),\n link: () => hot.send("${LINK}"),` : ""}
263
308
  });
264
309
  ` : `console.warn("cssints: devtools is on, but @cssints/devtools/overlay is not installed (or not built): add @cssints/devtools to the devDependencies of the app");\n`;
265
310
  /**
@@ -282,18 +327,22 @@ const devtoolsPlugin = (usedBy, callsOf, opencode) => {
282
327
  apply: "serve",
283
328
  configureServer(s) {
284
329
  server = s;
330
+ if (opencode) s.httpServer?.once("listening", () => Effect.runSync(announce(s)));
285
331
  s.environments.client.hot.on("cssints:devtools:get", (_, client) => client.send("cssints:devtools", Effect.runSync(table(s.config.root, usedBy, callsOf))));
286
- if (opencode) s.environments.client.hot.on(ASK, (data) => {
287
- const asking = Schema.decodeUnknownOption(Asking)(data);
288
- if (Option.isNone(asking)) return;
289
- const { ref, prompt } = asking.value;
290
- const say = (asked) => s.environments.client.hot.send(ASKED, asked);
291
- Effect.runFork(ask(s.config.root, opencode, ref, prompt, say).pipe(Effect.catchTag("OpenCodeError", (e) => Effect.sync(() => say({
292
- ref,
293
- status: e.status,
294
- message: e.message
295
- })))));
296
- });
332
+ if (opencode) {
333
+ s.environments.client.hot.on(LINK, () => Effect.runFork(link(s.config.root).pipe(Effect.map((linked) => s.environments.client.hot.send(LINKED, linked)))));
334
+ s.environments.client.hot.on(ASK, (data) => {
335
+ const asking = Schema.decodeUnknownOption(Asking)(data);
336
+ if (Option.isNone(asking)) return;
337
+ const { ref, prompt } = asking.value;
338
+ const say = (asked) => s.environments.client.hot.send(ASKED, asked);
339
+ Effect.runFork(ask(s.config.root, urlOf(s), opencode, ref, prompt, say).pipe(Effect.catchTag("OpenCodeError", (e) => Effect.sync(() => say({
340
+ ref,
341
+ status: e.status,
342
+ message: e.message
343
+ })))));
344
+ });
345
+ }
297
346
  },
298
347
  transformIndexHtml: () => [{
299
348
  tag: "script",
@@ -707,7 +756,7 @@ function cssints({ inner = false, exclude, devtools = false, opencode = false }
707
756
  }
708
757
  const ms = new MagicString(code);
709
758
  if (runtimes.length) ms.prepend(runtimes.map((n) => `import ${Formatter.formatJson(RUNTIME_ID + n)};\n`).join(""));
710
- if ([...sites.values()].some((r) => r.startsWith("__cv("))) ms.prepend(`import { _cv as __cv } from ${Formatter.formatJson(RUNTIME)};\n`);
759
+ ms.prepend(runtimeImport(sites.values()));
711
760
  for (const [n, s] of parsed.sites.entries()) {
712
761
  const replacement = sites.get(n);
713
762
  if (replacement === void 0) return yield* new SiteMissingError({
@@ -716,13 +765,9 @@ function cssints({ inner = false, exclude, devtools = false, opencode = false }
716
765
  site: n,
717
766
  offset: s.start
718
767
  });
719
- ms.overwrite(s.start, s.end, replacement);
720
- }
721
- for (const decl of parsed.imp.decls) {
722
- const kept = keptImport(decl, code);
723
- if (kept) ms.overwrite(decl.start, decl.end, kept);
724
- else ms.remove(decl.start, decl.end);
768
+ writeSite(ms, s, s.name ? tagged(replacement, s.name) : replacement);
725
769
  }
770
+ for (const decl of parsed.imp.decls) ms.remove(decl.start, decl.end);
726
771
  for (const dep of runnerDeps(env, id)) (depsOf.get(dep) ?? depsOf.set(dep, /* @__PURE__ */ new Set()).get(dep)).add(id);
727
772
  for (const file of files) {
728
773
  const dep = normalizePath(resolve(file));
@@ -765,7 +810,7 @@ function cssints({ inner = false, exclude, devtools = false, opencode = false }
765
810
  return out && /x$/.test(id) ? yield* inertJsx(out.code, id) : out?.code;
766
811
  }
767
812
  if (inner) return void 0;
768
- const parsed = yield* instrument(code, id);
813
+ const parsed = yield* instrument(code, id, true, !!devtools && !build);
769
814
  if (!parsed) return void 0;
770
815
  const env = server.environments.ssr;
771
816
  runner ??= createServerModuleRunner(env, {
@@ -855,8 +900,12 @@ function cssints({ inner = false, exclude, devtools = false, opencode = false }
855
900
  const buildEnd = Effect.fn("cssints.buildEnd")(function* (warn) {
856
901
  yield* verifyChecks(() => true).pipe(Effect.catch((e) => locate(e, "", "")), Effect.ensuring(flushWarnings(warn)));
857
902
  });
858
- const hotUpdate = Effect.fn("cssints.hotUpdate")(function* (env, file, modules) {
903
+ const hotUpdate = Effect.fn("cssints.hotUpdate")(function* (env, file, modules, type) {
859
904
  if (env.name !== "client") return void 0;
905
+ if (type === "delete") {
906
+ yield* Effect.sync(() => forget(file));
907
+ yield* drop(file);
908
+ }
860
909
  yield* Effect.sync(() => forgetWarnings([file]));
861
910
  const graph = env.moduleGraph;
862
911
  const affected = [.../* @__PURE__ */ new Set([...depsOf.get(file) ?? [], ...inflight])].flatMap((id) => graph.getModuleById(id) ?? []);
@@ -944,8 +993,8 @@ function cssints({ inner = false, exclude, devtools = false, opencode = false }
944
993
  return run(hook("vite.transform", id, transform(this, code, id).pipe(Effect.catch((e) => locate(e, code, id))), this.environment.name));
945
994
  }
946
995
  },
947
- hotUpdate({ file, modules }) {
948
- return runSync(hook("vite.hotUpdate", file, hotUpdate(this.environment, file, modules)));
996
+ hotUpdate({ file, modules, type }) {
997
+ return runSync(hook("vite.hotUpdate", file, hotUpdate(this.environment, file, modules, type)));
949
998
  }
950
999
  };
951
1000
  const version = {