@fluixi/compiler 1.0.0-alpha.93 → 1.0.0-alpha.94

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 (90) hide show
  1. package/dist/analyze/intrinsics.cjs +13 -1
  2. package/dist/analyze/intrinsics.d.cts +14 -0
  3. package/dist/analyze/intrinsics.d.ts +14 -0
  4. package/dist/analyze/intrinsics.d.ts.map +1 -1
  5. package/dist/analyze/intrinsics.js +17 -0
  6. package/dist/analyze/intrinsics.mjs +13 -1
  7. package/dist/analyze/static-graph.cjs +1 -1
  8. package/dist/analyze/static-graph.mjs +1 -1
  9. package/dist/{babel-RJHJQVEM.mjs → babel-RJFQVFJW.mjs} +4 -4
  10. package/dist/{chunk-56QSOVVL.mjs → chunk-DP2QDWWH.mjs} +1 -1
  11. package/dist/{chunk-R7PPFBCL.mjs → chunk-E2RWTIYE.mjs} +21 -15
  12. package/dist/{chunk-OD53TMER.mjs → chunk-HCCBEJEZ.mjs} +13 -1
  13. package/dist/{chunk-TJIH7TLX.mjs → chunk-HIZU7WI2.mjs} +1 -1
  14. package/dist/{chunk-U7HCFLZ2.mjs → chunk-ZR2QHTEX.mjs} +356 -24
  15. package/dist/codegen/backends/imperative.cjs +1 -1
  16. package/dist/codegen/backends/imperative.d.ts.map +1 -1
  17. package/dist/codegen/backends/imperative.js +2 -1
  18. package/dist/codegen/backends/imperative.mjs +1 -1
  19. package/dist/frontend/babel/build-ir-lit.cjs +352 -22
  20. package/dist/frontend/babel/build-ir-lit.mjs +352 -22
  21. package/dist/frontend/babel/build-ir.cjs +352 -22
  22. package/dist/frontend/babel/build-ir.mjs +352 -22
  23. package/dist/frontend/babel/index.cjs +353 -23
  24. package/dist/frontend/babel/index.mjs +353 -23
  25. package/dist/frontend/babel/lower-template.cjs +352 -22
  26. package/dist/frontend/babel/lower-template.mjs +352 -22
  27. package/dist/frontend/babel/plugin.cjs +352 -22
  28. package/dist/frontend/babel/plugin.mjs +352 -22
  29. package/dist/index.cjs +321 -22
  30. package/dist/index.mjs +333 -22
  31. package/dist/integrations.cjs +1174 -49
  32. package/dist/integrations.d.ts.map +1 -1
  33. package/dist/integrations.js +44 -2
  34. package/dist/integrations.mjs +205 -19
  35. package/dist/lower/compile-template.cjs +315 -21
  36. package/dist/lower/compile-template.d.cts +13 -0
  37. package/dist/lower/compile-template.d.ts +13 -0
  38. package/dist/lower/compile-template.d.ts.map +1 -1
  39. package/dist/lower/compile-template.js +3 -0
  40. package/dist/lower/compile-template.mjs +327 -21
  41. package/dist/lower/entities.cjs +288 -0
  42. package/dist/lower/entities.d.cts +1 -0
  43. package/dist/lower/entities.d.ts +2 -0
  44. package/dist/lower/entities.d.ts.map +1 -0
  45. package/dist/lower/entities.js +54 -0
  46. package/dist/lower/entities.mjs +267 -0
  47. package/dist/lower/jsx.cjs +104 -47
  48. package/dist/lower/jsx.d.cts +8 -0
  49. package/dist/lower/jsx.d.ts +8 -0
  50. package/dist/lower/jsx.d.ts.map +1 -1
  51. package/dist/lower/jsx.js +92 -2
  52. package/dist/lower/jsx.mjs +104 -47
  53. package/dist/lower/template.cjs +293 -20
  54. package/dist/lower/template.d.ts.map +1 -1
  55. package/dist/lower/template.js +35 -19
  56. package/dist/lower/template.mjs +293 -20
  57. package/dist/resolve/builtins.cjs +1 -1
  58. package/dist/resolve/builtins.mjs +1 -1
  59. package/dist/resolve/component-globals.cjs +6 -1
  60. package/dist/resolve/component-globals.js +2 -2
  61. package/dist/resolve/component-globals.mjs +6 -1
  62. package/dist/resolve/write-globals.cjs +6 -1
  63. package/dist/resolve/write-globals.mjs +6 -1
  64. package/dist/{server-fns-ZFRDIQ2X.mjs → server-fns-JLSTKWPS.mjs} +4 -4
  65. package/dist/{server-functions-CTDXX67X.mjs → server-functions-BGY3RD4R.mjs} +3 -3
  66. package/dist/transform/index.cjs +956 -33
  67. package/dist/transform/index.mjs +974 -47
  68. package/dist/transform/props.mjs +19 -14
  69. package/dist/transform/server-fns.mjs +19 -14
  70. package/dist/transform/styles.cjs +588 -0
  71. package/dist/transform/styles.d.cts +211 -0
  72. package/dist/transform/styles.d.ts +212 -0
  73. package/dist/transform/styles.d.ts.map +1 -0
  74. package/dist/transform/styles.js +714 -0
  75. package/dist/transform/styles.mjs +653 -0
  76. package/dist/transform/templates.cjs +955 -32
  77. package/dist/transform/templates.d.cts +13 -0
  78. package/dist/transform/templates.d.ts +13 -0
  79. package/dist/transform/templates.d.ts.map +1 -1
  80. package/dist/transform/templates.js +49 -12
  81. package/dist/transform/templates.mjs +973 -46
  82. package/dist/{transform-QWWQDCXE.mjs → transform-GBP6Y4UI.mjs} +601 -17
  83. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  84. package/dist/vite-styles.cjs +180 -0
  85. package/dist/vite-styles.d.cts +59 -0
  86. package/dist/vite-styles.d.ts +60 -0
  87. package/dist/vite-styles.d.ts.map +1 -0
  88. package/dist/vite-styles.js +198 -0
  89. package/dist/vite-styles.mjs +159 -0
  90. package/package.json +4 -3
@@ -468,7 +468,7 @@ function emitComponent(name, props, children, used, templates, at) {
468
468
  }
469
469
  let obj = `{ ${bodies.map(([name2, body]) => `get ${propKey(name2)}() { return ${body}; }`).join(", ")} }`;
470
470
  if (bodies.some(([, body]) => /\bthis\b/.test(body))) {
471
- const thunks = bodies.map(([name2, body]) => `${JSON.stringify(name2)}: () => ${body}`);
471
+ const thunks = bodies.map(([name2, body]) => `${JSON.stringify(name2)}: () => (${body})`);
472
472
  const getters = bodies.map(([name2]) => `get ${propKey(name2)}() { return _$t[${JSON.stringify(name2)}](); }`);
473
473
  obj = `((_$t) => ({ ${getters.join(", ")} }))({ ${thunks.join(", ")} })`;
474
474
  }
@@ -607,6 +607,271 @@ function cleanTemplateText(value) {
607
607
  return out;
608
608
  }
609
609
 
610
+ // src/lower/entities.ts
611
+ var NAMED = {
612
+ quot: 34,
613
+ amp: 38,
614
+ apos: 39,
615
+ lt: 60,
616
+ gt: 62,
617
+ nbsp: 160,
618
+ iexcl: 161,
619
+ cent: 162,
620
+ pound: 163,
621
+ curren: 164,
622
+ yen: 165,
623
+ brvbar: 166,
624
+ sect: 167,
625
+ uml: 168,
626
+ copy: 169,
627
+ ordf: 170,
628
+ laquo: 171,
629
+ not: 172,
630
+ shy: 173,
631
+ reg: 174,
632
+ macr: 175,
633
+ deg: 176,
634
+ plusmn: 177,
635
+ sup2: 178,
636
+ sup3: 179,
637
+ acute: 180,
638
+ micro: 181,
639
+ para: 182,
640
+ middot: 183,
641
+ cedil: 184,
642
+ sup1: 185,
643
+ ordm: 186,
644
+ raquo: 187,
645
+ frac14: 188,
646
+ frac12: 189,
647
+ frac34: 190,
648
+ iquest: 191,
649
+ Agrave: 192,
650
+ Aacute: 193,
651
+ Acirc: 194,
652
+ Atilde: 195,
653
+ Auml: 196,
654
+ Aring: 197,
655
+ AElig: 198,
656
+ Ccedil: 199,
657
+ Egrave: 200,
658
+ Eacute: 201,
659
+ Ecirc: 202,
660
+ Euml: 203,
661
+ Igrave: 204,
662
+ Iacute: 205,
663
+ Icirc: 206,
664
+ Iuml: 207,
665
+ ETH: 208,
666
+ Ntilde: 209,
667
+ Ograve: 210,
668
+ Oacute: 211,
669
+ Ocirc: 212,
670
+ Otilde: 213,
671
+ Ouml: 214,
672
+ times: 215,
673
+ Oslash: 216,
674
+ Ugrave: 217,
675
+ Uacute: 218,
676
+ Ucirc: 219,
677
+ Uuml: 220,
678
+ Yacute: 221,
679
+ THORN: 222,
680
+ szlig: 223,
681
+ agrave: 224,
682
+ aacute: 225,
683
+ acirc: 226,
684
+ atilde: 227,
685
+ auml: 228,
686
+ aring: 229,
687
+ aelig: 230,
688
+ ccedil: 231,
689
+ egrave: 232,
690
+ eacute: 233,
691
+ ecirc: 234,
692
+ euml: 235,
693
+ igrave: 236,
694
+ iacute: 237,
695
+ icirc: 238,
696
+ iuml: 239,
697
+ eth: 240,
698
+ ntilde: 241,
699
+ ograve: 242,
700
+ oacute: 243,
701
+ ocirc: 244,
702
+ otilde: 245,
703
+ ouml: 246,
704
+ divide: 247,
705
+ oslash: 248,
706
+ ugrave: 249,
707
+ uacute: 250,
708
+ ucirc: 251,
709
+ uuml: 252,
710
+ yacute: 253,
711
+ thorn: 254,
712
+ yuml: 255,
713
+ OElig: 338,
714
+ oelig: 339,
715
+ Scaron: 352,
716
+ scaron: 353,
717
+ Yuml: 376,
718
+ fnof: 402,
719
+ circ: 710,
720
+ tilde: 732,
721
+ Alpha: 913,
722
+ Beta: 914,
723
+ Gamma: 915,
724
+ Delta: 916,
725
+ Epsilon: 917,
726
+ Zeta: 918,
727
+ Eta: 919,
728
+ Theta: 920,
729
+ Iota: 921,
730
+ Kappa: 922,
731
+ Lambda: 923,
732
+ Mu: 924,
733
+ Nu: 925,
734
+ Xi: 926,
735
+ Omicron: 927,
736
+ Pi: 928,
737
+ Rho: 929,
738
+ Sigma: 931,
739
+ Tau: 932,
740
+ Upsilon: 933,
741
+ Phi: 934,
742
+ Chi: 935,
743
+ Psi: 936,
744
+ Omega: 937,
745
+ alpha: 945,
746
+ beta: 946,
747
+ gamma: 947,
748
+ delta: 948,
749
+ epsilon: 949,
750
+ zeta: 950,
751
+ eta: 951,
752
+ theta: 952,
753
+ iota: 953,
754
+ kappa: 954,
755
+ lambda: 955,
756
+ mu: 956,
757
+ nu: 957,
758
+ xi: 958,
759
+ omicron: 959,
760
+ pi: 960,
761
+ rho: 961,
762
+ sigmaf: 962,
763
+ sigma: 963,
764
+ tau: 964,
765
+ upsilon: 965,
766
+ phi: 966,
767
+ chi: 967,
768
+ psi: 968,
769
+ omega: 969,
770
+ thetasym: 977,
771
+ upsih: 978,
772
+ piv: 982,
773
+ ensp: 8194,
774
+ emsp: 8195,
775
+ thinsp: 8201,
776
+ zwnj: 8204,
777
+ zwj: 8205,
778
+ lrm: 8206,
779
+ rlm: 8207,
780
+ ndash: 8211,
781
+ mdash: 8212,
782
+ lsquo: 8216,
783
+ rsquo: 8217,
784
+ sbquo: 8218,
785
+ ldquo: 8220,
786
+ rdquo: 8221,
787
+ bdquo: 8222,
788
+ dagger: 8224,
789
+ Dagger: 8225,
790
+ bull: 8226,
791
+ hellip: 8230,
792
+ permil: 8240,
793
+ prime: 8242,
794
+ Prime: 8243,
795
+ lsaquo: 8249,
796
+ rsaquo: 8250,
797
+ oline: 8254,
798
+ frasl: 8260,
799
+ euro: 8364,
800
+ image: 8465,
801
+ weierp: 8472,
802
+ real: 8476,
803
+ trade: 8482,
804
+ alefsym: 8501,
805
+ larr: 8592,
806
+ uarr: 8593,
807
+ rarr: 8594,
808
+ darr: 8595,
809
+ harr: 8596,
810
+ crarr: 8629,
811
+ lArr: 8656,
812
+ uArr: 8657,
813
+ rArr: 8658,
814
+ dArr: 8659,
815
+ hArr: 8660,
816
+ forall: 8704,
817
+ part: 8706,
818
+ exist: 8707,
819
+ empty: 8709,
820
+ nabla: 8711,
821
+ isin: 8712,
822
+ notin: 8713,
823
+ ni: 8715,
824
+ prod: 8719,
825
+ sum: 8721,
826
+ minus: 8722,
827
+ lowast: 8727,
828
+ radic: 8730,
829
+ prop: 8733,
830
+ infin: 8734,
831
+ ang: 8736,
832
+ and: 8743,
833
+ or: 8744,
834
+ cap: 8745,
835
+ cup: 8746,
836
+ int: 8747,
837
+ there4: 8756,
838
+ sim: 8764,
839
+ cong: 8773,
840
+ asymp: 8776,
841
+ ne: 8800,
842
+ equiv: 8801,
843
+ le: 8804,
844
+ ge: 8805,
845
+ sub: 8834,
846
+ sup: 8835,
847
+ nsub: 8836,
848
+ sube: 8838,
849
+ supe: 8839,
850
+ oplus: 8853,
851
+ otimes: 8855,
852
+ perp: 8869,
853
+ sdot: 8901,
854
+ lceil: 8968,
855
+ rceil: 8969,
856
+ lfloor: 8970,
857
+ rfloor: 8971,
858
+ lang: 9001,
859
+ rang: 9002,
860
+ loz: 9674,
861
+ spades: 9824,
862
+ clubs: 9827,
863
+ hearts: 9829,
864
+ diams: 9830
865
+ };
866
+ var REFERENCE = /&(?:#[xX]([0-9a-fA-F]{1,6})|#([0-9]{1,7})|([a-zA-Z][a-zA-Z0-9]{1,31}));/g;
867
+ function decodeEntities(value) {
868
+ if (!value.includes("&")) return value;
869
+ return value.replace(REFERENCE, (match, hex, dec, name) => {
870
+ const code = hex ? parseInt(hex, 16) : dec ? parseInt(dec, 10) : Object.prototype.hasOwnProperty.call(NAMED, name) ? NAMED[name] : void 0;
871
+ return code !== void 0 && code <= 1114111 ? String.fromCodePoint(code) : match;
872
+ });
873
+ }
874
+
610
875
  // src/lower/template.ts
611
876
  var DELEGATED = /* @__PURE__ */ new Set([
612
877
  "click",
@@ -693,7 +958,7 @@ var Lowerer = class {
693
958
  switch (node.kind) {
694
959
  case "Text": {
695
960
  if (node.raw) return { kind: "text", value: node.value };
696
- const cleaned = cleanTemplateText(node.value);
961
+ const cleaned = decodeEntities(cleanTemplateText(node.value));
697
962
  return cleaned ? { kind: "text", value: cleaned } : null;
698
963
  }
699
964
  case "Comment":
@@ -729,7 +994,7 @@ var Lowerer = class {
729
994
  kind: "element",
730
995
  tag: el.tag,
731
996
  svg: el.namespace === "svg",
732
- props: this.lowerAttributes(el.attributes),
997
+ props: this.lowerAttributes(el.attributes, true),
733
998
  children,
734
999
  static: false,
735
1000
  ...at ? { at } : {}
@@ -842,13 +1107,22 @@ var Lowerer = class {
842
1107
  return clone.kind === "Element" ? this.lowerElement(clone) : this.lowerComponent(clone);
843
1108
  }
844
1109
  // --- attributes ---------------------------------------------------------
845
- lowerAttributes(attrs) {
1110
+ /**
1111
+ * `element`: a DOM element, where each class:/style: value that moves is its own accessor.
1112
+ * A component gets the object as before, rebuilt whole when any value moves.
1113
+ */
1114
+ lowerAttributes(attrs, element = false) {
1115
+ let anyReactive = false;
1116
+ const entry = (name, h) => {
1117
+ anyReactive ||= h.reactive;
1118
+ if (!element || !h.reactive) return `${JSON.stringify(name)}: ${h.code}`;
1119
+ const accessor = `() => ${paren(h.code, "arrowBody")}`;
1120
+ return `${JSON.stringify(name)}: ${h.at ? markHole(accessor, h.at.line, h.at.column) : accessor}`;
1121
+ };
846
1122
  const props = [];
847
1123
  const classEntries = [];
848
- let classReactive = false;
849
1124
  let classAt;
850
1125
  const styleEntries = [];
851
- let styleReactive = false;
852
1126
  let styleAt;
853
1127
  const usePairs = [];
854
1128
  for (const a of attrs) {
@@ -888,15 +1162,13 @@ var Lowerer = class {
888
1162
  break;
889
1163
  case "ClassDirective": {
890
1164
  const h = this.hole(a.hole);
891
- classEntries.push(`${JSON.stringify(a.name)}: ${h.code}`);
892
- classReactive = classReactive || h.reactive;
1165
+ classEntries.push(entry(a.name, h));
893
1166
  classAt ??= h.at;
894
1167
  break;
895
1168
  }
896
1169
  case "StyleDirective": {
897
1170
  const h = this.hole(a.hole);
898
- styleEntries.push(`${JSON.stringify(a.name)}: ${h.code}`);
899
- styleReactive = styleReactive || h.reactive;
1171
+ styleEntries.push(entry(a.name, h));
900
1172
  styleAt ??= h.at;
901
1173
  break;
902
1174
  }
@@ -916,18 +1188,19 @@ var Lowerer = class {
916
1188
  name: "classList",
917
1189
  kind: "attr",
918
1190
  expr: `{ ${classEntries.join(", ")} }`,
919
- reactive: classReactive,
1191
+ reactive: !element && anyReactive,
920
1192
  ...classAt ? { at: classAt } : {}
921
1193
  });
922
1194
  }
923
1195
  if (styleEntries.length > 0) {
924
- props.push({
925
- name: "style",
926
- kind: "attr",
927
- expr: `{ ${styleEntries.join(", ")} }`,
928
- reactive: styleReactive,
929
- ...styleAt ? { at: styleAt } : {}
930
- });
1196
+ const entries = `{ ${styleEntries.join(", ")} }`;
1197
+ const base = props.findIndex((p) => p.name === "style");
1198
+ if (base === -1) props.push({ name: "style", kind: "attr", expr: entries, reactive: !element && anyReactive, ...styleAt ? { at: styleAt } : {} });
1199
+ else {
1200
+ const prop = props[base];
1201
+ const value = prop.expr === void 0 ? JSON.stringify(prop.literal) : prop.reactive ? `() => ${paren(prop.expr, "arrowBody")}` : prop.expr;
1202
+ props[base] = { name: "style", kind: "attr", expr: `[${value}, ${entries}]`, reactive: false, ...prop.at ? { at: prop.at } : {} };
1203
+ }
931
1204
  }
932
1205
  if (usePairs.length > 0) {
933
1206
  props.push({ name: "use", kind: "attr", expr: `[${usePairs.join(", ")}]` });
@@ -1016,7 +1289,7 @@ var Lowerer = class {
1016
1289
  return base;
1017
1290
  }
1018
1291
  if (v.kind === "static") {
1019
- base.literal = v.value;
1292
+ base.literal = decodeEntities(v.value);
1020
1293
  return base;
1021
1294
  }
1022
1295
  if (v.kind === "hole") {
@@ -1029,7 +1302,7 @@ var Lowerer = class {
1029
1302
  let reactive = false;
1030
1303
  let at;
1031
1304
  const body = v.parts.map((p) => {
1032
- if ("text" in p) return escapeTemplate(p.text);
1305
+ if ("text" in p) return escapeTemplate(decodeEntities(p.text));
1033
1306
  const h = this.hole(p.hole);
1034
1307
  reactive = reactive || h.reactive;
1035
1308
  at ??= h.at;
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.94 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
  "use strict";
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.94 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
 
3
3
  // src/resolve/builtins.ts
4
4
  var DOM_CONTROL_FLOW = [
@@ -151,6 +151,11 @@ var INTRINSICS = {
151
151
  // An environment variable, public or server-only; the browser build refuses a secret.
152
152
  $env: { export: "env", module: "@fluixi/start/env", returns: "plain" }
153
153
  };
154
+ var TAG_INTRINSICS = {
155
+ $html: { export: "html", module: "@fluixi/core" },
156
+ $svg: { export: "svg", module: "@fluixi/core" },
157
+ $css: { export: "css", module: "@fluixi/core" }
158
+ };
154
159
  var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
155
160
 
156
161
  // src/resolve/component-globals.ts
@@ -216,7 +221,7 @@ function componentGlobals(rules, options = {}) {
216
221
  resolved.set(name, target);
217
222
  }
218
223
  }
219
- const usableIntrinsics = intrinsics ? Object.entries(INTRINSICS).filter(([, i]) => {
224
+ const usableIntrinsics = intrinsics ? Object.entries({ ...INTRINSICS, ...TAG_INTRINSICS }).filter(([, i]) => {
220
225
  const pkg = packageOf(i.module);
221
226
  return !available || !pkg || available.has(pkg);
222
227
  }) : [];
@@ -18,7 +18,7 @@
18
18
  */
19
19
  import { createComponentResolver, } from './component-resolver.js';
20
20
  import { builtinComponentMap } from './builtins.js';
21
- import { INTRINSICS } from '../analyze/intrinsics.js';
21
+ import { INTRINSICS, TAG_INTRINSICS } from '../analyze/intrinsics.js';
22
22
  /**
23
23
  * Names `lib.dom` already declares as globals.
24
24
  *
@@ -100,7 +100,7 @@ export function componentGlobals(rules, options = {}) {
100
100
  // Only the intrinsics whose package the project has: `$env` comes from `@fluixi/start`, and
101
101
  // an app without it would otherwise get a declaration that fails to resolve.
102
102
  const usableIntrinsics = intrinsics
103
- ? Object.entries(INTRINSICS).filter(([, i]) => {
103
+ ? Object.entries({ ...INTRINSICS, ...TAG_INTRINSICS }).filter(([, i]) => {
104
104
  const pkg = packageOf(i.module);
105
105
  return !available || !pkg || available.has(pkg);
106
106
  })
@@ -125,6 +125,11 @@ var INTRINSICS = {
125
125
  // An environment variable, public or server-only; the browser build refuses a secret.
126
126
  $env: { export: "env", module: "@fluixi/start/env", returns: "plain" }
127
127
  };
128
+ var TAG_INTRINSICS = {
129
+ $html: { export: "html", module: "@fluixi/core" },
130
+ $svg: { export: "svg", module: "@fluixi/core" },
131
+ $css: { export: "css", module: "@fluixi/core" }
132
+ };
128
133
  var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
129
134
 
130
135
  // src/resolve/component-globals.ts
@@ -190,7 +195,7 @@ function componentGlobals(rules, options = {}) {
190
195
  resolved.set(name, target);
191
196
  }
192
197
  }
193
- const usableIntrinsics = intrinsics ? Object.entries(INTRINSICS).filter(([, i]) => {
198
+ const usableIntrinsics = intrinsics ? Object.entries({ ...INTRINSICS, ...TAG_INTRINSICS }).filter(([, i]) => {
194
199
  const pkg = packageOf(i.module);
195
200
  return !available || !pkg || available.has(pkg);
196
201
  }) : [];
@@ -155,6 +155,11 @@ var INTRINSICS = {
155
155
  // An environment variable, public or server-only; the browser build refuses a secret.
156
156
  $env: { export: "env", module: "@fluixi/start/env", returns: "plain" }
157
157
  };
158
+ var TAG_INTRINSICS = {
159
+ $html: { export: "html", module: "@fluixi/core" },
160
+ $svg: { export: "svg", module: "@fluixi/core" },
161
+ $css: { export: "css", module: "@fluixi/core" }
162
+ };
158
163
  var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
159
164
 
160
165
  // src/resolve/component-globals.ts
@@ -220,7 +225,7 @@ function componentGlobals(rules, options = {}) {
220
225
  resolved.set(name, target);
221
226
  }
222
227
  }
223
- const usableIntrinsics = intrinsics ? Object.entries(INTRINSICS).filter(([, i]) => {
228
+ const usableIntrinsics = intrinsics ? Object.entries({ ...INTRINSICS, ...TAG_INTRINSICS }).filter(([, i]) => {
224
229
  const pkg = packageOf(i.module);
225
230
  return !available || !pkg || available.has(pkg);
226
231
  }) : [];
@@ -129,6 +129,11 @@ var INTRINSICS = {
129
129
  // An environment variable, public or server-only; the browser build refuses a secret.
130
130
  $env: { export: "env", module: "@fluixi/start/env", returns: "plain" }
131
131
  };
132
+ var TAG_INTRINSICS = {
133
+ $html: { export: "html", module: "@fluixi/core" },
134
+ $svg: { export: "svg", module: "@fluixi/core" },
135
+ $css: { export: "css", module: "@fluixi/core" }
136
+ };
132
137
  var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
133
138
 
134
139
  // src/resolve/component-globals.ts
@@ -194,7 +199,7 @@ function componentGlobals(rules, options = {}) {
194
199
  resolved.set(name, target);
195
200
  }
196
201
  }
197
- const usableIntrinsics = intrinsics ? Object.entries(INTRINSICS).filter(([, i]) => {
202
+ const usableIntrinsics = intrinsics ? Object.entries({ ...INTRINSICS, ...TAG_INTRINSICS }).filter(([, i]) => {
198
203
  const pkg = packageOf(i.module);
199
204
  return !available || !pkg || available.has(pkg);
200
205
  }) : [];
@@ -1,11 +1,11 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.94 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
  import {
3
3
  MagicString
4
- } from "./chunk-R7PPFBCL.mjs";
4
+ } from "./chunk-E2RWTIYE.mjs";
5
5
  import {
6
6
  serverFnId
7
- } from "./chunk-56QSOVVL.mjs";
8
- import "./chunk-TJIH7TLX.mjs";
7
+ } from "./chunk-DP2QDWWH.mjs";
8
+ import "./chunk-HIZU7WI2.mjs";
9
9
 
10
10
  // src/transform/server-fns.ts
11
11
  import { parse } from "@babel/parser";
@@ -1,8 +1,8 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.94 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
  import {
3
3
  serverFnId
4
- } from "./chunk-56QSOVVL.mjs";
5
- import "./chunk-TJIH7TLX.mjs";
4
+ } from "./chunk-DP2QDWWH.mjs";
5
+ import "./chunk-HIZU7WI2.mjs";
6
6
 
7
7
  // src/frontend/babel/server-functions.ts
8
8
  import { transformSync } from "@babel/core";