semajsx 0.1.0 → 0.1.2

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 (103) hide show
  1. package/dist/{computed-BpjqvQu1.mjs → computed-BidG06Lt.mjs} +2 -2
  2. package/dist/{computed-BpjqvQu1.mjs.map → computed-BidG06Lt.mjs.map} +1 -1
  3. package/dist/{document-OGuk9jhK.mjs → document-BOJDaiBc.mjs} +19 -4
  4. package/dist/document-BOJDaiBc.mjs.map +1 -0
  5. package/dist/{document-DFsOtfef.mjs → document-CwHVG_PJ.mjs} +2 -2
  6. package/dist/dom/index.d.mts +68 -3
  7. package/dist/dom/index.d.mts.map +1 -1
  8. package/dist/dom/index.mjs +4 -4
  9. package/dist/dom/jsx-dev-runtime.d.mts +4 -4
  10. package/dist/dom/jsx-dev-runtime.mjs +1 -1
  11. package/dist/dom/jsx-runtime.d.mts +4 -4
  12. package/dist/dom/jsx-runtime.mjs +2 -2
  13. package/dist/{helpers-DrifjCXb.d.mts → helpers-CfRDJgcP.d.mts} +3 -3
  14. package/dist/{helpers-DrifjCXb.d.mts.map → helpers-CfRDJgcP.d.mts.map} +1 -1
  15. package/dist/{index-DS5X3Pvb.d.mts → index-B1pjI-Su.d.mts} +2 -2
  16. package/dist/{index-DS5X3Pvb.d.mts.map → index-B1pjI-Su.d.mts.map} +1 -1
  17. package/dist/index-DC3tthWf.d.mts +81 -0
  18. package/dist/index-DC3tthWf.d.mts.map +1 -0
  19. package/dist/index.d.mts +7 -7
  20. package/dist/index.mjs +5 -5
  21. package/dist/{island-marker-hZdmHMvx.d.mts → island-marker-BJIO07Vj.d.mts} +1 -1
  22. package/dist/island-marker-BJIO07Vj.d.mts.map +1 -0
  23. package/dist/{jsx-CGW4OyqA.d.mts → jsx-fNlLjLou.d.mts} +2 -2
  24. package/dist/{jsx-CGW4OyqA.d.mts.map → jsx-fNlLjLou.d.mts.map} +1 -1
  25. package/dist/{jsx-runtime-DU8DRISG.d.mts → jsx-runtime-BFuFPDzn.d.mts} +3 -3
  26. package/dist/{jsx-runtime-DU8DRISG.d.mts.map → jsx-runtime-BFuFPDzn.d.mts.map} +1 -1
  27. package/dist/jsx-runtime-D9ZNjMJ2.mjs.map +1 -1
  28. package/dist/{jsx-runtime-mBpL8czJ.d.mts → jsx-runtime-DZx2Yv-t.d.mts} +28 -6
  29. package/dist/{jsx-runtime-mBpL8czJ.d.mts.map → jsx-runtime-DZx2Yv-t.d.mts.map} +1 -1
  30. package/dist/lucide-CVtHepGM.mjs +126 -0
  31. package/dist/lucide-CVtHepGM.mjs.map +1 -0
  32. package/dist/{resource-B1IudM8_.d.mts → resource-BQI6AeJ0.d.mts} +23 -3
  33. package/dist/resource-BQI6AeJ0.d.mts.map +1 -0
  34. package/dist/{resource-BjsDAkbG.mjs → resource-DSlXDZZi.mjs} +2 -2
  35. package/dist/{resource-BjsDAkbG.mjs.map → resource-DSlXDZZi.mjs.map} +1 -1
  36. package/dist/signal/index.d.mts +2 -2
  37. package/dist/signal/index.mjs +3 -3
  38. package/dist/{signal-4PgGfydw.mjs → signal-BN8vHXDb.mjs} +1 -1
  39. package/dist/{signal-4PgGfydw.mjs.map → signal-BN8vHXDb.mjs.map} +1 -1
  40. package/dist/{signal-CLsaPA7c.d.mts → signal-BwxUlXKs.d.mts} +1 -1
  41. package/dist/{signal-CLsaPA7c.d.mts.map → signal-BwxUlXKs.d.mts.map} +1 -1
  42. package/dist/{src-CRi0xsNK.mjs → src-BqX3sryB.mjs} +68 -5
  43. package/dist/src-BqX3sryB.mjs.map +1 -0
  44. package/dist/src-DR-EWgVP.mjs +868 -0
  45. package/dist/src-DR-EWgVP.mjs.map +1 -0
  46. package/dist/{src-DEoBG1zB.mjs → src-DUpFNNM_.mjs} +4 -4
  47. package/dist/{src-DEoBG1zB.mjs.map → src-DUpFNNM_.mjs.map} +1 -1
  48. package/dist/{src-BlS3Hc-L.mjs → src-DW3tIczg.mjs} +75 -5
  49. package/dist/src-DW3tIczg.mjs.map +1 -0
  50. package/dist/{src-Jbt_w0hc.mjs → src-Ds9vl42d.mjs} +37 -35
  51. package/dist/src-Ds9vl42d.mjs.map +1 -0
  52. package/dist/{src-iC-NFwTy.mjs → src-DuSN6go_.mjs} +79 -22
  53. package/dist/src-DuSN6go_.mjs.map +1 -0
  54. package/dist/ssg/index.d.mts +4 -182
  55. package/dist/ssg/index.d.mts.map +1 -1
  56. package/dist/ssg/index.mjs +7 -756
  57. package/dist/ssg/index.mjs.map +1 -1
  58. package/dist/ssg/plugins/docs-theme.d.mts +180 -0
  59. package/dist/ssg/plugins/docs-theme.d.mts.map +1 -0
  60. package/dist/ssg/plugins/docs-theme.mjs +2042 -0
  61. package/dist/ssg/plugins/docs-theme.mjs.map +1 -0
  62. package/dist/ssg/plugins/lucide.d.mts +3 -0
  63. package/dist/ssg/plugins/lucide.mjs +7 -0
  64. package/dist/ssr/client.d.mts +3 -3
  65. package/dist/ssr/client.mjs +5 -5
  66. package/dist/ssr/index.d.mts +3 -3
  67. package/dist/ssr/index.d.mts.map +1 -1
  68. package/dist/ssr/index.mjs +6 -5
  69. package/dist/style/index.d.mts +2 -2
  70. package/dist/style/index.d.mts.map +1 -1
  71. package/dist/style/index.mjs +1 -1
  72. package/dist/style/react.d.mts +2 -2
  73. package/dist/style/react.mjs +2 -2
  74. package/dist/style/vue.d.mts +2 -2
  75. package/dist/style/vue.mjs +2 -2
  76. package/dist/terminal/index.d.mts +4 -4
  77. package/dist/terminal/index.mjs +2 -2
  78. package/dist/terminal/jsx-dev-runtime.d.mts +4 -4
  79. package/dist/terminal/jsx-dev-runtime.mjs +1 -1
  80. package/dist/terminal/jsx-runtime.d.mts +4 -4
  81. package/dist/terminal/jsx-runtime.mjs +1 -1
  82. package/dist/{types-DlNR9ZaJ.d.mts → types-BlaUrkq0.d.mts} +2 -2
  83. package/dist/{types-DlNR9ZaJ.d.mts.map → types-BlaUrkq0.d.mts.map} +1 -1
  84. package/dist/types-CGkRxnQB.d.mts +220 -0
  85. package/dist/types-CGkRxnQB.d.mts.map +1 -0
  86. package/dist/{types-Dgj6n-EE.d.mts → types-CZMcXQTW.d.mts} +9 -4
  87. package/dist/types-CZMcXQTW.d.mts.map +1 -0
  88. package/dist/{types-Bjx1Pp14.d.mts → types-D0jRO840.d.mts} +1 -1
  89. package/dist/{types-Bjx1Pp14.d.mts.map → types-D0jRO840.d.mts.map} +1 -1
  90. package/dist/{types-DEi0apQO.d.mts → types-DucvOZQ2.d.mts} +2 -2
  91. package/dist/{types-DEi0apQO.d.mts.map → types-DucvOZQ2.d.mts.map} +1 -1
  92. package/dist/{utils-BrGmTgfG.mjs → utils-DbTAs943.mjs} +1 -1
  93. package/dist/{utils-BrGmTgfG.mjs.map → utils-DbTAs943.mjs.map} +1 -1
  94. package/package.json +71 -18
  95. package/dist/document-OGuk9jhK.mjs.map +0 -1
  96. package/dist/island-marker-hZdmHMvx.d.mts.map +0 -1
  97. package/dist/jsx-runtime-D2B2BK8X.mjs +0 -4
  98. package/dist/resource-B1IudM8_.d.mts.map +0 -1
  99. package/dist/src-BlS3Hc-L.mjs.map +0 -1
  100. package/dist/src-CRi0xsNK.mjs.map +0 -1
  101. package/dist/src-Jbt_w0hc.mjs.map +0 -1
  102. package/dist/src-iC-NFwTy.mjs.map +0 -1
  103. package/dist/types-Dgj6n-EE.d.mts.map +0 -1
@@ -1,4 +1,4 @@
1
- import { r as scheduleUpdate } from "./signal-4PgGfydw.mjs";
1
+ import { r as scheduleUpdate } from "./signal-BN8vHXDb.mjs";
2
2
 
3
3
  //#region ../signal/src/computed.ts
4
4
  function computed(deps, compute) {
@@ -38,4 +38,4 @@ const memo = computed;
38
38
 
39
39
  //#endregion
40
40
  export { memo as n, computed as t };
41
- //# sourceMappingURL=computed-BpjqvQu1.mjs.map
41
+ //# sourceMappingURL=computed-BidG06Lt.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"computed-BpjqvQu1.mjs","names":[],"sources":["../../signal/src/computed.ts"],"sourcesContent":["import type { ReadableSignal } from \"./types\";\nimport { scheduleUpdate } from \"./batch\";\n\n/**\n * Create a computed signal with declarative dependencies\n *\n * @example\n * const count = signal(0);\n * const doubled = computed([count], c => c * 2);\n *\n * @example\n * const firstName = signal('John');\n * const lastName = signal('Doe');\n * const fullName = computed([firstName, lastName], (f, l) => `${f} ${l}`);\n */\n\n// Single dependency overload\nexport function computed<T, R>(dep: ReadableSignal<T>, compute: (value: T) => R): ReadableSignal<R>;\n\n// Multiple dependencies overload\nexport function computed<T extends readonly ReadableSignal<any>[], R>(\n deps: [...T],\n compute: (...values: { [K in keyof T]: T[K] extends ReadableSignal<infer V> ? V : never }) => R,\n): ReadableSignal<R>;\n\n// Implementation\nexport function computed(deps: any, compute: any): ReadableSignal<any> {\n const depsArray: ReadableSignal<any>[] = Array.isArray(deps) ? deps : [deps];\n\n let value: any;\n const subscribers = new Set<(value: any) => void>();\n\n // Get current values from all dependencies\n const getValues = () => depsArray.map((dep) => dep.value);\n\n // Recompute when dependencies change\n const recompute = () => {\n const values = getValues();\n const newValue = Array.isArray(deps) ? compute(...values) : compute(values[0]);\n\n if (!Object.is(value, newValue)) {\n value = newValue;\n notify();\n }\n };\n\n // Notify subscribers\n const notify = () => {\n // Schedule the notification instead of running it immediately\n // This allows batching multiple updates into a single microtask\n scheduleUpdate(() => {\n // Directly iterate over the Set - no need to copy to array\n for (const listener of subscribers) {\n listener(value);\n }\n });\n };\n\n // Initial computation\n const initialValues = getValues();\n value = Array.isArray(deps) ? compute(...initialValues) : compute(initialValues[0]);\n\n // Subscribe to all dependencies\n // Note: unsubscribers are not currently used as we don't have a dispose mechanism\n // Keeping for future dispose mechanism\n // @ts-ignore - TS6133: variable is declared but never used\n const _unsubscribers = depsArray.map((dep) => dep.subscribe(recompute));\n\n return {\n get value() {\n return value;\n },\n\n subscribe(listener: (value: any) => void) {\n subscribers.add(listener);\n return () => {\n subscribers.delete(listener);\n };\n },\n };\n}\n\nexport const memo: typeof computed = computed;\n"],"mappings":";;;AA0BA,SAAgB,SAAS,MAAW,SAAmC;CACrE,MAAM,YAAmC,MAAM,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK;CAE5E,IAAI;CACJ,MAAM,8BAAc,IAAI,KAA2B;CAGnD,MAAM,kBAAkB,UAAU,KAAK,QAAQ,IAAI,MAAM;CAGzD,MAAM,kBAAkB;EACtB,MAAM,SAAS,WAAW;EAC1B,MAAM,WAAW,MAAM,QAAQ,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,OAAO,GAAG;AAE9E,MAAI,CAAC,OAAO,GAAG,OAAO,SAAS,EAAE;AAC/B,WAAQ;AACR,WAAQ;;;CAKZ,MAAM,eAAe;AAGnB,uBAAqB;AAEnB,QAAK,MAAM,YAAY,YACrB,UAAS,MAAM;IAEjB;;CAIJ,MAAM,gBAAgB,WAAW;AACjC,SAAQ,MAAM,QAAQ,KAAK,GAAG,QAAQ,GAAG,cAAc,GAAG,QAAQ,cAAc,GAAG;AAM5D,WAAU,KAAK,QAAQ,IAAI,UAAU,UAAU,CAAC;AAEvE,QAAO;EACL,IAAI,QAAQ;AACV,UAAO;;EAGT,UAAU,UAAgC;AACxC,eAAY,IAAI,SAAS;AACzB,gBAAa;AACX,gBAAY,OAAO,SAAS;;;EAGjC;;AAGH,MAAa,OAAwB"}
1
+ {"version":3,"file":"computed-BidG06Lt.mjs","names":[],"sources":["../../signal/src/computed.ts"],"sourcesContent":["import type { ReadableSignal } from \"./types\";\nimport { scheduleUpdate } from \"./batch\";\n\n/**\n * Create a computed signal with declarative dependencies\n *\n * @example\n * const count = signal(0);\n * const doubled = computed([count], c => c * 2);\n *\n * @example\n * const firstName = signal('John');\n * const lastName = signal('Doe');\n * const fullName = computed([firstName, lastName], (f, l) => `${f} ${l}`);\n */\n\n// Single dependency overload\nexport function computed<T, R>(dep: ReadableSignal<T>, compute: (value: T) => R): ReadableSignal<R>;\n\n// Multiple dependencies overload\nexport function computed<T extends readonly ReadableSignal<any>[], R>(\n deps: [...T],\n compute: (...values: { [K in keyof T]: T[K] extends ReadableSignal<infer V> ? V : never }) => R,\n): ReadableSignal<R>;\n\n// Implementation\nexport function computed(deps: any, compute: any): ReadableSignal<any> {\n const depsArray: ReadableSignal<any>[] = Array.isArray(deps) ? deps : [deps];\n\n let value: any;\n const subscribers = new Set<(value: any) => void>();\n\n // Get current values from all dependencies\n const getValues = () => depsArray.map((dep) => dep.value);\n\n // Recompute when dependencies change\n const recompute = () => {\n const values = getValues();\n const newValue = Array.isArray(deps) ? compute(...values) : compute(values[0]);\n\n if (!Object.is(value, newValue)) {\n value = newValue;\n notify();\n }\n };\n\n // Notify subscribers\n const notify = () => {\n // Schedule the notification instead of running it immediately\n // This allows batching multiple updates into a single microtask\n scheduleUpdate(() => {\n // Directly iterate over the Set - no need to copy to array\n for (const listener of subscribers) {\n listener(value);\n }\n });\n };\n\n // Initial computation\n const initialValues = getValues();\n value = Array.isArray(deps) ? compute(...initialValues) : compute(initialValues[0]);\n\n // Subscribe to all dependencies\n // Note: unsubscribers are not currently used as we don't have a dispose mechanism\n // Keeping for future dispose mechanism\n // @ts-ignore - TS6133: variable is declared but never used\n const _unsubscribers = depsArray.map((dep) => dep.subscribe(recompute));\n\n return {\n get value() {\n return value;\n },\n\n subscribe(listener: (value: any) => void) {\n subscribers.add(listener);\n return () => {\n subscribers.delete(listener);\n };\n },\n };\n}\n\nexport const memo: typeof computed = computed;\n"],"mappings":";;;AA0BA,SAAgB,SAAS,MAAW,SAAmC;CACrE,MAAM,YAAmC,MAAM,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK;CAE5E,IAAI;CACJ,MAAM,8BAAc,IAAI,KAA2B;CAGnD,MAAM,kBAAkB,UAAU,KAAK,QAAQ,IAAI,MAAM;CAGzD,MAAM,kBAAkB;EACtB,MAAM,SAAS,WAAW;EAC1B,MAAM,WAAW,MAAM,QAAQ,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,OAAO,GAAG;AAE9E,MAAI,CAAC,OAAO,GAAG,OAAO,SAAS,EAAE;AAC/B,WAAQ;AACR,WAAQ;;;CAKZ,MAAM,eAAe;AAGnB,uBAAqB;AAEnB,QAAK,MAAM,YAAY,YACrB,UAAS,MAAM;IAEjB;;CAIJ,MAAM,gBAAgB,WAAW;AACjC,SAAQ,MAAM,QAAQ,KAAK,GAAG,QAAQ,GAAG,cAAc,GAAG,QAAQ,cAAc,GAAG;AAM5D,WAAU,KAAK,QAAQ,IAAI,UAAU,UAAU,CAAC;AAEvE,QAAO;EACL,IAAI,QAAQ;AACV,UAAO;;EAGT,UAAU,UAAgC;AACxC,eAAY,IAAI,SAAS;AACzB,gBAAa;AACX,gBAAY,OAAO,SAAS;;;EAGjC;;AAGH,MAAa,OAAwB"}
@@ -1,4 +1,4 @@
1
- import { _ as Fragment, a as jsxs, i as jsx } from "./src-BlS3Hc-L.mjs";
1
+ import { a as jsxs, i as jsx, v as Fragment } from "./src-DW3tIczg.mjs";
2
2
 
3
3
  //#region ../ssr/src/document.tsx
4
4
  /** @jsxImportSource @semajsx/dom */
@@ -85,7 +85,22 @@ function renderElement(tag, props, children) {
85
85
  "img",
86
86
  "input"
87
87
  ].includes(tag)) return `<${tag}${attrs} />`;
88
- return `<${tag}${attrs}>${(children || []).map((child) => renderDocumentVNode(child)).join("")}</${tag}>`;
88
+ return `<${tag}${attrs}>${tag === "style" || tag === "script" ? (children || []).map((child) => extractRawText(child)).join("") : (children || []).map((child) => renderDocumentVNode(child)).join("")}</${tag}>`;
89
+ }
90
+ /**
91
+ * Extract raw text from a VNode without HTML escaping.
92
+ * Used for <style> and <script> content.
93
+ */
94
+ function extractRawText(vnode) {
95
+ if (vnode == null || typeof vnode === "boolean") return "";
96
+ if (typeof vnode === "string" || typeof vnode === "number") return String(vnode);
97
+ if (Array.isArray(vnode)) return vnode.map(extractRawText).join("");
98
+ if (typeof vnode === "object" && "type" in vnode) {
99
+ if (vnode.type === "#text") return String(vnode.props?.nodeValue ?? "");
100
+ if (vnode.type === "#signal") return (vnode.children || []).map(extractRawText).join("");
101
+ return renderDocumentVNode(vnode);
102
+ }
103
+ return "";
89
104
  }
90
105
  /**
91
106
  * Render attributes
@@ -99,7 +114,7 @@ function renderAttributes(props) {
99
114
  attrs.push(key);
100
115
  continue;
101
116
  }
102
- const attrName = key === "className" ? "class" : key === "htmlFor" ? "for" : key === "charSet" ? "charset" : key;
117
+ const attrName = key === "className" ? "class" : key === "htmlFor" ? "for" : key === "charSet" ? "charset" : key === "crossOrigin" ? "crossorigin" : key === "httpEquiv" ? "http-equiv" : key;
103
118
  attrs.push(`${attrName}="${escapeHTML(String(value))}"`);
104
119
  }
105
120
  return attrs.length > 0 ? " " + attrs.join(" ") : "";
@@ -113,4 +128,4 @@ function escapeHTML(str) {
113
128
 
114
129
  //#endregion
115
130
  export { renderDocument as n, DefaultDocument as t };
116
- //# sourceMappingURL=document-OGuk9jhK.mjs.map
131
+ //# sourceMappingURL=document-BOJDaiBc.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-BOJDaiBc.mjs","names":[],"sources":["../../ssr/src/document.tsx"],"sourcesContent":["/** @jsxImportSource @semajsx/dom */\n\nimport { Fragment } from \"@semajsx/core\";\nimport type { DocumentTemplate } from \"./shared/types\";\n\n/**\n * Default HTML document template\n *\n * This is a simple, production-ready HTML5 document template.\n * You can customize it by providing your own document template to the router.\n *\n * @example\n * ```tsx\n * const router = createViteRouter(routes, {\n * document: DefaultDocument,\n * title: \"My App\" // Required if using DefaultDocument\n * });\n * ```\n */\nexport const DefaultDocument: DocumentTemplate = ({ children, scripts, css, title }) => (\n <html lang=\"en\">\n <head>\n <meta charSet=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n {title && <title>{title}</title>}\n {css.map((href) => (\n <link key={href} rel=\"stylesheet\" href={href} />\n ))}\n </head>\n <body>\n {children}\n {scripts}\n </body>\n </html>\n);\n\n/**\n * Render a document VNode to a complete HTML string\n * Prepends <!DOCTYPE html> to the rendered output\n *\n * @param documentVNode - The document VNode (should be <html> element)\n * @returns Complete HTML string with doctype\n */\nexport function renderDocument(documentVNode: any): string {\n // Import renderToString from render.ts\n // We can't import it directly to avoid circular dependencies\n // So we use a simple HTML renderer for the document shell\n\n const html = renderDocumentVNode(documentVNode);\n return `<!DOCTYPE html>\\n${html}`;\n}\n\n/**\n * Simple HTML renderer for document structure\n * This handles the outer HTML/head/body structure without islands\n */\nfunction renderDocumentVNode(vnode: any): string {\n if (vnode == null) {\n return \"\";\n }\n\n if (typeof vnode === \"string\" || typeof vnode === \"number\") {\n const str = String(vnode);\n // Check if it's already rendered HTML (starts with < or contains HTML tags)\n if (str.startsWith(\"<\") || str.includes(\"</\")) {\n return str;\n }\n return escapeHTML(str);\n }\n\n if (typeof vnode === \"boolean\") {\n return \"\";\n }\n\n if (Array.isArray(vnode)) {\n return vnode.map((child) => renderDocumentVNode(child)).join(\"\");\n }\n\n if (typeof vnode !== \"object\" || !(\"type\" in vnode)) {\n return \"\";\n }\n\n const { type, props, children } = vnode;\n\n // Handle dangerouslySetInnerHTML (for raw HTML injection)\n if (props?.dangerouslySetInnerHTML?.__html) {\n return props.dangerouslySetInnerHTML.__html;\n }\n\n // Handle Fragment (Symbol type)\n if (type === Fragment) {\n return (children || []).map((child: any) => renderDocumentVNode(child)).join(\"\");\n }\n\n // Handle special VNode types\n if (typeof type === \"string\") {\n // Handle internal node types like #text, #signal\n if (type.startsWith(\"#\")) {\n if (type === \"#text\") {\n const value = props?.nodeValue ?? \"\";\n // Check if it's already rendered HTML\n if (typeof value === \"string\" && (value.startsWith(\"<\") || value.includes(\"</\"))) {\n return value;\n }\n return escapeHTML(String(value));\n }\n // For #signal and other special types, render children\n return (children || []).map((child: any) => renderDocumentVNode(child)).join(\"\");\n }\n return renderElement(type, props, children);\n }\n\n if (typeof type === \"function\") {\n const result = type(props || {});\n return renderDocumentVNode(result);\n }\n\n return \"\";\n}\n\n/**\n * Render an HTML element\n */\nfunction renderElement(tag: string, props: any, children: any[]): string {\n const attrs = renderAttributes(props || {});\n\n // Self-closing tags\n const selfClosing = [\"meta\", \"link\", \"br\", \"hr\", \"img\", \"input\"];\n if (selfClosing.includes(tag)) {\n return `<${tag}${attrs} />`;\n }\n\n // Raw text elements: content must NOT be HTML-escaped\n const isRawText = tag === \"style\" || tag === \"script\";\n const childrenHTML = isRawText\n ? (children || []).map((child) => extractRawText(child)).join(\"\")\n : (children || []).map((child) => renderDocumentVNode(child)).join(\"\");\n\n return `<${tag}${attrs}>${childrenHTML}</${tag}>`;\n}\n\n/**\n * Extract raw text from a VNode without HTML escaping.\n * Used for <style> and <script> content.\n */\nfunction extractRawText(vnode: any): string {\n if (vnode == null || typeof vnode === \"boolean\") return \"\";\n if (typeof vnode === \"string\" || typeof vnode === \"number\") return String(vnode);\n if (Array.isArray(vnode)) return vnode.map(extractRawText).join(\"\");\n if (typeof vnode === \"object\" && \"type\" in vnode) {\n if (vnode.type === \"#text\") return String(vnode.props?.nodeValue ?? \"\");\n if (vnode.type === \"#signal\") return (vnode.children || []).map(extractRawText).join(\"\");\n // Nested elements inside style/script (rare) - render normally\n return renderDocumentVNode(vnode);\n }\n return \"\";\n}\n\n/**\n * Render attributes\n */\nfunction renderAttributes(props: Record<string, any>): string {\n const attrs: string[] = [];\n\n for (const [key, value] of Object.entries(props)) {\n if (key === \"children\" || key === \"key\" || key === \"ref\" || key === \"dangerouslySetInnerHTML\") {\n continue;\n }\n\n if (value == null || value === false) {\n continue;\n }\n\n // Boolean attributes\n if (value === true) {\n attrs.push(key);\n continue;\n }\n\n // Map React/JSX attribute names to HTML\n const attrName =\n key === \"className\"\n ? \"class\"\n : key === \"htmlFor\"\n ? \"for\"\n : key === \"charSet\"\n ? \"charset\"\n : key === \"crossOrigin\"\n ? \"crossorigin\"\n : key === \"httpEquiv\"\n ? \"http-equiv\"\n : key;\n\n attrs.push(`${attrName}=\"${escapeHTML(String(value))}\"`);\n }\n\n return attrs.length > 0 ? \" \" + attrs.join(\" \") : \"\";\n}\n\n/**\n * Escape HTML special characters\n */\nfunction escapeHTML(str: string): string {\n return str\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#39;\");\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAmBA,MAAa,mBAAqC,EAAE,UAAU,SAAS,KAAK,YAC1E,qBAAC;CAAK,MAAK;YACT,qBAAC;EACC,oBAAC,UAAK,SAAQ,UAAU;EACxB,oBAAC;GAAK,MAAK;GAAW,SAAQ;IAA0C;EACvE,SAAS,oBAAC,qBAAO,QAAc;EAC/B,IAAI,KAAK,SACR,oBAAC;GAAgB,KAAI;GAAmB;KAA7B,KAAqC,CAChD;KACG,EACP,qBAAC,qBACE,UACA,WACI;EACF;;;;;;;;AAUT,SAAgB,eAAe,eAA4B;AAMzD,QAAO,oBADM,oBAAoB,cAAc;;;;;;AAQjD,SAAS,oBAAoB,OAAoB;AAC/C,KAAI,SAAS,KACX,QAAO;AAGT,KAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAAU;EAC1D,MAAM,MAAM,OAAO,MAAM;AAEzB,MAAI,IAAI,WAAW,IAAI,IAAI,IAAI,SAAS,KAAK,CAC3C,QAAO;AAET,SAAO,WAAW,IAAI;;AAGxB,KAAI,OAAO,UAAU,UACnB,QAAO;AAGT,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,MAAM,KAAK,UAAU,oBAAoB,MAAM,CAAC,CAAC,KAAK,GAAG;AAGlE,KAAI,OAAO,UAAU,YAAY,EAAE,UAAU,OAC3C,QAAO;CAGT,MAAM,EAAE,MAAM,OAAO,aAAa;AAGlC,KAAI,OAAO,yBAAyB,OAClC,QAAO,MAAM,wBAAwB;AAIvC,KAAI,SAAS,SACX,SAAQ,YAAY,EAAE,EAAE,KAAK,UAAe,oBAAoB,MAAM,CAAC,CAAC,KAAK,GAAG;AAIlF,KAAI,OAAO,SAAS,UAAU;AAE5B,MAAI,KAAK,WAAW,IAAI,EAAE;AACxB,OAAI,SAAS,SAAS;IACpB,MAAM,QAAQ,OAAO,aAAa;AAElC,QAAI,OAAO,UAAU,aAAa,MAAM,WAAW,IAAI,IAAI,MAAM,SAAS,KAAK,EAC7E,QAAO;AAET,WAAO,WAAW,OAAO,MAAM,CAAC;;AAGlC,WAAQ,YAAY,EAAE,EAAE,KAAK,UAAe,oBAAoB,MAAM,CAAC,CAAC,KAAK,GAAG;;AAElF,SAAO,cAAc,MAAM,OAAO,SAAS;;AAG7C,KAAI,OAAO,SAAS,WAElB,QAAO,oBADQ,KAAK,SAAS,EAAE,CAAC,CACE;AAGpC,QAAO;;;;;AAMT,SAAS,cAAc,KAAa,OAAY,UAAyB;CACvE,MAAM,QAAQ,iBAAiB,SAAS,EAAE,CAAC;AAI3C,KADoB;EAAC;EAAQ;EAAQ;EAAM;EAAM;EAAO;EAAQ,CAChD,SAAS,IAAI,CAC3B,QAAO,IAAI,MAAM,MAAM;AASzB,QAAO,IAAI,MAAM,MAAM,GALL,QAAQ,WAAW,QAAQ,YAExC,YAAY,EAAE,EAAE,KAAK,UAAU,eAAe,MAAM,CAAC,CAAC,KAAK,GAAG,IAC9D,YAAY,EAAE,EAAE,KAAK,UAAU,oBAAoB,MAAM,CAAC,CAAC,KAAK,GAAG,CAEjC,IAAI,IAAI;;;;;;AAOjD,SAAS,eAAe,OAAoB;AAC1C,KAAI,SAAS,QAAQ,OAAO,UAAU,UAAW,QAAO;AACxD,KAAI,OAAO,UAAU,YAAY,OAAO,UAAU,SAAU,QAAO,OAAO,MAAM;AAChF,KAAI,MAAM,QAAQ,MAAM,CAAE,QAAO,MAAM,IAAI,eAAe,CAAC,KAAK,GAAG;AACnE,KAAI,OAAO,UAAU,YAAY,UAAU,OAAO;AAChD,MAAI,MAAM,SAAS,QAAS,QAAO,OAAO,MAAM,OAAO,aAAa,GAAG;AACvE,MAAI,MAAM,SAAS,UAAW,SAAQ,MAAM,YAAY,EAAE,EAAE,IAAI,eAAe,CAAC,KAAK,GAAG;AAExF,SAAO,oBAAoB,MAAM;;AAEnC,QAAO;;;;;AAMT,SAAS,iBAAiB,OAAoC;CAC5D,MAAM,QAAkB,EAAE;AAE1B,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,EAAE;AAChD,MAAI,QAAQ,cAAc,QAAQ,SAAS,QAAQ,SAAS,QAAQ,0BAClE;AAGF,MAAI,SAAS,QAAQ,UAAU,MAC7B;AAIF,MAAI,UAAU,MAAM;AAClB,SAAM,KAAK,IAAI;AACf;;EAIF,MAAM,WACJ,QAAQ,cACJ,UACA,QAAQ,YACN,QACA,QAAQ,YACN,YACA,QAAQ,gBACN,gBACA,QAAQ,cACN,eACA;AAEd,QAAM,KAAK,GAAG,SAAS,IAAI,WAAW,OAAO,MAAM,CAAC,CAAC,GAAG;;AAG1D,QAAO,MAAM,SAAS,IAAI,MAAM,MAAM,KAAK,IAAI,GAAG;;;;;AAMpD,SAAS,WAAW,KAAqB;AACvC,QAAO,IACJ,QAAQ,MAAM,QAAQ,CACtB,QAAQ,MAAM,OAAO,CACrB,QAAQ,MAAM,OAAO,CACrB,QAAQ,MAAM,SAAS,CACvB,QAAQ,MAAM,QAAQ"}
@@ -1,5 +1,5 @@
1
- import "./src-BlS3Hc-L.mjs";
1
+ import "./src-DW3tIczg.mjs";
2
2
  import "./jsx-runtime-D9ZNjMJ2.mjs";
3
- import { n as renderDocument, t as DefaultDocument } from "./document-OGuk9jhK.mjs";
3
+ import { n as renderDocument, t as DefaultDocument } from "./document-BOJDaiBc.mjs";
4
4
 
5
5
  export { renderDocument };
@@ -1,5 +1,5 @@
1
- import { l as Ref, s as JSXNode, u as VNode } from "../types-Dgj6n-EE.mjs";
2
- import { r as Signal } from "../types-DlNR9ZaJ.mjs";
1
+ import { c as JSXNode, d as VNode, u as Ref } from "../types-CZMcXQTW.mjs";
2
+ import { r as Signal } from "../types-BlaUrkq0.mjs";
3
3
 
4
4
  //#region ../dom/src/operations.d.ts
5
5
  /**
@@ -99,6 +99,37 @@ declare function createPortal(children: JSXNode, container: Element): VNode;
99
99
  */
100
100
  declare function PortalComponent(props: PortalProps): VNode;
101
101
  //#endregion
102
+ //#region ../dom/src/forward.d.ts
103
+ /**
104
+ * Forward props interface
105
+ */
106
+ interface ForwardProps {
107
+ children: JSXNode;
108
+ [key: string]: unknown;
109
+ }
110
+ /**
111
+ * Forward component - merges props onto its single child element
112
+ *
113
+ * Forward is a renderless primitive that injects props into its child
114
+ * without producing an extra DOM node. Think of it as declarative
115
+ * prop spreading from parent to child.
116
+ *
117
+ * Props merging behavior:
118
+ * - `class`/`className`: concatenated (both applied)
119
+ * - `style`: merged objects (Forward overrides per-property)
120
+ * - Event handlers (`on*`): chained (both run)
121
+ * - Other props: Forward overrides child
122
+ *
123
+ * @example
124
+ * ```tsx
125
+ * <Forward onClick={handler} class="extra">
126
+ * <button class="btn">Click me</button>
127
+ * </Forward>
128
+ * // renders: <button class="btn extra" onClick={handler}>Click me</button>
129
+ * ```
130
+ */
131
+ declare function ForwardComponent(props: ForwardProps): VNode;
132
+ //#endregion
102
133
  //#region ../dom/src/style-anchor.d.ts
103
134
  /**
104
135
  * Get the current style injection target
@@ -192,5 +223,39 @@ declare function ComponentStyleAnchor({
192
223
  children
193
224
  }: ComponentStyleAnchorProps): VNode;
194
225
  //#endregion
195
- export { AppStyleAnchor, AppStyleAnchorProps, ComponentStyleAnchor, ComponentStyleAnchorProps, DOMRenderResult, PortalComponent, PortalProps, appendChild, createComment, createElement, createPortal, createTextNode, getStyleTarget, insertBefore, removeChild, render, replaceNode, setAppStyleTarget, setComponentStyleTarget, setProperty, setRef, setSignalProperty, setText };
226
+ //#region ../dom/src/native.d.ts
227
+ interface NativeProps {
228
+ /** The native DOM element to embed in the SemaJSX tree */
229
+ element: Element;
230
+ /** Additional attributes to apply to the element */
231
+ [key: string]: unknown;
232
+ }
233
+ /**
234
+ * Embed a native DOM element in the SemaJSX render tree.
235
+ *
236
+ * Useful for integrating third-party libraries that return real DOM elements
237
+ * (e.g., Lucide's createElement, D3 nodes, Canvas elements).
238
+ *
239
+ * Props (except `element`) are applied to the element using the same
240
+ * property-setting logic as regular JSX elements — supports class, style,
241
+ * event handlers, signals, and standard attributes.
242
+ *
243
+ * @example
244
+ * ```tsx
245
+ * import { Native } from "semajsx/dom";
246
+ * import { createElement, Rocket } from "lucide";
247
+ *
248
+ * const App = () => (
249
+ * <div>
250
+ * <Native element={createElement(Rocket)} stroke="#007aff" />
251
+ * </div>
252
+ * );
253
+ * ```
254
+ */
255
+ declare function Native({
256
+ element,
257
+ ...attrs
258
+ }: NativeProps): VNode;
259
+ //#endregion
260
+ export { AppStyleAnchor, AppStyleAnchorProps, ComponentStyleAnchor, ComponentStyleAnchorProps, DOMRenderResult, ForwardComponent, ForwardProps, Native, NativeProps, PortalComponent, PortalProps, appendChild, createComment, createElement, createPortal, createTextNode, getStyleTarget, insertBefore, removeChild, render, replaceNode, setAppStyleTarget, setComponentStyleTarget, setProperty, setRef, setSignalProperty, setText };
196
261
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../dom/src/operations.ts","../../../dom/src/properties.ts","../../../dom/src/render.ts","../../../dom/src/portal.ts","../../../dom/src/style-anchor.ts"],"mappings":";;;;;;;iBAIgB,aAAA,CAAc,OAAA,WAAkB,OAAA;AAAA,iBAIhC,cAAA,CAAe,IAAA,WAAe,IAAA;AAAA,iBAI9B,aAAA,CAAc,IAAA,WAAe,OAAA;AAAA,iBAI7B,WAAA,CAAY,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,IAAA;AAAA,iBAIjC,WAAA,CAAY,IAAA,EAAM,IAAA;AAAA,iBAIlB,YAAA,CAAa,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,IAAA;AAAA,iBAInD,WAAA,CAAY,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,IAAA;AAAA,iBAIpC,OAAA,CAAQ,IAAA,EAAM,IAAA,EAAM,IAAA;;;;;AA5BpC;iBC+CgB,WAAA,CAAY,OAAA,EAAS,OAAA,EAAS,GAAA,UAAa,KAAA;;;;iBA6F3C,iBAAA,aAAA,CACd,OAAA,EAAS,OAAA,EACT,GAAA,UACA,MAAA,EAAQ,MAAA,CAAO,CAAA;;;;;ADvIjB;iBCuJgB,MAAA,CAAO,OAAA,EAAS,IAAA,EAAM,GAAA,EAAK,GAAA;;;;;;UCxF1B,eAAA;EFvED;;;EE2Ed,OAAA;AAAA;;;;;AFnEF;;;;;AAIA;;;;;;;;;;iBE2GgB,MAAA,CACd,OAAA,EAAS,KAAA,GAAQ,OAAA,CAAQ,KAAA,IAAS,qBAAA,CAAsB,KAAA,GACxD,SAAA,EAAW,OAAA,GACV,eAAA;;;;;;UCxHc,WAAA;EACf,QAAA,EAAU,OAAA;EACV,SAAA,EAAW,OAAA;AAAA;;AHAb;;;;;AAIA;;;;;AAIA;;;;;;iBGYgB,YAAA,CAAa,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,OAAA,GAAU,KAAA;;;;AHRrE;;;;;AAIA;;iBGmBgB,eAAA,CAAgB,KAAA,EAAO,WAAA,GAAc,KAAA;;;;;AHnCrD;;;;;AAIA;iBIYgB,cAAA,CAAA,GAAkB,OAAA,GAAU,UAAA;;;;AJR5C;;;iBIkBgB,iBAAA,CAAkB,MAAA,EAAQ,OAAA,GAAU,UAAA;;;;;;iBASpC,uBAAA,CAAwB,MAAA,EAAQ,OAAA,GAAU,UAAA;AJvB1D;;;AAAA,UI8BiB,mBAAA;EJ9BiB;EIgChC,MAAA,EAAQ,OAAA,GAAU,UAAA;EJ5BJ;EI8Bd,QAAA,GAAW,OAAA;AAAA;;;;;;;;;;;;;AJ1Bb;;;;;;;iBIgDgB,cAAA,CAAA;EAAiB,MAAA;EAAQ;AAAA,GAAY,mBAAA,GAAsB,KAAA;;;AJ5C3E;UI4DiB,yBAAA;;EAEf,MAAA,EAAQ,OAAA,GAAU,UAAA;;EAElB,QAAA,GAAW,OAAA;AAAA;;;;;;AH7Cb;;;;;;;;;;AA6FA;;;;;;;;;iBGrBgB,oBAAA,CAAA;EAAuB,MAAA;EAAQ;AAAA,GAAY,yBAAA,GAA4B,KAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../dom/src/operations.ts","../../../dom/src/properties.ts","../../../dom/src/render.ts","../../../dom/src/portal.ts","../../../dom/src/forward.ts","../../../dom/src/style-anchor.ts","../../../dom/src/native.ts"],"mappings":";;;;;;;iBAIgB,aAAA,CAAc,OAAA,WAAkB,OAAA;AAAA,iBAIhC,cAAA,CAAe,IAAA,WAAe,IAAA;AAAA,iBAI9B,aAAA,CAAc,IAAA,WAAe,OAAA;AAAA,iBAI7B,WAAA,CAAY,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,IAAA;AAAA,iBAIjC,WAAA,CAAY,IAAA,EAAM,IAAA;AAAA,iBAIlB,YAAA,CAAa,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,IAAA;AAAA,iBAInD,WAAA,CAAY,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,IAAA;AAAA,iBAIpC,OAAA,CAAQ,IAAA,EAAM,IAAA,EAAM,IAAA;;;;;AA5BpC;iBC+CgB,WAAA,CAAY,OAAA,EAAS,OAAA,EAAS,GAAA,UAAa,KAAA;;;;iBA6F3C,iBAAA,aAAA,CACd,OAAA,EAAS,OAAA,EACT,GAAA,UACA,MAAA,EAAQ,MAAA,CAAO,CAAA;;;;;ADvIjB;iBCuJgB,MAAA,CAAO,OAAA,EAAS,IAAA,EAAM,GAAA,EAAK,GAAA;;;;;;UCxF1B,eAAA;EFvED;;;EE2Ed,OAAA;AAAA;;;;;AFnEF;;;;;AAIA;;;;;;;;;;iBE2GgB,MAAA,CACd,OAAA,EAAS,KAAA,GAAQ,OAAA,CAAQ,KAAA,IAAS,qBAAA,CAAsB,KAAA,GACxD,SAAA,EAAW,OAAA,GACV,eAAA;;;;;;UCxHc,WAAA;EACf,QAAA,EAAU,OAAA;EACV,SAAA,EAAW,OAAA;AAAA;;AHAb;;;;;AAIA;;;;;AAIA;;;;;;iBGYgB,YAAA,CAAa,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,OAAA,GAAU,KAAA;;;;AHRrE;;;;;AAIA;;iBGmBgB,eAAA,CAAgB,KAAA,EAAO,WAAA,GAAc,KAAA;;;;;;UCrCpC,YAAA;EACf,QAAA,EAAU,OAAA;EAAA;;;AJCZ;;;;;AAIA;;;;;AAIA;;;;;;;;;;iBIgBgB,gBAAA,CAAiB,KAAA,EAAO,YAAA,GAAe,KAAA;;;;;AJxBvD;;;;;AAIA;iBKYgB,cAAA,CAAA,GAAkB,OAAA,GAAU,UAAA;;;;ALR5C;;;iBKkBgB,iBAAA,CAAkB,MAAA,EAAQ,OAAA,GAAU,UAAA;;;;;;iBASpC,uBAAA,CAAwB,MAAA,EAAQ,OAAA,GAAU,UAAA;ALvB1D;;;AAAA,UK8BiB,mBAAA;EL9BiB;EKgChC,MAAA,EAAQ,OAAA,GAAU,UAAA;EL5BJ;EK8Bd,QAAA,GAAW,OAAA;AAAA;;;;;;;;;;;;;AL1Bb;;;;;;;iBKgDgB,cAAA,CAAA;EAAiB,MAAA;EAAQ;AAAA,GAAY,mBAAA,GAAsB,KAAA;;;AL5C3E;UK4DiB,yBAAA;;EAEf,MAAA,EAAQ,OAAA,GAAU,UAAA;;EAElB,QAAA,GAAW,OAAA;AAAA;;;;;;AJ7Cb;;;;;;;;;;AA6FA;;;;;;;;;iBIrBgB,oBAAA,CAAA;EAAuB,MAAA;EAAQ;AAAA,GAAY,yBAAA,GAA4B,KAAA;;;UCzHtE,WAAA;;EAEf,OAAA,EAAS,OAAA;ENAX;EAAA;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;;;;;;iBMegB,MAAA,CAAA;EAAS,OAAA;EAAA,GAAY;AAAA,GAAS,WAAA,GAAc,KAAA"}
@@ -1,5 +1,5 @@
1
- import "../src-BlS3Hc-L.mjs";
2
- import { _ as removeChild, a as setComponentStyleTarget, c as render, d as setSignalProperty, f as appendChild, g as insertBefore, h as createTextNode, i as setAppStyleTarget, l as setProperty, m as createElement, n as ComponentStyleAnchor, o as PortalComponent, p as createComment, r as getStyleTarget, s as createPortal, t as AppStyleAnchor, u as setRef, v as replaceNode, y as setText } from "../src-CRi0xsNK.mjs";
3
- import "../src-Jbt_w0hc.mjs";
1
+ import "../src-DW3tIczg.mjs";
2
+ import { _ as createTextNode, a as setAppStyleTarget, b as replaceNode, c as PortalComponent, d as setProperty, f as setRef, g as createElement, h as createComment, i as getStyleTarget, l as createPortal, m as appendChild, n as AppStyleAnchor, o as setComponentStyleTarget, p as setSignalProperty, r as ComponentStyleAnchor, s as ForwardComponent, t as Native, u as render, v as insertBefore, x as setText, y as removeChild } from "../src-BqX3sryB.mjs";
3
+ import "../src-Ds9vl42d.mjs";
4
4
 
5
- export { AppStyleAnchor, ComponentStyleAnchor, PortalComponent, appendChild, createComment, createElement, createPortal, createTextNode, getStyleTarget, insertBefore, removeChild, render, replaceNode, setAppStyleTarget, setComponentStyleTarget, setProperty, setRef, setSignalProperty, setText };
5
+ export { AppStyleAnchor, ComponentStyleAnchor, ForwardComponent, Native, PortalComponent, appendChild, createComment, createElement, createPortal, createTextNode, getStyleTarget, insertBefore, removeChild, render, replaceNode, setAppStyleTarget, setComponentStyleTarget, setProperty, setRef, setSignalProperty, setText };
@@ -1,9 +1,9 @@
1
- import { o as Fragment } from "../types-Dgj6n-EE.mjs";
2
- import { n as jsxs, t as jsx } from "../jsx-CGW4OyqA.mjs";
3
- import { C as VideoHTMLAttributes, S as ThHTMLAttributes, _ as SelectHTMLAttributes, a as ClassValue, b as TdHTMLAttributes, c as IframeHTMLAttributes, d as JSX, f as LabelHTMLAttributes, g as ScriptHTMLAttributes, h as OptionHTMLAttributes, i as CanvasHTMLAttributes, l as ImgHTMLAttributes, m as MetaHTMLAttributes, n as AudioHTMLAttributes, o as FormHTMLAttributes, p as LinkHTMLAttributes, r as ButtonHTMLAttributes, s as HTMLAttributes, t as AnchorHTMLAttributes, u as InputHTMLAttributes, v as StyleHTMLAttributes, x as TextareaHTMLAttributes, y as TableHTMLAttributes } from "../jsx-runtime-mBpL8czJ.mjs";
1
+ import { o as Forward, s as Fragment } from "../types-CZMcXQTW.mjs";
2
+ import { n as jsxs, t as jsx } from "../jsx-fNlLjLou.mjs";
3
+ import { C as ThHTMLAttributes, S as TextareaHTMLAttributes, _ as ScriptHTMLAttributes, a as ClassValue, b as TableHTMLAttributes, c as IframeHTMLAttributes, d as JSX, f as LabelHTMLAttributes, g as SVGAttributes, h as OptionHTMLAttributes, i as CanvasHTMLAttributes, l as ImgHTMLAttributes, m as MetaHTMLAttributes, n as AudioHTMLAttributes, o as FormHTMLAttributes, p as LinkHTMLAttributes, r as ButtonHTMLAttributes, s as HTMLAttributes, t as AnchorHTMLAttributes, u as InputHTMLAttributes, v as SelectHTMLAttributes, w as VideoHTMLAttributes, x as TdHTMLAttributes, y as StyleHTMLAttributes } from "../jsx-runtime-DZx2Yv-t.mjs";
4
4
 
5
5
  //#region ../dom/src/jsx-dev-runtime.d.ts
6
6
  declare function jsxDEV(type: any, props: any, key?: any, _isStaticChildren?: boolean, _source?: any, _self?: any): any;
7
7
  //#endregion
8
- export { AnchorHTMLAttributes, AudioHTMLAttributes, ButtonHTMLAttributes, CanvasHTMLAttributes, ClassValue, FormHTMLAttributes, Fragment, HTMLAttributes, IframeHTMLAttributes, ImgHTMLAttributes, InputHTMLAttributes, JSX, LabelHTMLAttributes, LinkHTMLAttributes, MetaHTMLAttributes, OptionHTMLAttributes, ScriptHTMLAttributes, SelectHTMLAttributes, StyleHTMLAttributes, TableHTMLAttributes, TdHTMLAttributes, TextareaHTMLAttributes, ThHTMLAttributes, VideoHTMLAttributes, jsx, jsxDEV, jsxs };
8
+ export { AnchorHTMLAttributes, AudioHTMLAttributes, ButtonHTMLAttributes, CanvasHTMLAttributes, ClassValue, FormHTMLAttributes, Forward, Fragment, HTMLAttributes, IframeHTMLAttributes, ImgHTMLAttributes, InputHTMLAttributes, JSX, LabelHTMLAttributes, LinkHTMLAttributes, MetaHTMLAttributes, OptionHTMLAttributes, SVGAttributes, ScriptHTMLAttributes, SelectHTMLAttributes, StyleHTMLAttributes, TableHTMLAttributes, TdHTMLAttributes, TextareaHTMLAttributes, ThHTMLAttributes, VideoHTMLAttributes, jsx, jsxDEV, jsxs };
9
9
  //# sourceMappingURL=jsx-dev-runtime.d.mts.map
@@ -1,4 +1,4 @@
1
- import { _ as Fragment, f as ISLAND_MARKER, h } from "../src-BlS3Hc-L.mjs";
1
+ import { f as ISLAND_MARKER, h, v as Fragment } from "../src-DW3tIczg.mjs";
2
2
  import "../jsx-runtime-D9ZNjMJ2.mjs";
3
3
 
4
4
  //#region ../dom/src/jsx-dev-runtime.ts
@@ -1,4 +1,4 @@
1
- import { o as Fragment } from "../types-Dgj6n-EE.mjs";
2
- import { n as jsxs, t as jsx } from "../jsx-CGW4OyqA.mjs";
3
- import { C as VideoHTMLAttributes, S as ThHTMLAttributes, _ as SelectHTMLAttributes, a as ClassValue, b as TdHTMLAttributes, c as IframeHTMLAttributes, d as JSX, f as LabelHTMLAttributes, g as ScriptHTMLAttributes, h as OptionHTMLAttributes, i as CanvasHTMLAttributes, l as ImgHTMLAttributes, m as MetaHTMLAttributes, n as AudioHTMLAttributes, o as FormHTMLAttributes, p as LinkHTMLAttributes, r as ButtonHTMLAttributes, s as HTMLAttributes, t as AnchorHTMLAttributes, u as InputHTMLAttributes, v as StyleHTMLAttributes, x as TextareaHTMLAttributes, y as TableHTMLAttributes } from "../jsx-runtime-mBpL8czJ.mjs";
4
- export { AnchorHTMLAttributes, AudioHTMLAttributes, ButtonHTMLAttributes, CanvasHTMLAttributes, ClassValue, FormHTMLAttributes, Fragment, HTMLAttributes, IframeHTMLAttributes, ImgHTMLAttributes, InputHTMLAttributes, JSX, LabelHTMLAttributes, LinkHTMLAttributes, MetaHTMLAttributes, OptionHTMLAttributes, ScriptHTMLAttributes, SelectHTMLAttributes, StyleHTMLAttributes, TableHTMLAttributes, TdHTMLAttributes, TextareaHTMLAttributes, ThHTMLAttributes, VideoHTMLAttributes, jsx, jsxs };
1
+ import { o as Forward, s as Fragment } from "../types-CZMcXQTW.mjs";
2
+ import { n as jsxs, t as jsx } from "../jsx-fNlLjLou.mjs";
3
+ import { C as ThHTMLAttributes, S as TextareaHTMLAttributes, _ as ScriptHTMLAttributes, a as ClassValue, b as TableHTMLAttributes, c as IframeHTMLAttributes, d as JSX, f as LabelHTMLAttributes, g as SVGAttributes, h as OptionHTMLAttributes, i as CanvasHTMLAttributes, l as ImgHTMLAttributes, m as MetaHTMLAttributes, n as AudioHTMLAttributes, o as FormHTMLAttributes, p as LinkHTMLAttributes, r as ButtonHTMLAttributes, s as HTMLAttributes, t as AnchorHTMLAttributes, u as InputHTMLAttributes, v as SelectHTMLAttributes, w as VideoHTMLAttributes, x as TdHTMLAttributes, y as StyleHTMLAttributes } from "../jsx-runtime-DZx2Yv-t.mjs";
4
+ export { AnchorHTMLAttributes, AudioHTMLAttributes, ButtonHTMLAttributes, CanvasHTMLAttributes, ClassValue, FormHTMLAttributes, Forward, Fragment, HTMLAttributes, IframeHTMLAttributes, ImgHTMLAttributes, InputHTMLAttributes, JSX, LabelHTMLAttributes, LinkHTMLAttributes, MetaHTMLAttributes, OptionHTMLAttributes, SVGAttributes, ScriptHTMLAttributes, SelectHTMLAttributes, StyleHTMLAttributes, TableHTMLAttributes, TdHTMLAttributes, TextareaHTMLAttributes, ThHTMLAttributes, VideoHTMLAttributes, jsx, jsxs };
@@ -1,4 +1,4 @@
1
- import { _ as Fragment, a as jsxs, i as jsx } from "../src-BlS3Hc-L.mjs";
1
+ import { _ as Forward, a as jsxs, i as jsx, v as Fragment } from "../src-DW3tIczg.mjs";
2
2
  import "../jsx-runtime-D9ZNjMJ2.mjs";
3
3
 
4
- export { Fragment, jsx, jsxs };
4
+ export { Forward, Fragment, jsx, jsxs };
@@ -1,5 +1,5 @@
1
- import { s as JSXNode } from "./types-Dgj6n-EE.mjs";
2
- import { r as Signal } from "./types-DlNR9ZaJ.mjs";
1
+ import { c as JSXNode } from "./types-CZMcXQTW.mjs";
2
+ import { r as Signal } from "./types-BlaUrkq0.mjs";
3
3
 
4
4
  //#region ../core/src/helpers.d.ts
5
5
  /**
@@ -56,4 +56,4 @@ declare function resource(promise: Promise<JSXNode>, pending?: JSXNode): Signal<
56
56
  declare function stream(iterator: AsyncIterable<JSXNode>, pending?: JSXNode): Signal<JSXNode | null>;
57
57
  //#endregion
58
58
  export { stream as n, when as r, resource as t };
59
- //# sourceMappingURL=helpers-DrifjCXb.d.mts.map
59
+ //# sourceMappingURL=helpers-CfRDJgcP.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers-DrifjCXb.d.mts","names":[],"sources":["../../core/src/helpers.ts"],"mappings":";;;;;;AAiBA;;;;;;;;;;;iBAAgB,IAAA,CACd,SAAA,EAAW,MAAA,WACX,OAAA,EAAS,OAAA,UAAiB,OAAA,IACzB,MAAA,CAAO,OAAA;;;;;;;;AA4BV;;;;;;;;;;;;;;iBAAgB,QAAA,CAAS,OAAA,EAAS,OAAA,CAAQ,OAAA,GAAU,OAAA,GAAU,OAAA,GAAU,MAAA,CAAO,OAAA;;;;;AA6B/E;;;;;;;;;;;iBAAgB,MAAA,CACd,QAAA,EAAU,aAAA,CAAc,OAAA,GACxB,OAAA,GAAU,OAAA,GACT,MAAA,CAAO,OAAA"}
1
+ {"version":3,"file":"helpers-CfRDJgcP.d.mts","names":[],"sources":["../../core/src/helpers.ts"],"mappings":";;;;;;AAiBA;;;;;;;;;;;iBAAgB,IAAA,CACd,SAAA,EAAW,MAAA,WACX,OAAA,EAAS,OAAA,UAAiB,OAAA,IACzB,MAAA,CAAO,OAAA;;;;;;;;AA4BV;;;;;;;;;;;;;;iBAAgB,QAAA,CAAS,OAAA,EAAS,OAAA,CAAQ,OAAA,GAAU,OAAA,GAAU,OAAA,GAAU,MAAA,CAAO,OAAA;;;;;AA6B/E;;;;;;;;;;;iBAAgB,MAAA,CACd,QAAA,EAAU,aAAA,CAAc,OAAA,GACxB,OAAA,GAAU,OAAA,GACT,MAAA,CAAO,OAAA"}
@@ -1,4 +1,4 @@
1
- import { a as WritableSignal, n as ReadableSignal, t as MaybeSignal } from "./types-DlNR9ZaJ.mjs";
1
+ import { a as WritableSignal, n as ReadableSignal, t as MaybeSignal } from "./types-BlaUrkq0.mjs";
2
2
 
3
3
  //#region ../signal/src/signal.d.ts
4
4
  /**
@@ -53,4 +53,4 @@ declare function isSignal<T = unknown>(value: unknown): value is ReadableSignal<
53
53
  declare function unwrap<T>(value: MaybeSignal<T>): T;
54
54
  //#endregion
55
55
  export { memo as a, computed as i, unwrap as n, signal as o, batch as r, isSignal as t };
56
- //# sourceMappingURL=index-DS5X3Pvb.d.mts.map
56
+ //# sourceMappingURL=index-B1pjI-Su.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-DS5X3Pvb.d.mts","names":[],"sources":["../../signal/src/signal.ts","../../signal/src/computed.ts","../../signal/src/batch.ts","../../signal/src/utils.ts"],"mappings":";;;;;AAMA;iBAAgB,MAAA,GAAA,CAAU,YAAA,EAAc,CAAA,GAAI,cAAA,CAAe,CAAA;;;;;AAA3D;;;;;;;;;;iBCWgB,QAAA,MAAA,CAAe,GAAA,EAAK,cAAA,CAAe,CAAA,GAAI,OAAA,GAAU,KAAA,EAAO,CAAA,KAAM,CAAA,GAAI,cAAA,CAAe,CAAA;AAAA,iBAGjF,QAAA,oBAA4B,cAAA,WAAA,CAC1C,IAAA,MAAU,CAAA,GACV,OAAA,MAAa,MAAA,gBAAsB,CAAA,GAAI,CAAA,CAAE,CAAA,UAAW,cAAA,YAA0B,CAAA,eAAgB,CAAA,GAC7F,cAAA,CAAe,CAAA;AAAA,cA2DL,IAAA,SAAa,QAAA;;;;;;;iBC/BV,KAAA,GAAA,CAAS,EAAA,QAAU,CAAA,GAAI,CAAA;;;;;AF7CvC;;;;;iBGGgB,QAAA,aAAA,CAAsB,KAAA,YAAiB,KAAA,IAAS,cAAA,CAAe,CAAA;;;;;;;;;;;;iBAqB/D,MAAA,GAAA,CAAU,KAAA,EAAO,WAAA,CAAY,CAAA,IAAK,CAAA"}
1
+ {"version":3,"file":"index-B1pjI-Su.d.mts","names":[],"sources":["../../signal/src/signal.ts","../../signal/src/computed.ts","../../signal/src/batch.ts","../../signal/src/utils.ts"],"mappings":";;;;;AAMA;iBAAgB,MAAA,GAAA,CAAU,YAAA,EAAc,CAAA,GAAI,cAAA,CAAe,CAAA;;;;;AAA3D;;;;;;;;;;iBCWgB,QAAA,MAAA,CAAe,GAAA,EAAK,cAAA,CAAe,CAAA,GAAI,OAAA,GAAU,KAAA,EAAO,CAAA,KAAM,CAAA,GAAI,cAAA,CAAe,CAAA;AAAA,iBAGjF,QAAA,oBAA4B,cAAA,WAAA,CAC1C,IAAA,MAAU,CAAA,GACV,OAAA,MAAa,MAAA,gBAAsB,CAAA,GAAI,CAAA,CAAE,CAAA,UAAW,cAAA,YAA0B,CAAA,eAAgB,CAAA,GAC7F,cAAA,CAAe,CAAA;AAAA,cA2DL,IAAA,SAAa,QAAA;;;;;;;iBC/BV,KAAA,GAAA,CAAS,EAAA,QAAU,CAAA,GAAI,CAAA;;;;;AF7CvC;;;;;iBGGgB,QAAA,aAAA,CAAsB,KAAA,YAAiB,KAAA,IAAS,cAAA,CAAe,CAAA;;;;;;;;;;;;iBAqB/D,MAAA,GAAA,CAAU,KAAA,EAAO,WAAA,CAAY,CAAA,IAAK,CAAA"}
@@ -0,0 +1,81 @@
1
+ import { d as VNode } from "./types-CZMcXQTW.mjs";
2
+ import { _ as SSGPlugin } from "./types-CGkRxnQB.mjs";
3
+
4
+ //#region ../ssg/src/plugins/lucide/component.d.ts
5
+ interface IconProps {
6
+ /** Icon name in kebab-case (e.g., "rocket", "arrow-right", "circle-check") */
7
+ name: string;
8
+ /** Icon size in pixels (default: 24) */
9
+ size?: number;
10
+ /** Stroke color (default: "currentColor") */
11
+ color?: string;
12
+ /** Stroke width (default: 2) */
13
+ strokeWidth?: number;
14
+ /** Additional CSS class */
15
+ class?: string;
16
+ }
17
+ /**
18
+ * Isomorphic Lucide icon component.
19
+ *
20
+ * - **Browser**: uses lucide's `createElement` to produce a real SVGElement,
21
+ * embedded via `<Native>` for optimal performance.
22
+ * - **Server (SSG/SSR)**: constructs JSX SVG from IconNode data,
23
+ * rendered to HTML string by the SSR renderer.
24
+ *
25
+ * @example
26
+ * ```mdx
27
+ * <Icon name="rocket" />
28
+ * <Icon name="arrow-right" size={20} color="#007aff" />
29
+ * ```
30
+ */
31
+ declare function Icon({
32
+ name,
33
+ size,
34
+ color,
35
+ strokeWidth,
36
+ class: className
37
+ }: IconProps): VNode;
38
+ //#endregion
39
+ //#region ../ssg/src/plugins/lucide/index.d.ts
40
+ interface LucidePluginOptions {
41
+ /** Default icon size in pixels (default: 24) */
42
+ size?: number;
43
+ /** Default stroke color (default: "currentColor") */
44
+ color?: string;
45
+ /** Default stroke width (default: 2) */
46
+ strokeWidth?: number;
47
+ }
48
+ /**
49
+ * Lucide icon plugin for SSG.
50
+ *
51
+ * Registers the `<Icon>` component for use in MDX content.
52
+ * Optionally configure default icon properties.
53
+ *
54
+ * @example
55
+ * ```tsx
56
+ * import { createSSG } from "@semajsx/ssg";
57
+ * import { lucide } from "@semajsx/ssg/plugins/lucide";
58
+ *
59
+ * const ssg = createSSG({
60
+ * plugins: [lucide()],
61
+ * });
62
+ * ```
63
+ *
64
+ * @example
65
+ * ```tsx
66
+ * // With custom defaults
67
+ * const ssg = createSSG({
68
+ * plugins: [lucide({ size: 20, color: "#333" })],
69
+ * });
70
+ * ```
71
+ *
72
+ * @example
73
+ * ```mdx
74
+ * <Icon name="rocket" />
75
+ * <Icon name="arrow-right" size={16} color="#007aff" />
76
+ * ```
77
+ */
78
+ declare function lucide(options?: LucidePluginOptions): SSGPlugin;
79
+ //#endregion
80
+ export { IconProps as i, lucide as n, Icon as r, LucidePluginOptions as t };
81
+ //# sourceMappingURL=index-DC3tthWf.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DC3tthWf.d.mts","names":[],"sources":["../../ssg/src/plugins/lucide/component.tsx","../../ssg/src/plugins/lucide/index.ts"],"mappings":";;;;UAuCiB,SAAA;;EAEf,IAAA;EAFF;EAIE,IAAA;;EAEA,KAAA;;EAEA,WAAA;;EAEA,KAAA;AAAA;;;AA8BF;;;;;;;;;;;;iBAAgB,IAAA,CAAA;EACd,IAAA;EACA,IAAA;EACA,KAAA;EACA,WAAA;EACA,KAAA,EAAO;AAAA,GACN,SAAA,GAAY,KAAA;;;UC/EE,mBAAA;EDiCA;EC/Bf,IAAA;ED+Be;EC7Bf,KAAA;;EAEA,WAAA;AAAA;;;;ADmEF;;;;;;;;;;;;;;;;;;;;;;;;;;;iBClCgB,MAAA,CAAO,OAAA,GAAS,mBAAA,GAA2B,SAAA"}
package/dist/index.d.mts CHANGED
@@ -1,9 +1,9 @@
1
- import { a as ContextProvide, c as Portal, d as VNodeType, f as WithKey, i as ContextProps, l as Ref, n as ComponentAPI, o as Fragment, p as WithSignals, r as Context$1, s as JSXNode, t as Component, u as VNode } from "./types-Dgj6n-EE.mjs";
2
- import { t as ISLAND_MARKER } from "./island-marker-hZdmHMvx.mjs";
3
- import { n as stream, r as when, t as resource } from "./helpers-DrifjCXb.mjs";
4
- import { n as jsxs, t as jsx } from "./jsx-CGW4OyqA.mjs";
5
- import { a as WritableSignal, i as SignalValue, n as ReadableSignal, r as Signal, t as MaybeSignal } from "./types-DlNR9ZaJ.mjs";
6
- import { a as memo, i as computed, n as unwrap, o as signal, r as batch, t as isSignal } from "./index-DS5X3Pvb.mjs";
1
+ import { a as ContextProvide, c as JSXNode, d as VNode, f as VNodeType, i as ContextProps, l as Portal, m as WithSignals, n as ComponentAPI, o as Forward, p as WithKey, r as Context$1, s as Fragment, t as Component, u as Ref } from "./types-CZMcXQTW.mjs";
2
+ import { t as ISLAND_MARKER } from "./island-marker-BJIO07Vj.mjs";
3
+ import { n as stream, r as when, t as resource } from "./helpers-CfRDJgcP.mjs";
4
+ import { n as jsxs, t as jsx } from "./jsx-fNlLjLou.mjs";
5
+ import { a as WritableSignal, i as SignalValue, n as ReadableSignal, r as Signal, t as MaybeSignal } from "./types-BlaUrkq0.mjs";
6
+ import { a as memo, i as computed, n as unwrap, o as signal, r as batch, t as isSignal } from "./index-B1pjI-Su.mjs";
7
7
 
8
8
  //#region ../core/src/vnode.d.ts
9
9
  /**
@@ -157,5 +157,5 @@ declare function createRenderer<TNode>(strategy: RenderStrategy<TNode>): {
157
157
  cleanupSubscriptions: (node: RenderedNode<TNode>) => void;
158
158
  };
159
159
  //#endregion
160
- export { type Component, type ComponentAPI, Context, type ContextMap, type ContextProps, type ContextProvide, type Context$1 as ContextType, Fragment, ISLAND_MARKER, type JSXNode, MaybeSignal, Portal, ReadableSignal, type Ref, type RenderStrategy, type RenderedNode, Signal, SignalValue, type VNode, type WithKey, type WithSignals, WritableSignal, batch, computed, context, createComponentAPI, createFragment, createRenderer, createTextVNode, h, isAsyncIterator, isPromise, isSignal, isVNode, jsx, jsxs, memo, resource, signal, stream, unwrap, when };
160
+ export { type Component, type ComponentAPI, Context, type ContextMap, type ContextProps, type ContextProvide, type Context$1 as ContextType, Forward, Fragment, ISLAND_MARKER, type JSXNode, MaybeSignal, Portal, ReadableSignal, type Ref, type RenderStrategy, type RenderedNode, Signal, SignalValue, type VNode, type WithKey, type WithSignals, WritableSignal, batch, computed, context, createComponentAPI, createFragment, createRenderer, createTextVNode, h, isAsyncIterator, isPromise, isSignal, isVNode, jsx, jsxs, memo, resource, signal, stream, unwrap, when };
161
161
  //# sourceMappingURL=index.d.mts.map
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
- import { n as batch, t as signal } from "./signal-4PgGfydw.mjs";
2
- import { n as memo, t as computed } from "./computed-BpjqvQu1.mjs";
3
- import { n as unwrap, t as isSignal } from "./utils-BrGmTgfG.mjs";
1
+ import { n as batch, t as signal } from "./signal-BN8vHXDb.mjs";
2
+ import { n as memo, t as computed } from "./computed-BidG06Lt.mjs";
3
+ import { n as unwrap, t as isSignal } from "./utils-DbTAs943.mjs";
4
4
  import "./signal/index.mjs";
5
- import { _ as Fragment, a as jsxs, c as when, d as createComponentAPI, f as ISLAND_MARKER, g as isVNode, h, i as jsx, l as Context, m as createTextVNode, n as isAsyncIterator, o as resource, p as createFragment, r as isPromise, s as stream, t as createRenderer, u as context, v as Portal } from "./src-BlS3Hc-L.mjs";
5
+ import { _ as Forward, a as jsxs, c as when, d as createComponentAPI, f as ISLAND_MARKER, g as isVNode, h, i as jsx, l as Context, m as createTextVNode, n as isAsyncIterator, o as resource, p as createFragment, r as isPromise, s as stream, t as createRenderer, u as context, v as Fragment, y as Portal } from "./src-DW3tIczg.mjs";
6
6
 
7
- export { Context, Fragment, ISLAND_MARKER, Portal, batch, computed, context, createComponentAPI, createFragment, createRenderer, createTextVNode, h, isAsyncIterator, isPromise, isSignal, isVNode, jsx, jsxs, memo, resource, signal, stream, unwrap, when };
7
+ export { Context, Forward, Fragment, ISLAND_MARKER, Portal, batch, computed, context, createComponentAPI, createFragment, createRenderer, createTextVNode, h, isAsyncIterator, isPromise, isSignal, isVNode, jsx, jsxs, memo, resource, signal, stream, unwrap, when };
@@ -6,4 +6,4 @@
6
6
  declare const ISLAND_MARKER: symbol;
7
7
  //#endregion
8
8
  export { ISLAND_MARKER as t };
9
- //# sourceMappingURL=island-marker-hZdmHMvx.d.mts.map
9
+ //# sourceMappingURL=island-marker-BJIO07Vj.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"island-marker-BJIO07Vj.d.mts","names":[],"sources":["../../core/src/shared/island-marker.ts"],"mappings":";;AAIA;;;cAAa,aAAA"}
@@ -1,8 +1,8 @@
1
- import { d as VNodeType, u as VNode } from "./types-Dgj6n-EE.mjs";
1
+ import { d as VNode, f as VNodeType } from "./types-CZMcXQTW.mjs";
2
2
 
3
3
  //#region ../core/src/jsx.d.ts
4
4
  declare function jsx(type: VNodeType, props: any, key?: any): VNode;
5
5
  declare function jsxs(type: VNodeType, props: any, key?: any): VNode;
6
6
  //#endregion
7
7
  export { jsxs as n, jsx as t };
8
- //# sourceMappingURL=jsx-CGW4OyqA.d.mts.map
8
+ //# sourceMappingURL=jsx-fNlLjLou.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-CGW4OyqA.d.mts","names":[],"sources":["../../core/src/jsx.ts"],"mappings":";;;iBAGgB,GAAA,CAAI,IAAA,EAAM,SAAA,EAAW,KAAA,OAAY,GAAA,SAAY,KAAA;AAAA,iBAc7C,IAAA,CAAK,IAAA,EAAM,SAAA,EAAW,KAAA,OAAY,GAAA,SAAY,KAAA"}
1
+ {"version":3,"file":"jsx-fNlLjLou.d.mts","names":[],"sources":["../../core/src/jsx.ts"],"mappings":";;;iBAGgB,GAAA,CAAI,IAAA,EAAM,SAAA,EAAW,KAAA,OAAY,GAAA,SAAY,KAAA;AAAA,iBAc7C,IAAA,CAAK,IAAA,EAAM,SAAA,EAAW,KAAA,OAAY,GAAA,SAAY,KAAA"}
@@ -1,5 +1,5 @@
1
- import { n as ComponentAPI, p as WithSignals, s as JSXNode, u as VNode } from "./types-Dgj6n-EE.mjs";
2
- import { i as TerminalStyle } from "./types-Bjx1Pp14.mjs";
1
+ import { c as JSXNode, d as VNode, m as WithSignals, n as ComponentAPI } from "./types-CZMcXQTW.mjs";
2
+ import { i as TerminalStyle } from "./types-D0jRO840.mjs";
3
3
 
4
4
  //#region ../terminal/src/jsx-runtime.d.ts
5
5
  /**
@@ -109,4 +109,4 @@ declare namespace JSX {
109
109
  }
110
110
  //#endregion
111
111
  export { TextAttributes as i, JSX as n, TerminalAttributes as r, BoxAttributes as t };
112
- //# sourceMappingURL=jsx-runtime-DU8DRISG.d.mts.map
112
+ //# sourceMappingURL=jsx-runtime-BFuFPDzn.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-runtime-DU8DRISG.d.mts","names":[],"sources":["../../terminal/src/jsx-runtime.ts"],"mappings":";;;;;;;UAeU,sBAAA,SAA+B,aAAA;EAEvC,GAAA;EACA,QAAA,GAAW,OAAA;AAAA;;;;AAsBb;KAfY,kBAAA,GAAqB,WAAA,CAAY,sBAAA;;;;AA8B7C;;;;;AAKA;;;;;KApBY,aAAA,GAAgB,kBAAA;;;;;;;;;;;;;;KAehB,cAAA,GAAiB,kBAAA;;;;kBAKZ,GAAA;EAAA,KACH,OAAA,GAAU,KAAA;EAAA,KAEV,WAAA,SACF,iBAAA,KACJ,KAAA,UAAe,OAAA,MACf,KAAA,OAAY,GAAA,EAAK,YAAA,KAAiB,OAAA;EAAA,UAEvB,wBAAA;IACf,QAAA;EAAA;EAAA,UAGe,mBAAA;IACf,GAAA;EAAA;EAAA,UAGe,iBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6Bf,GAAA,EAAK,aAAA;;;;;;;;;;;;;;;;;;;;;IAsBL,IAAA,EAAM,cAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"jsx-runtime-BFuFPDzn.d.mts","names":[],"sources":["../../terminal/src/jsx-runtime.ts"],"mappings":";;;;;;;UAeU,sBAAA,SAA+B,aAAA;EAEvC,GAAA;EACA,QAAA,GAAW,OAAA;AAAA;;;;AAsBb;KAfY,kBAAA,GAAqB,WAAA,CAAY,sBAAA;;;;AA8B7C;;;;;AAKA;;;;;KApBY,aAAA,GAAgB,kBAAA;;;;;;;;;;;;;;KAehB,cAAA,GAAiB,kBAAA;;;;kBAKZ,GAAA;EAAA,KACH,OAAA,GAAU,KAAA;EAAA,KAEV,WAAA,SACF,iBAAA,KACJ,KAAA,UAAe,OAAA,MACf,KAAA,OAAY,GAAA,EAAK,YAAA,KAAiB,OAAA;EAAA,UAEvB,wBAAA;IACf,QAAA;EAAA;EAAA,UAGe,mBAAA;IACf,GAAA;EAAA;EAAA,UAGe,iBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6Bf,GAAA,EAAK,aAAA;;;;;;;;;;;;;;;;;;;;;IAsBL,IAAA,EAAM,cAAA;EAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-runtime-D9ZNjMJ2.mjs","names":[],"sources":["../../dom/src/jsx-runtime.ts"],"sourcesContent":["/**\n * JSX automatic runtime for DOM (production)\n * Use with: @jsxImportSource @semajsx/dom\n */\n\nimport { Fragment, jsx, jsxs } from \"@semajsx/core\";\nimport type { ComponentAPI, JSXNode, Ref, VNode, WithKey, WithSignals } from \"@semajsx/core\";\nimport type { Signal } from \"@semajsx/signal\";\nimport type { StyleToken } from \"@semajsx/style\";\n\nexport { jsx, jsxs, Fragment };\n\n/**\n * Class value type - supports strings, StyleTokens, arrays, and conditionals\n */\nexport type ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\n/**\n * HTML attribute types (base definitions without Signal support)\n */\ninterface BaseHTMLAttributes<T = Element> {\n // Ref - special prop for element references\n ref?: Ref<T>;\n\n // Standard attributes\n id?: string;\n className?: ClassValue;\n class?: ClassValue;\n style?: string | Record<string, string | number>;\n title?: string;\n lang?: string;\n dir?: \"ltr\" | \"rtl\" | \"auto\";\n hidden?: boolean;\n tabIndex?: number;\n accessKey?: string;\n contentEditable?: boolean | \"true\" | \"false\";\n draggable?: boolean;\n spellcheck?: boolean;\n\n // Special React-style props\n dangerouslySetInnerHTML?: { __html: string };\n\n // ARIA attributes\n role?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n \"aria-hidden\"?: boolean | \"true\" | \"false\";\n \"aria-expanded\"?: boolean | \"true\" | \"false\";\n \"aria-selected\"?: boolean | \"true\" | \"false\";\n \"aria-checked\"?: boolean | \"true\" | \"false\" | \"mixed\";\n \"aria-disabled\"?: boolean | \"true\" | \"false\";\n \"aria-readonly\"?: boolean | \"true\" | \"false\";\n \"aria-required\"?: boolean | \"true\" | \"false\";\n \"aria-invalid\"?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\";\n \"aria-pressed\"?: boolean | \"true\" | \"false\" | \"mixed\";\n \"aria-current\"?: boolean | \"true\" | \"false\" | \"page\" | \"step\" | \"location\" | \"date\" | \"time\";\n\n // Event handlers (React-style camelCase)\n onClick?: (event: MouseEvent) => void;\n onDblClick?: (event: MouseEvent) => void;\n onMouseDown?: (event: MouseEvent) => void;\n onMouseUp?: (event: MouseEvent) => void;\n onMouseEnter?: (event: MouseEvent) => void;\n onMouseLeave?: (event: MouseEvent) => void;\n onMouseMove?: (event: MouseEvent) => void;\n onMouseOver?: (event: MouseEvent) => void;\n onMouseOut?: (event: MouseEvent) => void;\n onContextMenu?: (event: MouseEvent) => void;\n\n onKeyDown?: (event: KeyboardEvent) => void;\n onKeyUp?: (event: KeyboardEvent) => void;\n onKeyPress?: (event: KeyboardEvent) => void;\n\n onFocus?: (event: FocusEvent) => void;\n onBlur?: (event: FocusEvent) => void;\n\n onChange?: (event: Event) => void;\n onInput?: (event: Event) => void;\n onSubmit?: (event: Event) => void;\n\n onScroll?: (event: Event) => void;\n onWheel?: (event: WheelEvent) => void;\n\n onTouchStart?: (event: TouchEvent) => void;\n onTouchMove?: (event: TouchEvent) => void;\n onTouchEnd?: (event: TouchEvent) => void;\n onTouchCancel?: (event: TouchEvent) => void;\n\n onDragStart?: (event: DragEvent) => void;\n onDrag?: (event: DragEvent) => void;\n onDragEnd?: (event: DragEvent) => void;\n onDragEnter?: (event: DragEvent) => void;\n onDragLeave?: (event: DragEvent) => void;\n onDragOver?: (event: DragEvent) => void;\n onDrop?: (event: DragEvent) => void;\n\n // Event handlers (native DOM lowercase)\n onclick?: (event: MouseEvent) => void;\n ondblclick?: (event: MouseEvent) => void;\n onmousedown?: (event: MouseEvent) => void;\n onmouseup?: (event: MouseEvent) => void;\n onmouseenter?: (event: MouseEvent) => void;\n onmouseleave?: (event: MouseEvent) => void;\n onmousemove?: (event: MouseEvent) => void;\n onmouseover?: (event: MouseEvent) => void;\n onmouseout?: (event: MouseEvent) => void;\n oncontextmenu?: (event: MouseEvent) => void;\n\n onkeydown?: (event: KeyboardEvent) => void;\n onkeyup?: (event: KeyboardEvent) => void;\n onkeypress?: (event: KeyboardEvent) => void;\n\n onfocus?: (event: FocusEvent) => void;\n onblur?: (event: FocusEvent) => void;\n\n onchange?: (event: Event) => void;\n oninput?: (event: Event) => void;\n onsubmit?: (event: Event) => void;\n\n onscroll?: (event: Event) => void;\n onwheel?: (event: WheelEvent) => void;\n\n ontouchstart?: (event: TouchEvent) => void;\n ontouchmove?: (event: TouchEvent) => void;\n ontouchend?: (event: TouchEvent) => void;\n ontouchcancel?: (event: TouchEvent) => void;\n\n ondragstart?: (event: DragEvent) => void;\n ondrag?: (event: DragEvent) => void;\n ondragend?: (event: DragEvent) => void;\n ondragenter?: (event: DragEvent) => void;\n ondragleave?: (event: DragEvent) => void;\n ondragover?: (event: DragEvent) => void;\n ondrop?: (event: DragEvent) => void;\n\n // Children\n children?: JSXNode;\n}\n\n/**\n * HTML attributes with Signal support\n * All non-function properties can accept Signal values\n */\nexport type HTMLAttributes<T = Element> = WithKey<WithSignals<BaseHTMLAttributes<T>>> & {\n // Data attributes support both plain values and Signals\n [dataAttribute: `data-${string}`]:\n | string\n | number\n | boolean\n | Signal<string | number | boolean>\n | undefined;\n};\n\ninterface BaseAnchorHTMLAttributes extends BaseHTMLAttributes<HTMLAnchorElement> {\n href?: string;\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\";\n rel?: string;\n download?: string;\n ping?: string;\n referrerPolicy?:\n | \"no-referrer\"\n | \"no-referrer-when-downgrade\"\n | \"origin\"\n | \"origin-when-cross-origin\"\n | \"same-origin\"\n | \"strict-origin\"\n | \"strict-origin-when-cross-origin\"\n | \"unsafe-url\";\n}\n\nexport type AnchorHTMLAttributes = WithKey<WithSignals<BaseAnchorHTMLAttributes>>;\n\ninterface BaseButtonHTMLAttributes extends BaseHTMLAttributes<HTMLButtonElement> {\n disabled?: boolean;\n type?: \"button\" | \"submit\" | \"reset\";\n value?: string;\n name?: string;\n form?: string;\n formAction?: string;\n formEnctype?: string;\n formMethod?: string;\n formNoValidate?: boolean;\n formTarget?: string;\n}\n\nexport type ButtonHTMLAttributes = WithKey<WithSignals<BaseButtonHTMLAttributes>>;\n\ninterface BaseInputHTMLAttributes extends BaseHTMLAttributes<HTMLInputElement> {\n accept?: string;\n alt?: string;\n autoComplete?: string;\n autoFocus?: boolean;\n capture?: boolean | \"user\" | \"environment\";\n checked?: boolean;\n defaultChecked?: boolean;\n defaultValue?: string | number;\n disabled?: boolean;\n form?: string;\n formAction?: string;\n formEnctype?: string;\n formMethod?: string;\n formNoValidate?: boolean;\n formTarget?: string;\n max?: number | string;\n maxLength?: number;\n min?: number | string;\n minLength?: number;\n multiple?: boolean;\n name?: string;\n pattern?: string;\n placeholder?: string;\n readOnly?: boolean;\n required?: boolean;\n size?: number;\n src?: string;\n step?: number | string;\n type?: string;\n value?: string | number;\n}\n\nexport type InputHTMLAttributes = WithKey<WithSignals<BaseInputHTMLAttributes>>;\n\ninterface BaseTextareaHTMLAttributes extends BaseHTMLAttributes<HTMLTextAreaElement> {\n autoComplete?: string;\n autoFocus?: boolean;\n cols?: number;\n disabled?: boolean;\n form?: string;\n maxLength?: number;\n minLength?: number;\n name?: string;\n placeholder?: string;\n readOnly?: boolean;\n required?: boolean;\n rows?: number;\n value?: string;\n wrap?: \"hard\" | \"soft\" | \"off\";\n}\n\nexport type TextareaHTMLAttributes = WithKey<WithSignals<BaseTextareaHTMLAttributes>>;\n\ninterface BaseSelectHTMLAttributes extends BaseHTMLAttributes<HTMLSelectElement> {\n autoComplete?: string;\n autoFocus?: boolean;\n disabled?: boolean;\n form?: string;\n multiple?: boolean;\n name?: string;\n required?: boolean;\n size?: number;\n value?: string | string[];\n}\n\nexport type SelectHTMLAttributes = WithKey<WithSignals<BaseSelectHTMLAttributes>>;\n\ninterface BaseOptionHTMLAttributes extends BaseHTMLAttributes<HTMLOptionElement> {\n disabled?: boolean;\n label?: string;\n selected?: boolean;\n value?: string | number;\n}\n\nexport type OptionHTMLAttributes = WithKey<WithSignals<BaseOptionHTMLAttributes>>;\n\ninterface BaseLabelHTMLAttributes extends BaseHTMLAttributes<HTMLLabelElement> {\n for?: string;\n htmlFor?: string;\n form?: string;\n}\n\nexport type LabelHTMLAttributes = WithKey<WithSignals<BaseLabelHTMLAttributes>>;\n\ninterface BaseFormHTMLAttributes extends BaseHTMLAttributes<HTMLFormElement> {\n acceptCharset?: string;\n action?: string;\n autoComplete?: string;\n enctype?: string;\n method?: \"get\" | \"post\" | \"dialog\";\n name?: string;\n noValidate?: boolean;\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\";\n}\n\nexport type FormHTMLAttributes = WithKey<WithSignals<BaseFormHTMLAttributes>>;\n\ninterface BaseImgHTMLAttributes extends BaseHTMLAttributes<HTMLImageElement> {\n alt?: string;\n crossOrigin?: \"anonymous\" | \"use-credentials\" | \"\";\n decoding?: \"async\" | \"auto\" | \"sync\";\n height?: number | string;\n loading?: \"eager\" | \"lazy\";\n referrerPolicy?: string;\n sizes?: string;\n src?: string;\n srcSet?: string;\n useMap?: string;\n width?: number | string;\n}\n\nexport type ImgHTMLAttributes = WithKey<WithSignals<BaseImgHTMLAttributes>>;\n\ninterface BaseVideoHTMLAttributes extends BaseHTMLAttributes<HTMLVideoElement> {\n autoPlay?: boolean;\n controls?: boolean;\n crossOrigin?: \"anonymous\" | \"use-credentials\" | \"\";\n height?: number | string;\n loop?: boolean;\n muted?: boolean;\n playsInline?: boolean;\n poster?: string;\n preload?: \"none\" | \"metadata\" | \"auto\" | \"\";\n src?: string;\n width?: number | string;\n}\n\nexport type VideoHTMLAttributes = WithKey<WithSignals<BaseVideoHTMLAttributes>>;\n\ninterface BaseAudioHTMLAttributes extends BaseHTMLAttributes<HTMLAudioElement> {\n autoPlay?: boolean;\n controls?: boolean;\n crossOrigin?: \"anonymous\" | \"use-credentials\" | \"\";\n loop?: boolean;\n muted?: boolean;\n preload?: \"none\" | \"metadata\" | \"auto\" | \"\";\n src?: string;\n}\n\nexport type AudioHTMLAttributes = WithKey<WithSignals<BaseAudioHTMLAttributes>>;\n\ninterface BaseCanvasHTMLAttributes extends BaseHTMLAttributes<HTMLCanvasElement> {\n height?: number | string;\n width?: number | string;\n}\n\nexport type CanvasHTMLAttributes = WithKey<WithSignals<BaseCanvasHTMLAttributes>>;\n\ninterface BaseIframeHTMLAttributes extends BaseHTMLAttributes<HTMLIFrameElement> {\n allow?: string;\n allowFullScreen?: boolean;\n height?: number | string;\n loading?: \"eager\" | \"lazy\";\n name?: string;\n referrerPolicy?: string;\n sandbox?: string;\n src?: string;\n srcDoc?: string;\n width?: number | string;\n}\n\nexport type IframeHTMLAttributes = WithKey<WithSignals<BaseIframeHTMLAttributes>>;\n\ninterface BaseTableHTMLAttributes extends BaseHTMLAttributes<HTMLTableElement> {\n cellPadding?: number | string;\n cellSpacing?: number | string;\n}\n\nexport type TableHTMLAttributes = WithKey<WithSignals<BaseTableHTMLAttributes>>;\n\ninterface BaseTdHTMLAttributes extends BaseHTMLAttributes<HTMLTableCellElement> {\n colSpan?: number;\n headers?: string;\n rowSpan?: number;\n}\n\nexport type TdHTMLAttributes = WithKey<WithSignals<BaseTdHTMLAttributes>>;\n\ninterface BaseThHTMLAttributes extends BaseHTMLAttributes<HTMLTableCellElement> {\n abbr?: string;\n colSpan?: number;\n headers?: string;\n rowSpan?: number;\n scope?: \"col\" | \"row\" | \"colgroup\" | \"rowgroup\";\n}\n\nexport type ThHTMLAttributes = WithKey<WithSignals<BaseThHTMLAttributes>>;\n\ninterface BaseStyleHTMLAttributes extends BaseHTMLAttributes<HTMLStyleElement> {\n media?: string;\n scoped?: boolean;\n type?: string;\n}\n\nexport type StyleHTMLAttributes = WithKey<WithSignals<BaseStyleHTMLAttributes>>;\n\ninterface BaseScriptHTMLAttributes extends BaseHTMLAttributes<HTMLScriptElement> {\n async?: boolean;\n crossOrigin?: \"anonymous\" | \"use-credentials\" | \"\";\n defer?: boolean;\n integrity?: string;\n noModule?: boolean;\n referrerPolicy?: string;\n src?: string;\n type?: string;\n}\n\nexport type ScriptHTMLAttributes = WithKey<WithSignals<BaseScriptHTMLAttributes>>;\n\ninterface BaseLinkHTMLAttributes extends BaseHTMLAttributes<HTMLLinkElement> {\n as?: string;\n crossOrigin?: \"anonymous\" | \"use-credentials\" | \"\";\n href?: string;\n hrefLang?: string;\n integrity?: string;\n media?: string;\n referrerPolicy?: string;\n rel?: string;\n sizes?: string;\n type?: string;\n}\n\nexport type LinkHTMLAttributes = WithKey<WithSignals<BaseLinkHTMLAttributes>>;\n\ninterface BaseMetaHTMLAttributes extends BaseHTMLAttributes<HTMLMetaElement> {\n charSet?: string;\n content?: string;\n httpEquiv?: string;\n name?: string;\n}\n\nexport type MetaHTMLAttributes = WithKey<WithSignals<BaseMetaHTMLAttributes>>;\n\n/**\n * JSX namespace for DOM elements\n */\nexport namespace JSX {\n // JSX factory returns sync VNodes\n export type Element = VNode;\n\n export type ElementType =\n | keyof IntrinsicElements\n | ((props: any) => JSXNode)\n | ((props: any, ctx: ComponentAPI) => JSXNode);\n\n export interface ElementChildrenAttribute {\n children: {};\n }\n\n export interface IntrinsicAttributes {\n key?: string | number;\n }\n\n export interface IntrinsicElements {\n // Document structure\n html: HTMLAttributes<HTMLHtmlElement>;\n head: HTMLAttributes<HTMLHeadElement>;\n body: HTMLAttributes<HTMLBodyElement>;\n title: HTMLAttributes<HTMLTitleElement>;\n meta: MetaHTMLAttributes;\n link: LinkHTMLAttributes;\n style: StyleHTMLAttributes;\n script: ScriptHTMLAttributes;\n\n // Content sectioning\n header: HTMLAttributes<HTMLElement>;\n footer: HTMLAttributes<HTMLElement>;\n main: HTMLAttributes<HTMLElement>;\n nav: HTMLAttributes<HTMLElement>;\n section: HTMLAttributes<HTMLElement>;\n article: HTMLAttributes<HTMLElement>;\n aside: HTMLAttributes<HTMLElement>;\n h1: HTMLAttributes<HTMLHeadingElement>;\n h2: HTMLAttributes<HTMLHeadingElement>;\n h3: HTMLAttributes<HTMLHeadingElement>;\n h4: HTMLAttributes<HTMLHeadingElement>;\n h5: HTMLAttributes<HTMLHeadingElement>;\n h6: HTMLAttributes<HTMLHeadingElement>;\n\n // Text content\n div: HTMLAttributes<HTMLDivElement>;\n p: HTMLAttributes<HTMLParagraphElement>;\n span: HTMLAttributes<HTMLSpanElement>;\n pre: HTMLAttributes<HTMLPreElement>;\n code: HTMLAttributes<HTMLElement>;\n blockquote: HTMLAttributes<HTMLQuoteElement>;\n hr: HTMLAttributes<HTMLHRElement>;\n br: HTMLAttributes<HTMLBRElement>;\n\n // Lists\n ul: HTMLAttributes<HTMLUListElement>;\n ol: HTMLAttributes<HTMLOListElement>;\n li: HTMLAttributes<HTMLLIElement>;\n dl: HTMLAttributes<HTMLDListElement>;\n dt: HTMLAttributes<HTMLElement>;\n dd: HTMLAttributes<HTMLElement>;\n\n // Inline text semantics\n a: AnchorHTMLAttributes;\n strong: HTMLAttributes<HTMLElement>;\n em: HTMLAttributes<HTMLElement>;\n b: HTMLAttributes<HTMLElement>;\n i: HTMLAttributes<HTMLElement>;\n u: HTMLAttributes<HTMLElement>;\n s: HTMLAttributes<HTMLElement>;\n small: HTMLAttributes<HTMLElement>;\n mark: HTMLAttributes<HTMLElement>;\n abbr: HTMLAttributes<HTMLElement>;\n cite: HTMLAttributes<HTMLElement>;\n q: HTMLAttributes<HTMLQuoteElement>;\n sub: HTMLAttributes<HTMLElement>;\n sup: HTMLAttributes<HTMLElement>;\n time: HTMLAttributes<HTMLTimeElement>;\n\n // Forms\n form: FormHTMLAttributes;\n input: InputHTMLAttributes;\n textarea: TextareaHTMLAttributes;\n button: ButtonHTMLAttributes;\n select: SelectHTMLAttributes;\n option: OptionHTMLAttributes;\n optgroup: HTMLAttributes<HTMLOptGroupElement>;\n label: LabelHTMLAttributes;\n fieldset: HTMLAttributes<HTMLFieldSetElement>;\n legend: HTMLAttributes<HTMLLegendElement>;\n\n // Tables\n table: TableHTMLAttributes;\n thead: HTMLAttributes<HTMLTableSectionElement>;\n tbody: HTMLAttributes<HTMLTableSectionElement>;\n tfoot: HTMLAttributes<HTMLTableSectionElement>;\n tr: HTMLAttributes<HTMLTableRowElement>;\n th: ThHTMLAttributes;\n td: TdHTMLAttributes;\n caption: HTMLAttributes<HTMLTableCaptionElement>;\n colgroup: HTMLAttributes<HTMLTableColElement>;\n col: HTMLAttributes<HTMLTableColElement>;\n\n // Media\n img: ImgHTMLAttributes;\n video: VideoHTMLAttributes;\n audio: AudioHTMLAttributes;\n source: HTMLAttributes<HTMLSourceElement>;\n track: HTMLAttributes<HTMLTrackElement>;\n canvas: CanvasHTMLAttributes;\n svg: HTMLAttributes<SVGElement>;\n\n // Embedded content\n iframe: IframeHTMLAttributes;\n embed: HTMLAttributes<HTMLEmbedElement>;\n object: HTMLAttributes<HTMLObjectElement>;\n param: HTMLAttributes<HTMLParamElement>;\n picture: HTMLAttributes<HTMLPictureElement>;\n\n // Interactive elements\n details: HTMLAttributes<HTMLDetailsElement>;\n summary: HTMLAttributes<HTMLElement>;\n dialog: HTMLAttributes<HTMLDialogElement>;\n menu: HTMLAttributes<HTMLMenuElement>;\n\n // Web Components\n slot: HTMLAttributes<HTMLSlotElement>;\n template: HTMLAttributes<HTMLTemplateElement>;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"jsx-runtime-D9ZNjMJ2.mjs","names":[],"sources":["../../dom/src/jsx-runtime.ts"],"sourcesContent":["/**\n * JSX automatic runtime for DOM (production)\n * Use with: @jsxImportSource @semajsx/dom\n */\n\nimport { Forward, Fragment, jsx, jsxs } from \"@semajsx/core\";\nimport type { ComponentAPI, JSXNode, Ref, VNode, WithKey, WithSignals } from \"@semajsx/core\";\nimport type { Signal } from \"@semajsx/signal\";\nimport type { StyleToken } from \"@semajsx/style\";\n\nexport { jsx, jsxs, Forward, Fragment };\n\n/**\n * Class value type - supports strings, StyleTokens, arrays, and conditionals\n */\nexport type ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\n/**\n * HTML attribute types (base definitions without Signal support)\n */\ninterface BaseHTMLAttributes<T = Element> {\n // Ref - special prop for element references\n ref?: Ref<T>;\n\n // Standard attributes\n id?: string;\n className?: ClassValue;\n class?: ClassValue;\n style?: string | Record<string, string | number>;\n title?: string;\n lang?: string;\n dir?: \"ltr\" | \"rtl\" | \"auto\";\n hidden?: boolean;\n tabIndex?: number;\n accessKey?: string;\n contentEditable?: boolean | \"true\" | \"false\";\n draggable?: boolean;\n spellcheck?: boolean;\n\n // Special React-style props\n dangerouslySetInnerHTML?: { __html: string };\n\n // ARIA attributes\n role?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n \"aria-hidden\"?: boolean | \"true\" | \"false\";\n \"aria-expanded\"?: boolean | \"true\" | \"false\";\n \"aria-selected\"?: boolean | \"true\" | \"false\";\n \"aria-checked\"?: boolean | \"true\" | \"false\" | \"mixed\";\n \"aria-disabled\"?: boolean | \"true\" | \"false\";\n \"aria-readonly\"?: boolean | \"true\" | \"false\";\n \"aria-required\"?: boolean | \"true\" | \"false\";\n \"aria-invalid\"?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\";\n \"aria-pressed\"?: boolean | \"true\" | \"false\" | \"mixed\";\n \"aria-current\"?: boolean | \"true\" | \"false\" | \"page\" | \"step\" | \"location\" | \"date\" | \"time\";\n\n // Event handlers (React-style camelCase)\n onClick?: (event: MouseEvent) => void;\n onDblClick?: (event: MouseEvent) => void;\n onMouseDown?: (event: MouseEvent) => void;\n onMouseUp?: (event: MouseEvent) => void;\n onMouseEnter?: (event: MouseEvent) => void;\n onMouseLeave?: (event: MouseEvent) => void;\n onMouseMove?: (event: MouseEvent) => void;\n onMouseOver?: (event: MouseEvent) => void;\n onMouseOut?: (event: MouseEvent) => void;\n onContextMenu?: (event: MouseEvent) => void;\n\n onKeyDown?: (event: KeyboardEvent) => void;\n onKeyUp?: (event: KeyboardEvent) => void;\n onKeyPress?: (event: KeyboardEvent) => void;\n\n onFocus?: (event: FocusEvent) => void;\n onBlur?: (event: FocusEvent) => void;\n\n onChange?: (event: Event) => void;\n onInput?: (event: Event) => void;\n onSubmit?: (event: Event) => void;\n\n onScroll?: (event: Event) => void;\n onWheel?: (event: WheelEvent) => void;\n\n onTouchStart?: (event: TouchEvent) => void;\n onTouchMove?: (event: TouchEvent) => void;\n onTouchEnd?: (event: TouchEvent) => void;\n onTouchCancel?: (event: TouchEvent) => void;\n\n onDragStart?: (event: DragEvent) => void;\n onDrag?: (event: DragEvent) => void;\n onDragEnd?: (event: DragEvent) => void;\n onDragEnter?: (event: DragEvent) => void;\n onDragLeave?: (event: DragEvent) => void;\n onDragOver?: (event: DragEvent) => void;\n onDrop?: (event: DragEvent) => void;\n\n // Event handlers (native DOM lowercase)\n onclick?: (event: MouseEvent) => void;\n ondblclick?: (event: MouseEvent) => void;\n onmousedown?: (event: MouseEvent) => void;\n onmouseup?: (event: MouseEvent) => void;\n onmouseenter?: (event: MouseEvent) => void;\n onmouseleave?: (event: MouseEvent) => void;\n onmousemove?: (event: MouseEvent) => void;\n onmouseover?: (event: MouseEvent) => void;\n onmouseout?: (event: MouseEvent) => void;\n oncontextmenu?: (event: MouseEvent) => void;\n\n onkeydown?: (event: KeyboardEvent) => void;\n onkeyup?: (event: KeyboardEvent) => void;\n onkeypress?: (event: KeyboardEvent) => void;\n\n onfocus?: (event: FocusEvent) => void;\n onblur?: (event: FocusEvent) => void;\n\n onchange?: (event: Event) => void;\n oninput?: (event: Event) => void;\n onsubmit?: (event: Event) => void;\n\n onscroll?: (event: Event) => void;\n onwheel?: (event: WheelEvent) => void;\n\n ontouchstart?: (event: TouchEvent) => void;\n ontouchmove?: (event: TouchEvent) => void;\n ontouchend?: (event: TouchEvent) => void;\n ontouchcancel?: (event: TouchEvent) => void;\n\n ondragstart?: (event: DragEvent) => void;\n ondrag?: (event: DragEvent) => void;\n ondragend?: (event: DragEvent) => void;\n ondragenter?: (event: DragEvent) => void;\n ondragleave?: (event: DragEvent) => void;\n ondragover?: (event: DragEvent) => void;\n ondrop?: (event: DragEvent) => void;\n\n // Children\n children?: JSXNode;\n}\n\n/**\n * HTML attributes with Signal support\n * All non-function properties can accept Signal values\n */\nexport type HTMLAttributes<T = Element> = WithKey<WithSignals<BaseHTMLAttributes<T>>> & {\n // Data attributes support both plain values and Signals\n [dataAttribute: `data-${string}`]:\n | string\n | number\n | boolean\n | Signal<string | number | boolean>\n | undefined;\n};\n\ninterface BaseAnchorHTMLAttributes extends BaseHTMLAttributes<HTMLAnchorElement> {\n href?: string;\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\";\n rel?: string;\n download?: string;\n ping?: string;\n referrerPolicy?:\n | \"no-referrer\"\n | \"no-referrer-when-downgrade\"\n | \"origin\"\n | \"origin-when-cross-origin\"\n | \"same-origin\"\n | \"strict-origin\"\n | \"strict-origin-when-cross-origin\"\n | \"unsafe-url\";\n}\n\nexport type AnchorHTMLAttributes = WithKey<WithSignals<BaseAnchorHTMLAttributes>>;\n\ninterface BaseButtonHTMLAttributes extends BaseHTMLAttributes<HTMLButtonElement> {\n disabled?: boolean;\n type?: \"button\" | \"submit\" | \"reset\";\n value?: string;\n name?: string;\n form?: string;\n formAction?: string;\n formEnctype?: string;\n formMethod?: string;\n formNoValidate?: boolean;\n formTarget?: string;\n}\n\nexport type ButtonHTMLAttributes = WithKey<WithSignals<BaseButtonHTMLAttributes>>;\n\ninterface BaseInputHTMLAttributes extends BaseHTMLAttributes<HTMLInputElement> {\n accept?: string;\n alt?: string;\n autoComplete?: string;\n autoFocus?: boolean;\n capture?: boolean | \"user\" | \"environment\";\n checked?: boolean;\n defaultChecked?: boolean;\n defaultValue?: string | number;\n disabled?: boolean;\n form?: string;\n formAction?: string;\n formEnctype?: string;\n formMethod?: string;\n formNoValidate?: boolean;\n formTarget?: string;\n max?: number | string;\n maxLength?: number;\n min?: number | string;\n minLength?: number;\n multiple?: boolean;\n name?: string;\n pattern?: string;\n placeholder?: string;\n readOnly?: boolean;\n required?: boolean;\n size?: number;\n src?: string;\n step?: number | string;\n type?: string;\n value?: string | number;\n}\n\nexport type InputHTMLAttributes = WithKey<WithSignals<BaseInputHTMLAttributes>>;\n\ninterface BaseTextareaHTMLAttributes extends BaseHTMLAttributes<HTMLTextAreaElement> {\n autoComplete?: string;\n autoFocus?: boolean;\n cols?: number;\n disabled?: boolean;\n form?: string;\n maxLength?: number;\n minLength?: number;\n name?: string;\n placeholder?: string;\n readOnly?: boolean;\n required?: boolean;\n rows?: number;\n value?: string;\n wrap?: \"hard\" | \"soft\" | \"off\";\n}\n\nexport type TextareaHTMLAttributes = WithKey<WithSignals<BaseTextareaHTMLAttributes>>;\n\ninterface BaseSelectHTMLAttributes extends BaseHTMLAttributes<HTMLSelectElement> {\n autoComplete?: string;\n autoFocus?: boolean;\n disabled?: boolean;\n form?: string;\n multiple?: boolean;\n name?: string;\n required?: boolean;\n size?: number;\n value?: string | string[];\n}\n\nexport type SelectHTMLAttributes = WithKey<WithSignals<BaseSelectHTMLAttributes>>;\n\ninterface BaseOptionHTMLAttributes extends BaseHTMLAttributes<HTMLOptionElement> {\n disabled?: boolean;\n label?: string;\n selected?: boolean;\n value?: string | number;\n}\n\nexport type OptionHTMLAttributes = WithKey<WithSignals<BaseOptionHTMLAttributes>>;\n\ninterface BaseLabelHTMLAttributes extends BaseHTMLAttributes<HTMLLabelElement> {\n for?: string;\n htmlFor?: string;\n form?: string;\n}\n\nexport type LabelHTMLAttributes = WithKey<WithSignals<BaseLabelHTMLAttributes>>;\n\ninterface BaseFormHTMLAttributes extends BaseHTMLAttributes<HTMLFormElement> {\n acceptCharset?: string;\n action?: string;\n autoComplete?: string;\n enctype?: string;\n method?: \"get\" | \"post\" | \"dialog\";\n name?: string;\n noValidate?: boolean;\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\";\n}\n\nexport type FormHTMLAttributes = WithKey<WithSignals<BaseFormHTMLAttributes>>;\n\ninterface BaseImgHTMLAttributes extends BaseHTMLAttributes<HTMLImageElement> {\n alt?: string;\n crossOrigin?: \"anonymous\" | \"use-credentials\" | \"\";\n decoding?: \"async\" | \"auto\" | \"sync\";\n height?: number | string;\n loading?: \"eager\" | \"lazy\";\n referrerPolicy?: string;\n sizes?: string;\n src?: string;\n srcSet?: string;\n useMap?: string;\n width?: number | string;\n}\n\nexport type ImgHTMLAttributes = WithKey<WithSignals<BaseImgHTMLAttributes>>;\n\ninterface BaseVideoHTMLAttributes extends BaseHTMLAttributes<HTMLVideoElement> {\n autoPlay?: boolean;\n controls?: boolean;\n crossOrigin?: \"anonymous\" | \"use-credentials\" | \"\";\n height?: number | string;\n loop?: boolean;\n muted?: boolean;\n playsInline?: boolean;\n poster?: string;\n preload?: \"none\" | \"metadata\" | \"auto\" | \"\";\n src?: string;\n width?: number | string;\n}\n\nexport type VideoHTMLAttributes = WithKey<WithSignals<BaseVideoHTMLAttributes>>;\n\ninterface BaseAudioHTMLAttributes extends BaseHTMLAttributes<HTMLAudioElement> {\n autoPlay?: boolean;\n controls?: boolean;\n crossOrigin?: \"anonymous\" | \"use-credentials\" | \"\";\n loop?: boolean;\n muted?: boolean;\n preload?: \"none\" | \"metadata\" | \"auto\" | \"\";\n src?: string;\n}\n\nexport type AudioHTMLAttributes = WithKey<WithSignals<BaseAudioHTMLAttributes>>;\n\ninterface BaseCanvasHTMLAttributes extends BaseHTMLAttributes<HTMLCanvasElement> {\n height?: number | string;\n width?: number | string;\n}\n\nexport type CanvasHTMLAttributes = WithKey<WithSignals<BaseCanvasHTMLAttributes>>;\n\ninterface BaseIframeHTMLAttributes extends BaseHTMLAttributes<HTMLIFrameElement> {\n allow?: string;\n allowFullScreen?: boolean;\n height?: number | string;\n loading?: \"eager\" | \"lazy\";\n name?: string;\n referrerPolicy?: string;\n sandbox?: string;\n src?: string;\n srcDoc?: string;\n width?: number | string;\n}\n\nexport type IframeHTMLAttributes = WithKey<WithSignals<BaseIframeHTMLAttributes>>;\n\ninterface BaseTableHTMLAttributes extends BaseHTMLAttributes<HTMLTableElement> {\n cellPadding?: number | string;\n cellSpacing?: number | string;\n}\n\nexport type TableHTMLAttributes = WithKey<WithSignals<BaseTableHTMLAttributes>>;\n\ninterface BaseTdHTMLAttributes extends BaseHTMLAttributes<HTMLTableCellElement> {\n colSpan?: number;\n headers?: string;\n rowSpan?: number;\n}\n\nexport type TdHTMLAttributes = WithKey<WithSignals<BaseTdHTMLAttributes>>;\n\ninterface BaseThHTMLAttributes extends BaseHTMLAttributes<HTMLTableCellElement> {\n abbr?: string;\n colSpan?: number;\n headers?: string;\n rowSpan?: number;\n scope?: \"col\" | \"row\" | \"colgroup\" | \"rowgroup\";\n}\n\nexport type ThHTMLAttributes = WithKey<WithSignals<BaseThHTMLAttributes>>;\n\ninterface BaseStyleHTMLAttributes extends BaseHTMLAttributes<HTMLStyleElement> {\n media?: string;\n scoped?: boolean;\n type?: string;\n}\n\nexport type StyleHTMLAttributes = WithKey<WithSignals<BaseStyleHTMLAttributes>>;\n\ninterface BaseScriptHTMLAttributes extends BaseHTMLAttributes<HTMLScriptElement> {\n async?: boolean;\n crossOrigin?: \"anonymous\" | \"use-credentials\" | \"\";\n defer?: boolean;\n integrity?: string;\n noModule?: boolean;\n referrerPolicy?: string;\n src?: string;\n type?: string;\n}\n\nexport type ScriptHTMLAttributes = WithKey<WithSignals<BaseScriptHTMLAttributes>>;\n\ninterface BaseLinkHTMLAttributes extends BaseHTMLAttributes<HTMLLinkElement> {\n as?: string;\n crossOrigin?: \"anonymous\" | \"use-credentials\" | \"\";\n href?: string;\n hrefLang?: string;\n integrity?: string;\n media?: string;\n referrerPolicy?: string;\n rel?: string;\n sizes?: string;\n type?: string;\n}\n\nexport type LinkHTMLAttributes = WithKey<WithSignals<BaseLinkHTMLAttributes>>;\n\ninterface BaseMetaHTMLAttributes extends BaseHTMLAttributes<HTMLMetaElement> {\n charSet?: string;\n content?: string;\n httpEquiv?: string;\n name?: string;\n}\n\nexport type MetaHTMLAttributes = WithKey<WithSignals<BaseMetaHTMLAttributes>>;\n\n/**\n * SVG element attributes — permissive to cover SVG's large attribute set\n */\nexport type SVGAttributes = HTMLAttributes<SVGElement> & {\n [key: string]: unknown;\n};\n\n/**\n * JSX namespace for DOM elements\n */\nexport namespace JSX {\n // JSX factory returns sync VNodes\n export type Element = VNode;\n\n export type ElementType =\n | keyof IntrinsicElements\n | ((props: any) => JSXNode)\n | ((props: any, ctx: ComponentAPI) => JSXNode);\n\n export interface ElementChildrenAttribute {\n children: {};\n }\n\n export interface IntrinsicAttributes {\n key?: string | number;\n }\n\n export interface IntrinsicElements {\n // Document structure\n html: HTMLAttributes<HTMLHtmlElement>;\n head: HTMLAttributes<HTMLHeadElement>;\n body: HTMLAttributes<HTMLBodyElement>;\n title: HTMLAttributes<HTMLTitleElement>;\n meta: MetaHTMLAttributes;\n link: LinkHTMLAttributes;\n style: StyleHTMLAttributes;\n script: ScriptHTMLAttributes;\n\n // Content sectioning\n header: HTMLAttributes<HTMLElement>;\n footer: HTMLAttributes<HTMLElement>;\n main: HTMLAttributes<HTMLElement>;\n nav: HTMLAttributes<HTMLElement>;\n section: HTMLAttributes<HTMLElement>;\n article: HTMLAttributes<HTMLElement>;\n aside: HTMLAttributes<HTMLElement>;\n h1: HTMLAttributes<HTMLHeadingElement>;\n h2: HTMLAttributes<HTMLHeadingElement>;\n h3: HTMLAttributes<HTMLHeadingElement>;\n h4: HTMLAttributes<HTMLHeadingElement>;\n h5: HTMLAttributes<HTMLHeadingElement>;\n h6: HTMLAttributes<HTMLHeadingElement>;\n\n // Text content\n div: HTMLAttributes<HTMLDivElement>;\n p: HTMLAttributes<HTMLParagraphElement>;\n span: HTMLAttributes<HTMLSpanElement>;\n pre: HTMLAttributes<HTMLPreElement>;\n code: HTMLAttributes<HTMLElement>;\n blockquote: HTMLAttributes<HTMLQuoteElement>;\n hr: HTMLAttributes<HTMLHRElement>;\n br: HTMLAttributes<HTMLBRElement>;\n\n // Lists\n ul: HTMLAttributes<HTMLUListElement>;\n ol: HTMLAttributes<HTMLOListElement>;\n li: HTMLAttributes<HTMLLIElement>;\n dl: HTMLAttributes<HTMLDListElement>;\n dt: HTMLAttributes<HTMLElement>;\n dd: HTMLAttributes<HTMLElement>;\n\n // Inline text semantics\n a: AnchorHTMLAttributes;\n strong: HTMLAttributes<HTMLElement>;\n em: HTMLAttributes<HTMLElement>;\n b: HTMLAttributes<HTMLElement>;\n i: HTMLAttributes<HTMLElement>;\n u: HTMLAttributes<HTMLElement>;\n s: HTMLAttributes<HTMLElement>;\n small: HTMLAttributes<HTMLElement>;\n mark: HTMLAttributes<HTMLElement>;\n abbr: HTMLAttributes<HTMLElement>;\n cite: HTMLAttributes<HTMLElement>;\n q: HTMLAttributes<HTMLQuoteElement>;\n sub: HTMLAttributes<HTMLElement>;\n sup: HTMLAttributes<HTMLElement>;\n time: HTMLAttributes<HTMLTimeElement>;\n\n // Forms\n form: FormHTMLAttributes;\n input: InputHTMLAttributes;\n textarea: TextareaHTMLAttributes;\n button: ButtonHTMLAttributes;\n select: SelectHTMLAttributes;\n option: OptionHTMLAttributes;\n optgroup: HTMLAttributes<HTMLOptGroupElement>;\n label: LabelHTMLAttributes;\n fieldset: HTMLAttributes<HTMLFieldSetElement>;\n legend: HTMLAttributes<HTMLLegendElement>;\n\n // Tables\n table: TableHTMLAttributes;\n thead: HTMLAttributes<HTMLTableSectionElement>;\n tbody: HTMLAttributes<HTMLTableSectionElement>;\n tfoot: HTMLAttributes<HTMLTableSectionElement>;\n tr: HTMLAttributes<HTMLTableRowElement>;\n th: ThHTMLAttributes;\n td: TdHTMLAttributes;\n caption: HTMLAttributes<HTMLTableCaptionElement>;\n colgroup: HTMLAttributes<HTMLTableColElement>;\n col: HTMLAttributes<HTMLTableColElement>;\n\n // Media\n img: ImgHTMLAttributes;\n video: VideoHTMLAttributes;\n audio: AudioHTMLAttributes;\n source: HTMLAttributes<HTMLSourceElement>;\n track: HTMLAttributes<HTMLTrackElement>;\n canvas: CanvasHTMLAttributes;\n svg: SVGAttributes;\n\n // SVG child elements\n circle: SVGAttributes;\n clipPath: SVGAttributes;\n defs: SVGAttributes;\n ellipse: SVGAttributes;\n g: SVGAttributes;\n line: SVGAttributes;\n linearGradient: SVGAttributes;\n mask: SVGAttributes;\n path: SVGAttributes;\n polygon: SVGAttributes;\n polyline: SVGAttributes;\n radialGradient: SVGAttributes;\n rect: SVGAttributes;\n stop: SVGAttributes;\n text: SVGAttributes;\n use: SVGAttributes;\n\n // Embedded content\n iframe: IframeHTMLAttributes;\n embed: HTMLAttributes<HTMLEmbedElement>;\n object: HTMLAttributes<HTMLObjectElement>;\n param: HTMLAttributes<HTMLParamElement>;\n picture: HTMLAttributes<HTMLPictureElement>;\n\n // Interactive elements\n details: HTMLAttributes<HTMLDetailsElement>;\n summary: HTMLAttributes<HTMLElement>;\n dialog: HTMLAttributes<HTMLDialogElement>;\n menu: HTMLAttributes<HTMLMenuElement>;\n\n // Web Components\n slot: HTMLAttributes<HTMLSlotElement>;\n template: HTMLAttributes<HTMLTemplateElement>;\n }\n}\n"],"mappings":""}