@san-siva/blogkit 1.0.11 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/README.md +64 -13
  2. package/dist/cjs/components/Blog.js +3 -118
  3. package/dist/cjs/components/Blog.js.map +1 -1
  4. package/dist/cjs/components/BlogHeader.js +4 -4
  5. package/dist/cjs/components/BlogHeader.js.map +1 -1
  6. package/dist/cjs/components/BlogLink.js +4 -23
  7. package/dist/cjs/components/BlogLink.js.map +1 -1
  8. package/dist/cjs/components/BlogSection.js +4 -29
  9. package/dist/cjs/components/BlogSection.js.map +1 -1
  10. package/dist/cjs/components/Callout.js +3 -4
  11. package/dist/cjs/components/Callout.js.map +1 -1
  12. package/dist/cjs/components/CodeBlock.js +3 -25
  13. package/dist/cjs/components/CodeBlock.js.map +1 -1
  14. package/dist/cjs/components/Mermaid.js +3 -46
  15. package/dist/cjs/components/Mermaid.js.map +1 -1
  16. package/dist/cjs/components/Table.js +2 -7
  17. package/dist/cjs/components/Table.js.map +1 -1
  18. package/dist/cjs/dynamicComponents/BlogDynamic.js +167 -0
  19. package/dist/cjs/dynamicComponents/BlogDynamic.js.map +1 -0
  20. package/dist/cjs/dynamicComponents/BlogHeaderDynamic.js +13 -0
  21. package/dist/cjs/dynamicComponents/BlogHeaderDynamic.js.map +1 -0
  22. package/dist/cjs/dynamicComponents/BlogLinkDynamic.js +35 -0
  23. package/dist/cjs/dynamicComponents/BlogLinkDynamic.js.map +1 -0
  24. package/dist/cjs/dynamicComponents/BlogSectionDynamic.js +50 -0
  25. package/dist/cjs/dynamicComponents/BlogSectionDynamic.js.map +1 -0
  26. package/dist/cjs/dynamicComponents/CalloutDynamic.js +14 -0
  27. package/dist/cjs/dynamicComponents/CalloutDynamic.js.map +1 -0
  28. package/dist/cjs/dynamicComponents/CodeBlockDynamic.js +38 -0
  29. package/dist/cjs/dynamicComponents/CodeBlockDynamic.js.map +1 -0
  30. package/dist/cjs/dynamicComponents/MermaidDynamic.js +59 -0
  31. package/dist/cjs/dynamicComponents/MermaidDynamic.js.map +1 -0
  32. package/dist/cjs/dynamicComponents/TableDynamic.js +18 -0
  33. package/dist/cjs/dynamicComponents/TableDynamic.js.map +1 -0
  34. package/dist/cjs/index.css +2 -0
  35. package/dist/cjs/index.css.map +1 -0
  36. package/dist/cjs/staticComponents/BlogLinkStatic.js +17 -0
  37. package/dist/cjs/staticComponents/BlogLinkStatic.js.map +1 -0
  38. package/dist/cjs/staticComponents/BlogSectionStatic.js +19 -0
  39. package/dist/cjs/staticComponents/BlogSectionStatic.js.map +1 -0
  40. package/dist/cjs/staticComponents/BlogStatic.js +13 -0
  41. package/dist/cjs/staticComponents/BlogStatic.js.map +1 -0
  42. package/dist/cjs/staticComponents/CodeBlockStatic.js +13 -0
  43. package/dist/cjs/staticComponents/CodeBlockStatic.js.map +1 -0
  44. package/dist/cjs/staticComponents/MermaidStatic.js +13 -0
  45. package/dist/cjs/staticComponents/MermaidStatic.js.map +1 -0
  46. package/dist/cjs/styles/Blog.module.scss.js +0 -4
  47. package/dist/cjs/styles/Blog.module.scss.js.map +1 -1
  48. package/dist/cjs/styles/BlogHeader.module.scss.js +0 -4
  49. package/dist/cjs/styles/BlogHeader.module.scss.js.map +1 -1
  50. package/dist/cjs/styles/BlogLink.module.scss.js +0 -4
  51. package/dist/cjs/styles/BlogLink.module.scss.js.map +1 -1
  52. package/dist/cjs/styles/BlogSection.module.scss.js +0 -4
  53. package/dist/cjs/styles/BlogSection.module.scss.js.map +1 -1
  54. package/dist/cjs/styles/Callout.module.scss.js +0 -4
  55. package/dist/cjs/styles/Callout.module.scss.js.map +1 -1
  56. package/dist/cjs/styles/CodeBlock.module.scss.js +1 -5
  57. package/dist/cjs/styles/CodeBlock.module.scss.js.map +1 -1
  58. package/dist/cjs/styles/Mermaid.module.scss.js +0 -4
  59. package/dist/cjs/styles/Mermaid.module.scss.js.map +1 -1
  60. package/dist/cjs/styles/Table.module.scss.js +0 -4
  61. package/dist/cjs/styles/Table.module.scss.js.map +1 -1
  62. package/dist/esm/components/Blog.js +5 -120
  63. package/dist/esm/components/Blog.js.map +1 -1
  64. package/dist/esm/components/BlogHeader.js +5 -5
  65. package/dist/esm/components/BlogHeader.js.map +1 -1
  66. package/dist/esm/components/BlogLink.js +6 -25
  67. package/dist/esm/components/BlogLink.js.map +1 -1
  68. package/dist/esm/components/BlogSection.js +6 -31
  69. package/dist/esm/components/BlogSection.js.map +1 -1
  70. package/dist/esm/components/Callout.js +4 -5
  71. package/dist/esm/components/Callout.js.map +1 -1
  72. package/dist/esm/components/CodeBlock.js +5 -27
  73. package/dist/esm/components/CodeBlock.js.map +1 -1
  74. package/dist/esm/components/Mermaid.js +5 -48
  75. package/dist/esm/components/Mermaid.js.map +1 -1
  76. package/dist/esm/components/Table.js +3 -8
  77. package/dist/esm/components/Table.js.map +1 -1
  78. package/dist/esm/dynamicComponents/BlogDynamic.js +163 -0
  79. package/dist/esm/dynamicComponents/BlogDynamic.js.map +1 -0
  80. package/dist/esm/dynamicComponents/BlogHeaderDynamic.js +9 -0
  81. package/dist/esm/dynamicComponents/BlogHeaderDynamic.js.map +1 -0
  82. package/dist/esm/dynamicComponents/BlogLinkDynamic.js +31 -0
  83. package/dist/esm/dynamicComponents/BlogLinkDynamic.js.map +1 -0
  84. package/dist/esm/dynamicComponents/BlogSectionDynamic.js +46 -0
  85. package/dist/esm/dynamicComponents/BlogSectionDynamic.js.map +1 -0
  86. package/dist/esm/dynamicComponents/CalloutDynamic.js +10 -0
  87. package/dist/esm/dynamicComponents/CalloutDynamic.js.map +1 -0
  88. package/dist/esm/dynamicComponents/CodeBlockDynamic.js +34 -0
  89. package/dist/esm/dynamicComponents/CodeBlockDynamic.js.map +1 -0
  90. package/dist/esm/dynamicComponents/MermaidDynamic.js +55 -0
  91. package/dist/esm/dynamicComponents/MermaidDynamic.js.map +1 -0
  92. package/dist/esm/dynamicComponents/TableDynamic.js +14 -0
  93. package/dist/esm/dynamicComponents/TableDynamic.js.map +1 -0
  94. package/dist/esm/index.css +2 -0
  95. package/dist/esm/index.css.map +1 -0
  96. package/dist/esm/staticComponents/BlogLinkStatic.js +13 -0
  97. package/dist/esm/staticComponents/BlogLinkStatic.js.map +1 -0
  98. package/dist/esm/staticComponents/BlogSectionStatic.js +15 -0
  99. package/dist/esm/staticComponents/BlogSectionStatic.js.map +1 -0
  100. package/dist/esm/staticComponents/BlogStatic.js +9 -0
  101. package/dist/esm/staticComponents/BlogStatic.js.map +1 -0
  102. package/dist/esm/staticComponents/CodeBlockStatic.js +9 -0
  103. package/dist/esm/staticComponents/CodeBlockStatic.js.map +1 -0
  104. package/dist/esm/staticComponents/MermaidStatic.js +9 -0
  105. package/dist/esm/staticComponents/MermaidStatic.js.map +1 -0
  106. package/dist/esm/styles/Blog.module.scss.js +0 -4
  107. package/dist/esm/styles/Blog.module.scss.js.map +1 -1
  108. package/dist/esm/styles/BlogHeader.module.scss.js +0 -4
  109. package/dist/esm/styles/BlogHeader.module.scss.js.map +1 -1
  110. package/dist/esm/styles/BlogLink.module.scss.js +0 -4
  111. package/dist/esm/styles/BlogLink.module.scss.js.map +1 -1
  112. package/dist/esm/styles/BlogSection.module.scss.js +0 -4
  113. package/dist/esm/styles/BlogSection.module.scss.js.map +1 -1
  114. package/dist/esm/styles/Callout.module.scss.js +0 -4
  115. package/dist/esm/styles/Callout.module.scss.js.map +1 -1
  116. package/dist/esm/styles/CodeBlock.module.scss.js +1 -5
  117. package/dist/esm/styles/CodeBlock.module.scss.js.map +1 -1
  118. package/dist/esm/styles/Mermaid.module.scss.js +0 -4
  119. package/dist/esm/styles/Mermaid.module.scss.js.map +1 -1
  120. package/dist/esm/styles/Table.module.scss.js +0 -4
  121. package/dist/esm/styles/Table.module.scss.js.map +1 -1
  122. package/dist/types/components/Blog.d.ts +0 -4
  123. package/dist/types/components/Blog.d.ts.map +1 -1
  124. package/dist/types/components/BlogHeader.d.ts +2 -2
  125. package/dist/types/components/BlogHeader.d.ts.map +1 -1
  126. package/dist/types/components/BlogLink.d.ts +2 -2
  127. package/dist/types/components/BlogLink.d.ts.map +1 -1
  128. package/dist/types/components/BlogSection.d.ts +5 -4
  129. package/dist/types/components/BlogSection.d.ts.map +1 -1
  130. package/dist/types/components/Callout.d.ts +1 -1
  131. package/dist/types/components/Callout.d.ts.map +1 -1
  132. package/dist/types/components/CodeBlock.d.ts +2 -3
  133. package/dist/types/components/CodeBlock.d.ts.map +1 -1
  134. package/dist/types/components/Mermaid.d.ts.map +1 -1
  135. package/dist/types/components/Table.d.ts.map +1 -1
  136. package/dist/types/components/index.d.ts +0 -1
  137. package/dist/types/components/index.d.ts.map +1 -1
  138. package/dist/types/dynamicComponents/BlogDynamic.d.ts +12 -0
  139. package/dist/types/dynamicComponents/BlogDynamic.d.ts.map +1 -0
  140. package/dist/types/dynamicComponents/BlogHeaderDynamic.d.ts +8 -0
  141. package/dist/types/dynamicComponents/BlogHeaderDynamic.d.ts.map +1 -0
  142. package/dist/types/dynamicComponents/BlogLinkDynamic.d.ts +9 -0
  143. package/dist/types/dynamicComponents/BlogLinkDynamic.d.ts.map +1 -0
  144. package/dist/types/dynamicComponents/BlogSectionDynamic.d.ts +11 -0
  145. package/dist/types/dynamicComponents/BlogSectionDynamic.d.ts.map +1 -0
  146. package/dist/types/dynamicComponents/CalloutDynamic.d.ts +10 -0
  147. package/dist/types/dynamicComponents/CalloutDynamic.d.ts.map +1 -0
  148. package/dist/types/dynamicComponents/CodeBlockDynamic.d.ts +10 -0
  149. package/dist/types/dynamicComponents/CodeBlockDynamic.d.ts.map +1 -0
  150. package/dist/types/dynamicComponents/MermaidDynamic.d.ts +9 -0
  151. package/dist/types/dynamicComponents/MermaidDynamic.d.ts.map +1 -0
  152. package/dist/types/dynamicComponents/TableDynamic.d.ts +10 -0
  153. package/dist/types/dynamicComponents/TableDynamic.d.ts.map +1 -0
  154. package/dist/types/index.d.ts +0 -1
  155. package/dist/types/index.d.ts.map +1 -1
  156. package/dist/types/staticComponents/BlogLinkStatic.d.ts +9 -0
  157. package/dist/types/staticComponents/BlogLinkStatic.d.ts.map +1 -0
  158. package/dist/types/staticComponents/BlogSectionStatic.d.ts +10 -0
  159. package/dist/types/staticComponents/BlogSectionStatic.d.ts.map +1 -0
  160. package/dist/types/staticComponents/BlogStatic.d.ts +7 -0
  161. package/dist/types/staticComponents/BlogStatic.d.ts.map +1 -0
  162. package/dist/types/staticComponents/CodeBlockStatic.d.ts +9 -0
  163. package/dist/types/staticComponents/CodeBlockStatic.d.ts.map +1 -0
  164. package/dist/types/staticComponents/MermaidStatic.d.ts +9 -0
  165. package/dist/types/staticComponents/MermaidStatic.d.ts.map +1 -0
  166. package/package.json +8 -2
  167. package/src/components/Blog.tsx +7 -195
  168. package/src/components/BlogHeader.tsx +10 -23
  169. package/src/components/BlogLink.tsx +28 -58
  170. package/src/components/BlogSection.tsx +32 -57
  171. package/src/components/Callout.tsx +12 -11
  172. package/src/components/CodeBlock.tsx +23 -55
  173. package/src/components/Mermaid.tsx +21 -55
  174. package/src/components/Table.tsx +7 -34
  175. package/src/components/index.ts +0 -2
  176. package/src/dynamicComponents/BlogDynamic.tsx +257 -0
  177. package/src/dynamicComponents/BlogHeaderDynamic.tsx +32 -0
  178. package/src/dynamicComponents/BlogLinkDynamic.tsx +74 -0
  179. package/src/dynamicComponents/BlogSectionDynamic.tsx +90 -0
  180. package/src/dynamicComponents/CalloutDynamic.tsx +27 -0
  181. package/src/dynamicComponents/CodeBlockDynamic.tsx +76 -0
  182. package/src/dynamicComponents/MermaidDynamic.tsx +78 -0
  183. package/src/dynamicComponents/TableDynamic.tsx +54 -0
  184. package/src/index.ts +0 -3
  185. package/src/staticComponents/BlogLinkStatic.tsx +45 -0
  186. package/src/staticComponents/BlogSectionStatic.tsx +40 -0
  187. package/src/staticComponents/BlogStatic.tsx +16 -0
  188. package/src/staticComponents/CodeBlockStatic.tsx +34 -0
  189. package/src/staticComponents/MermaidStatic.tsx +26 -0
  190. package/src/styles/Blog.module.scss +17 -7
  191. package/src/styles/CodeBlock.module.scss +46 -41
  192. package/src/styles/CodeBlock.module.scss.d.ts +1 -0
  193. package/dist/cjs/node_modules/style-inject/dist/style-inject.es.js +0 -33
  194. package/dist/cjs/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
  195. package/dist/esm/node_modules/style-inject/dist/style-inject.es.js +0 -29
  196. package/dist/esm/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
@@ -3,15 +3,10 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
- var Table_module = require('../styles/Table.module.scss.js');
6
+ var TableDynamic = require('../dynamicComponents/TableDynamic.js');
7
7
 
8
8
  const Table = ({ rows = [], headers = [], hasMarginUp = false, hasMarginDown = false, }) => {
9
- const columnCount = headers.length;
10
- return (jsxRuntime.jsxs("div", { className: `${Table_module.default.table}
11
- ${hasMarginUp ? Table_module.default['margin-top--1'] : ''}
12
- ${hasMarginDown ? Table_module.default['margin-bottom--2'] : ''}`, style: {
13
- gridTemplateColumns: `repeat(${columnCount}, 1fr)`,
14
- }, children: [jsxRuntime.jsx("div", { className: `${Table_module.default['table__header']}`, children: headers.map((header, index) => (jsxRuntime.jsx("div", { className: `${Table_module.default['table__header__cell']}`, children: header }, typeof header === 'string' ? header : index))) }), rows.map((row, index) => (jsxRuntime.jsx("div", { className: `${Table_module.default['table__row']}`, children: row.map((cell, cellIndex) => (jsxRuntime.jsx("div", { className: `${Table_module.default['table__row__cell']}`, children: cell }, typeof cell === 'string' ? cell : cellIndex))) }, index)))] }));
9
+ return (jsxRuntime.jsx(TableDynamic.default, { rows: rows, headers: headers, hasMarginUp: hasMarginUp, hasMarginDown: hasMarginDown }));
15
10
  };
16
11
 
17
12
  exports.default = Table;
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sources":["../../../src/components/Table.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport styles from '../styles/Table.module.scss';\n\ninterface TableProperties {\n\trows?: ReactNode[][];\n\theaders?: ReactNode[];\n\thasMarginUp?: boolean;\n\thasMarginDown?: boolean;\n}\n\nconst Table = ({\n\trows = [],\n\theaders = [],\n\thasMarginUp = false,\n\thasMarginDown = false,\n}: TableProperties) => {\n\tconst columnCount = headers.length;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`${styles.table}\n\t\t\t\t${hasMarginUp ? styles['margin-top--1'] : ''}\n\t\t\t\t${hasMarginDown ? styles['margin-bottom--2'] : ''}`}\n\t\t\tstyle={{\n\t\t\t\tgridTemplateColumns: `repeat(${columnCount}, 1fr)`,\n\t\t\t}}\n\t\t>\n\t\t\t<div className={`${styles['table__header']}`}>\n\t\t\t\t{headers.map((header, index) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={typeof header === 'string' ? header : index}\n\t\t\t\t\t\tclassName={`${styles['table__header__cell']}`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{header}\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t{rows.map((row, index) => (\n\t\t\t\t<div key={index} className={`${styles['table__row']}`}>\n\t\t\t\t\t{row.map((cell, cellIndex) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={typeof cell === 'string' ? cell : cellIndex}\n\t\t\t\t\t\t\tclassName={`${styles['table__row__cell']}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{cell}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n\nexport default Table;\n"],"names":["_jsxs","styles","_jsx"],"mappings":";;;;;;;AAUA,MAAM,KAAK,GAAG,CAAC,EACd,IAAI,GAAG,EAAE,EACT,OAAO,GAAG,EAAE,EACZ,WAAW,GAAG,KAAK,EACnB,aAAa,GAAG,KAAK,GACJ,KAAI;AACrB,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM;AAElC,IAAA,QACCA,eAAA,CAAA,KAAA,EAAA,EACC,SAAS,EAAE,CAAA,EAAGC,oBAAM,CAAC,KAAK;MACvB,WAAW,GAAGA,oBAAM,CAAC,eAAe,CAAC,GAAG,EAAE;AAC1C,IAAA,EAAA,aAAa,GAAGA,oBAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAA,CAAE,EACpD,KAAK,EAAE;YACN,mBAAmB,EAAE,CAAA,OAAA,EAAU,WAAW,CAAA,MAAA,CAAQ;SAClD,EAAA,QAAA,EAAA,CAEDC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAA,EAAGD,oBAAM,CAAC,eAAe,CAAC,CAAA,CAAE,EAAA,QAAA,EAC1C,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,MAC1BC,cAAA,CAAA,KAAA,EAAA,EAEC,SAAS,EAAE,CAAA,EAAGD,oBAAM,CAAC,qBAAqB,CAAC,CAAA,CAAE,EAAA,QAAA,EAE5C,MAAM,EAAA,EAHF,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,KAAK,CAI3C,CACN,CAAC,EAAA,CACG,EACL,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,MACpBC,cAAA,CAAA,KAAA,EAAA,EAAiB,SAAS,EAAE,CAAA,EAAGD,oBAAM,CAAC,YAAY,CAAC,CAAA,CAAE,EAAA,QAAA,EACnD,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,MACxBC,cAAA,CAAA,KAAA,EAAA,EAEC,SAAS,EAAE,CAAA,EAAGD,oBAAM,CAAC,kBAAkB,CAAC,CAAA,CAAE,EAAA,QAAA,EAEzC,IAAI,EAAA,EAHA,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,SAAS,CAI3C,CACN,CAAC,EAAA,EARO,KAAK,CAST,CACN,CAAC,CAAA,EAAA,CACG;AAER;;;;"}
1
+ {"version":3,"file":"Table.js","sources":["../../../src/components/Table.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport TableDynamic from '../dynamicComponents/TableDynamic';\n\ninterface TableProperties {\n\trows?: ReactNode[][];\n\theaders?: ReactNode[];\n\thasMarginUp?: boolean;\n\thasMarginDown?: boolean;\n}\n\nconst Table = ({\n\trows = [],\n\theaders = [],\n\thasMarginUp = false,\n\thasMarginDown = false,\n}: TableProperties) => {\n\treturn (\n\t\t<TableDynamic\n\t\t\trows={rows}\n\t\t\theaders={headers}\n\t\t\thasMarginUp={hasMarginUp}\n\t\t\thasMarginDown={hasMarginDown}\n\t\t/>\n\t);\n};\n\nexport default Table;\n"],"names":["_jsx","TableDynamic"],"mappings":";;;;;;;AAUA,MAAM,KAAK,GAAG,CAAC,EACd,IAAI,GAAG,EAAE,EACT,OAAO,GAAG,EAAE,EACZ,WAAW,GAAG,KAAK,EACnB,aAAa,GAAG,KAAK,GACJ,KAAI;IACrB,QACCA,eAACC,oBAAY,EAAA,EACZ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAAA,CAC3B;AAEJ;;;;"}
@@ -0,0 +1,167 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var react = require('react');
8
+ var Blog_module = require('../styles/Blog.module.scss.js');
9
+
10
+ const Blog = ({ children, title = 'In this article' }) => {
11
+ const addPaddingTopTimerReference = react.useRef(null);
12
+ const highlightCategoryTimerReference = react.useRef(null);
13
+ const clearTimers = (addPaddingTopTimerReference_, highlightCategoryTimerReference_) => {
14
+ if (addPaddingTopTimerReference_) {
15
+ clearTimeout(addPaddingTopTimerReference_);
16
+ }
17
+ if (highlightCategoryTimerReference_) {
18
+ clearTimeout(highlightCategoryTimerReference_);
19
+ }
20
+ };
21
+ const sectionReferences = react.useRef(new Map());
22
+ const [categoryTitles, setCategoryTitles] = react.useState(new Map());
23
+ const [visibleTitle, setVisibleTitle] = react.useState(null);
24
+ const updateTimerRef = react.useRef(null);
25
+ const sortByDomPosition = react.useCallback(([, a], [, b]) => {
26
+ const position = a.el.compareDocumentPosition(b.el);
27
+ if (position & Node.DOCUMENT_POSITION_FOLLOWING) {
28
+ return -1; // a comes before b
29
+ }
30
+ else if (position & Node.DOCUMENT_POSITION_PRECEDING) {
31
+ return 1; // b comes before a
32
+ }
33
+ return 0;
34
+ }, []);
35
+ const updateCategoryTitles = react.useCallback(() => {
36
+ const now = Date.now();
37
+ const newCategoryTitles = new Map();
38
+ // Sort sections by their DOM position to maintain correct order
39
+ const sectionsArray = Array.from(sectionReferences.current.entries());
40
+ sectionsArray.sort(sortByDomPosition);
41
+ let firstSectionId = null;
42
+ for (const [id, { title, el, isSubSection }] of sectionsArray) {
43
+ if (!firstSectionId) {
44
+ firstSectionId = id;
45
+ }
46
+ newCategoryTitles.set(id, {
47
+ el,
48
+ title,
49
+ lastUpdatedAt: now,
50
+ isSubSection,
51
+ });
52
+ }
53
+ if (newCategoryTitles.size > 0) {
54
+ setCategoryTitles(newCategoryTitles);
55
+ if (!visibleTitle) {
56
+ setVisibleTitle(firstSectionId);
57
+ }
58
+ }
59
+ }, [visibleTitle, sortByDomPosition]);
60
+ const debounceUpdateCategoryTitles = react.useCallback(() => {
61
+ // Clear existing timer and set a new one to batch updates
62
+ if (updateTimerRef.current) {
63
+ clearTimeout(updateTimerRef.current);
64
+ }
65
+ updateTimerRef.current = setTimeout(() => {
66
+ updateCategoryTitles();
67
+ }, 50);
68
+ }, [updateCategoryTitles]);
69
+ react.useEffect(() => {
70
+ const observers = new Map();
71
+ for (const [id, { el }] of categoryTitles) {
72
+ const observer = new IntersectionObserver(([entry]) => {
73
+ if (!entry.isIntersecting)
74
+ return;
75
+ setVisibleTitle(visibleId => {
76
+ if (visibleId === id && !entry.isIntersecting)
77
+ return null;
78
+ if (entry.isIntersecting)
79
+ return id;
80
+ return visibleId;
81
+ });
82
+ }, { threshold: 0.1 });
83
+ observers.set(id, observer);
84
+ observer.observe(el);
85
+ }
86
+ return () => {
87
+ for (const observer of observers.values()) {
88
+ observer.disconnect();
89
+ }
90
+ };
91
+ }, [categoryTitles.size]);
92
+ react.useEffect(() => {
93
+ return () => {
94
+ clearTimers(addPaddingTopTimerReference.current, highlightCategoryTimerReference.current);
95
+ if (updateTimerRef.current) {
96
+ clearTimeout(updateTimerRef.current);
97
+ }
98
+ };
99
+ }, []);
100
+ const handleSectionReference = react.useCallback((element) => {
101
+ if (!element)
102
+ return;
103
+ const { parentRef, childRefs } = element;
104
+ // Add parent section reference
105
+ if (parentRef) {
106
+ const id = parentRef.dataset.id;
107
+ const title = parentRef.dataset.title;
108
+ if (id && title) {
109
+ sectionReferences.current.set(id, {
110
+ el: parentRef,
111
+ title,
112
+ isSubSection: false,
113
+ });
114
+ }
115
+ }
116
+ // Add child section references
117
+ if (Array.isArray(childRefs)) {
118
+ for (const childRef of childRefs) {
119
+ if (!childRef)
120
+ continue;
121
+ const id = childRef.dataset.id;
122
+ const title = childRef.dataset.title;
123
+ if (id && title) {
124
+ sectionReferences.current.set(id, {
125
+ el: childRef,
126
+ title,
127
+ isSubSection: true,
128
+ });
129
+ }
130
+ }
131
+ }
132
+ debounceUpdateCategoryTitles();
133
+ }, [debounceUpdateCategoryTitles]);
134
+ const handleClickCategoryTitle = (error) => {
135
+ const id = error.currentTarget.dataset.id;
136
+ const index = error.currentTarget.dataset.idx;
137
+ if (!id || !index)
138
+ return;
139
+ const { el } = categoryTitles.get(id) || {};
140
+ if (!el)
141
+ return;
142
+ const top = el.getBoundingClientRect().top + document.body.scrollTop - 100;
143
+ document.body.scrollTo({
144
+ top,
145
+ behavior: 'smooth',
146
+ });
147
+ const timer = setTimeout(() => {
148
+ setVisibleTitle(id);
149
+ clearTimeout(timer);
150
+ }, 1000);
151
+ };
152
+ return (jsxRuntime.jsxs("div", { className: Blog_module.default.blog, children: [jsxRuntime.jsx("div", { className: Blog_module.default['blog__content'], children: react.Children.map(children, child => {
153
+ if (!react.isValidElement(child))
154
+ return child;
155
+ return react.cloneElement(child, {
156
+ ref: handleSectionReference,
157
+ });
158
+ }) }), jsxRuntime.jsxs("div", { className: Blog_module.default['blog__sidebar'], children: [jsxRuntime.jsx("p", { className: `${Blog_module.default['margin-bottom--3']} ${Blog_module.default['category__header']}`, children: title }), [...categoryTitles].map(([id, { title, isSubSection }], index, array) => {
159
+ const isNextSectionSubSection = array[index + 1]?.[1]?.isSubSection;
160
+ return (jsxRuntime.jsx("p", { "data-idx": index, "data-id": id, className: `${Blog_module.default['category__title']} ${id === visibleTitle ? Blog_module.default['category__title--active'] : ''} ${isSubSection ? Blog_module.default['category__title--sub'] : ''} ${isSubSection && !isNextSectionSubSection
161
+ ? Blog_module.default['margin-bottom-imp--2']
162
+ : ''}`, onClick: handleClickCategoryTitle, children: title }, id));
163
+ })] })] }));
164
+ };
165
+
166
+ exports.default = Blog;
167
+ //# sourceMappingURL=BlogDynamic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogDynamic.js","sources":["../../../src/dynamicComponents/BlogDynamic.tsx"],"sourcesContent":["'use client';\n\nimport {\n\tChildren,\n\tcloneElement,\n\tisValidElement,\n\tuseCallback,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport type { MouseEvent, ReactNode, RefAttributes } from 'react';\n\nimport styles from '../styles/Blog.module.scss';\n\ninterface BlogProperties {\n\tchildren: ReactNode;\n\ttitle?: string;\n}\n\nexport interface ForwardedReference {\n\tparentRef: HTMLDivElement;\n\tchildRefs: HTMLDivElement[];\n}\n\ninterface SectionReferenceValue {\n\tel: HTMLElement;\n\ttitle: string;\n\tisSubSection: boolean;\n}\n\ntype SectionReference = Map<string, SectionReferenceValue>;\n\ninterface CategoryTitleValue extends SectionReferenceValue {\n\tlastUpdatedAt: number;\n}\n\ntype CategoryTitle = Map<string, CategoryTitleValue>;\n\ntype AddPaddingTopTimerReference = ReturnType<typeof setTimeout> | null;\n\nconst Blog = ({ children, title = 'In this article' }: BlogProperties) => {\n\tconst addPaddingTopTimerReference = useRef<AddPaddingTopTimerReference>(null);\n\tconst highlightCategoryTimerReference =\n\t\tuseRef<AddPaddingTopTimerReference>(null);\n\n\tconst clearTimers = (\n\t\taddPaddingTopTimerReference_: AddPaddingTopTimerReference,\n\t\thighlightCategoryTimerReference_: AddPaddingTopTimerReference\n\t) => {\n\t\tif (addPaddingTopTimerReference_) {\n\t\t\tclearTimeout(addPaddingTopTimerReference_);\n\t\t}\n\t\tif (highlightCategoryTimerReference_) {\n\t\t\tclearTimeout(highlightCategoryTimerReference_);\n\t\t}\n\t};\n\n\tconst sectionReferences = useRef<SectionReference>(new Map());\n\tconst [categoryTitles, setCategoryTitles] = useState<CategoryTitle>(\n\t\tnew Map()\n\t);\n\tconst [visibleTitle, setVisibleTitle] = useState<string | null>(null);\n\tconst updateTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n\tconst sortByDomPosition = useCallback(\n\t\t([, a]: [string, SectionReferenceValue], [, b]: [string, SectionReferenceValue]) => {\n\t\t\tconst position = a.el.compareDocumentPosition(b.el);\n\t\t\tif (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n\t\t\t\treturn -1; // a comes before b\n\t\t\t} else if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n\t\t\t\treturn 1; // b comes before a\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\t\t[]\n\t);\n\n\tconst updateCategoryTitles = useCallback(() => {\n\t\tconst now = Date.now();\n\t\tconst newCategoryTitles = new Map<string, CategoryTitleValue>();\n\n\t\t// Sort sections by their DOM position to maintain correct order\n\t\tconst sectionsArray = Array.from(sectionReferences.current.entries());\n\t\tsectionsArray.sort(sortByDomPosition);\n\n\t\tlet firstSectionId: string | null = null;\n\t\tfor (const [id, { title, el, isSubSection }] of sectionsArray) {\n\t\t\tif (!firstSectionId) {\n\t\t\t\tfirstSectionId = id;\n\t\t\t}\n\t\t\tnewCategoryTitles.set(id, {\n\t\t\t\tel,\n\t\t\t\ttitle,\n\t\t\t\tlastUpdatedAt: now,\n\t\t\t\tisSubSection,\n\t\t\t});\n\t\t}\n\n\t\tif (newCategoryTitles.size > 0) {\n\t\t\tsetCategoryTitles(newCategoryTitles);\n\t\t\tif (!visibleTitle) {\n\t\t\t\tsetVisibleTitle(firstSectionId);\n\t\t\t}\n\t\t}\n\t}, [visibleTitle, sortByDomPosition]);\n\n\tconst debounceUpdateCategoryTitles = useCallback(() => {\n\t\t// Clear existing timer and set a new one to batch updates\n\t\tif (updateTimerRef.current) {\n\t\t\tclearTimeout(updateTimerRef.current);\n\t\t}\n\t\tupdateTimerRef.current = setTimeout(() => {\n\t\t\tupdateCategoryTitles();\n\t\t}, 50);\n\t}, [updateCategoryTitles]);\n\n\tuseEffect(() => {\n\t\tconst observers = new Map<string, IntersectionObserver>();\n\t\tfor (const [id, { el }] of categoryTitles) {\n\t\t\tconst observer = new IntersectionObserver(\n\t\t\t\t([entry]) => {\n\t\t\t\t\tif (!entry.isIntersecting) return;\n\t\t\t\t\tsetVisibleTitle(visibleId => {\n\t\t\t\t\t\tif (visibleId === id && !entry.isIntersecting) return null;\n\t\t\t\t\t\tif (entry.isIntersecting) return id;\n\t\t\t\t\t\treturn visibleId;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ threshold: 0.1 }\n\t\t\t);\n\t\t\tobservers.set(id, observer);\n\t\t\tobserver.observe(el);\n\t\t}\n\t\treturn () => {\n\t\t\tfor (const observer of observers.values()) {\n\t\t\t\tobserver.disconnect();\n\t\t\t}\n\t\t};\n\t}, [categoryTitles.size]);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tclearTimers(\n\t\t\t\taddPaddingTopTimerReference.current,\n\t\t\t\thighlightCategoryTimerReference.current\n\t\t\t);\n\t\t\tif (updateTimerRef.current) {\n\t\t\t\tclearTimeout(updateTimerRef.current);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\tconst handleSectionReference = useCallback((element: ForwardedReference) => {\n\t\tif (!element) return;\n\t\tconst { parentRef, childRefs } = element;\n\n\t\t// Add parent section reference\n\t\tif (parentRef) {\n\t\t\tconst id = parentRef.dataset.id;\n\t\t\tconst title = parentRef.dataset.title;\n\t\t\tif (id && title) {\n\t\t\t\tsectionReferences.current.set(id, {\n\t\t\t\t\tel: parentRef,\n\t\t\t\t\ttitle,\n\t\t\t\t\tisSubSection: false,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Add child section references\n\t\tif (Array.isArray(childRefs)) {\n\t\t\tfor (const childRef of childRefs) {\n\t\t\t\tif (!childRef) continue;\n\t\t\t\tconst id = childRef.dataset.id;\n\t\t\t\tconst title = childRef.dataset.title;\n\t\t\t\tif (id && title) {\n\t\t\t\t\tsectionReferences.current.set(id, {\n\t\t\t\t\t\tel: childRef,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tisSubSection: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdebounceUpdateCategoryTitles();\n\t}, [debounceUpdateCategoryTitles]);\n\n\tconst handleClickCategoryTitle = (\n\t\terror: MouseEvent<HTMLParagraphElement>\n\t) => {\n\t\tconst id = error.currentTarget.dataset.id;\n\t\tconst index = error.currentTarget.dataset.idx;\n\t\tif (!id || !index) return;\n\n\t\tconst { el } = categoryTitles.get(id) || {};\n\t\tif (!el) return;\n\n\t\tconst top = el.getBoundingClientRect().top + document.body.scrollTop - 100;\n\t\tdocument.body.scrollTo({\n\t\t\ttop,\n\t\t\tbehavior: 'smooth',\n\t\t});\n\n\t\tconst timer = setTimeout(() => {\n\t\t\tsetVisibleTitle(id);\n\t\t\tclearTimeout(timer);\n\t\t}, 1000);\n\t};\n\n\n\treturn (\n\t\t<div className={styles.blog}>\n\t\t\t<div className={styles['blog__content']}>\n\t\t\t\t{Children.map(children, child => {\n\t\t\t\t\tif (!isValidElement(child)) return child;\n\t\t\t\t\treturn cloneElement(child, {\n\t\t\t\t\t\tref: handleSectionReference,\n\t\t\t\t\t} as RefAttributes<ForwardedReference>);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t\t<div className={styles['blog__sidebar']}>\n\t\t\t\t<p\n\t\t\t\t\tclassName={`${styles['margin-bottom--3']} ${styles['category__header']}`}\n\t\t\t\t>\n\t\t\t\t\t{title}\n\t\t\t\t</p>\n\t\t\t\t{[...categoryTitles].map(\n\t\t\t\t\t([id, { title, isSubSection }], index, array) => {\n\t\t\t\t\t\tconst isNextSectionSubSection = array[index + 1]?.[1]?.isSubSection;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<p\n\t\t\t\t\t\t\t\tkey={id}\n\t\t\t\t\t\t\t\tdata-idx={index}\n\t\t\t\t\t\t\t\tdata-id={id}\n\t\t\t\t\t\t\t\tclassName={`${styles['category__title']} ${\n\t\t\t\t\t\t\t\t\tid === visibleTitle ? styles['category__title--active'] : ''\n\t\t\t\t\t\t\t\t} ${isSubSection ? styles['category__title--sub'] : ''} ${\n\t\t\t\t\t\t\t\t\tisSubSection && !isNextSectionSubSection\n\t\t\t\t\t\t\t\t\t\t? styles['margin-bottom-imp--2']\n\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\tonClick={handleClickCategoryTitle}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Blog;\n"],"names":["useRef","useState","useCallback","useEffect","_jsxs","styles","_jsx","Children","isValidElement","cloneElement"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var react = require('react');
7
+ var BlogHeader_module = require('../styles/BlogHeader.module.scss.js');
8
+
9
+ const renderLineBreaks = (array) => array.map((element, index, array) => (jsxRuntime.jsxs(react.Fragment, { children: [element, index === array.length - 1 ? null : jsxRuntime.jsx("br", {})] }, element)));
10
+ const BlogHeader = ({ title, desc, isDescCite = true }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("h1", { className: `${BlogHeader_module.default['blog-header']}`, children: renderLineBreaks(title) }), isDescCite ? (jsxRuntime.jsx("cite", { className: `${BlogHeader_module.default['blog-date']}`, children: renderLineBreaks(desc) })) : (jsxRuntime.jsx("p", { className: `${BlogHeader_module.default['blog-date']}`, children: renderLineBreaks(desc) }))] }));
11
+
12
+ exports.default = BlogHeader;
13
+ //# sourceMappingURL=BlogHeaderDynamic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogHeaderDynamic.js","sources":["../../../src/dynamicComponents/BlogHeaderDynamic.tsx"],"sourcesContent":["import { Fragment } from 'react';\n\nimport styles from '../styles/BlogHeader.module.scss';\n\ninterface BlogProperties {\n\ttitle: string[];\n\tdesc: string[];\n\tisDescCite?: boolean;\n}\n\nconst renderLineBreaks = (array: string[]) =>\n\tarray.map((element, index, array) => (\n\t\t<Fragment key={element}>\n\t\t\t{element}\n\t\t\t{index === array.length - 1 ? null : <br />}\n\t\t</Fragment>\n\t));\n\nconst BlogHeader = ({ title, desc, isDescCite = true }: BlogProperties) => (\n\t\t<>\n\t\t\t<h1 className={`${styles['blog-header']}`}>{renderLineBreaks(title)}</h1>\n\t\t\t{isDescCite ? (\n\t\t\t\t<cite className={`${styles['blog-date']}`}>\n\t\t\t\t\t{renderLineBreaks(desc)}\n\t\t\t\t</cite>\n\t\t\t) : (\n\t\t\t\t<p className={`${styles['blog-date']}`}>{renderLineBreaks(desc)}</p>\n\t\t\t)}\n\t\t</>\n\t);\n\nexport default BlogHeader;\n"],"names":["_jsxs","Fragment","_jsx","_Fragment","styles"],"mappings":";;;;;;;;AAUA,MAAM,gBAAgB,GAAG,CAAC,KAAe,KACxC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,MAC/BA,eAAA,CAACC,cAAQ,eACP,OAAO,EACP,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAGC,cAAA,CAAA,IAAA,EAAA,EAAA,CAAM,KAF7B,OAAO,CAGX,CACX,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,EAAkB,MACpEF,eAAA,CAAAG,mBAAA,EAAA,EAAA,QAAA,EAAA,CACCD,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,GAAGE,yBAAM,CAAC,aAAa,CAAC,EAAE,EAAA,QAAA,EAAG,gBAAgB,CAAC,KAAK,CAAC,EAAA,CAAM,EACxE,UAAU,IACVF,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,CAAA,EAAGE,yBAAM,CAAC,WAAW,CAAC,CAAA,CAAE,EAAA,QAAA,EACvC,gBAAgB,CAAC,IAAI,CAAC,EAAA,CACjB,KAEPF,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,CAAA,EAAGE,yBAAM,CAAC,WAAW,CAAC,CAAA,CAAE,EAAA,QAAA,EAAG,gBAAgB,CAAC,IAAI,CAAC,EAAA,CAAK,CACpE,CAAA,EAAA,CACC;;;;"}
@@ -0,0 +1,35 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var react = require('react');
8
+ var web = require('@react-spring/web');
9
+ var BlogLink_module = require('../styles/BlogLink.module.scss.js');
10
+ var index = require('../utils/index.js');
11
+
12
+ const DEFAULT_LINE_END = 18;
13
+ const DEFAULT_POLYLINE_POINTS = '12 5, 19 12, 12 19';
14
+ const MOVED_POLYLINE_POINTS = '15 5, 22 12, 15 19';
15
+ const BlogLink = ({ title = '', desc = '', isInProgress = false, href }) => {
16
+ const [isHovered, setIsHovered] = react.useState(false);
17
+ const link = href || `/blog/${index.generateUrlForBlogTitle(title)}`;
18
+ const svgColor = web.useSpring({
19
+ stroke: isHovered ? '#4242fa' : 'transparent',
20
+ });
21
+ const polyLine = web.useSpring({
22
+ points: isHovered ? MOVED_POLYLINE_POINTS : DEFAULT_POLYLINE_POINTS,
23
+ config: { duration: 200 },
24
+ });
25
+ const lineEnd = web.useSpring({
26
+ x2: isHovered ? `${DEFAULT_LINE_END + 2}` : `${DEFAULT_LINE_END}`,
27
+ config: { duration: 200 },
28
+ });
29
+ if (isInProgress)
30
+ return null;
31
+ return (jsxRuntime.jsxs("a", { className: BlogLink_module.default['blog-link'], onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), href: link, rel: "noopener noreferrer", children: [jsxRuntime.jsx("h6", { className: BlogLink_module.default['blog-link__title'], children: title }), jsxRuntime.jsx("p", { className: BlogLink_module.default['blog-link__description'], children: desc }), jsxRuntime.jsxs("div", { className: BlogLink_module.default['blog-link__read-more'], children: [jsxRuntime.jsx("p", { children: "Read More" }), jsxRuntime.jsxs(web.animated.svg, { xmlns: "http://www.w3.org/2000/svg", width: "18px", height: "18px", viewBox: "0 0 24 24", fill: "none", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", style: svgColor, children: [jsxRuntime.jsx(web.animated.line, { x1: "5", y1: "12", y2: "12", x2: lineEnd.x2 }), jsxRuntime.jsx(web.animated.polyline, { points: polyLine.points })] })] })] }));
32
+ };
33
+
34
+ exports.default = BlogLink;
35
+ //# sourceMappingURL=BlogLinkDynamic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogLinkDynamic.js","sources":["../../../src/dynamicComponents/BlogLinkDynamic.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\n\nimport { animated, useSpring } from '@react-spring/web';\n\nimport styles from '../styles/BlogLink.module.scss';\n\nimport { generateUrlForBlogTitle } from '../utils';\n\ninterface Properties {\n\ttitle: string;\n\tdesc?: string;\n\tisInProgress?: boolean;\n\thref?: string;\n}\n\nconst DEFAULT_LINE_END = 18;\nconst DEFAULT_POLYLINE_POINTS = '12 5, 19 12, 12 19';\nconst MOVED_POLYLINE_POINTS = '15 5, 22 12, 15 19';\n\nconst BlogLink = ({ title = '', desc = '', isInProgress = false, href }: Properties) => {\n\tconst [isHovered, setIsHovered] = useState(false);\n\n\tconst link = href || `/blog/${generateUrlForBlogTitle(title)}`;\n\n\tconst svgColor = useSpring({\n\t\tstroke: isHovered ? '#4242fa' : 'transparent',\n\t});\n\n\tconst polyLine = useSpring({\n\t\tpoints: isHovered ? MOVED_POLYLINE_POINTS : DEFAULT_POLYLINE_POINTS,\n\t\tconfig: { duration: 200 },\n\t});\n\n\tconst lineEnd = useSpring({\n\t\tx2: isHovered ? `${DEFAULT_LINE_END + 2}` : `${DEFAULT_LINE_END}`,\n\t\tconfig: { duration: 200 },\n\t});\n\n\tif (isInProgress) return null;\n\n\treturn (\n\t\t<a\n\t\t\tclassName={styles['blog-link']}\n\t\t\tonMouseEnter={() => setIsHovered(true)}\n\t\t\tonMouseLeave={() => setIsHovered(false)}\n\t\t\thref={link}\n\t\t\trel=\"noopener noreferrer\"\n\t\t>\n\t\t\t<h6 className={styles['blog-link__title']}>{title}</h6>\n\t\t\t<p className={styles['blog-link__description']}>{desc}</p>\n\t\t\t<div className={styles['blog-link__read-more']}>\n\t\t\t\t<p>Read More</p>\n\t\t\t\t<animated.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth=\"18px\"\n\t\t\t\t\theight=\"18px\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tstyle={svgColor as any}\n\t\t\t\t>\n\t\t\t\t\t<animated.line x1=\"5\" y1=\"12\" y2=\"12\" x2={lineEnd.x2 as any}></animated.line>\n\t\t\t\t\t<animated.polyline points={polyLine.points as any} />\n\t\t\t\t</animated.svg>\n\t\t\t</div>\n\t\t</a>\n\t);\n};\n\nexport default BlogLink;\n"],"names":["useState","generateUrlForBlogTitle","useSpring","_jsxs","styles","_jsx","animated"],"mappings":";;;;;;;;;;AAiBA,MAAM,gBAAgB,GAAG,EAAE;AAC3B,MAAM,uBAAuB,GAAG,oBAAoB;AACpD,MAAM,qBAAqB,GAAG,oBAAoB;AAElD,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,YAAY,GAAG,KAAK,EAAE,IAAI,EAAc,KAAI;IACtF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC;IAEjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAA,MAAA,EAASC,6BAAuB,CAAC,KAAK,CAAC,CAAA,CAAE;IAE9D,MAAM,QAAQ,GAAGC,aAAS,CAAC;QAC1B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa;AAC7C,KAAA,CAAC;IAEF,MAAM,QAAQ,GAAGA,aAAS,CAAC;QAC1B,MAAM,EAAE,SAAS,GAAG,qBAAqB,GAAG,uBAAuB;AACnE,QAAA,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE;AACzB,KAAA,CAAC;IAEF,MAAM,OAAO,GAAGA,aAAS,CAAC;AACzB,QAAA,EAAE,EAAE,SAAS,GAAG,CAAA,EAAG,gBAAgB,GAAG,CAAC,EAAE,GAAG,CAAA,EAAG,gBAAgB,CAAA,CAAE;AACjE,QAAA,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE;AACzB,KAAA,CAAC;AAEF,IAAA,IAAI,YAAY;AAAE,QAAA,OAAO,IAAI;AAE7B,IAAA,QACCC,eAAA,CAAA,GAAA,EAAA,EACC,SAAS,EAAEC,uBAAM,CAAC,WAAW,CAAC,EAC9B,YAAY,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,EACtC,YAAY,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,EACvC,IAAI,EAAE,IAAI,EACV,GAAG,EAAC,qBAAqB,EAAA,QAAA,EAAA,CAEzBC,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAED,uBAAM,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAG,KAAK,EAAA,CAAM,EACvDC,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAED,uBAAM,CAAC,wBAAwB,CAAC,EAAA,QAAA,EAAG,IAAI,EAAA,CAAK,EAC1DD,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAEC,uBAAM,CAAC,sBAAsB,CAAC,aAC7CC,cAAA,CAAA,GAAA,EAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAgB,EAChBF,eAAA,CAACG,YAAQ,CAAC,GAAG,EAAA,EACZ,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,KAAK,EAAE,QAAe,aAEtBD,cAAA,CAACC,YAAQ,CAAC,IAAI,EAAA,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAE,OAAO,CAAC,EAAS,EAAA,CAAkB,EAC7ED,cAAA,CAACC,YAAQ,CAAC,QAAQ,IAAC,MAAM,EAAE,QAAQ,CAAC,MAAa,EAAA,CAAI,CAAA,EAAA,CACvC,CAAA,EAAA,CACV,CAAA,EAAA,CACH;AAEN;;;;"}
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var react = require('react');
7
+ var BlogSection_module = require('../styles/BlogSection.module.scss.js');
8
+ var index = require('../utils/index.js');
9
+
10
+ const BlogSection = react.forwardRef(({ title = '', category = '', children = null, increaseMarginBottom = false, }, forwardedReference) => {
11
+ const titleWithCategory = category ? `${category} - ${title}` : title;
12
+ const id = index.generateIdForBlogTitle(titleWithCategory);
13
+ const parentReference = react.useRef(null);
14
+ const childReferences = react.useRef([]);
15
+ const imperativeHandleRef = react.useRef(null);
16
+ react.useImperativeHandle(forwardedReference, () => {
17
+ const handle = {
18
+ parentRef: parentReference.current,
19
+ childRefs: childReferences.current,
20
+ };
21
+ imperativeHandleRef.current = handle;
22
+ return handle;
23
+ });
24
+ const handleChildReferences = (element) => {
25
+ if (!element)
26
+ return;
27
+ const { parentRef: subParentReference } = element;
28
+ if (!subParentReference)
29
+ return;
30
+ childReferences.current.push(subParentReference);
31
+ // Re-trigger parent ref callback with updated children
32
+ if (typeof forwardedReference === 'function' && imperativeHandleRef.current) {
33
+ forwardedReference(imperativeHandleRef.current);
34
+ }
35
+ };
36
+ return (jsxRuntime.jsxs("div", { className: `${BlogSection_module.default['blog-section']}
37
+ ${increaseMarginBottom
38
+ ? BlogSection_module.default['margin-bottom--9']
39
+ : BlogSection_module.default['margin-bottom--6']}`, "data-title": title, "data-id": id, ref: parentReference, children: [title ? (jsxRuntime.jsx("h4", { className: BlogSection_module.default['blog-section__title'], children: title })) : null, react.Children.map(children, child => {
40
+ if (!react.isValidElement(child))
41
+ return child;
42
+ return react.cloneElement(child, {
43
+ ref: handleChildReferences,
44
+ });
45
+ })] }));
46
+ });
47
+ BlogSection.displayName = 'BlogSection';
48
+
49
+ exports.default = BlogSection;
50
+ //# sourceMappingURL=BlogSectionDynamic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogSectionDynamic.js","sources":["../../../src/dynamicComponents/BlogSectionDynamic.tsx"],"sourcesContent":["import {\n\tChildren,\n\tcloneElement,\n\tforwardRef,\n\tisValidElement,\n\tuseImperativeHandle,\n\tuseRef,\n} from 'react';\n\nimport type { ReactNode, RefAttributes } from 'react';\n\nimport styles from '../styles/BlogSection.module.scss';\n\nimport type { ForwardedReference } from './BlogDynamic';\nimport { generateIdForBlogTitle } from '../utils';\n\ninterface BlogProperties {\n\ttitle?: string;\n\tcategory?: string;\n\tchildren?: ReactNode;\n\tincreaseMarginBottom?: boolean;\n}\n\nconst BlogSection = forwardRef<ForwardedReference, BlogProperties>(\n\t(\n\t\t{\n\t\t\ttitle = '',\n\t\t\tcategory = '',\n\t\t\tchildren = null,\n\t\t\tincreaseMarginBottom = false,\n\t\t}: BlogProperties,\n\t\tforwardedReference\n\t) => {\n\t\tconst titleWithCategory = category ? `${category} - ${title}` : title;\n\t\tconst id = generateIdForBlogTitle(titleWithCategory);\n\n\t\tconst parentReference = useRef<ForwardedReference['parentRef']>(null);\n\t\tconst childReferences = useRef<ForwardedReference['childRefs']>([]);\n\t\tconst imperativeHandleRef = useRef<ForwardedReference | null>(null);\n\n\t\tuseImperativeHandle(forwardedReference, () => {\n\t\t\tconst handle = {\n\t\t\t\tparentRef: parentReference.current!,\n\t\t\t\tchildRefs: childReferences.current!,\n\t\t\t};\n\t\t\timperativeHandleRef.current = handle;\n\t\t\treturn handle;\n\t\t});\n\n\t\tconst handleChildReferences = (element: ForwardedReference | null) => {\n\t\t\tif (!element) return;\n\t\t\tconst { parentRef: subParentReference } = element;\n\t\t\tif (!subParentReference) return;\n\t\t\tchildReferences.current.push(subParentReference);\n\n\t\t\t// Re-trigger parent ref callback with updated children\n\t\t\tif (typeof forwardedReference === 'function' && imperativeHandleRef.current) {\n\t\t\t\tforwardedReference(imperativeHandleRef.current);\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={`${styles['blog-section']}\n\t\t\t\t\t${\n\t\t\t\t\t\tincreaseMarginBottom\n\t\t\t\t\t\t\t? styles['margin-bottom--9']\n\t\t\t\t\t\t\t: styles['margin-bottom--6']\n\t\t\t\t\t}`}\n\t\t\t\tdata-title={title}\n\t\t\t\tdata-id={id}\n\t\t\t\tref={parentReference}\n\t\t\t>\n\t\t\t\t{title ? (\n\t\t\t\t\t<h4 className={styles['blog-section__title']}>{title}</h4>\n\t\t\t\t) : null}\n\t\t\t\t{Children.map(children, child => {\n\t\t\t\t\tif (!isValidElement(child)) return child;\n\t\t\t\t\treturn cloneElement(child, {\n\t\t\t\t\t\tref: handleChildReferences,\n\t\t\t\t\t} as RefAttributes<ForwardedReference>);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nBlogSection.displayName = 'BlogSection';\n\nexport default BlogSection;\n"],"names":["forwardRef","generateIdForBlogTitle","useRef","useImperativeHandle","_jsxs","styles","_jsx","Children","isValidElement","cloneElement"],"mappings":";;;;;;;;;AAuBA,MAAM,WAAW,GAAGA,gBAAU,CAC7B,CACC,EACC,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,EAAE,EACb,QAAQ,GAAG,IAAI,EACf,oBAAoB,GAAG,KAAK,GACZ,EACjB,kBAAkB,KACf;AACH,IAAA,MAAM,iBAAiB,GAAG,QAAQ,GAAG,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,GAAG,KAAK;AACrE,IAAA,MAAM,EAAE,GAAGC,4BAAsB,CAAC,iBAAiB,CAAC;AAEpD,IAAA,MAAM,eAAe,GAAGC,YAAM,CAAkC,IAAI,CAAC;AACrE,IAAA,MAAM,eAAe,GAAGA,YAAM,CAAkC,EAAE,CAAC;AACnE,IAAA,MAAM,mBAAmB,GAAGA,YAAM,CAA4B,IAAI,CAAC;AAEnE,IAAAC,yBAAmB,CAAC,kBAAkB,EAAE,MAAK;AAC5C,QAAA,MAAM,MAAM,GAAG;YACd,SAAS,EAAE,eAAe,CAAC,OAAQ;YACnC,SAAS,EAAE,eAAe,CAAC,OAAQ;SACnC;AACD,QAAA,mBAAmB,CAAC,OAAO,GAAG,MAAM;AACpC,QAAA,OAAO,MAAM;AACd,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,qBAAqB,GAAG,CAAC,OAAkC,KAAI;AACpE,QAAA,IAAI,CAAC,OAAO;YAAE;AACd,QAAA,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,OAAO;AACjD,QAAA,IAAI,CAAC,kBAAkB;YAAE;AACzB,QAAA,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC;;QAGhD,IAAI,OAAO,kBAAkB,KAAK,UAAU,IAAI,mBAAmB,CAAC,OAAO,EAAE;AAC5E,YAAA,kBAAkB,CAAC,mBAAmB,CAAC,OAAO,CAAC;QAChD;AACD,IAAA,CAAC;IAED,QACCC,yBACC,SAAS,EAAE,GAAGC,0BAAM,CAAC,cAAc,CAAC;OAElC;AACC,cAAEA,0BAAM,CAAC,kBAAkB;cACzBA,0BAAM,CAAC,kBAAkB,CAC7B,CAAA,CAAE,EAAA,YAAA,EACS,KAAK,EAAA,SAAA,EACR,EAAE,EACX,GAAG,EAAE,eAAe,EAAA,QAAA,EAAA,CAEnB,KAAK,IACLC,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAED,0BAAM,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAAG,KAAK,EAAA,CAAM,IACvD,IAAI,EACPE,cAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAG;AAC/B,gBAAA,IAAI,CAACC,oBAAc,CAAC,KAAK,CAAC;AAAE,oBAAA,OAAO,KAAK;gBACxC,OAAOC,kBAAY,CAAC,KAAK,EAAE;AAC1B,oBAAA,GAAG,EAAE,qBAAqB;AACW,iBAAA,CAAC;YACxC,CAAC,CAAC,CAAA,EAAA,CACG;AAER,CAAC;AAGF,WAAW,CAAC,WAAW,GAAG,aAAa;;;;"}
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var Callout_module = require('../styles/Callout.module.scss.js');
7
+
8
+ const Callout = ({ children, type = 'info', hasMarginUp = false, hasMarginDown = false }) => {
9
+ const className = `${Callout_module.default.callout} ${Callout_module.default[`callout--${type}`]} ${hasMarginUp ? Callout_module.default['margin-top--1'] : ''} ${hasMarginDown ? Callout_module.default['margin-bottom--2'] : ''}`;
10
+ return (jsxRuntime.jsxs("div", { className: className, children: [jsxRuntime.jsx("div", { className: Callout_module.default.callout__icon }), jsxRuntime.jsx("div", { className: Callout_module.default.callout__wrapper, children: children })] }));
11
+ };
12
+
13
+ exports.default = Callout;
14
+ //# sourceMappingURL=CalloutDynamic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalloutDynamic.js","sources":["../../../src/dynamicComponents/CalloutDynamic.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport styles from '../styles/Callout.module.scss';\n\ninterface CalloutProperties {\n\tchildren?: ReactNode;\n\ttype: 'info' | 'warning' | 'error' | 'success';\n\thasMarginUp?: boolean;\n\thasMarginDown?: boolean;\n}\n\nconst Callout = ({ children, type = 'info',\n\thasMarginUp = false,\n\thasMarginDown = false\n}: CalloutProperties) => {\n\tconst className = `${styles.callout} ${styles[`callout--${type}`]} ${\n\t\thasMarginUp ? styles['margin-top--1'] : ''\n\t} ${hasMarginDown ? styles['margin-bottom--2'] : ''}`;\n\treturn (\n\t\t<div className={className}>\n\t\t\t<div className={styles.callout__icon}/>\n\t\t\t<div className={styles.callout__wrapper}>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Callout;\n"],"names":["styles","_jsxs","_jsx"],"mappings":";;;;;;;AAWA,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAG,MAAM,EACzC,WAAW,GAAG,KAAK,EACnB,aAAa,GAAG,KAAK,EACF,KAAI;AACvB,IAAA,MAAM,SAAS,GAAG,CAAA,EAAGA,sBAAM,CAAC,OAAO,IAAIA,sBAAM,CAAC,CAAA,SAAA,EAAY,IAAI,EAAE,CAAC,CAAA,CAAA,EAChE,WAAW,GAAGA,sBAAM,CAAC,eAAe,CAAC,GAAG,EACzC,CAAA,CAAA,EAAI,aAAa,GAAGA,sBAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,EAAE;IACrD,QACCC,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,SAAS,aACxBC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAEF,sBAAM,CAAC,aAAa,GAAG,EACvCE,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAEF,sBAAM,CAAC,gBAAgB,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAO,CAAA,EAAA,CACpD;AAER;;;;"}
@@ -0,0 +1,38 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var react = require('react');
8
+ var reactSyntaxHighlighter = require('react-syntax-highlighter');
9
+ var prism = require('react-syntax-highlighter/dist/esm/styles/prism');
10
+ require('prismjs/themes/prism-tomorrow.css');
11
+ var CodeBlock_module = require('../styles/CodeBlock.module.scss.js');
12
+
13
+ const SH = reactSyntaxHighlighter.Prism;
14
+ const CodeBlock = ({ language = 'javascript', code = '', hasMarginUp = false, hasMarginDown = false, }) => {
15
+ const [isCopyMode, setCopyMode] = react.useState(false);
16
+ const copyToClipboard = async () => {
17
+ try {
18
+ await navigator.clipboard.writeText(code);
19
+ setCopyMode(true);
20
+ setTimeout(() => {
21
+ setCopyMode(false);
22
+ }, 1000);
23
+ }
24
+ catch (error) {
25
+ console.error('Failed to copy:', error);
26
+ }
27
+ };
28
+ const lineNumberStyle = {
29
+ color: '#95a1b1',
30
+ fontSize: '0.9em',
31
+ paddingRight: '1em',
32
+ marginRight: '8px',
33
+ };
34
+ return (jsxRuntime.jsxs("div", { className: `${CodeBlock_module.default['code-block']} ${hasMarginUp ? CodeBlock_module.default['margin-top--1'] : ''} ${hasMarginDown ? CodeBlock_module.default['margin-bottom--2'] : ''}`, children: [jsxRuntime.jsxs("div", { className: CodeBlock_module.default['code-block__header'], children: [jsxRuntime.jsx("div", { className: CodeBlock_module.default['code-block__header__title'], children: language }), jsxRuntime.jsx("div", { className: `${CodeBlock_module.default['code-block__header__copy']} ${isCopyMode ? CodeBlock_module.default['code-block__header__copy--active'] : ''}`, onClick: copyToClipboard })] }), jsxRuntime.jsx("div", { className: CodeBlock_module.default['code-block__wrapper'], children: jsxRuntime.jsx(SH, { language: language, style: prism.dracula, showLineNumbers: true, lineNumberStyle: lineNumberStyle, children: code }) })] }));
35
+ };
36
+
37
+ exports.default = CodeBlock;
38
+ //# sourceMappingURL=CodeBlockDynamic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeBlockDynamic.js","sources":["../../../src/dynamicComponents/CodeBlockDynamic.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';\nimport { dracula } from 'react-syntax-highlighter/dist/esm/styles/prism';\n\nimport 'prismjs/themes/prism-tomorrow.css';\n\nconst SH = SyntaxHighlighter as any;\n\nimport styles from '../styles/CodeBlock.module.scss';\n\ninterface Properties {\n\thasMarginUp?: boolean;\n\thasMarginDown?: boolean;\n\tlanguage?: string;\n\tcode?: string;\n}\n\nconst CodeBlock = ({\n\tlanguage = 'javascript',\n\tcode = '',\n\thasMarginUp = false,\n\thasMarginDown = false,\n}: Properties) => {\n\tconst [isCopyMode, setCopyMode] = useState(false);\n\n\tconst copyToClipboard = async () => {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(code);\n\t\t\tsetCopyMode(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetCopyMode(false);\n\t\t\t}, 1000);\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to copy:', error);\n\t\t}\n\t};\n\n\tconst lineNumberStyle = {\n\t\tcolor: '#95a1b1',\n\t\tfontSize: '0.9em',\n\t\tpaddingRight: '1em',\n\t\tmarginRight: '8px',\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`${styles['code-block']} ${hasMarginUp ? styles['margin-top--1'] : ''} ${\n\t\t\t\thasMarginDown ? styles['margin-bottom--2'] : ''\n\t\t\t}`}\n\t\t>\n\t\t\t<div className={styles['code-block__header']}>\n\t\t\t\t<div className={styles['code-block__header__title']}>{language}</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${styles['code-block__header__copy']} ${\n\t\t\t\t\t\tisCopyMode ? styles['code-block__header__copy--active'] : ''\n\t\t\t\t\t}`}\n\t\t\t\t\tonClick={copyToClipboard}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className={styles['code-block__wrapper']}>\n\t\t\t\t<SH\n\t\t\t\t\tlanguage={language}\n\t\t\t\t\tstyle={dracula}\n\t\t\t\t\tshowLineNumbers\n\t\t\t\t\tlineNumberStyle={lineNumberStyle}\n\t\t\t\t>\n\t\t\t\t\t{code}\n\t\t\t\t</SH>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default CodeBlock;\n"],"names":["SyntaxHighlighter","useState","_jsxs","styles","_jsx","dracula"],"mappings":";;;;;;;;;;;AAQA,MAAM,EAAE,GAAGA,4BAAwB;AAWnC,MAAM,SAAS,GAAG,CAAC,EAClB,QAAQ,GAAG,YAAY,EACvB,IAAI,GAAG,EAAE,EACT,WAAW,GAAG,KAAK,EACnB,aAAa,GAAG,KAAK,GACT,KAAI;IAChB,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC;AAEjD,IAAA,MAAM,eAAe,GAAG,YAAW;AAClC,QAAA,IAAI;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;YACzC,WAAW,CAAC,IAAI,CAAC;YACjB,UAAU,CAAC,MAAK;gBACf,WAAW,CAAC,KAAK,CAAC;YACnB,CAAC,EAAE,IAAI,CAAC;QACT;QAAE,OAAO,KAAK,EAAE;AACf,YAAA,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC;QACxC;AACD,IAAA,CAAC;AAED,IAAA,MAAM,eAAe,GAAG;AACvB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,WAAW,EAAE,KAAK;KAClB;IAED,QACCC,eAAA,CAAA,KAAA,EAAA,EACC,SAAS,EAAE,CAAA,EAAGC,wBAAM,CAAC,YAAY,CAAC,CAAA,CAAA,EAAI,WAAW,GAAGA,wBAAM,CAAC,eAAe,CAAC,GAAG,EAAE,CAAA,CAAA,EAC/E,aAAa,GAAGA,wBAAM,CAAC,kBAAkB,CAAC,GAAG,EAC9C,CAAA,CAAE,EAAA,QAAA,EAAA,CAEFD,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAEC,wBAAM,CAAC,oBAAoB,CAAC,EAAA,QAAA,EAAA,CAC3CC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAED,wBAAM,CAAC,2BAA2B,CAAC,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAO,EACrEC,cAAA,CAAA,KAAA,EAAA,EACC,SAAS,EAAE,CAAA,EAAGD,wBAAM,CAAC,0BAA0B,CAAC,CAAA,CAAA,EAC/C,UAAU,GAAGA,wBAAM,CAAC,kCAAkC,CAAC,GAAG,EAC3D,CAAA,CAAE,EACF,OAAO,EAAE,eAAe,EAAA,CACvB,CAAA,EAAA,CACG,EACNC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAED,wBAAM,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAC5CC,cAAA,CAAC,EAAE,EAAA,EACF,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAEC,aAAO,EACd,eAAe,EAAA,IAAA,EACf,eAAe,EAAE,eAAe,EAAA,QAAA,EAE/B,IAAI,EAAA,CACD,EAAA,CACA,CAAA,EAAA,CACD;AAER;;;;"}
@@ -0,0 +1,59 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var react = require('react');
8
+ var mermaid = require('mermaid');
9
+ var Mermaid_module = require('../styles/Mermaid.module.scss.js');
10
+
11
+ mermaid.initialize({
12
+ startOnLoad: false,
13
+ theme: 'default',
14
+ timeline: {
15
+ useMaxWidth: true,
16
+ diagramMarginX: 0,
17
+ },
18
+ flowchart: {
19
+ useMaxWidth: true,
20
+ diagramPadding: 0,
21
+ },
22
+ sequence: {
23
+ useMaxWidth: true,
24
+ diagramMarginX: 0,
25
+ },
26
+ });
27
+ const Mermaid = ({ code = '', id = '', hasMarginUp = false, hasMarginDown = false, }) => {
28
+ const [enabled, setEnabled] = react.useState(false);
29
+ const mermaidReference = react.useRef(null);
30
+ const initializeMermaid = react.useCallback(async () => {
31
+ try {
32
+ if (!mermaidReference.current || !code)
33
+ return;
34
+ const { svg, bindFunctions } = await mermaid.render(`mermaid-diagram-${id}`, code);
35
+ if (!svg)
36
+ return;
37
+ mermaidReference.current.innerHTML = svg || '';
38
+ bindFunctions?.(mermaidReference.current);
39
+ setEnabled(true);
40
+ }
41
+ catch (error) {
42
+ console.error('Failed to render Mermaid diagram:', error);
43
+ }
44
+ }, [code, id]);
45
+ react.useEffect(() => {
46
+ if (!code || !mermaidReference.current)
47
+ return;
48
+ const timer = setTimeout(async () => {
49
+ await initializeMermaid();
50
+ }, 100);
51
+ return () => clearTimeout(timer);
52
+ }, [code, initializeMermaid]);
53
+ return (jsxRuntime.jsxs("div", { className: `${Mermaid_module.default.mermaid}
54
+ ${hasMarginUp ? Mermaid_module.default['margin-top--1'] : ''}
55
+ ${hasMarginDown ? Mermaid_module.default['margin-bottom--2'] : ''}`, children: [enabled ? null : jsxRuntime.jsx("p", { children: "Diagram Loading..." }), jsxRuntime.jsx("div", { ref: mermaidReference, id: id })] }));
56
+ };
57
+
58
+ exports.default = Mermaid;
59
+ //# sourceMappingURL=MermaidDynamic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MermaidDynamic.js","sources":["../../../src/dynamicComponents/MermaidDynamic.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport mermaid from 'mermaid';\n\nimport styles from '../styles/Mermaid.module.scss';\n\ninterface MermaidProperties {\n\tcode: string;\n\tid: string;\n\thasMarginUp?: boolean;\n\thasMarginDown?: boolean;\n}\n\nmermaid.initialize({\n\tstartOnLoad: false,\n\ttheme: 'default',\n\ttimeline: {\n\t\tuseMaxWidth: true,\n\t\tdiagramMarginX: 0,\n\t},\n\tflowchart: {\n\t\tuseMaxWidth: true,\n\t\tdiagramPadding: 0,\n\t},\n\tsequence: {\n\t\tuseMaxWidth: true,\n\t\tdiagramMarginX: 0,\n\t},\n});\n\nconst Mermaid = ({\n\tcode = '',\n\tid = '',\n\thasMarginUp = false,\n\thasMarginDown = false,\n}: MermaidProperties) => {\n\tconst [enabled, setEnabled] = useState(false);\n\tconst mermaidReference = useRef<HTMLDivElement>(null);\n\n\tconst initializeMermaid = useCallback(async () => {\n\t\ttry {\n\t\t\tif (!mermaidReference.current || !code) return;\n\t\t\tconst { svg, bindFunctions } = await mermaid.render(\n\t\t\t\t`mermaid-diagram-${id}`,\n\t\t\t\tcode\n\t\t\t);\n\t\t\tif (!svg) return;\n\t\t\tmermaidReference.current.innerHTML = svg || '';\n\t\t\tbindFunctions?.(mermaidReference.current);\n\t\t\tsetEnabled(true);\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to render Mermaid diagram:', error);\n\t\t}\n\t}, [code, id]);\n\n\tuseEffect(() => {\n\t\tif (!code || !mermaidReference.current) return;\n\t\tconst timer = setTimeout(async () => {\n\t\t\tawait initializeMermaid();\n\t\t}, 100);\n\t\treturn () => clearTimeout(timer);\n\t}, [code, initializeMermaid]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`${styles.mermaid}\n\t\t\t\t${hasMarginUp ? styles['margin-top--1'] : ''}\n\t\t\t\t${hasMarginDown ? styles['margin-bottom--2'] : ''}`}\n\t\t>\n\t\t\t{enabled ? null : <p>Diagram Loading...</p>}\n\t\t\t<div ref={mermaidReference} id={id}></div>\n\t\t</div>\n\t);\n};\n\nexport default Mermaid;\n"],"names":["useState","useRef","useCallback","useEffect","_jsxs","styles","_jsx"],"mappings":";;;;;;;;;AAeA,OAAO,CAAC,UAAU,CAAC;AAClB,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,QAAQ,EAAE;AACT,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,cAAc,EAAE,CAAC;AACjB,KAAA;AACD,IAAA,SAAS,EAAE;AACV,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,cAAc,EAAE,CAAC;AACjB,KAAA;AACD,IAAA,QAAQ,EAAE;AACT,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,cAAc,EAAE,CAAC;AACjB,KAAA;AACD,CAAA,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,EAChB,IAAI,GAAG,EAAE,EACT,EAAE,GAAG,EAAE,EACP,WAAW,GAAG,KAAK,EACnB,aAAa,GAAG,KAAK,GACF,KAAI;IACvB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC;AAC7C,IAAA,MAAM,gBAAgB,GAAGC,YAAM,CAAiB,IAAI,CAAC;AAErD,IAAA,MAAM,iBAAiB,GAAGC,iBAAW,CAAC,YAAW;AAChD,QAAA,IAAI;AACH,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,CAAC,IAAI;gBAAE;AACxC,YAAA,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAClD,CAAA,gBAAA,EAAmB,EAAE,EAAE,EACvB,IAAI,CACJ;AACD,YAAA,IAAI,CAAC,GAAG;gBAAE;YACV,gBAAgB,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,IAAI,EAAE;AAC9C,YAAA,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;YACzC,UAAU,CAAC,IAAI,CAAC;QACjB;QAAE,OAAO,KAAK,EAAE;AACf,YAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC;QAC1D;AACD,IAAA,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEdC,eAAS,CAAC,MAAK;AACd,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO;YAAE;AACxC,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,YAAW;YACnC,MAAM,iBAAiB,EAAE;QAC1B,CAAC,EAAE,GAAG,CAAC;AACP,QAAA,OAAO,MAAM,YAAY,CAAC,KAAK,CAAC;AACjC,IAAA,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AAE7B,IAAA,QACCC,eAAA,CAAA,KAAA,EAAA,EACC,SAAS,EAAE,CAAA,EAAGC,sBAAM,CAAC,OAAO;MACzB,WAAW,GAAGA,sBAAM,CAAC,eAAe,CAAC,GAAG,EAAE;AAC1C,IAAA,EAAA,aAAa,GAAGA,sBAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAA,CAAE,EAAA,QAAA,EAAA,CAEnD,OAAO,GAAG,IAAI,GAAGC,cAAA,CAAA,GAAA,EAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,CAAyB,EAC3CA,wBAAK,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAA,CAAQ,CAAA,EAAA,CACrC;AAER;;;;"}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var Table_module = require('../styles/Table.module.scss.js');
7
+
8
+ const Table = ({ rows = [], headers = [], hasMarginUp = false, hasMarginDown = false, }) => {
9
+ const columnCount = headers.length;
10
+ return (jsxRuntime.jsxs("div", { className: `${Table_module.default.table}
11
+ ${hasMarginUp ? Table_module.default['margin-top--1'] : ''}
12
+ ${hasMarginDown ? Table_module.default['margin-bottom--2'] : ''}`, style: {
13
+ gridTemplateColumns: `repeat(${columnCount}, 1fr)`,
14
+ }, children: [jsxRuntime.jsx("div", { className: `${Table_module.default['table__header']}`, children: headers.map((header, index) => (jsxRuntime.jsx("div", { className: `${Table_module.default['table__header__cell']}`, children: header }, typeof header === 'string' ? header : index))) }), rows.map((row, index) => (jsxRuntime.jsx("div", { className: `${Table_module.default['table__row']}`, children: row.map((cell, cellIndex) => (jsxRuntime.jsx("div", { className: `${Table_module.default['table__row__cell']}`, children: cell }, typeof cell === 'string' ? cell : cellIndex))) }, index)))] }));
15
+ };
16
+
17
+ exports.default = Table;
18
+ //# sourceMappingURL=TableDynamic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableDynamic.js","sources":["../../../src/dynamicComponents/TableDynamic.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport styles from '../styles/Table.module.scss';\n\ninterface TableProperties {\n\trows?: ReactNode[][];\n\theaders?: ReactNode[];\n\thasMarginUp?: boolean;\n\thasMarginDown?: boolean;\n}\n\nconst Table = ({\n\trows = [],\n\theaders = [],\n\thasMarginUp = false,\n\thasMarginDown = false,\n}: TableProperties) => {\n\tconst columnCount = headers.length;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`${styles.table}\n\t\t\t\t${hasMarginUp ? styles['margin-top--1'] : ''}\n\t\t\t\t${hasMarginDown ? styles['margin-bottom--2'] : ''}`}\n\t\t\tstyle={{\n\t\t\t\tgridTemplateColumns: `repeat(${columnCount}, 1fr)`,\n\t\t\t}}\n\t\t>\n\t\t\t<div className={`${styles['table__header']}`}>\n\t\t\t\t{headers.map((header, index) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={typeof header === 'string' ? header : index}\n\t\t\t\t\t\tclassName={`${styles['table__header__cell']}`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{header}\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t{rows.map((row, index) => (\n\t\t\t\t<div key={index} className={`${styles['table__row']}`}>\n\t\t\t\t\t{row.map((cell, cellIndex) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={typeof cell === 'string' ? cell : cellIndex}\n\t\t\t\t\t\t\tclassName={`${styles['table__row__cell']}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{cell}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n\nexport default Table;\n"],"names":["_jsxs","styles","_jsx"],"mappings":";;;;;;;AAUA,MAAM,KAAK,GAAG,CAAC,EACd,IAAI,GAAG,EAAE,EACT,OAAO,GAAG,EAAE,EACZ,WAAW,GAAG,KAAK,EACnB,aAAa,GAAG,KAAK,GACJ,KAAI;AACrB,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM;AAElC,IAAA,QACCA,eAAA,CAAA,KAAA,EAAA,EACC,SAAS,EAAE,CAAA,EAAGC,oBAAM,CAAC,KAAK;MACvB,WAAW,GAAGA,oBAAM,CAAC,eAAe,CAAC,GAAG,EAAE;AAC1C,IAAA,EAAA,aAAa,GAAGA,oBAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAA,CAAE,EACpD,KAAK,EAAE;YACN,mBAAmB,EAAE,CAAA,OAAA,EAAU,WAAW,CAAA,MAAA,CAAQ;SAClD,EAAA,QAAA,EAAA,CAEDC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAA,EAAGD,oBAAM,CAAC,eAAe,CAAC,CAAA,CAAE,EAAA,QAAA,EAC1C,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,MAC1BC,cAAA,CAAA,KAAA,EAAA,EAEC,SAAS,EAAE,CAAA,EAAGD,oBAAM,CAAC,qBAAqB,CAAC,CAAA,CAAE,EAAA,QAAA,EAE5C,MAAM,EAAA,EAHF,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,KAAK,CAI3C,CACN,CAAC,EAAA,CACG,EACL,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,MACpBC,cAAA,CAAA,KAAA,EAAA,EAAiB,SAAS,EAAE,CAAA,EAAGD,oBAAM,CAAC,YAAY,CAAC,CAAA,CAAE,EAAA,QAAA,EACnD,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,MACxBC,cAAA,CAAA,KAAA,EAAA,EAEC,SAAS,EAAE,CAAA,EAAGD,oBAAM,CAAC,kBAAkB,CAAC,CAAA,CAAE,EAAA,QAAA,EAEzC,IAAI,EAAA,EAHA,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,SAAS,CAI3C,CACN,CAAC,EAAA,EARO,KAAK,CAST,CACN,CAAC,CAAA,EAAA,CACG;AAER;;;;"}