cortex-react-components 1.62.1 → 1.62.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 (204) hide show
  1. package/dist/{chunk-DOFKMHT2.mjs → chunk-2IJK3AE7.mjs} +1 -1
  2. package/dist/chunk-2ZB6Z7XN.mjs +4 -0
  3. package/dist/{chunk-75HYIK2G.mjs → chunk-3BATRS4C.mjs} +1 -1
  4. package/dist/{chunk-X7BL4XNE.mjs → chunk-5ALQQYYE.mjs} +1 -1
  5. package/dist/{chunk-QLIAHL5I.mjs → chunk-64DD3N4S.mjs} +1 -1
  6. package/dist/{chunk-CKHMERFD.mjs → chunk-65BHP4TM.mjs} +1 -1
  7. package/dist/{chunk-W44AKXM4.mjs → chunk-B7STYVDB.mjs} +1 -1
  8. package/dist/{chunk-YRSOMSFW.mjs → chunk-CJF6GVGP.mjs} +1 -1
  9. package/dist/{chunk-WLNBPCJF.mjs → chunk-DVGPU4EL.mjs} +1 -1
  10. package/dist/{chunk-24APRFWG.mjs → chunk-EVVDCPEA.mjs} +1 -1
  11. package/dist/{chunk-UYICWAF2.mjs → chunk-FGHN2OHF.mjs} +1 -1
  12. package/dist/{chunk-6GZQTL75.mjs → chunk-FN5C27GW.mjs} +1 -1
  13. package/dist/chunk-FSYU3D5O.mjs +1 -0
  14. package/dist/{chunk-RR4HR3KN.mjs → chunk-GHXEOXV4.mjs} +1 -1
  15. package/dist/{chunk-PGSV4TRK.mjs → chunk-GYDVBUKO.mjs} +1 -1
  16. package/dist/{chunk-7J7FNKHF.mjs → chunk-IH37BDR2.mjs} +1 -1
  17. package/dist/{chunk-2H6ELPBB.mjs → chunk-JLCWVIEP.mjs} +1 -1
  18. package/dist/{chunk-KGIOLQSJ.mjs → chunk-JU7C3V5N.mjs} +1 -1
  19. package/dist/{chunk-BNDQ6JWZ.mjs → chunk-L5MDFQGH.mjs} +1 -1
  20. package/dist/{chunk-ZD7HSIMS.mjs → chunk-MUBDAI2K.mjs} +1 -1
  21. package/dist/{chunk-PARG2DLL.mjs → chunk-NP2M5K7O.mjs} +1 -1
  22. package/dist/{chunk-V4JGZT55.mjs → chunk-OMVXDUX7.mjs} +1 -1
  23. package/dist/{chunk-I5HRFLAL.mjs → chunk-R7IAPAL5.mjs} +1 -1
  24. package/dist/{chunk-TLE6V6RN.mjs → chunk-RG5W7B5K.mjs} +1 -1
  25. package/dist/{chunk-W77KSAW7.mjs → chunk-RZUYAUCR.mjs} +1 -1
  26. package/dist/{chunk-ZYYWN6XG.mjs → chunk-SUO6GOJS.mjs} +1 -1
  27. package/dist/{chunk-2LZPPRWJ.mjs → chunk-U7Q6ZRR3.mjs} +1 -1
  28. package/dist/{chunk-FC3MJHFL.mjs → chunk-UDQTFQR7.mjs} +1 -1
  29. package/dist/{chunk-UJSN2546.mjs → chunk-VEWTPB7K.mjs} +1 -1
  30. package/dist/{chunk-KYZKHJAK.mjs → chunk-WPL2QWNG.mjs} +1 -1
  31. package/dist/{chunk-Q5OSKAPP.mjs → chunk-X4EKDFOJ.mjs} +1 -1
  32. package/dist/{chunk-BZ2FTWEK.mjs → chunk-X4Q7WZZS.mjs} +1 -1
  33. package/dist/{chunk-R5424SOB.mjs → chunk-XIVKVQK2.mjs} +1 -1
  34. package/dist/{chunk-QT3YSTDB.mjs → chunk-XZ4GLJWK.mjs} +1 -1
  35. package/dist/chunk-YPK6OLRS.mjs +4 -0
  36. package/dist/{chunk-SUXBUTE4.mjs → chunk-Z3YAIJQT.mjs} +1 -1
  37. package/dist/{chunk-ITA62TPJ.mjs → chunk-ZJCHVWSF.mjs} +1 -1
  38. package/dist/components/Blocks/Banner.js +1 -1
  39. package/dist/components/Blocks/Banner.mjs +1 -1
  40. package/dist/components/Blocks/CallToAction.js +1 -1
  41. package/dist/components/Blocks/CallToAction.mjs +1 -1
  42. package/dist/components/Blocks/CallToAction.stories.js +1 -1
  43. package/dist/components/Blocks/CallToAction.stories.mjs +1 -1
  44. package/dist/components/Blocks/CollapsibleArea.js +1 -1
  45. package/dist/components/Blocks/CollapsibleArea.mjs +1 -1
  46. package/dist/components/Blocks/CollapsibleArea.stories.js +1 -1
  47. package/dist/components/Blocks/CollapsibleArea.stories.mjs +1 -1
  48. package/dist/components/Blocks/Content.js +1 -1
  49. package/dist/components/Blocks/Content.mjs +1 -1
  50. package/dist/components/Blocks/Content.stories.js +1 -1
  51. package/dist/components/Blocks/Content.stories.mjs +1 -1
  52. package/dist/components/Blocks/FeaturesBlock.js +1 -1
  53. package/dist/components/Blocks/FeaturesBlock.mjs +1 -1
  54. package/dist/components/Blocks/FeaturesBlock.stories.js +1 -1
  55. package/dist/components/Blocks/FeaturesBlock.stories.mjs +1 -1
  56. package/dist/components/Blocks/RelatedPosts.js +1 -1
  57. package/dist/components/Blocks/RelatedPosts.mjs +1 -1
  58. package/dist/components/Blocks/RenderBlocks.js +1 -1
  59. package/dist/components/Blocks/RenderBlocks.mjs +1 -1
  60. package/dist/components/Blocks/ReusableContentBlock.js +1 -1
  61. package/dist/components/Blocks/ReusableContentBlock.mjs +1 -1
  62. package/dist/components/Blocks/index.js +1 -1
  63. package/dist/components/Blocks/index.mjs +1 -1
  64. package/dist/components/Cards/ContentCard.js +1 -1
  65. package/dist/components/Cards/ContentCard.mjs +1 -1
  66. package/dist/components/Cards/ContentCard.stories.js +1 -1
  67. package/dist/components/Cards/ContentCard.stories.mjs +1 -1
  68. package/dist/components/Cards/FeatureCard.js +1 -1
  69. package/dist/components/Cards/FeatureCard.mjs +1 -1
  70. package/dist/components/Cards/FeatureCard.stories.js +1 -1
  71. package/dist/components/Cards/FeatureCard.stories.mjs +1 -1
  72. package/dist/components/Cards/index.js +4 -4
  73. package/dist/components/Cards/index.mjs +1 -1
  74. package/dist/components/DigitalColleagues/AppSidebarLeft.mjs +1 -1
  75. package/dist/components/DigitalColleagues/MainPage.mjs +1 -1
  76. package/dist/components/DigitalColleagues/MainPage.stories.mjs +1 -1
  77. package/dist/components/HeaderFooter/Header.stories.mjs +1 -1
  78. package/dist/components/HeaderFooter/RelatedPagesMenu.js +1 -1
  79. package/dist/components/HeaderFooter/RelatedPagesMenu.mjs +1 -1
  80. package/dist/components/HeaderFooter/SectionHeading.js +1 -1
  81. package/dist/components/HeaderFooter/SectionHeading.mjs +1 -1
  82. package/dist/components/HeaderFooter/index.js +1 -1
  83. package/dist/components/HeaderFooter/index.mjs +1 -1
  84. package/dist/components/Heros/HighImpact/index.js +1 -1
  85. package/dist/components/Heros/HighImpact/index.mjs +1 -1
  86. package/dist/components/Heros/LowImpact/index.js +1 -1
  87. package/dist/components/Heros/LowImpact/index.mjs +1 -1
  88. package/dist/components/Heros/MediumImpact/index.js +1 -1
  89. package/dist/components/Heros/MediumImpact/index.mjs +1 -1
  90. package/dist/components/Heros/PostHero/index.mjs +1 -1
  91. package/dist/components/Heros/RenderHero.js +1 -1
  92. package/dist/components/Heros/RenderHero.mjs +1 -1
  93. package/dist/components/Heros/index.js +1 -1
  94. package/dist/components/Heros/index.mjs +1 -1
  95. package/dist/components/Holidays/HolidayTracker.mjs +1 -1
  96. package/dist/components/Holidays/HolidayTracker.stories.mjs +1 -1
  97. package/dist/components/Holidays/index.mjs +1 -1
  98. package/dist/components/Layouts/FeatureGrid.stories.js +1 -1
  99. package/dist/components/Layouts/FeatureGrid.stories.mjs +1 -1
  100. package/dist/components/Layouts/OutputHeaderFooter.js +1 -1
  101. package/dist/components/Layouts/OutputHeaderFooter.mjs +1 -1
  102. package/dist/components/Layouts/Print.js +1 -1
  103. package/dist/components/Layouts/Print.mjs +1 -1
  104. package/dist/components/Layouts/Print.stories.js +1 -1
  105. package/dist/components/Layouts/Print.stories.mjs +1 -1
  106. package/dist/components/Layouts/SlideShow.js +1 -1
  107. package/dist/components/Layouts/SlideShow.mjs +1 -1
  108. package/dist/components/Layouts/SlideShow.stories.js +1 -1
  109. package/dist/components/Layouts/SlideShow.stories.mjs +1 -1
  110. package/dist/components/Layouts/index.js +1 -1
  111. package/dist/components/Layouts/index.mjs +1 -1
  112. package/dist/components/Menus/SidebarLeft.mjs +1 -1
  113. package/dist/components/Menus/SidebarLeft.stories.mjs +1 -1
  114. package/dist/components/Menus/SidebarRight.mjs +1 -1
  115. package/dist/components/Menus/SidebarRight.stories.mjs +1 -1
  116. package/dist/components/Menus/index.mjs +1 -1
  117. package/dist/components/Payload/RichText/index.js +1 -1
  118. package/dist/components/Payload/RichText/index.mjs +1 -1
  119. package/dist/components/Payload/RichText/serialize.js +1 -1
  120. package/dist/components/Payload/RichText/serialize.mjs +1 -1
  121. package/dist/components/Payload/RichText.stories.js +1 -1
  122. package/dist/components/Payload/RichText.stories.mjs +1 -1
  123. package/dist/components/Payload/index.js +1 -1
  124. package/dist/components/Payload/index.mjs +1 -1
  125. package/dist/components/index.js +3 -3
  126. package/dist/components/index.mjs +1 -1
  127. package/dist/components/ui/index.mjs +1 -1
  128. package/dist/components/ui/sidebar.mjs +1 -1
  129. package/dist/index.js +4 -4
  130. package/dist/index.mjs +1 -1
  131. package/dist/metafile-cjs.json +1 -1
  132. package/dist/metafile-esm.json +1 -1
  133. package/dist/pages/Blog.js +1 -1
  134. package/dist/pages/Blog.mjs +1 -1
  135. package/dist/pages/Blog.stories.js +1 -1
  136. package/dist/pages/Blog.stories.mjs +1 -1
  137. package/dist/pages/Documentation.mjs +1 -1
  138. package/dist/pages/Documentation.stories.mjs +1 -1
  139. package/dist/pages/IndexPage.mjs +1 -1
  140. package/dist/pages/IndexPage.stories.mjs +1 -1
  141. package/dist/pages/Intranet.mjs +1 -1
  142. package/dist/pages/Intranet.stories.mjs +1 -1
  143. package/dist/pages/LandingPage.js +1 -1
  144. package/dist/pages/LandingPage.mjs +1 -1
  145. package/dist/pages/LandingPage.stories.js +1 -1
  146. package/dist/pages/LandingPage.stories.mjs +1 -1
  147. package/dist/pages/Page.js +1 -1
  148. package/dist/pages/Page.mjs +1 -1
  149. package/dist/pages/Page.stories.js +1 -1
  150. package/dist/pages/Page.stories.mjs +1 -1
  151. package/dist/pages/Printable.stories.js +1 -1
  152. package/dist/pages/Printable.stories.mjs +1 -1
  153. package/dist/pages/Publish.js +1 -1
  154. package/dist/pages/Publish.mjs +1 -1
  155. package/dist/pages/Publish.stories.js +1 -1
  156. package/dist/pages/Publish.stories.mjs +1 -1
  157. package/dist/pages/Website.js +1 -1
  158. package/dist/pages/Website.mjs +1 -1
  159. package/dist/pages/Website.stories.js +1 -1
  160. package/dist/pages/Website.stories.mjs +1 -1
  161. package/dist/sections/AboutSection.js +1 -1
  162. package/dist/sections/AboutSection.mjs +1 -1
  163. package/dist/sections/AboutSection.stories.js +1 -1
  164. package/dist/sections/AboutSection.stories.mjs +1 -1
  165. package/dist/sections/BlogDetail.js +1 -1
  166. package/dist/sections/BlogDetail.mjs +1 -1
  167. package/dist/sections/BlogDetail.stories.js +1 -1
  168. package/dist/sections/BlogDetail.stories.mjs +1 -1
  169. package/dist/sections/BlogList.js +1 -1
  170. package/dist/sections/BlogList.mjs +1 -1
  171. package/dist/sections/BlogList.stories.js +1 -1
  172. package/dist/sections/BlogList.stories.mjs +1 -1
  173. package/dist/sections/BlogListSection.mjs +1 -1
  174. package/dist/sections/BlogListSection.stories.mjs +1 -1
  175. package/dist/sections/ContactSection.js +1 -1
  176. package/dist/sections/ContactSection.mjs +1 -1
  177. package/dist/sections/ContactSection.stories.js +1 -1
  178. package/dist/sections/ContactSection.stories.mjs +1 -1
  179. package/dist/sections/ImageSection.stories.js +1 -1
  180. package/dist/sections/ImageSection.stories.mjs +1 -1
  181. package/dist/sections/PageSections.js +1 -1
  182. package/dist/sections/PageSections.mjs +1 -1
  183. package/dist/sections/PageSections.stories.js +1 -1
  184. package/dist/sections/PageSections.stories.mjs +1 -1
  185. package/dist/sections/PricingSection.js +1 -1
  186. package/dist/sections/PricingSection.mjs +1 -1
  187. package/dist/sections/PricingSection.stories.js +1 -1
  188. package/dist/sections/PricingSection.stories.mjs +1 -1
  189. package/dist/sections/ServiceDetail.js +1 -1
  190. package/dist/sections/ServiceDetail.mjs +1 -1
  191. package/dist/sections/ServiceDetailSection.js +1 -1
  192. package/dist/sections/ServiceDetailSection.mjs +1 -1
  193. package/dist/sections/ServiceDetailSection.stories.js +1 -1
  194. package/dist/sections/ServiceDetailSection.stories.mjs +1 -1
  195. package/dist/sections/ServiceSection.js +1 -1
  196. package/dist/sections/ServiceSection.mjs +1 -1
  197. package/dist/sections/ServiceSection.stories.js +1 -1
  198. package/dist/sections/ServiceSection.stories.mjs +1 -1
  199. package/dist/sections/index.js +1 -1
  200. package/dist/sections/index.mjs +1 -1
  201. package/package.json +1 -1
  202. package/dist/chunk-F75HZ4ID.mjs +0 -4
  203. package/dist/chunk-LM3PDZJ4.mjs +0 -4
  204. package/dist/chunk-WWAAWBLR.mjs +0 -1
@@ -2,4 +2,4 @@
2
2
  "use strict";
3
3
  'use server'
4
4
 
5
- "use strict";var Ar=Object.create;var Se=Object.defineProperty;var Nr=Object.getOwnPropertyDescriptor;var Tr=Object.getOwnPropertyNames;var Pr=Object.getPrototypeOf,Ir=Object.prototype.hasOwnProperty;var Br=(e,t)=>{for(var r in t)Se(e,r,{get:t[r],enumerable:!0})},dt=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Tr(t))!Ir.call(e,a)&&a!==r&&Se(e,a,{get:()=>t[a],enumerable:!(n=Nr(t,a))||n.enumerable});return e};var M=(e,t,r)=>(r=e!=null?Ar(Pr(e)):{},dt(t||!e||!e.__esModule?Se(r,"default",{value:e,enumerable:!0}):r,e)),Fr=e=>dt(Se({},"__esModule",{value:!0}),e);var Po={};Br(Po,{AReallyLongTitle:()=>No,Default:()=>be,LotsOfFormatting:()=>To,default:()=>Ao});module.exports=Fr(Po);var mt=require("react/jsx-runtime"),se=({type:e="solid",iconName:t="cloud",size:r="lg",className:n})=>{let a=e.includes("fa-")?e+" ":"fa-"+e+" ",o="fa-"+t,i=n??"",l=a+o+" fa-"+r+" "+i;return(0,mt.jsx)("i",{className:l})};var _=require("@headlessui/react"),wt=require("@heroicons/react/20/solid");var vt=require("clsx");var Ye="-",Mr=e=>{let t=Rr(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:n}=e;return{getClassGroupId:i=>{let l=i.split(Ye);return l[0]===""&&l.length!==1&&l.shift(),ft(l,t)||Dr(i)},getConflictingClassGroupIds:(i,l)=>{let c=r[i]||[];return l&&n[i]?[...c,...n[i]]:c}}},ft=(e,t)=>{if(e.length===0)return t.classGroupId;let r=e[0],n=t.nextPart.get(r),a=n?ft(e.slice(1),n):void 0;if(a)return a;if(t.validators.length===0)return;let o=e.join(Ye);return t.validators.find(({validator:i})=>i(o))?.classGroupId},pt=/^\[(.+)\]$/,Dr=e=>{if(pt.test(e)){let t=pt.exec(e)[1],r=t?.substring(0,t.indexOf(":"));if(r)return"arbitrary.."+r}},Rr=e=>{let{theme:t,prefix:r}=e,n={nextPart:new Map,validators:[]};return zr(Object.entries(e.classGroups),r).forEach(([o,i])=>{$e(i,n,o,t)}),n},$e=(e,t,r,n)=>{e.forEach(a=>{if(typeof a=="string"){let o=a===""?t:ut(t,a);o.classGroupId=r;return}if(typeof a=="function"){if(Lr(a)){$e(a(n),t,r,n);return}t.validators.push({validator:a,classGroupId:r});return}Object.entries(a).forEach(([o,i])=>{$e(i,ut(t,o),r,n)})})},ut=(e,t)=>{let r=e;return t.split(Ye).forEach(n=>{r.nextPart.has(n)||r.nextPart.set(n,{nextPart:new Map,validators:[]}),r=r.nextPart.get(n)}),r},Lr=e=>e.isThemeGetter,zr=(e,t)=>t?e.map(([r,n])=>{let a=n.map(o=>typeof o=="string"?t+o:typeof o=="object"?Object.fromEntries(Object.entries(o).map(([i,l])=>[t+i,l])):o);return[r,a]}):e,Hr=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,r=new Map,n=new Map,a=(o,i)=>{r.set(o,i),t++,t>e&&(t=0,n=r,r=new Map)};return{get(o){let i=r.get(o);if(i!==void 0)return i;if((i=n.get(o))!==void 0)return a(o,i),i},set(o,i){r.has(o)?r.set(o,i):a(o,i)}}},gt="!",Gr=e=>{let{separator:t,experimentalParseClassName:r}=e,n=t.length===1,a=t[0],o=t.length,i=l=>{let c=[],m=0,p=0,x;for(let N=0;N<l.length;N++){let T=l[N];if(m===0){if(T===a&&(n||l.slice(N,N+o)===t)){c.push(l.slice(p,N)),p=N+o;continue}if(T==="/"){x=N;continue}}T==="["?m++:T==="]"&&m--}let u=c.length===0?l:l.substring(p),h=u.startsWith(gt),A=h?u.substring(1):u,C=x&&x>p?x-p:void 0;return{modifiers:c,hasImportantModifier:h,baseClassName:A,maybePostfixModifierPosition:C}};return r?l=>r({className:l,parseClassName:i}):i},Er=e=>{if(e.length<=1)return e;let t=[],r=[];return e.forEach(n=>{n[0]==="["?(t.push(...r.sort(),n),r=[]):r.push(n)}),t.push(...r.sort()),t},Or=e=>({cache:Hr(e.cacheSize),parseClassName:Gr(e),...Mr(e)}),Ur=/\s+/,jr=(e,t)=>{let{parseClassName:r,getClassGroupId:n,getConflictingClassGroupIds:a}=t,o=[],i=e.trim().split(Ur),l="";for(let c=i.length-1;c>=0;c-=1){let m=i[c],{modifiers:p,hasImportantModifier:x,baseClassName:u,maybePostfixModifierPosition:h}=r(m),A=!!h,C=n(A?u.substring(0,h):u);if(!C){if(!A){l=m+(l.length>0?" "+l:l);continue}if(C=n(u),!C){l=m+(l.length>0?" "+l:l);continue}A=!1}let N=Er(p).join(":"),T=x?N+gt:N,B=T+C;if(o.includes(B))continue;o.push(B);let $=a(C,A);for(let L=0;L<$.length;++L){let ve=$[L];o.push(T+ve)}l=m+(l.length>0?" "+l:l)}return l};function $r(){let e=0,t,r,n="";for(;e<arguments.length;)(t=arguments[e++])&&(r=yt(t))&&(n&&(n+=" "),n+=r);return n}var yt=e=>{if(typeof e=="string")return e;let t,r="";for(let n=0;n<e.length;n++)e[n]&&(t=yt(e[n]))&&(r&&(r+=" "),r+=t);return r};function Yr(e,...t){let r,n,a,o=i;function i(c){let m=t.reduce((p,x)=>x(p),e());return r=Or(m),n=r.cache.get,a=r.cache.set,o=l,l(c)}function l(c){let m=n(c);if(m)return m;let p=jr(c,r);return a(c,p),p}return function(){return o($r.apply(null,arguments))}}var v=e=>{let t=r=>r[e]||[];return t.isThemeGetter=!0,t},ht=/^\[(?:([a-z-]+):)?(.+)\]$/i,Jr=/^\d+\/\d+$/,qr=new Set(["px","full","screen"]),Kr=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Vr=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|mt|min|max))|\mt(calc|min|max|clamp)\(.+\)|^0$/,Xr=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Qr=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Zr=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,O=e=>Z(e)||qr.has(e)||Jr.test(e),Y=e=>W(e,"length",no),Z=e=>!!e&&!Number.isNaN(Number(e)),je=e=>W(e,"number",Z),ce=e=>!!e&&Number.isInteger(Number(e)),Wr=e=>e.endsWith("%")&&Z(e.slice(0,-1)),d=e=>ht.test(e),J=e=>Kr.test(e),_r=new Set(["length","size","percentage"]),eo=e=>W(e,_r,xt),to=e=>W(e,"position",xt),ro=new Set(["image","url"]),oo=e=>W(e,ro,lo),ao=e=>W(e,"",io),de=()=>!0,W=(e,t,r)=>{let n=ht.exec(e);return n?n[1]?typeof t=="string"?n[1]===t:t.has(n[1]):r(n[2]):!1},no=e=>Vr.test(e)&&!Xr.test(e),xt=()=>!1,io=e=>Qr.test(e),lo=e=>Zr.test(e);var so=()=>{let e=v("colors"),t=v("spacing"),r=v("blur"),n=v("brightness"),a=v("borderColor"),o=v("borderRadius"),i=v("borderSpacing"),l=v("borderWidth"),c=v("contrast"),m=v("grayscale"),p=v("hueRotate"),x=v("invert"),u=v("gap"),h=v("gradientColorStops"),A=v("gradientColorStopPositions"),C=v("inset"),N=v("margin"),T=v("opacity"),B=v("padding"),$=v("saturate"),L=v("scale"),ve=v("sepia"),ot=v("skew"),at=v("space"),nt=v("translate"),Ge=()=>["auto","contain","none"],Ee=()=>["auto","hidden","clip","visible","scroll"],Oe=()=>["auto",d,t],w=()=>[d,t],it=()=>["",O,Y],ke=()=>["auto",Z,d],lt=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],we=()=>["solid","dashed","dotted","double","none"],st=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Ue=()=>["start","end","center","between","around","evenly","stretch"],le=()=>["","0",d],ct=()=>["auto","avoid","all","avoid-page","page","left","right","column"],E=()=>[Z,d];return{cacheSize:500,separator:":",theme:{colors:[de],spacing:[O,Y],blur:["none","",J,d],brightness:E(),borderColor:[e],borderRadius:["none","","full",J,d],borderSpacing:w(),borderWidth:it(),contrast:E(),grayscale:le(),hueRotate:E(),invert:le(),gap:w(),gradientColorStops:[e],gradientColorStopPositions:[Wr,Y],inset:Oe(),margin:Oe(),opacity:E(),padding:w(),saturate:E(),scale:E(),sepia:le(),skew:E(),space:w(),translate:w()},classGroups:{aspect:[{aspect:["auto","square","video",d]}],container:["container"],columns:[{columns:[J]}],"break-after":[{"break-after":ct()}],"break-before":[{"break-before":ct()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...lt(),d]}],overflow:[{overflow:Ee()}],"overflow-x":[{"overflow-x":Ee()}],"overflow-mt":[{"overflow-mt":Ee()}],overscroll:[{overscroll:Ge()}],"overscroll-x":[{"overscroll-x":Ge()}],"overscroll-mt":[{"overscroll-mt":Ge()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[C]}],"inset-x":[{"inset-x":[C]}],"inset-mt":[{"inset-mt":[C]}],start:[{start:[C]}],end:[{end:[C]}],top:[{top:[C]}],right:[{right:[C]}],bottom:[{bottom:[C]}],left:[{left:[C]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",ce,d]}],basis:[{basis:Oe()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",d]}],grow:[{grow:le()}],shrink:[{shrink:le()}],order:[{order:["first","last","none",ce,d]}],"grid-cols":[{"grid-cols":[de]}],"col-start-end":[{col:["auto",{span:["full",ce,d]},d]}],"col-start":[{"col-start":ke()}],"col-end":[{"col-end":ke()}],"grid-rows":[{"grid-rows":[de]}],"row-start-end":[{row:["auto",{span:[ce,d]},d]}],"row-start":[{"row-start":ke()}],"row-end":[{"row-end":ke()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",d]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",d]}],gap:[{gap:[u]}],"gap-x":[{"gap-x":[u]}],"gap-mt":[{"gap-mt":[u]}],"justify-content":[{justify:["normal",...Ue()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...Ue(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...Ue(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[B]}],px:[{px:[B]}],py:[{py:[B]}],ps:[{ps:[B]}],pe:[{pe:[B]}],pt:[{pt:[B]}],pr:[{pr:[B]}],pb:[{pb:[B]}],pl:[{pl:[B]}],m:[{m:[N]}],mx:[{mx:[N]}],my:[{my:[N]}],ms:[{ms:[N]}],mt:[{mt:[N]}],mt:[{mt:[N]}],ee:[{ee:[N]}],mb:[{mb:[N]}],ml:[{ml:[N]}],"space-x":[{"space-x":[at]}],"space-x-reverse":["space-x-reverse"],"space-mt":[{"space-mt":[at]}],"space-mt-reverse":["space-mt-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",d,t]}],"min-w":[{"min-w":[d,t,"min","max","fit"]}],"max-w":[{"max-w":[d,t,"none","full","min","max","fit","prose",{screen:[J]},J]}],h:[{h:[d,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[d,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[d,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[d,t,"auto","min","max","fit"]}],"font-size":[{text:["base",J,Y]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",je]}],"font-family":[{font:[de]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",d]}],"line-clamp":[{"line-clamp":["none",Z,je]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",O,d]}],"list-image":[{"list-image":["none",d]}],"list-style-type":[{list:["none","disc","decimal",d]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[T]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[T]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...we(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",O,Y]}],"underline-offset":[{"underline-offset":["auto",O,d]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:w()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",d]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",d]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[T]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...lt(),to]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","mt","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",eo]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","mt","bl","l","tl"]},oo]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[A]}],"gradient-via-pos":[{via:[A]}],"gradient-to-pos":[{to:[A]}],"gradient-from":[{from:[h]}],"gradient-via":[{via:[h]}],"gradient-to":[{to:[h]}],rounded:[{rounded:[o]}],"rounded-s":[{"rounded-s":[o]}],"rounded-e":[{"rounded-e":[o]}],"rounded-t":[{"rounded-t":[o]}],"rounded-r":[{"rounded-r":[o]}],"rounded-mt":[{"rounded-mt":[o]}],"rounded-l":[{"rounded-l":[o]}],"rounded-ss":[{"rounded-ss":[o]}],"rounded-se":[{"rounded-se":[o]}],"rounded-ee":[{"rounded-ee":[o]}],"rounded-es":[{"rounded-es":[o]}],"rounded-tl":[{"rounded-tl":[o]}],"rounded-tr":[{"rounded-tr":[o]}],"rounded-br":[{"rounded-br":[o]}],"rounded-bl":[{"rounded-bl":[o]}],"border-w":[{border:[l]}],"border-w-x":[{"border-x":[l]}],"border-w-mt":[{"border-mt":[l]}],"border-w-s":[{"border-s":[l]}],"border-w-e":[{"border-e":[l]}],"border-w-t":[{"border-t":[l]}],"border-w-r":[{"border-r":[l]}],"border-w-mt":[{"border-mt":[l]}],"border-w-l":[{"border-l":[l]}],"border-opacity":[{"border-opacity":[T]}],"border-style":[{border:[...we(),"hidden"]}],"divide-x":[{"divide-x":[l]}],"divide-x-reverse":["divide-x-reverse"],"divide-mt":[{"divide-mt":[l]}],"divide-mt-reverse":["divide-mt-reverse"],"divide-opacity":[{"divide-opacity":[T]}],"divide-style":[{divide:we()}],"border-color":[{border:[a]}],"border-color-x":[{"border-x":[a]}],"border-color-mt":[{"border-mt":[a]}],"border-color-s":[{"border-s":[a]}],"border-color-e":[{"border-e":[a]}],"border-color-t":[{"border-t":[a]}],"border-color-r":[{"border-r":[a]}],"border-color-mt":[{"border-mt":[a]}],"border-color-l":[{"border-l":[a]}],"divide-color":[{divide:[a]}],"outline-style":[{outline:["",...we()]}],"outline-offset":[{"outline-offset":[O,d]}],"outline-w":[{outline:[O,Y]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:it()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[T]}],"ring-offset-w":[{"ring-offset":[O,Y]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",J,ao]}],"shadow-color":[{shadow:[de]}],opacity:[{opacity:[T]}],"mix-blend":[{"mix-blend":[...st(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":st()}],filter:[{filter:["","none"]}],blur:[{blur:[r]}],brightness:[{brightness:[n]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":["","none",J,d]}],grayscale:[{grayscale:[m]}],"hue-rotate":[{"hue-rotate":[p]}],invert:[{invert:[x]}],saturate:[{saturate:[$]}],sepia:[{sepia:[ve]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[r]}],"backdrop-brightness":[{"backdrop-brightness":[n]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[m]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[p]}],"backdrop-invert":[{"backdrop-invert":[x]}],"backdrop-opacity":[{"backdrop-opacity":[T]}],"backdrop-saturate":[{"backdrop-saturate":[$]}],"backdrop-sepia":[{"backdrop-sepia":[ve]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[i]}],"border-spacing-x":[{"border-spacing-x":[i]}],"border-spacing-mt":[{"border-spacing-mt":[i]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",d]}],duration:[{duration:E()}],ease:[{ease:["linear","in","out","in-out",d]}],delay:[{delay:E()}],animate:[{animate:["none","spin","ping","pulse","bounce",d]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[L]}],"scale-x":[{"scale-x":[L]}],"scale-mt":[{"scale-mt":[L]}],rotate:[{rotate:[ce,d]}],"translate-x":[{"translate-x":[nt]}],"translate-mt":[{"translate-mt":[nt]}],"skew-x":[{"skew-x":[ot]}],"skew-mt":[{"skew-mt":[ot]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",d]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","kr-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",d]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","mt","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-ee":[{"scroll-ee":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","mt","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-mt":[{"touch-pan":["mt","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",d]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[O,Y,je]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-mt"],overscroll:["overscroll-x","overscroll-mt"],inset:["inset-x","inset-mt","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-mt":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-mt"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","mt","mt","ee","mb","ml"],mx:["ee","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-mt","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-mt":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-mt"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-mt","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-mt":["border-w-t","border-w-mt"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-mt","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-mt":["border-color-t","border-color-mt"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-mt","scroll-mt","scroll-ee","scroll-mb","scroll-ml"],"scroll-mx":["scroll-ee","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-mt","touch-pz"],"touch-x":["touch"],"touch-mt":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}};var bt=Yr(so);function s(...e){return bt((0,vt.clsx)(e))}var co=({name:e,items:t,actions:r=[],href:n})=>!t&&n?(0,mt.jsx)("a",{href:n,className:"flex items-center gap-x-1 text-sm text-foreground group",children:(0,mt.jsxs)("span",{className:"relative",children:[e,(0,mt.jsx)("span",{className:"absolute -bottom-1 left-1/2 w-1/2 h-0.5 bg-accent transform -translate-x-1/2 scale-x-0 transition-transform duration-300 ease-in-out group-hover:scale-x-100"})]})}):(0,mt.jsxs)(_.Popover,{children:[(0,mt.jsxs)(_.PopoverButton,{className:"flex items-center gap-x-1 text-sm/6 text-foreground outline-none group",children:[(0,mt.jsxs)("span",{className:"relative",children:[e,(0,mt.jsx)("span",{className:"absolute bottom-0 left-1/2 w-1/2 h-0.5 bg-accent transform -translate-x-1/2 scale-x-0 transition-transform duration-300 ease-in-out group-hover:scale-x-100"})]}),(0,mt.jsx)(wt.ChevronDownIcon,{"aria-hidden":"true",className:"h-5 w-5 flex-none text-accent"})]}),(0,mt.jsxs)(_.PopoverPanel,{transition:!0,className:"absolute inset-x-0 top-0 -z-10 bg-popover mt-14 shadow-lg ring-1 ring-ring/5 transition data-[closed]:-translate-mt-1 data-[closed]:opacity-0 data-[enter]:duration-200 data-[leave]:duration-150 data-[enter]:ease-out data-[leave]:ease-in",children:[(0,mt.jsx)("div",{className:"mx-auto grid max-w-7xl grid-cols-4 gap-x-4 px-6 py-10 lg:px-8 xl:gap-x-8 z-50",children:t&&t.map(a=>(0,mt.jsxs)("div",{className:"group relative rounded-lg p-6 text-sm/6 box-border",children:[(0,mt.jsx)("div",{className:"flex h-16 items-center justify-start rounded-lg bg-popover text-muted-foreground group-hover:text-accent transition-transform duration-400 ease-in-out group-hover:scale-90",children:a.icon&&(0,mt.jsx)(kt,{icon:a.icon,size:"4x"})}),(0,mt.jsxs)("a",{href:a.href,className:"mt-6 block text-popover-foreground group-hover:text-accent",children:[a.name,(0,mt.jsx)("span",{className:"absolute inset-0"})]}),(0,mt.jsx)("p",{className:"mt-1 text-popover-foreground/80 group-hover:text-accent",children:a.description})]},a.name))}),r.length>0&&(0,mt.jsx)("div",{className:"bg-gray-50",children:(0,mt.jsx)("div",{className:"mx-auto max-w-7xl px-6 lg:px-8",children:(0,mt.jsx)("div",{className:"grid grid-cols-3 divide-x divide-gray-900/5 border-x border-gray-900/5",children:r.map(a=>(0,mt.jsxs)("a",{href:a.href,className:"flex items-center max-h-12 justify-center gap-x-2.5 p-3 text-sm/6 text-gray-900 hover:bg-gray-100",children:[a.icon&&(0,mt.jsx)(kt,{icon:a.icon,className:"h-5 w-5 flex-none text-gray-400"}),a.name]},a.name))})})})]})]}),kt=({icon:e,className:t,size:r="lg"})=>{if(!e)return null;if("type"in e)return(0,mt.jsx)(se,{...e,size:r});if("src"in e)return(0,mt.jsx)("div",{className:s(t,"h-full max-w-32 items-start text-left"),children:e&&typeof e.src=="string"&&(0,mt.jsx)("img",{src:e.src,style:{objectFit:"contain",width:"100%",height:"100%"}})})},St=co;var Ct=M(require("next/link"));function Ce({children:e,href:t,openNewTab:r,...n}){return(0,mt.jsx)(Ct.default,{href:t,target:r?"_blank":"_self",...n,children:e})}function Nt({children:e,isFluid:t=!1,isNoPadding:r=!1,className:n=""}){let a=s("container",t&&"full-width",r&&"no-padding",n);return(0,mt.jsx)("div",{className:a,children:e})}var ee=require("react");var Je=M(require("next/image"));function pe({logoLight:e,logoDark:t,mobile:r=!1}){return(0,mt.jsxs)(Ce,{href:"/",className:s(r?"py-1":"py-2"),children:[(0,mt.jsx)(Je.default,{className:"logo-light dark:hidden",src:e.src,width:e.width,height:e.height,alt:`${process.env.NEXT_PUBLIC_SITE_NAME} brand logo`,sizes:"100vw",priority:!0,style:{width:"auto",height:r?35:50}}),(0,mt.jsx)(Je.default,{className:"hidden dark:block",src:t.src,width:t.width,height:t.height,alt:`${process.env.NEXT_PUBLIC_SITE_NAME} brand logo`,sizes:"100vw",priority:!0,style:{width:"auto",height:r?35:50}})]})}var Pt=require("next-themes"),Ae=require("lucide-react");function Bt({isMenuOpen:e,logoLight:t,logoDark:r,menuItems:n,themeControl:a=!1,wide:o=!1}){let[i,l]=(0,ee.useState)(!1),[c,m]=(0,ee.useState)(""),p=["light","dark"],{theme:x,setTheme:u}=(0,Pt.useTheme)();(0,ee.useEffect)(()=>{m(x||"dark")},[x]);let h=()=>{let A=p[(p.indexOf(c)+1)%p.length];m(A),u(A)};return(0,ee.useEffect)(()=>{let A=()=>{window.scrollY>100?l(!0):l(!1)};return window.addEventListener("scroll",A,{passive:!0}),()=>window.removeEventListener("scroll",A)},[]),(0,mt.jsx)(mt.Fragment,{children:(0,mt.jsx)("header",{className:`z-50 pb-10 transition-all duration-300 hidden lg:block ${i||e?"translate-mt-0":"-translate-mt-full bg-transparent"}`,children:(0,mt.jsx)("nav",{className:"backdrop-blur-sm bg-background/80 text-white p-0",children:(0,mt.jsxs)("div",{className:s("flex items-center justify-between px-9 py-0",!o&&"container"),children:[(0,mt.jsx)(pe,{logoDark:r,logoLight:t}),(0,mt.jsx)(_.PopoverGroup,{className:"hidden lg:flex lg:gap-x-12",children:n&&n.map(A=>(0,mt.jsx)(St,{...A},A.name))}),a&&(0,mt.jsx)("button",{className:"fixed right-4 z-[60] p-2 rounded-full hover:border hover:border-accent backdrop-blur-sm transition-all duration-300 hover:bg-white/20 text-primary dark:text-white hover:text-accent hover:scale-125",onClick:h,children:(0,mt.jsxs)("div",{className:"relative",children:[(0,mt.jsx)(Ae.Sun,{className:"absolute h-6 w-6 rotate-0 scale-100 transition-transform dark:-rotate-90 dark:scale-0"}),(0,mt.jsx)(Ae.Moon,{className:"absoulte h-6 w-6 rotate-0 scale-0 transition-transform dark:rotate-0 dark:scale-100"})]})})]})})})})}var Ne=require("@heroicons/react/24/outline");var qe=["light","dark"];function Mt({logoLight:e,logoDark:t,menuItems:r,isMenuOpen:n=!0}){let[a,o]=(0,ee.useState)(!1),{theme:i,setTheme:l}=(0,Pt.useTheme)(),[c,m]=(0,ee.useState)(!1),[p,x]=(0,ee.useState)("light");(0,ee.useEffect)(()=>{let h=()=>{window.scrollY>100?o(!0):o(!1)};return window.addEventListener("scroll",h,{passive:!0}),()=>window.removeEventListener("scroll",h)},[]),(0,ee.useEffect)(()=>{x(i||"dark")},[i]);let u=()=>{let h=qe[(qe.indexOf(p)+1)%qe.length];x(h),l(h)};return(0,mt.jsx)(mt.Fragment,{children:(0,mt.jsxs)("header",{className:`z-50 pb-10 transition-all duration-300 block lg:hidden ${a||n?"translate-mt-0":"-translate-mt-full bg-transparent"}`,children:[(0,mt.jsx)("nav",{className:s("backdrop-blur-sm text-white p-0",c&&"hidden"),children:(0,mt.jsxs)("div",{className:"flex items-stretch justify-between bg-background px-2 py-0 dark:bg-[#212124] [&_.logo-light]:[filter:brightness(0)_invert(1)] dark:border-mt dark:border-accent",children:[(0,mt.jsx)(pe,{logoDark:t,logoLight:e,mobile:!0}),(0,mt.jsx)("div",{className:"flex items-center space-x-4",children:(0,mt.jsxs)("button",{type:"button",onClick:()=>m(!0),className:"fixed right-4 z-[60] p-2 rounded-full bg-white/10 backdrop-blur-sm transition-all duration-300 hover:bg-white/20 text-white dark:hover:text-accent",children:[(0,mt.jsx)("span",{className:"sr-only",children:"Open main menu"}),(0,mt.jsx)(Ne.Bars3Icon,{"aria-hidden":"true",className:"h-4 w-4"})]})})]})}),(0,mt.jsxs)(_.Dialog,{open:c,onClose:m,className:"lg:hidden",children:[(0,mt.jsx)("div",{className:"fixed inset-0 z-10 bg-black bg-opacity-50","aria-hidden":"true"}),(0,mt.jsxs)(_.DialogPanel,{className:"fixed inset-mt-0 right-0 z-20 w-full overflow-mt-auto bg-background dark:bg-[#212124] px-2 sm:max-w-sm sm:ring-1 sm:ring-gray-900/10",children:[(0,mt.jsxs)("div",{className:"flex items-stretch justify-between",children:[(0,mt.jsx)(pe,{logoDark:t,logoLight:e,mobile:!0}),(0,mt.jsxs)("button",{type:"button",onClick:()=>m(!1),className:"-m-2.5 rounded-md p-2.5 text-foreground dark:text-foreground outline-none hover:text-accent",children:[(0,mt.jsx)("span",{className:"sr-only",children:"Close menu"}),(0,mt.jsx)(Ne.XMarkIcon,{"aria-hidden":"true",className:"h-6 w-6"})]})]}),(0,mt.jsx)("div",{className:"mt-6 flow-root",children:(0,mt.jsx)("div",{className:"-my-6 divide-mt divide-gray-500/10",children:(0,mt.jsx)("div",{className:"space-mt-2 px-2 py-6",children:r&&r.map(h=>(0,mt.jsx)(mo,{...h},h.name))})})})]})]})]})})}function mo({name:e,items:t,actions:r,href:n}){return!t&&n?(0,mt.jsx)("a",{href:n,className:"-mx-3 block rounded-lg px-3 py-2 text-base dark:text-foreground text-foreground hover:bg-gray-50 hover:text-accent",children:e}):(0,mt.jsxs)(_.Disclosure,{as:"div",className:"-mx-3",children:[(0,mt.jsx)(_.DisclosureButton,{className:"group flex w-full items-center justify-between rounded-lg py-2 pl-3 pr-3.5 text-base dark:text-foreground text-foreground hover:bg-gray-50 hover:text-accent",children:e}),(0,mt.jsx)(_.DisclosurePanel,{className:"mt-2 space-mt-2",children:t&&t.map(a=>(0,mt.jsx)(_.DisclosureButton,{as:"a",href:a.href,className:"block rounded-lg py-2 pl-6 pr-3 text-sm dark:text-foreground text-foreground hover:bg-gray-50 hover:text-accent",children:a.name},a.name))})]})}function Dt({isMenuOpen:e,logoLight:t,logoDark:r,menuItems:n,className:a,wide:o,themeControl:i=!1}){return(0,mt.jsxs)("div",{className:s("fixed top-0 left-0 right-0 z-50",a),children:[(0,mt.jsx)(Bt,{isMenuOpen:e,logoLight:t,logoDark:r,menuItems:n,themeControl:i,wide:o}),(0,mt.jsx)(Mt,{isMenuOpen:e,logoLight:t,logoDark:r,menuItems:n})]})}var jt=M(require("react")),$t=M(require("next/image"));var Rt=e=>{let r=new Date;e&&(r=new Date(e));let n=r.getMonth(),a=r.getDate(),o=n+1<10?`0${n+1}`:n+1,i=a<10?`0${a}`:a,l=r.getFullYear();return`${i}/${o}/${l}`};var Lt=require("@radix-ui/react-slot"),zt=require("class-variance-authority"),Ht=M(require("react")),po=(0,zt.cva)("inline-flex items-center justify-center whitespace-nowrap rounded text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{defaultVariants:{size:"default",variant:"default"},variants:{size:{clear:"",default:"h-10 px-4 py-2",icon:"h-10 w-10",lg:"h-11 rounded px-8",sm:"h-9 rounded px-3"},variant:{default:"bg-accent text-accent-foreground hover:bg-background hover:text-accent hover:border-accent hover:border",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",ghost:"hover:bg-card hover:text-accent-foreground",link:"text-primary items-start justify-start underline-offset-4 hover:underline",outline:"border border-border bg-background hover:bg-card hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-accent"}}}),U=Ht.forwardRef(({asChild:e=!1,className:t,size:r,variant:n,...a},o)=>(0,mt.jsx)(e?Lt.Slot:"button",{className:s(po({className:t,size:r,variant:n})),ref:o,...a}));U.displayName="Button";var Ot=(0,zt.cva)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Ke({className:e,variant:t,...r}){return(0,mt.jsx)("div",{className:s(Ot({variant:t}),e),...r})}var Yt=({post:e})=>{let{categories:t,meta:r,populatedAuthors:n,publishedAt:a,title:o}=e;return(0,mt.jsxs)("div",{className:"relative grid pt-24",children:[(0,mt.jsx)("div",{className:"relative z-10 flex flex-col justify-end min-h-[50vh] text-foreground dark:text-foreground pt-24 p-6 lg:p-12",children:(0,mt.jsxs)("div",{className:"container mx-auto",children:[(0,mt.jsx)("h1",{className:"mb-6 text-[clamp(2rem,1.5rem+1.5vw,3.5rem)] font-bold leading-tight ",children:o}),(0,mt.jsxs)("div",{className:"flex flex-col gap-4 md:flex-row md:gap-16 ",children:[n&&n.length>0&&(0,mt.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,mt.jsxs)("p",{className:"text-sm",children:["Author",n.length>1?"s":""]}),(0,mt.jsx)("p",{children:n.map((i,l)=>(0,mt.jsxs)(jt.default.Fragment,{children:[i.name,l<n.length-2&&", ",l===n.length-2&&(n.length>2?", and ":" and ")]},i.id))})]}),a&&(0,mt.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,mt.jsx)("p",{className:"text-sm",children:"Date Published"}),(0,mt.jsx)("time",{dateTime:a,children:Rt(a)})]}),t&&t.length>0&&(0,mt.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,mt.jsx)("p",{className:"text-sm font-medium",children:"Categories"}),(0,mt.jsx)("div",{className:"flex flex-wrap gap-2",children:t.map((i,l)=>typeof i=="object"&&i!==null&&(0,mt.jsx)(Ke,{className:"px-3 py-1 mx-1",children:i.title||"Untitled category"},i.id||l))})]})]})]})}),(0,mt.jsxs)("div",{className:"absolute inset-0 w-full h-full",children:[(0,mt.jsx)($t.default,{className:"object-cover",alt:`Cover image for ${o}`,src:r?.image?.url||"/assets/images/blog/gradient.png",fill:!0,priority:!0,sizes:"100vw"}),(0,mt.jsx)("div",{className:"absolute pointer-events-none left-0 bottom-0 w-full h-1/2 bg-gradient-to-t from-background dark:from-black to-transparent"})]})]})};var Jt="../cortex-reply-light-27IMI3G7.png";var qt="../cortex-reply-dark-XPAJJJYY.png";var Kt="data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAALABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAYEBQf/xAAgEAABBAICAwEAAAAAAAAAAAABAAIDBBEhEjEFBhMi/8QAFgEBAQEAAAAAAAAAAAAAAAAABAMF/8QAHBEAAgICAwAAAAAAAAAAAAAAAQIAIQMEBRFR/9oADAMBAAIRAxEAPwBqrV3PcNFL3s1Blny9eX7uYa7mtLAN95yFp9StCHajCp/YIImeUi4xtHLGdd7V9wkoOvZncagXIS10ZENFzsEA7GUJybBHxb+B0EJIeBOG5//Z";var vr=M(require("next/image"));var Vt=({className:e,content:t,style:r})=>(0,mt.jsx)("div",{className:s("mx-auto my-8 w-full",e),children:(0,mt.jsx)("div",{className:s("border py-3 px-6 flex items-center rounded",{"border-border bg-card":r==="info","border-error bg-error/30":r==="error","border-success bg-success/30":r==="success","border-warning bg-warning/30":r==="warning"}),children:(0,mt.jsx)(z,{content:t,enableGutter:!1,enableProse:!1})})});var Ve=M(require("next/link")),ge=e=>{let{type:t,appearance:r="inline",children:n,className:a,label:o,newTab:i,reference:l,size:c,url:m}=e,p=t==="reference"&&typeof l?.value=="object"&&l.value.slug?`${l?.relationTo!=="pages"?`/${l?.relationTo}`:""}/${l.value.slug}`:m;if(!p)return null;let x=r==="link"?"clear":c,u=i?{rel:"noopener noreferrer",target:"_blank"}:{};return r==="inline"?(0,mt.jsxs)(Ve.default,{className:s(a),href:p||m||"",...u,children:[o&&o,n&&n]}):(0,mt.jsx)(U,{asChild:!0,className:a,size:x,variant:r,children:(0,mt.jsxs)(Ve.default,{className:s(a),href:p||m||"",...u,children:[o&&o,n&&n]})})};function Pe({className:e}){return s("flex items-center min-h-[3.5rem] md:min-h-[3.75rem] w-full rounded-5 px-4 md:px-5 py-2"," bg-transparent text-accent-800 placeholder:text-accent-800 dark:text-body dark:placeholder:text-body"," border border-solid border-accent-900 border-opacity-20 dark:border-opacity-20 dark:border-accent-200"," focus:border-accent-900 focus:ring-0 focus-visible:outline-0 focus-visible:ring-0 focus-visible:ring-offset-0","transition-all duration-300",e)}function go({className:e,...t}){return(0,mt.jsx)("input",{...t,className:Pe({className:e})})}function Ie({icon:e,...t}){return(0,mt.jsxs)("div",{className:"relative w-full",children:[(0,mt.jsx)(go,{...t}),e&&(0,mt.jsx)("span",{className:"absolute right-5 top-1/2 w-[14px] -translate-mt-1/2 text-accent",children:e})]})}function yo({className:e,...t}){return(0,mt.jsx)("textarea",{...t,className:s(Pe({}),"resize-none md:min-h-[130px]",e)})}function Xt({icon:e,...t}){return(0,mt.jsxs)("div",{className:"relative w-full",children:[(0,mt.jsx)(yo,{...t}),e&&(0,mt.jsx)("span",{className:"absolute right-5 top-[18px] w-[14px] text-accent",children:e})]})}var Zt=require("formik"),Wt=require("react-icons/fa6"),K=M(require("yup"));async function Qt(e){let{name:t,email:r,subject:n,message:a}=e,o=process.env.TEAMS_WEBHOOK_URL;if(!o)throw new Error("TEAMS_WEBHOOK_URL is not defined");let i={type:"message",attachments:[{contentType:"application/vnd.microsoft.card.adaptive",content:{$schema:"http://adaptivecards.io/schemas/adaptive-card.json",type:"AdaptiveCard",version:"1.2",body:[{type:"TextBlock",text:"Contact Us Form",wrap:!0,style:"heading",weight:"Bolder"},{type:"ColumnSet",columns:[{type:"Column",width:"stretch",items:[{type:"TextBlock",text:"Name",wrap:!0,weight:"Bolder"},{type:"TextBlock",text:"Email",wrap:!0,weight:"Bolder"},{type:"TextBlock",text:"Subject",wrap:!0,weight:"Bolder"}]},{type:"Column",width:"stretch",items:[{type:"TextBlock",text:`${t}`,wrap:!0},{type:"TextBlock",text:`${r}`,wrap:!0},{type:"TextBlock",text:`${n}`,wrap:!0}]}]},{type:"TextBlock",text:`${a}`,wrap:!0}]}}]};try{let l=await fetch(o,{method:"POST",mode:"no-cors",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});if(!l.ok)throw console.error(l),new Error("Network response was not ok");return{isSuccess:!0,data:!0,message:"Thanks for getting in touch"}}catch(l){return console.error(l),{isSuccess:!1,data:null,message:"Internal Server Error"}}}var Xe=require("sonner"),R={tooShort:"Must be at least ${min} characters",tooLong:"Must be at most ${max} characters",required:"This field is required",email:"Invalid email format"},ho=K.object().shape({name:K.string().min(2,R.tooShort).max(50,R.tooLong).required(R.required),email:K.string().email(R.email).required(R.required),subject:K.string().min(2,R.tooShort).max(50,R.tooLong).required(R.required),message:K.string().min(2,R.tooShort).max(300,R.tooLong).required(R.required)}),Be=s("!pr-[44px] text-foreground"),Fe=s("!border-red-600 border"),Me=s("sr-only");function _t(){return(0,mt.jsx)(Zt.Formik,{initialValues:{name:"",email:"",subject:"",message:""},validationSchema:ho,onSubmit:async(e,{resetForm:t})=>{let r=await Qt(e);r.data===null?Xe.toast.error(r.message):(Xe.toast.success(r.message),t())},children:({errors:e,touched:t,values:r,handleChange:n,handleBlur:a,isSubmitting:o,handleSubmit:i})=>(0,mt.jsxs)("form",{onSubmit:i,className:"grid grid-cols-1 gap-2 pt-2 lg:grid-cols-2",children:[(0,mt.jsxs)("div",{children:[(0,mt.jsx)(Ie,{placeholder:"Your Name",type:"text",name:"name",value:r.name,onChange:n,onBlur:a,disabled:o,icon:(0,mt.jsx)(Wt.FaUser,{className:"text-primary"}),className:s(Be,e.name&&t.name&&Fe)}),e.name&&t.name&&(0,mt.jsx)("p",{title:e.name,"aria-live":"polite",role:"error message",className:Me,children:e.name})]}),(0,mt.jsxs)("div",{children:[(0,mt.jsx)(Ie,{placeholder:"Your Email",type:"email",name:"email",value:r.email,onChange:n,onBlur:a,disabled:o,icon:(0,mt.jsx)(xo,{}),className:s(Be,e.email&&t.email&&Fe)}),e.email&&t.email&&(0,mt.jsx)("p",{title:e.email,"aria-live":"polite",role:"error message",className:Me,children:e.email})]}),(0,mt.jsxs)("div",{className:"lg:col-span-2",children:[(0,mt.jsx)(Ie,{placeholder:"Subject",type:"text",name:"subject",value:r.subject,onChange:n,onBlur:a,disabled:o,className:s(Be,e.subject&&t.subject&&Fe)}),e.subject&&t.subject&&(0,mt.jsx)("p",{title:e.subject,"aria-live":"polite",role:"error message",className:Me,children:e.subject})]}),(0,mt.jsxs)("div",{className:"lg:col-span-2",children:[(0,mt.jsx)(Xt,{placeholder:"Message...",name:"message",value:r.message,onChange:n,onBlur:a,disabled:o,icon:(0,mt.jsx)(bo,{}),className:s(Be,e.message&&t.message&&Fe)}),e.message&&t.message&&(0,mt.jsx)("p",{title:e.message,"aria-live":"polite",role:"error message",className:Me,children:e.message})]}),(0,mt.jsx)("div",{className:"lg:col-span-2 light grid justify-items-center",children:(0,mt.jsx)(U,{type:"submit",className:"outline px-6 rounded-full outline-accent bg-background text-foreground hover:bg-accent hover:text-accent-foreground",disabled:o,children:"Send"})})]})})}function xo(){return(0,mt.jsx)("svg",{width:16,height:15,viewBox:"0 0 16 15",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",className:"text-primary",children:(0,mt.jsx)("path",{d:"M14.9727 1.76172L13.2227 13.1094C13.1953 13.3828 13.0312 13.6289 12.7852 13.7656C12.6484 13.8203 12.5117 13.875 12.3477 13.875C12.2383 13.875 12.1289 13.8477 12.0195 13.793L8.68359 12.3984L7.28906 14.4766C7.17969 14.668 6.98828 14.75 6.79688 14.75C6.49609 14.75 6.25 14.5039 6.25 14.2031V11.5781C6.25 11.3594 6.30469 11.168 6.41406 11.0312L12.375 3.375L4.33594 10.6211L1.51953 9.44531C1.21875 9.30859 1 9.03516 1 8.67969C0.972656 8.29688 1.13672 8.02344 1.4375 7.85938L13.6875 0.886719C13.9609 0.722656 14.3438 0.722656 14.6172 0.914062C14.8906 1.10547 15.0273 1.43359 14.9727 1.76172Z"})})}function bo(){return(0,mt.jsx)("svg",{width:"14",height:"11",viewBox:"0 0 14 11",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",className:"text-primary",children:(0,mt.jsx)("path",{d:"M12.6875 0.5C13.3984 0.5 14 1.10156 14 1.8125C14 2.25 13.7812 2.63281 13.4531 2.87891L7.51953 7.33594C7.19141 7.58203 6.78125 7.58203 6.45312 7.33594L0.519531 2.87891C0.191406 2.63281 0 2.25 0 1.8125C0 1.10156 0.574219 0.5 1.3125 0.5H12.6875ZM5.93359 8.04688C6.5625 8.51172 7.41016 8.51172 8.03906 8.04688L14 3.5625V9.25C14 10.2344 13.207 11 12.25 11H1.75C0.765625 11 0 10.2344 0 9.25V3.5625L5.93359 8.04688Z"})})}var tr=({links:e,richText:t})=>{let[r,n]=(0,ee.useState)(!1),a="accent",o=()=>n(!0),i=()=>n(!1),l=c=>{c.target===c.currentTarget&&i()};return(0,mt.jsxs)("div",{className:s("relative isolate overflow-hidden",a==="accent"?"bg-accent":"bg-black"),children:[(0,mt.jsx)("div",{className:"px-6 py-24 sm:px-6 sm:py-32 lg:px-8",children:(0,mt.jsxs)("div",{className:"mx-auto max-w-2xl text-center prose",children:[t&&(0,mt.jsx)(z,{className:"mb-0 prose-headings:text-white prose-h2:text-white prose-p:text-white text-white",content:t,enableGutter:!1}),(0,mt.jsx)("div",{className:"mt-10 flex items-center justify-center gap-x-6",children:(0,mt.jsx)("div",{className:"flex flex-col gap-8 text-white",children:(e||[]).map(({link:c},m)=>c?.url==="/contact"?(0,mt.jsx)("div",{onClick:o,className:s("rounded-full px-3.5 py-2.5 border border-accent bg-black text-white no-underline cursor-pointer",a==="accent"?"border-white bg-accent":"border-accent bg-black"),children:c.label},m):(0,mt.jsx)(ge,{size:"lg",className:s("rounded-full px-3.5 py-2.5 border border-accent bg-black text-white no-underline cursor-pointer",a==="accent"?"border-white bg-accent":"border-accent bg-black"),...c},m))})})]})}),r&&(0,mt.jsx)("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black bg-opacity-50",onClick:l,children:(0,mt.jsxs)("div",{className:"bg-white p-6 pt-10 rounded-lg shadow-lg w-full max-w-lg light relative",children:[(0,mt.jsx)("button",{className:"absolute top-4 right-4 text-gray-500 hover:text-gray-700",onClick:i,children:"\u2715"}),(0,mt.jsx)(_t,{})," "]})})]})};var De=require("prism-react-renderer");function ar({code:e}){let[t,r]=(0,ee.useState)("Copy");function n(){t==="Copy"&&(r(()=>"Copied!"),setTimeout(()=>{r(()=>"Copy")},1e3))}return(0,mt.jsx)("div",{className:"flex justify-end align-middle",children:(0,mt.jsxs)(U,{className:"flex gap-1",variant:"secondary",onClick:async()=>{await navigator.clipboard.writeText(e),n()},children:[(0,mt.jsx)("p",{children:t}),(0,mt.jsx)("div",{className:"w-6 h-6",children:(0,mt.jsx)(Ae.ClipboardCopy,{})})]})})}var nr=({code:e,language:t=""})=>e?(0,mt.jsx)(De.Highlight,{code:e,language:t,theme:De.themes.vsDark,children:({getLineProps:r,getTokenProps:n,tokens:a})=>(0,mt.jsxs)("pre",{className:"bg-black p-4 border text-xs border-border rounded overflow-x-auto",children:[a.map((o,i)=>(0,mt.jsxs)("div",{...r({className:"table-row",line:o}),children:[(0,mt.jsx)("span",{className:"table-cell select-none text-right text-white/25",children:i+1}),(0,mt.jsx)("span",{className:"table-cell pl-4",children:o.map((l,c)=>(0,mt.jsx)("span",{...n({token:l})},c))})]},i)),(0,mt.jsx)(ar,{code:e})]})}):null;var ir=({className:e,code:t,language:r})=>(0,mt.jsx)("div",{className:[e,"not-prose"].filter(Boolean).join(" "),children:(0,mt.jsx)(nr,{code:t,language:r})});var sr=M(require("next/image")),vo={"3xl":1920,"2xl":1536,xl:1280,lg:1024,md:768,sm:640},lr="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABchJREFUWEdtlwtTG0kMhHtGM7N+AAdcDsjj///EBLzenbtuadbLJaZUTlHB+tRqSesETB3IABqQG1KbUFqDlQorBSmboqeEBcC1d8zrCixXYGZcgMsFmH8B+AngHdurAmXKOE8nHOoBrU6opcGswPi5KSP9CcBaQ9kACJH/ALAA1xm4zMD8AczvQCcAQeJVAZsy7nYApTSUzwCHUKACeUJi9TsFci7AHmDtuHYqQIC9AgQYKnSwNAig4NyOOwXq/xU47gDYggarjIpsRSEA3Fqw7AGkwgW4fgALAdiC2btKgNZwbgdMbEFpqFR2UyCR8xwAhf8bUHIGk1ckMyB5C1YkeWAdAPQBAeiD6wVYPoD1HUgXwFagZAGc6oSpTmilopoD5GzISQD3odcNIFca0BUQQM5YA2DpHV0AYURBDIAL0C+ugC0C4GedSsVUmwC8/4w8TPiwU6AClJ5RWL1PgQNkrABWdKB3YF3cBwRY5lsI4ApkKpCQi+FIgFJU/TDgDuAxAAwonJuKpGD1rkCXCR1ALyrAUSSEQAhwBdYZ6DPAgSUA2c1wKIZmRcHxMzMYR9DH8NlbkAwwApSAcABwBwTAbb6owAr0AFiZPILVEyCtMmK2jCkTwFDNUNj7nJETQx744gCUmgkZVGJUHyakEZE4W91jtGFA9KsD8Z3JFYDlhGYZLWcllwJMnplcPy+csFAgAAaIDOgeuAGoB96GLZg4kmtfMjnr6ig5oSoySsoy3ya/FMivXZWxwr0KIf9nACbfqcBEgmBSAtAlIT83R+70IWpyACamIjf5E1Iqb9ECVmnoI/FvAIRk8s2J0Y5IquQDgB+5wpScw5AUTC75VTmTs+72NUzoCvQIaAXv5Q8PDAZKLD+MxLv3RFE7KlsQChgBIlKiCv5ByaZv3gJZNm8AnVMhAN+EjrtTYQMICJpu6/0aiQnhClANlz+Bw0cIWa8ev0sBrtrhAyaXEnrfGfATQJiRKih5vKeOHNXXPFrgyamAADh0Q4F2/sESojomDS9o9k0b0H83xjB8qL+JNoTjN+enjpaBpingRh4e8MSugudM030A8FeqMI6PFIgNyPehkpZWGFEAARIQdH5LcAAqIACHkAJqg4OoBccHAuz76wr4BbzFOEa8iBuAZB8AtJHLP2VgMgJw/EIBowo7HxCAH3V6dAXEE/vZ5aZIA8BP8RKhm7Cp8BnAMnAQADdgQDA520AVIpScP+enHz0Gwp25h4i2dPg5FkDXrbsdJikQwXuWgaM5gEMk1AgH4DKKFjDf3bMD+FjEeIxLlRKYnBk2BbquvSDCAQ4gwZiMAAmH4gBTyRtEsYxi7gP6QSrc//39BrDNqG8rtYTmC4BV1SfMhOhaumFCT87zy4pPhQBZEK1kQVRjJBBi7AOlePgyAPYjwlvtagx9e/dnQraAyS894TIkkAIEYMKEc8k4EqJ68lZ5jjNqcQC2QteQOf7659umwBgPybNtK4dg9WvnMyFwXYGP7uEO1lwJgAnPNeMYMVXbIIYKFioI4PGFt+BWPVfmWJdjW2lTUnLGCswECAgaUy86iwA1464ajo0QhgMBFGyBoZahANsMpMfXr1JA1SN29m5lqgXj+UPV85uRA7yv/KYUO4Tk7Hc1AZwbIRzg0AyNj2UlAMwfSLSMnl7fdAbcxHuA27YaAMvaQ4GOjwX4RTUGAG8Ge14N963g1AynqUiFqRX9noasxT4b8entNRQYyamk/3tYcHsO7R3XJRRYOn4tw4iUnwBM5gDnySGOreAwAGo8F9IDHEcq8Pz2Kg/oXCpuIL6tOPD8LsDn0ABYQoGFRowlsAEUPPDrGAGowAbgKsgDMmE8mDy/vXQ9IAwI7u4wta+gAdAdgB64Ah9SgD4IgGKhwACoAjgNgFDhtxY8f33ZTMjqdTAiHMBPrn8ZWkEfzFdX4Oc1AHg3+ADbvN8PU8WdFKg4Tt6CQy2+D4YHaMT/JP4XzbAq98cPDIUAAAAASUVORK5CYII=",cr=e=>{let{alt:t,fill:r,imgClassName:n,priority:a,resource:o,size:i,src:l,loading:c}=e,m,p,x=t,u=l||"";if(!u&&o&&typeof o=="object"){let{alt:C,filename:N,height:T,url:B,width:$}=o;if(T&&T>500){let L=500/T;m=$*L,p=T*L}else m=$,p=T;x=C||"",u=B||lr}let h=c||"lazy",A=i||Object.entries(vo).map(([,C])=>`(max-width: ${C}px) ${C*2}w`).join(", ");return(0,mt.jsx)("picture",{children:(0,mt.jsx)(sr.default,{alt:x||"",className:s(n),fill:r,height:r?void 0:p,placeholder:"blur",blurDataURL:lr,priority:h!=="lazy"&&a,quality:100,loading:h,sizes:A,src:u,width:r?void 0:m})})};var dr=e=>{let{onClick:t,resource:r,videoClassName:n}=e,a=(0,ee.useRef)(null);if((0,ee.useEffect)(()=>{let{current:o}=a;o&&o.addEventListener("suspend",()=>{})},[]),r&&typeof r=="object"){let{filename:o}=r;return(0,mt.jsx)("video",{autoPlay:!0,className:s(n),controls:!1,loop:!0,muted:!0,onClick:t,playsInline:!0,ref:a,children:(0,mt.jsx)("source",{src:r.url||""})})}return null};var ze=e=>{let{className:t,htmlElement:r="div",resource:n}=e,a=typeof n=="object"&&n?.mimeType?.includes("video");return(0,mt.jsx)(r||ee.Fragment,{...r!==null?{className:t}:{},children:a?(0,mt.jsx)(dr,{...e}):(0,mt.jsx)(cr,{...e})})};var pr=e=>{let{className:t,enableGutter:r=!0,imgClassName:n,media:a,staticImage:o}=e;return(0,mt.jsx)("div",{className:s("h-full ",{container:r},t),children:(0,mt.jsx)(ze,{imgClassName:s("rounded-[0.8rem]",n),className:"flex justify-center",resource:a,src:o})})};var ur=e=>{let{className:t,enableGutter:r=!0,imgClassName:n,media:a,staticImage:o}=e;return(0,mt.jsx)("div",{className:s("",{container:r},t),children:(0,mt.jsx)(ze,{imgClassName:s("rounded-[0.8rem]",n),resource:a,src:o})})};var gr=M(require("next/image"));function fr(e){return e&&typeof e=="object"&&"type"in e&&"iconName"in e}function tt({image:e,icon:t,title:r,subtitle:n,content:a,statistic:o,settings:i,link:l,className:c}){let m={solid:"bg-accent",outline:"bg-background border border-accent",gradient:"bg-gradient-to-br from-[#A42368] to-[#4A1030]",radial:"bg-gradient-to-br from-[#4A1030] to-[#2D0A1D] relative overflow-hidden",light:"bg-background"},p={"1/4":"w-1/4","1/3":"w-1/3","1/2":"w-1/2",full:"w-full",auto:"w-full"};return(0,mt.jsxs)("a",{href:l?.url||"#",className:s("min-w-56 max-w-xl h-full flex flex-col group bg-background",e?"p-0":"p-6 md:p-8",i&&!e&&m[i?.card==="default"?"solid":i?.card],e&&"bg-foreground",i&&i?.card==="outline"?"text-gray-900":"text-white",p[i?.width??"auto"],"intersect-once intersect:animate-flip-up opacity-0 intersect:opacity-100 intersect:animate-duration-500",i&&`intersect:animate-delay-${i.order||1}00`,c),children:[e&&(0,mt.jsx)("div",{className:"relative aspect-[16/9] w-full",children:(0,mt.jsx)(gr.default,{src:e.url||"/placeholder.svg",alt:e.alt||"card header image",fill:!0,style:{objectFit:"cover"},priority:!0})}),(0,mt.jsxs)("div",{className:s(e?"p-6 md:p-8":"p-0","flex flex-col flex-grow"),children:[(0,mt.jsxs)("div",{className:"flex flex-col flex-grow",children:[n&&(0,mt.jsx)("div",{className:"text-primary uppercase text-sm font-light mb-4",children:n}),(0,mt.jsx)("div",{className:"flex items-start gap-4 mb-4",children:(0,mt.jsx)(ko,{icon:{type:t?.type||"fa-light",iconName:t?.icon||"no-icon-error"},heading:r??"",variant:i?.card==="default"?"solid":i?.card??"solid",iconSize:i?.iconSize||"large"})}),a&&typeof a=="object"&&(0,mt.jsx)(z,{enableGutter:!1,content:a,enableProse:!1,className:s("prose-sm prose-p:text-lg prose-headings:text-xl","space-mt-3",i?.card==="outline"||i?.card==="light"?"prose-headings:text-foreground prose-p:text-foreground prose-a:text-foreground":"prose-headings:text-white prose-p:text-gray-100 prose-a:text-gray-100",e&&"prose-headings:text-background prose-p:text-background")}),a&&typeof a=="string"&&(0,mt.jsx)("div",{className:s("prose-sm prose-p:text-lg prose-headings:text-xl","space-mt-3",i?.card==="outline"||i?.card==="light"?"prose text-foreground":"prose text-gray-100",e&&"prose text-background"),children:a})]}),l&&l.url&&(0,mt.jsx)("div",{className:"mt-6",children:(0,mt.jsx)("span",{className:"text-accent font-semibold uppercase text-sm block hover:text-accent/80 transition-colors",children:l?.label||"Find out more"})})]})]})}var ko=({icon:e,heading:t,variant:r,iconSize:n,subtitle:a})=>e&&n==="small"&&e.iconName!="no-icon-error"?(0,mt.jsxs)("div",{className:"flex items-start justify-between w-full mb-2",children:[(0,mt.jsx)("div",{className:s(r==="outline"||r==="light"?"text-primary":"text-white",n==="small"?"text-2xl":"text-3xl"),children:t}),fr(e)&&(0,mt.jsx)("div",{className:s("rounded-full p-0 transform group-hover:scale-110 transition-transform duration-400",r==="outline"||r==="light"?"text-primary":"text-white",n==="small"?"-ee-2 ml-1 mt-1":""),children:(0,mt.jsx)(se,{type:e.type,iconName:e.iconName,size:"2x"})})]}):e&&e.iconName!="no-icon-error"?(0,mt.jsxs)("div",{className:"flex flex-col gap-4",children:[fr(e)&&(0,mt.jsx)("div",{className:s("h-12 w-12 mb-3 transform group-hover:scale-110 transition-transform duration-400",r==="outline"||r==="light"?"text-accent":""),children:(0,mt.jsx)(se,{type:e.type,iconName:e.iconName,size:"4x"})}),(0,mt.jsx)("h3",{className:s("font-normal",r==="outline"||r==="light"?"text-2xl text-primary":"text-3xl text-white"),children:t})]}):(0,mt.jsx)("div",{className:"flex items-center gap-4 mb-2",children:(0,mt.jsx)("div",{className:s("font-regular",r==="outline"||r==="light"?"text-2xl text-primary":"text-3xl"),children:t})});var X=M(require("react"));var oe=X.forwardRef(({className:e,...t},r)=>(0,mt.jsx)("div",{ref:r,className:s("rounded-xl border bg-card text-card-foreground shadow",e),...t}));oe.displayName="Card";var ye=X.forwardRef(({className:e,...t},r)=>(0,mt.jsx)("div",{ref:r,className:s("flex flex-col space-mt-1.5 p-6",e),...t}));ye.displayName="CardHeader";var he=X.forwardRef(({className:e,...t},r)=>(0,mt.jsx)("div",{ref:r,className:s("font-semibold leading-none tracking-tight",e),...t}));he.displayName="CardTitle";var wo=X.forwardRef(({className:e,...t},r)=>(0,mt.jsx)("div",{ref:r,className:s("text-sm text-muted-foreground",e),...t}));wo.displayName="CardDescription";var ae=X.forwardRef(({className:e,...t},r)=>(0,mt.jsx)("div",{ref:r,className:s("p-6 pt-0",e),...t}));ae.displayName="CardContent";var So=X.forwardRef(({className:e,...t},r)=>(0,mt.jsx)("div",{ref:r,className:s("flex items-center p-6 pt-0",e),...t}));So.displayName="CardFooter";var yr=({title:e,description:t,features:r,id:n,nested:a=!1})=>(0,mt.jsxs)("section",{className:s(a?"w-full":"container",""),children:[(0,mt.jsxs)("div",{className:"prose prose:max-w-none",children:[e&&(0,mt.jsx)("h2",{className:"mb-6 mt-0 text-primary",id:n||"",children:e}),t&&typeof t=="string"&&(0,mt.jsx)("p",{className:"mb-5 text-foreground",children:t}),t&&typeof t=="object"&&(0,mt.jsx)("div",{className:"mb-5 text-foreground",children:(0,mt.jsx)(z,{content:t,enableGutter:!1})})]}),(0,mt.jsx)("div",{className:`grid gap-6 mt-6 md:grid-cols-${r?r.length>2?2:r.length:1} lg:grid-cols-${r?r.length>3?3:r.length:1}`,children:r&&r.map((o,i)=>{let l=()=>{if(o.icon&&"type"in o.icon&&o.icon.type!=="none")return{type:o.icon.type,icon:o.icon.icon}};return(0,mt.jsx)(tt,{title:o.title||"",content:o.content||void 0,statistic:o.statistic||void 0,settings:{...o.settings,width:"auto",order:i},link:o.link?{...o.link,label:"Learn more"}:void 0,icon:l()??{type:"none",icon:null}},i)})})]});var He=M(require("react"));function xe({nodes:e}){return(0,mt.jsx)(He.Fragment,{children:e?.map((t,r)=>{if(t==null)return null;if(t.type==="text"&&t.text){let o=(0,mt.jsx)(He.default.Fragment,{children:t.text},r);return t.format&1&&(o=(0,mt.jsx)("strong",{children:o},r)),t.format&2&&(o=(0,mt.jsx)("em",{children:o},r)),t.format&4&&(o=(0,mt.jsx)("span",{style:{textDecoration:"line-through"},children:o},r)),t.format&8&&(o=(0,mt.jsx)("span",{style:{textDecoration:"underline"},children:o},r)),t.format&16&&(o=(0,mt.jsx)("code",{children:t.text},r)),t.format&32&&(o=(0,mt.jsx)("sub",{children:o},r)),t.format&64&&(o=(0,mt.jsx)("sup",{children:o},r)),o}if(t.type==="table")return(0,mt.jsx)("table",{children:(0,mt.jsx)("tbody",{children:t.children.map((o,i)=>(0,mt.jsx)("tr",{children:o.children.map((l,c)=>(0,mt.jsx)("td",{children:xe({nodes:l.children})},c))},i))})},r);let n=o=>{if(o.children==null)return null;if(o?.type==="list"&&o?.listType==="check")for(let i of o.children)"checked"in i&&(i?.checked||(i.checked=!1));return xe({nodes:o.children})},a="children"in t?n(t):"";if(t.type==="block"){let o=t.fields,i=o?.blockType;if(!o||!i)return null;switch(i){case"cta":return(0,mt.jsx)(tr,{...o},r);case"mediaBlock":return(0,mt.jsx)(pr,{className:"col-start-1 col-span-3",imgClassName:"m-0",...o,captionClassName:"mx-auto max-w-[48rem]",enableGutter:!1,disableInnerContainer:!0},r);case"imageBlock":return(0,mt.jsx)(ur,{className:"col-start-1 col-span-3",imgClassName:"m-0",...o,captionClassName:"mx-auto max-w-[48rem]",enableGutter:!1,disableInnerContainer:!0},r);case"banner":return(0,mt.jsx)(Vt,{className:"col-start-2 mb-4",...o},r);case"code":return(0,mt.jsx)(ir,{className:"col-start-2",...o},r);case"features":return(0,mt.jsx)(yr,{...o,nested:!0},r);case"reusableContentBlock":xe({nodes:o.reusableContent.layout});default:return null}}else switch(t.type){case"linebreak":return(0,mt.jsx)("br",{className:"col-start-2"},r);case"paragraph":return(0,mt.jsx)("p",{className:"col-start-2",children:a},r);case"heading":{let o=t?.tag;return(0,mt.jsx)(o,{className:"col-start-2",id:t?.id||"",children:a},r)}case"list":{let o=t?.tag;return(0,mt.jsx)(o,{className:"list col-start-2",children:a},r)}case"listitem":return t?.checked!=null?(0,mt.jsx)("li",{"aria-checked":t.checked?"true":"false",className:` ${t.checked,""}`,role:"checkbox",tabIndex:-1,value:t?.value,children:a},r):(0,mt.jsx)("li",{value:t?.value,children:a},r);case"quote":return(0,mt.jsx)("blockquote",{className:"col-start-2",children:a},r);case"link":{let o=t.fields;return(0,mt.jsx)(ge,{newTab:!!o?.newTab,reference:o.doc,type:o.linkType==="internal"?"reference":"custom",url:o.url,children:a},r)}case"autolink":{let o=t.fields;return(0,mt.jsx)(ge,{newTab:!!o?.newTab,reference:o.doc,type:o.linkType==="internal"?"reference":"custom",url:o.url,children:a},r)}default:return null}})})}var z=({className:e,content:t,enableGutter:r=!0,enableProse:n=!0})=>t?(0,mt.jsx)("div",{className:s({"container ":r,"max-w-none":!r,"mx-auto prose":n},e),children:t&&!Array.isArray(t)&&typeof t=="object"&&"root"in t&&xe({nodes:t?.root?.children})}):null;var kr=require("next/navigation");var ii=s("transition-colors duration-400 hover:text-primary ease-in-out");function br({title:e,links:t}){let r=(0,kr.useSearchParams)(),n=(0,kr.usePathname)(),{replace:a}=(0,kr.useRouter)();function o(i){let l=new URLSearchParams(r);i?l.set("category",i):l.delete("category"),a(`${n}?${l.toString()}`)}return(0,mt.jsxs)(oe,{children:[(0,mt.jsx)(ye,{children:(0,mt.jsx)(he,{className:"text-accent",children:e&&e})}),(0,mt.jsx)(ae,{children:t&&t.length>0&&(0,mt.jsx)("nav",{"aria-label":"footer links navigation",children:(0,mt.jsx)("ul",{className:"grid gap-2.5 ",children:t.map((i,l)=>(0,mt.jsxs)("li",{className:"flex items-center text-sm text-primary hover:text-accent dark:text-foreground first:pt-0 hover:cursor-pointer",onClick:c=>{c.preventDefault(),o(i.href)},children:[i.label,(0,mt.jsx)(Ae.ExternalLink,{className:"ml-1 h-3 w-3"})]},l))})})})]})}var wr=M(require("next/link"));function Co({image:e,name:t,about:r,socialLinks:n}){return!e||!e.src||e.src.length<3||!t?null:(0,mt.jsx)("div",{className:"mt-1 z-10 px-0 pt-0 lg:px-10",children:(0,mt.jsx)(oe,{children:(0,mt.jsxs)(ae,{className:"flex flex-col items-center",children:[e&&e.src&&(0,mt.jsx)(vr.default,{src:e.src,alt:e.alt||"",width:127,height:127,placeholder:"blur",blurDataURL:Kt,className:"mx-auto mt-6 rounded-full object-cover"}),(0,mt.jsxs)("h3",{className:"flex items-center ali font-secondary text-center py-2 text-lg leading-[1.25] text-accent md:text-xl",children:[t,n&&n.length>0&&(0,mt.jsx)("nav",{"aria-label":"social links",children:(0,mt.jsx)("ul",{className:"inline-flex items-center divide-x divide-accent/50 text-accent dark:divide-accent/50 dark:text-white",children:n.map((a,o)=>a.href&&(0,mt.jsx)("li",{children:(0,mt.jsx)(Ce,{href:a.href,openNewTab:!0,className:"block px-4 text-base/[1.75] transition-transform duration-350 hover:-translate-mt-1 hover:text-accents",children:(0,mt.jsx)("span",{children:a.icon})})},o))})})]}),(0,mt.jsx)("p",{children:r})]})})})}function Cr({page:e,categoryList:t,edit:r=!1,path:n="/admin/collections/posts/"}){if(!e)return(0,kr.notFound)();let{meta:a,populatedAuthors:o,authors:i,categories:l,content:c,title:m}=e,p={image:{src:a&&a.image&&a.image.url||void 0,alt:a&&a.image&&a.image.alt||void 0},authorName:o?.[0]?.name||"",category:l,commentCount:0,title:m,description:a?.description||""},x=i?.map(u=>{let h=u.profilePicture&&u.profilePicture.sizes?.square?.url||u.profilePicture&&u.profilePicture.sizes?.thumbnail?.url||"";return console.log("val:",h),{name:u.name||"",about:u.about||"",image:{src:h,alt:u.name||"blog author"},socialLinks:[{icon:(0,mt.jsx)(Wt.FaLinkedin,{}),href:u.linkedIn??""}]}});return console.log(x),(0,mt.jsx)(Nt,{children:(0,mt.jsxs)("div",{className:"grid gap-30px lg:grid-cols-[1fr_410px]",children:[(0,mt.jsx)("div",{children:(0,mt.jsxs)("div",{className:"[&_p+mt]:mt-4",children:[(0,mt.jsx)("div",{className:"my-4 h-px bg-body/30 lg:my-5"}),(0,mt.jsx)(z,{content:c,enableGutter:!1,className:"prose-invert"})]})}),(0,mt.jsxs)("div",{className:"grid gap-30px self-baseline max-md:mx-auto max-md:max-w-[410px] lg:gap-10",children:[r&&(0,mt.jsx)("div",{className:"mt-4 lg:-mt-10 z-10 px-0 pt-0 lg:px-10",children:(0,mt.jsxs)(oe,{children:[(0,mt.jsx)(ye,{children:(0,mt.jsx)(he,{className:"text-accent",children:"Content Actions"})}),(0,mt.jsxs)(ae,{children:[(0,mt.jsx)("p",{className:"mb-4 text-sm text-muted-foreground",children:"Edit this page in the CMS"}),(0,mt.jsx)(wr.default,{href:`${n}${e.id}`,children:(0,mt.jsx)(U,{variant:"outline",className:"w-full text-accent hover:text-foreground",children:"Edit"})})]})]})}),x&&x.map((u,h)=>(0,mt.jsx)(Co,{...u},h)),t&&t.links&&(0,mt.jsx)("div",{className:"mt-4 px-0 pt-0 lg:px-10",children:(0,mt.jsx)(br,{links:t.links,title:t.title})})]})]})})}function rt({...e}){return(0,mt.jsxs)("div",{children:[(0,mt.jsx)(Dt,{isMenuOpen:!0,logoLight:Jt,logoDark:qt}),(0,mt.jsx)(Yt,{...e.hero}),(0,mt.jsx)(Cr,{className:"!pb-0",...e.blog})]})}var Ao={title:"Example Pages/Blog",component:rt,tags:["autodocs"],parameters:{nextjs:{appDirectory:!0},docs:{description:{component:"Example Blog page."}}}};var be={args:{hero:{type:"postHero",post:{id:"1",title:"Sample Post Title",categories:[{id:"1",title:"Category 1"},{id:"2",title:"Category 2"}],meta:{image:{url:"stock1.jpg"}},populatedAuthors:[{id:"1",name:"Author 1",avatar:{id:"1",url:"/path/to/avatar1.jpg",alt:"Author 1 Avatar"}},{id:"2",name:"Author 2",avatar:{id:"2",url:"/path/to/avatar2.jpg",alt:"Author 2 Avatar"}}],publishedAt:"2023-10-01T12:00:00Z",content:"Sample post content..."}},blog:{edit:!0,categoryList:{title:"Categories",links:[{label:"Category 1",href:1},{label:"Category 2",href:2},{label:"Category 3",href:3}]},page:{id:2,title:"Test Post 2",content:{root:{type:"root",format:"",indent:0,version:1,children:[{type:"paragraph",format:"",indent:0,version:1,children:[{mode:"normal",text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus lacinia odio vitae vestibulum vestibulum. Cras vehicula, libero a pharetra dictum, urna lectus porttitor lacus, at dapibus justo quam vel metus. Pellentesque habitant morbi tristique senectus mt netus mt malesuada fames ac turpis egestas. Sed non velit nec arcu volutpat dignissim in a lorem.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[{mode:"normal",text:"Proin sagittis sem mt elit fringilla, nec fringilla eros maximus. Nulla facilisi. mt sit amet facilisis lectus. Fusce ornare metus at ante tristique, nec elementum eros fermentum. Integer volutpat magna sed justo tincidunt, sit amet aliquam arcu pellentesque. Phasellus imperdiet mi vitae ligula pharetra, a dignissim velit vehicula.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[{mode:"normal",text:"Suspendisse potenti. Donec malesuada arcu at velit laoreet convallis. Sed at eros vel lacus varius varius nec id metus. Praesent faucibus, orci a varius dapibus, lorem libero convallis est, mt consequat libero magna sit amet risus. Maecenas tincidunt erat mt felis sodales, nec malesuada sem tincidunt. Duis sed nisl euismod, ullamcorper augue at, rutrum felis.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[{mode:"normal",text:"Aenean ut ligula ac libero vehicula luctus. Integer ultricies nisl id mi dictum, eget tincidunt augue interdum. Sed eu malesuada erat. Nam fringilla lectus id dolor gravida lacinia. Aliquam erat volutpat. Vestibulum nec ipsum vitae elit dapibus suscipit vel at ipsum.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr"}},relatedPosts:[],categories:[{id:1,title:"Test Category 1",slug:"test-category-1",updatedAt:"2025-01-06T20:16:54.416Z",createdAt:"2025-01-06T20:16:54.416Z",_status:"published"}],meta:{title:"Test Post 1",image:null,description:null},publishedAt:"2025-01-06T20:17:25.595Z",authors:[{id:1,name:"Rob",jobRole:null,profilePicture:null,workHistory:[],certifications:[],areasOfExpertise:[],dateOfBirth:null,joinDate:null,role:"admin",sub:null,updatedAt:"2025-01-06T20:16:54.416Z",createdAt:"2025-01-06T20:16:54.416Z",enableAPIKey:null,apiKey:null,email:"rob@sdsdd.com",loginAttempts:0},{id:2,name:"Dave",jobRole:null,profilePicture:null,workHistory:[],certifications:[],areasOfExpertise:[],dateOfBirth:null,joinDate:null,role:"admin",sub:null,updatedAt:"2025-01-06T20:16:54.416Z",createdAt:"2025-01-06T20:16:54.416Z",enableAPIKey:null,apiKey:null,email:"rob@sdsdd.com",loginAttempts:0}],populatedAuthors:[{id:1,name:"Rob Ellison"}],publishedToWebsite:!1,slug:"test-post-2",slugLock:!0,updatedAt:"2025-01-06T20:17:31.465Z",createdAt:"2025-01-06T20:17:27.818Z",_status:"published"}}}},No={args:{...be.args,hero:{...be.args.hero,post:{...be.args.hero.post,title:"Pellentesque habitant morbi tristique senectus mt netus mt malesuada fames ac turpis egestas."}}}},To={args:{...be.args,blog:{edit:!0,categoryList:{title:"Categories",links:[{label:"Category 1",href:1},{label:"Category 2",href:2},{label:"Category 3",href:3}]},page:{id:3,title:"FinOps-enhanced GenAI: Inform, Optimise, Operate, Innovate",content:{root:{type:"root",format:"",indent:0,version:1,children:[{tag:"h4",type:"heading",format:"start",indent:0,version:1,children:[{mode:"normal",text:"The Next Wave of IT Innovation: Generative AI",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"quote",format:"start",indent:0,version:1,children:[{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"\u201CGenerative AI could expand to 10-12% of total information-technology hardware, software, services, advertising, and gaming expenditures by 2032 from less than 1% today, according to our analysis. Training of AI platforms (creating a machine-learning model using large datasets) will be key, driven initially by spending on servers and storage and eventually by cloud-related infrastructure\u201D Bloomberg, 8th March 2024",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Over the past six months, we have seen an increase in boardroom discussions about AI solutions. This is a clear indication that leadership recognises AI's transformative potential to enhance business operations and deliver significant value. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"However, as exciting as these possibilities are, we must not overlook a critical factor: ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"cost",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:".",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:"ltr",textStyle:"",textFormat:0},{tag:"h4",type:"heading",format:"",indent:0,version:1,children:[{mode:"normal",text:"Drive cost awareness in generative AI with FinOps",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"From a cost perspective, generative AI tools and applications follow the same principles as every other digital product implemented in the cloud.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Organisations will use their existing FinOps processes and tools to:",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Ingest and normalise cost and usage data",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Allocate and share the cost of cloud services",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Manage spend anomalies",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:4,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Define a budget for cloud spend and forecast digital product costs",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"When approaching generative AI, the main cost that a FinOps team should focus on is the one the organisation will be charged for model inference and customisation.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{mode:"normal",text:"This expense is caused by the consumption of computing resources every time an LLM is given an input (ee prompt) in order to produce an output (ee completion).",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Generative AI models break down text data into units called tokens for processing. The way text data is converted into tokens depends on the tokenizer used. A token can be characters, words, ee phrases. Generative AI usually charges by every 1000 tokens of input (prompt) and output (response): i.e.:",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"An application developer makes the following API calls to Amazon Bedrock in the US West (Oregon) Region: a request to Anthropic\u2019s Claude model to summarise an input of 11K tokens of input text to an output of 4K tokens. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Total cost incurred = 11K tokens/1000 x $0.008 + 4K tokens/1000 x $0.024 = $0.088 + $0.096 = ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"$0.184",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:"ltr",textStyle:"",textFormat:0},{tag:"h4",type:"heading",format:"",indent:0,version:1,children:[{mode:"normal",text:"Cost-Effective GenAI: Design for Efficiency",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"The cost optimisation techniques supported by FinOps translate perfectly to the realm of generative AI. Just like any cloud-based service, GenAI tools incur ongoing expenses that require careful management. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"FinOps tenets like rightsizing resources, leveraging automation for cost control, and negotiating committed-use discounts with cloud providers can effectively be applied to GenAI. However, since inference is a major cost driver for GenAI products, we must architect solutions accurately. This ensures prompts minimise token counts while maintaining desired response accuracy, and uses the appropriate foundational model for maximum value.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"To illustrate a poorly architected solution's cost impact, consider 200 large text documents (around 10,000 tokens each) containing detailed information on a specific topic. For each document, we want to distil the information into a concise summary and generate additional content based on that summary.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Lazy option",type:"text",style:"",detail:0,format:1,version:1},{type:"linebreak",version:1},{mode:"normal",text:"mt decide to utilise the Claude 3 Sonnet model from AWS Bedrock, which would perform the task and produce 1000 tokens output",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Total cost = Claude (0.003 x 10 + 0.015 x 1) = 0.045$ for a single inference x 200 = ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"9$ for 200 summaries",type:"text",style:"",detail:0,format:1,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Well-architected option",type:"text",style:"",detail:0,format:1,version:1},{type:"linebreak",version:1},{mode:"normal",text:"mt decide to implement a model chaining pattern, to separate the summarisation and the content creation stages. A simple Mistral 8*7B would create a 500 output tokens per document, feeding into Claude 3 Sonnet, to produce the same 1000 tokens output",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Total cost = Mistral (0.00045 x 10 + 0.0007 x 0.5) + Claude (0.003 x 0.5 + 0.015 x 1) = 0.021$ for a single inference x 200 = ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"4.2$ for 200 summaries",type:"text",style:"",detail:0,format:1,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"By carefully designing the solution (model selection and chaining), we achieved a ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"46% cost saving",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" without compromising accuracy.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"When building a chaining model for your AI implementation, using the right LLM at each stage is key to keeping costs low. For example, if you have to implement ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"pre-scanning",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" and ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"post-scanning",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" of a user inference, each potentially requires a separate LLM. ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"A poorly architected chaining model can incur LLM charges that are ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"100 times higher",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" than necessary.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Here are a few ideas for a well-architected AI pattern:",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Use smaller, task-specific models for pre-scanning (intent) and post-scanning (response generation). This leverages their strengths and avoids paying for unnecessary capabilities.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Hard-code common responses (confirmations, refusals, etc.) to eliminate LLM usage entirely.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Pre-compute responses for limited user inputs (e.mt. category selections) and store them for retrieval, minimising real-time LLM calls.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{type:"linebreak",version:1},{mode:"normal",text:"Let us look at another scenario: ",type:"text",style:"",detail:0,format:1,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"An e-commerce chatbot is designed to handle customer inquiries about product availability and order status. ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:1},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Poorly Architected Approach",type:"text",style:"",detail:0,format:9,version:1}],direction:"ltr",textStyle:"",textFormat:9},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Single Powerful LLM",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"The developers use a single, powerful LLM for both pre-scanning and post-scanning ($0.06 per 1,000 tokens). This LLM requires processing 100 tokens per user interaction (including the user's question and the system's response). ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"High Cost: Every user interaction, even simple ones, requires processing by this expensive LLM. This translates to a cost of $0.06 per 1,000 tokens x 100 tokens/interaction = $0.006 per interaction.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Cost Breakdown",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:1},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Assuming the chatbot handles 10,000 interactions per day, the daily cost would be $0.006/interaction x 10,000 interactions = $60.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"This translates to a monthly cost of $60/day x 30 days = ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"$1800",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:".",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Well-Architected Approach",type:"text",style:"",detail:0,format:9,version:1}],direction:"ltr",textStyle:"",textFormat:9},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Specialised LLMs",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Pre-scanning: A smaller LLM, optimised for intent recognition, analyses the user's question. _ requires just 20 tokens for processing and costs $0.003 per 1,000 tokens.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Post-scanning: Another, even smaller LLM, retrieves product information and order details from the database and generates a concise response, requiring 50 tokens. This LLM costs $0.006 per 1,000 tokens.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:4,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Hard-coding: The chatbot is programmed with pre-defined responses for common inquiries, eliminating LLM processing for these interactions altogether. Cost is null.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:5,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Pre-computing: For product categories with a limited number of options, pre-generated responses for availability can be stored. The chatbot retrieves the appropriate response based on user selection, further minimising LLM usage. Cost is also null.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Cost Breakdown",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:1},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Pre-scanning LLM: $.003 per 1,000 tokens x 20 tokens/interaction = $0.00006 per interaction ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Post-scanning LLM: $.006 per 1,000 tokens x 50 tokens/interaction = $0.0003 per interaction",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Hard-coded and pre-computed responses: $0 cost",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Assuming an even split between pre-scanning and post-scanning interactions (5,000 each per day), the total daily cost becomes:",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Pre-scanning cost: $0.00006/interaction x 5,000 interactions = $0.3",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Post-scanning cost: $0.0003/interaction x 5,000 interactions = $1.5",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Hard-coded/pre-computed responses: $0 cost",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Combined, the daily cost is $1.8. This translates to a monthly cost of $1.8/day x 30 days = ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"$54",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:".",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"By implementing a ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"well-architected",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" design, this example demonstrates a potential ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"97% reduction",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" in monthly costs ($1800 vs $54) by using specialised LLMs, hard-coded responses, and pre-computed responses. This highlights the substantial financial benefits of a well-architected chaining model for your AI chatbot.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"A further approach to enhancing performance and minimising the total cost of ownership (TCO) for GenAI products is ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"Retrieval-Augmented Generation",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" (RAG). RAG optimises the workload for foundational models by pre-selecting relevant information. Instead of requiring the expensive generative model to process information from scratch, RAG efficiently reduces the volume of text the model needs to handle. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"This is achieved by first retrieving pertinent information from a knowledge base ee corpus, and then augmenting the generative model with this pre-selected, relevant context only. By avoiding the need to process irrelevant information, RAG leads to fewer tokens being processed by the costly model, subsequently lowering inference costs while maintaining high-quality outputs.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"However, to implement RAG a number of Cloud services (compute, storage, network, etc) need to be deployed, and this will increase the overall TCO for the implementation, as explored in detail further below.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:"ltr",textStyle:"",textFormat:0},{tag:"h4",type:"heading",format:"",indent:0,version:1,children:[{mode:"normal",text:"The right model for the right application",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Various models come with diverse computational needs and functionalities. Opting for a model that aligns well with the project's objectives, without overcomplicating with unnecessary features, can notably reduce overall expenses.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"The factors that may influence the choice of a Generative AI foundational model for your application are multiple, i.e.:",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Task type",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Accuracy",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Performance",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:4,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Supported number of input/output tokens",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:5,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Multi-language support",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Considering such factors is key to ensure the maximisation of business value of the generative AI application because, even within a single family of models, there is a wide range of options available, each with a significantly different cost associated with it.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Let\u2019s take the AWS offering as an example below which displays On-demand and batch pricing for Anthropic AI models on AWS Bedrock. ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{type:"table",format:"",indent:0,version:1,children:[{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Model",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:3,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Price per 1,000 input tokens",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:1,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" Price per 1,000 output tokens",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:1,backgroundColor:null}],direction:"ltr"},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Claude Instant",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"$0.0008",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.0024",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null}],direction:null},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Claude 2.0/2.1 ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.008 ",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.024",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null}],direction:null},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Claude 3 Opus ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.015 ",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.075",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null}],direction:null},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Claude 3 Sonnet ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.003",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.015",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null}],direction:null},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Claude 3 Haiku ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.00025 ",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.00125",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null}],direction:null}],colWidths:[199,323,347],direction:null},{type:"paragraph",format:"",indent:0,version:1,children:[{mode:"normal",text:"The price difference between Claude Instant and Opus models is significant. The table below explores the reasons behind this. ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{type:"table",format:"",indent:0,version:1,children:[{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Model",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:3,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Max Tokens",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:1}],direction:"ltr",headerState:1,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Languages",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:1}],direction:"ltr",headerState:1,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Use Cases",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:1}],direction:"ltr",headerState:1,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0}],direction:"ltr",headerState:1,backgroundColor:null}],direction:"ltr"},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Instant ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"100K",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"English and multiple other languages",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Casual dialogue, text analysis, summarisation, and document comprehension.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null}],direction:"ltr"},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Opus ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"200K",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"English, Spanish, Japanese, and multiple other languages ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Task automation, interactive coding, research review, brainstorming and hypothesis generation, advanced analysis of charts and graphs, financials and market trends, forecasting",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null}],direction:"ltr"}],colWidths:[92,110,152,552,552],direction:null},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"The pricing data highlights the importance of selecting the appropriate model for your use case. Opting for the wrong model could result in costs that are nearly 20 times higher than necessary, significantly impacting the overall implementation expenses.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Larger and more complex models like GPT-3 ee PaLM require significantly more computational resources for training and inference, leading to higher costs. Selecting a smaller, more efficient model can reduce costs if the application does not require the full capabilities of a larger model. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"For instance, Anthropic Claude 3 Sonnet, with its larger context size of 12K tokens, excels at complex tasks like dialogues and creative content generation but costs $0.003 per 1K tokens on Amazon Bedrock. In contrast, the simpler Amazon Titan Text Express, suitable for summarisation and basic text generation, is nearly four times cheaper at $0.0008 per 1K tokens. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Considering this, if we want to implement a digital platform that aggregates news articles from various sources and delivers curated content to users based on their preferences and interests, the Amazon Titan Text might be the right foundational model of choice to optimise costs.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Another example: let us consider the use case of building an AI assistant for customer service. The OpenAI GPT-3 Davinci model, with its impressive language understanding and generation capabilities, might seem like a natural choice. However, at $0.06 per 1,000 input tokens and $0.06 per 1,000 output tokens, it could quickly become cost-prohibitive for high-volume interactions. On the other hand, the more specialised Anthropic Claude Instant, designed for conversational AI, offers a more cost-effective solution at $0.0008 per 1,000 input tokens and $0.0024 per 1,000 output tokens. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Given the requirement for real-time, interactive responses in customer service scenarios, the Claude Instant model could potentially deliver the necessary performance at a fraction of the cost, making it the more suitable option for this particular implementation.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{tag:"h4",type:"heading",format:"",indent:0,version:1,children:[{mode:"normal",text:"There are more costs to consider",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Frequently, when integrating generative AI services within an organisation, it is required to provide domain context to a Generative AI foundation model. This need arises in various scenarios where the model must produce outputs tailored to a specific domain ee industry.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"As explained before, a Retrieval-Augmented Generation (RAG) approach can help provide domain context to a generative AI foundation model. RAG is a technique that combines a pre-trained language model (like GPT-3 ee BERT) with a retrieval system (like a search engine ee knowledge base). The retrieval system is used to fetch relevant documents ee passages from a corpus of domain-specific data, which can then be used to augment the context provided to the language model.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"However, it is important to note that the implementation of such process will need several additional cloud services for each step, i.e.:",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Data storage ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"AWS S3, Azure Storage Account ee GCP bucket ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Data Cleanup ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"AWS Glue, Azure ML studio ee Vertex AI",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Vector embedding ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"AWS OpenSearch with mt-nn, Azure CosmosDB for PostgreSQL ee Vertex AI Vector Search",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"To manage the TCO of the AI implementation there are standard optimisation patterns that can be applied to these services:",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Tiered Storage ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"Leverage cost-effective storage options like lifecycle management policies in AWS S3, Azure Blob Storage Archive tier in Azure Storage Account, ee Coldline storage class in GCP buckets to archive infrequently accessed data.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Serverless Data Processing ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"Explore serverless data processing services like AWS Glue ETL jobs ee Azure Data Factory pipelines to clean and prepare data efficiently, minimising resource usage.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Pay-per-use Vector Embedding ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"Utilise managed services with pay-per-use pricing models, like Amazon OpenSearch with Elasticsearch Service for vector embedding and mt-nearest neighbours search ee consider cost-effective alternatives like Faiss for GPU-based similarity search within Azure Cognitive Services.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:4,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Automated Training Pipelines ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"Consider Vertex AI Pipelines in GCP ee Azure Machine Learning pipelines to automate and potentially optimise training workflows for the RAG model, potentially reducing training costs. Explore SageMaker Neo for efficient model deployment on AWS ee leverage cost-effective containerisation technologies like Docker for deployment across cloud providers.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{tag:"h4",type:"heading",format:"",indent:0,version:1,children:[{mode:"normal",text:"Conclusion",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"As AI workloads continue to grow in complexity and scale, effective FinOps practices become increasingly crucial for organisations to manage their cloud costs and optimise resource utilisation. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"By adopting the right AI architectural patterns, implementing cost monitoring and optimisation strategies, organisations can strike the right balance between innovation and fiscal responsibility.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Embracing FinOps principles enables organisations to future-proof their AI investments, ensuring sustainable growth and a competitive edge in the rapidly evolving AI landscape.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr"}},relatedPosts:[],categories:[{id:2,title:"FinOps",parent:null,breadcrumbs:[{id:"677a812ddf2f2500016a05f5",doc:2,url:null,label:"FinOps"}],updatedAt:"2025-01-05T12:55:09.500Z",createdAt:"2025-01-05T12:55:09.480Z"}],meta:{title:"FinOps-enhanced GenAI | Cortex Reply | AI that works for you",image:{id:119,alt:"FinOps-enhanced GenAI: Inform, Optimise, Operate, Innovate",prefix:"media",updatedAt:"2025-04-01T09:06:10.720Z",createdAt:"2025-04-01T09:06:07.529Z",url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu.jpg",thumbnailURL:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-300x200.jpg",filename:"zZpFFeluQXVexiYXUJ6lu.jpg",mimeType:"image/jpeg",filesize:227036,width:2121,height:1414,focalX:50,focalY:50,sizes:{thumbnail:{url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-300x200.jpg",width:300,height:200,mimeType:"image/jpeg",filesize:6658,filename:"zZpFFeluQXVexiYXUJ6lu-300x200.jpg"},square:{url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-500x500.jpg",width:500,height:500,mimeType:"image/jpeg",filesize:35848,filename:"zZpFFeluQXVexiYXUJ6lu-500x500.jpg"},small:{url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-600x400.jpg",width:600,height:400,mimeType:"image/jpeg",filesize:27963,filename:"zZpFFeluQXVexiYXUJ6lu-600x400.jpg"},medium:{url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-900x600.jpg",width:900,height:600,mimeType:"image/jpeg",filesize:59628,filename:"zZpFFeluQXVexiYXUJ6lu-900x600.jpg"},large:{url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-1400x933.jpg",width:1400,height:933,mimeType:"image/jpeg",filesize:121948,filename:"zZpFFeluQXVexiYXUJ6lu-1400x933.jpg"},xlarge:{url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-1920x1280.jpg",width:1920,height:1280,mimeType:"image/jpeg",filesize:195431,filename:"zZpFFeluQXVexiYXUJ6lu-1920x1280.jpg"}}},description:"See how FinOps enhances GenAI by optimising costs, boosting efficiency, and driving innovation with informed financial and operational strategies."},publishedAt:"2025-02-18T16:04:50.489Z",authors:[{id:16,name:"Derek Ho",email:"d.ho@reply.com",jobRole:"SC2",manager:2,about:"Senior AI & Cloud Consultant",profilePicture:12,workHistory:[],certifications:[],areasOfExpertise:[],dateOfBirth:"2020-10-15T12:00:00.000Z",joinDate:"2021-08-09T12:00:00.000Z",linkedIn:"www.linkedin.com/in/derekmhho",role:"user",updatedAt:"2025-03-17T09:43:57.552Z",createdAt:"2025-01-13T10:49:09.359Z",enableAPIKey:null,apiKey:null},{id:12,name:"Ben Num",email:"mt.num@reply.com",jobRole:"C2",manager:3,about:null,profilePicture:15,workHistory:[],certifications:[],areasOfExpertise:[],dateOfBirth:"2025-12-29T12:00:00.000Z",joinDate:"2023-09-11T12:00:00.000Z",linkedIn:null,role:"user",updatedAt:"2025-02-12T15:25:13.837Z",createdAt:"2025-01-10T14:07:25.875Z",enableAPIKey:null,apiKey:null}],populatedAuthors:[{id:"16",name:"Derek Ho"},{id:"12",name:"Ben Num"}],slug:"finops-enhanced-genai-inform-optimise-operate-innovate",slugLock:!0,updatedAt:"2025-04-01T10:03:00.931Z",createdAt:"2025-03-31T20:28:04.118Z"}}}};0&&(module.exports={AReallyLongTitle,Default,LotsOfFormatting});
5
+ "use strict";var Ar=Object.create;var Se=Object.defineProperty;var Nr=Object.getOwnPropertyDescriptor;var Tr=Object.getOwnPropertyNames;var Pr=Object.getPrototypeOf,Ir=Object.prototype.hasOwnProperty;var Br=(e,t)=>{for(var r in t)Se(e,r,{get:t[r],enumerable:!0})},dt=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Tr(t))!Ir.call(e,a)&&a!==r&&Se(e,a,{get:()=>t[a],enumerable:!(n=Nr(t,a))||n.enumerable});return e};var M=(e,t,r)=>(r=e!=null?Ar(Pr(e)):{},dt(t||!e||!e.__esModule?Se(r,"default",{value:e,enumerable:!0}):r,e)),Fr=e=>dt(Se({},"__esModule",{value:!0}),e);var Po={};Br(Po,{AReallyLongTitle:()=>No,Default:()=>be,LotsOfFormatting:()=>To,default:()=>Ao});module.exports=Fr(Po);var mt=require("react/jsx-runtime"),se=({type:e="solid",iconName:t="cloud",size:r="lg",className:n})=>{let a=e.includes("fa-")?e+" ":"fa-"+e+" ",o="fa-"+t,i=n??"",l=a+o+" fa-"+r+" "+i;return(0,mt.jsx)("i",{className:l})};var _=require("@headlessui/react"),wt=require("@heroicons/react/20/solid");var vt=require("clsx");var Ye="-",Mr=e=>{let t=Rr(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:n}=e;return{getClassGroupId:i=>{let l=i.split(Ye);return l[0]===""&&l.length!==1&&l.shift(),ft(l,t)||Dr(i)},getConflictingClassGroupIds:(i,l)=>{let c=r[i]||[];return l&&n[i]?[...c,...n[i]]:c}}},ft=(e,t)=>{if(e.length===0)return t.classGroupId;let r=e[0],n=t.nextPart.get(r),a=n?ft(e.slice(1),n):void 0;if(a)return a;if(t.validators.length===0)return;let o=e.join(Ye);return t.validators.find(({validator:i})=>i(o))?.classGroupId},pt=/^\[(.+)\]$/,Dr=e=>{if(pt.test(e)){let t=pt.exec(e)[1],r=t?.substring(0,t.indexOf(":"));if(r)return"arbitrary.."+r}},Rr=e=>{let{theme:t,prefix:r}=e,n={nextPart:new Map,validators:[]};return zr(Object.entries(e.classGroups),r).forEach(([o,i])=>{$e(i,n,o,t)}),n},$e=(e,t,r,n)=>{e.forEach(a=>{if(typeof a=="string"){let o=a===""?t:ut(t,a);o.classGroupId=r;return}if(typeof a=="function"){if(Lr(a)){$e(a(n),t,r,n);return}t.validators.push({validator:a,classGroupId:r});return}Object.entries(a).forEach(([o,i])=>{$e(i,ut(t,o),r,n)})})},ut=(e,t)=>{let r=e;return t.split(Ye).forEach(n=>{r.nextPart.has(n)||r.nextPart.set(n,{nextPart:new Map,validators:[]}),r=r.nextPart.get(n)}),r},Lr=e=>e.isThemeGetter,zr=(e,t)=>t?e.map(([r,n])=>{let a=n.map(o=>typeof o=="string"?t+o:typeof o=="object"?Object.fromEntries(Object.entries(o).map(([i,l])=>[t+i,l])):o);return[r,a]}):e,Hr=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,r=new Map,n=new Map,a=(o,i)=>{r.set(o,i),t++,t>e&&(t=0,n=r,r=new Map)};return{get(o){let i=r.get(o);if(i!==void 0)return i;if((i=n.get(o))!==void 0)return a(o,i),i},set(o,i){r.has(o)?r.set(o,i):a(o,i)}}},gt="!",Gr=e=>{let{separator:t,experimentalParseClassName:r}=e,n=t.length===1,a=t[0],o=t.length,i=l=>{let c=[],m=0,p=0,x;for(let N=0;N<l.length;N++){let T=l[N];if(m===0){if(T===a&&(n||l.slice(N,N+o)===t)){c.push(l.slice(p,N)),p=N+o;continue}if(T==="/"){x=N;continue}}T==="["?m++:T==="]"&&m--}let u=c.length===0?l:l.substring(p),h=u.startsWith(gt),A=h?u.substring(1):u,C=x&&x>p?x-p:void 0;return{modifiers:c,hasImportantModifier:h,baseClassName:A,maybePostfixModifierPosition:C}};return r?l=>r({className:l,parseClassName:i}):i},Er=e=>{if(e.length<=1)return e;let t=[],r=[];return e.forEach(n=>{n[0]==="["?(t.push(...r.sort(),n),r=[]):r.push(n)}),t.push(...r.sort()),t},Or=e=>({cache:Hr(e.cacheSize),parseClassName:Gr(e),...Mr(e)}),Ur=/\s+/,jr=(e,t)=>{let{parseClassName:r,getClassGroupId:n,getConflictingClassGroupIds:a}=t,o=[],i=e.trim().split(Ur),l="";for(let c=i.length-1;c>=0;c-=1){let m=i[c],{modifiers:p,hasImportantModifier:x,baseClassName:u,maybePostfixModifierPosition:h}=r(m),A=!!h,C=n(A?u.substring(0,h):u);if(!C){if(!A){l=m+(l.length>0?" "+l:l);continue}if(C=n(u),!C){l=m+(l.length>0?" "+l:l);continue}A=!1}let N=Er(p).join(":"),T=x?N+gt:N,B=T+C;if(o.includes(B))continue;o.push(B);let $=a(C,A);for(let L=0;L<$.length;++L){let ve=$[L];o.push(T+ve)}l=m+(l.length>0?" "+l:l)}return l};function $r(){let e=0,t,r,n="";for(;e<arguments.length;)(t=arguments[e++])&&(r=yt(t))&&(n&&(n+=" "),n+=r);return n}var yt=e=>{if(typeof e=="string")return e;let t,r="";for(let n=0;n<e.length;n++)e[n]&&(t=yt(e[n]))&&(r&&(r+=" "),r+=t);return r};function Yr(e,...t){let r,n,a,o=i;function i(c){let m=t.reduce((p,x)=>x(p),e());return r=Or(m),n=r.cache.get,a=r.cache.set,o=l,l(c)}function l(c){let m=n(c);if(m)return m;let p=jr(c,r);return a(c,p),p}return function(){return o($r.apply(null,arguments))}}var v=e=>{let t=r=>r[e]||[];return t.isThemeGetter=!0,t},ht=/^\[(?:([a-z-]+):)?(.+)\]$/i,Jr=/^\d+\/\d+$/,qr=new Set(["px","full","screen"]),Kr=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Vr=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|mt|min|max))|\mt(calc|min|max|clamp)\(.+\)|^0$/,Xr=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Qr=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Zr=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,O=e=>Z(e)||qr.has(e)||Jr.test(e),Y=e=>W(e,"length",no),Z=e=>!!e&&!Number.isNaN(Number(e)),je=e=>W(e,"number",Z),ce=e=>!!e&&Number.isInteger(Number(e)),Wr=e=>e.endsWith("%")&&Z(e.slice(0,-1)),d=e=>ht.test(e),J=e=>Kr.test(e),_r=new Set(["length","size","percentage"]),eo=e=>W(e,_r,xt),to=e=>W(e,"position",xt),ro=new Set(["image","url"]),oo=e=>W(e,ro,lo),ao=e=>W(e,"",io),de=()=>!0,W=(e,t,r)=>{let n=ht.exec(e);return n?n[1]?typeof t=="string"?n[1]===t:t.has(n[1]):r(n[2]):!1},no=e=>Vr.test(e)&&!Xr.test(e),xt=()=>!1,io=e=>Qr.test(e),lo=e=>Zr.test(e);var so=()=>{let e=v("colors"),t=v("spacing"),r=v("blur"),n=v("brightness"),a=v("borderColor"),o=v("borderRadius"),i=v("borderSpacing"),l=v("borderWidth"),c=v("contrast"),m=v("grayscale"),p=v("hueRotate"),x=v("invert"),u=v("gap"),h=v("gradientColorStops"),A=v("gradientColorStopPositions"),C=v("inset"),N=v("margin"),T=v("opacity"),B=v("padding"),$=v("saturate"),L=v("scale"),ve=v("sepia"),ot=v("skew"),at=v("space"),nt=v("translate"),Ge=()=>["auto","contain","none"],Ee=()=>["auto","hidden","clip","visible","scroll"],Oe=()=>["auto",d,t],w=()=>[d,t],it=()=>["",O,Y],ke=()=>["auto",Z,d],lt=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],we=()=>["solid","dashed","dotted","double","none"],st=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Ue=()=>["start","end","center","between","around","evenly","stretch"],le=()=>["","0",d],ct=()=>["auto","avoid","all","avoid-page","page","left","right","column"],E=()=>[Z,d];return{cacheSize:500,separator:":",theme:{colors:[de],spacing:[O,Y],blur:["none","",J,d],brightness:E(),borderColor:[e],borderRadius:["none","","full",J,d],borderSpacing:w(),borderWidth:it(),contrast:E(),grayscale:le(),hueRotate:E(),invert:le(),gap:w(),gradientColorStops:[e],gradientColorStopPositions:[Wr,Y],inset:Oe(),margin:Oe(),opacity:E(),padding:w(),saturate:E(),scale:E(),sepia:le(),skew:E(),space:w(),translate:w()},classGroups:{aspect:[{aspect:["auto","square","video",d]}],container:["container"],columns:[{columns:[J]}],"break-after":[{"break-after":ct()}],"break-before":[{"break-before":ct()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...lt(),d]}],overflow:[{overflow:Ee()}],"overflow-x":[{"overflow-x":Ee()}],"overflow-mt":[{"overflow-mt":Ee()}],overscroll:[{overscroll:Ge()}],"overscroll-x":[{"overscroll-x":Ge()}],"overscroll-mt":[{"overscroll-mt":Ge()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[C]}],"inset-x":[{"inset-x":[C]}],"inset-mt":[{"inset-mt":[C]}],start:[{start:[C]}],end:[{end:[C]}],top:[{top:[C]}],right:[{right:[C]}],bottom:[{bottom:[C]}],left:[{left:[C]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",ce,d]}],basis:[{basis:Oe()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",d]}],grow:[{grow:le()}],shrink:[{shrink:le()}],order:[{order:["first","last","none",ce,d]}],"grid-cols":[{"grid-cols":[de]}],"col-start-end":[{col:["auto",{span:["full",ce,d]},d]}],"col-start":[{"col-start":ke()}],"col-end":[{"col-end":ke()}],"grid-rows":[{"grid-rows":[de]}],"row-start-end":[{row:["auto",{span:[ce,d]},d]}],"row-start":[{"row-start":ke()}],"row-end":[{"row-end":ke()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",d]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",d]}],gap:[{gap:[u]}],"gap-x":[{"gap-x":[u]}],"gap-mt":[{"gap-mt":[u]}],"justify-content":[{justify:["normal",...Ue()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...Ue(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...Ue(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[B]}],px:[{px:[B]}],py:[{py:[B]}],ps:[{ps:[B]}],pe:[{pe:[B]}],pt:[{pt:[B]}],pr:[{pr:[B]}],pb:[{pb:[B]}],pl:[{pl:[B]}],m:[{m:[N]}],mx:[{mx:[N]}],my:[{my:[N]}],ms:[{ms:[N]}],mt:[{mt:[N]}],mt:[{mt:[N]}],ee:[{ee:[N]}],mb:[{mb:[N]}],ml:[{ml:[N]}],"space-x":[{"space-x":[at]}],"space-x-reverse":["space-x-reverse"],"space-mt":[{"space-mt":[at]}],"space-mt-reverse":["space-mt-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",d,t]}],"min-w":[{"min-w":[d,t,"min","max","fit"]}],"max-w":[{"max-w":[d,t,"none","full","min","max","fit","prose",{screen:[J]},J]}],h:[{h:[d,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[d,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[d,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[d,t,"auto","min","max","fit"]}],"font-size":[{text:["base",J,Y]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",je]}],"font-family":[{font:[de]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",d]}],"line-clamp":[{"line-clamp":["none",Z,je]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",O,d]}],"list-image":[{"list-image":["none",d]}],"list-style-type":[{list:["none","disc","decimal",d]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[T]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[T]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...we(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",O,Y]}],"underline-offset":[{"underline-offset":["auto",O,d]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:w()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",d]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",d]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[T]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...lt(),to]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","mt","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",eo]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","mt","bl","l","tl"]},oo]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[A]}],"gradient-via-pos":[{via:[A]}],"gradient-to-pos":[{to:[A]}],"gradient-from":[{from:[h]}],"gradient-via":[{via:[h]}],"gradient-to":[{to:[h]}],rounded:[{rounded:[o]}],"rounded-s":[{"rounded-s":[o]}],"rounded-e":[{"rounded-e":[o]}],"rounded-t":[{"rounded-t":[o]}],"rounded-r":[{"rounded-r":[o]}],"rounded-mt":[{"rounded-mt":[o]}],"rounded-l":[{"rounded-l":[o]}],"rounded-ss":[{"rounded-ss":[o]}],"rounded-se":[{"rounded-se":[o]}],"rounded-ee":[{"rounded-ee":[o]}],"rounded-es":[{"rounded-es":[o]}],"rounded-tl":[{"rounded-tl":[o]}],"rounded-tr":[{"rounded-tr":[o]}],"rounded-br":[{"rounded-br":[o]}],"rounded-bl":[{"rounded-bl":[o]}],"border-w":[{border:[l]}],"border-w-x":[{"border-x":[l]}],"border-w-mt":[{"border-mt":[l]}],"border-w-s":[{"border-s":[l]}],"border-w-e":[{"border-e":[l]}],"border-w-t":[{"border-t":[l]}],"border-w-r":[{"border-r":[l]}],"border-w-mt":[{"border-mt":[l]}],"border-w-l":[{"border-l":[l]}],"border-opacity":[{"border-opacity":[T]}],"border-style":[{border:[...we(),"hidden"]}],"divide-x":[{"divide-x":[l]}],"divide-x-reverse":["divide-x-reverse"],"divide-mt":[{"divide-mt":[l]}],"divide-mt-reverse":["divide-mt-reverse"],"divide-opacity":[{"divide-opacity":[T]}],"divide-style":[{divide:we()}],"border-color":[{border:[a]}],"border-color-x":[{"border-x":[a]}],"border-color-mt":[{"border-mt":[a]}],"border-color-s":[{"border-s":[a]}],"border-color-e":[{"border-e":[a]}],"border-color-t":[{"border-t":[a]}],"border-color-r":[{"border-r":[a]}],"border-color-mt":[{"border-mt":[a]}],"border-color-l":[{"border-l":[a]}],"divide-color":[{divide:[a]}],"outline-style":[{outline:["",...we()]}],"outline-offset":[{"outline-offset":[O,d]}],"outline-w":[{outline:[O,Y]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:it()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[T]}],"ring-offset-w":[{"ring-offset":[O,Y]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",J,ao]}],"shadow-color":[{shadow:[de]}],opacity:[{opacity:[T]}],"mix-blend":[{"mix-blend":[...st(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":st()}],filter:[{filter:["","none"]}],blur:[{blur:[r]}],brightness:[{brightness:[n]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":["","none",J,d]}],grayscale:[{grayscale:[m]}],"hue-rotate":[{"hue-rotate":[p]}],invert:[{invert:[x]}],saturate:[{saturate:[$]}],sepia:[{sepia:[ve]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[r]}],"backdrop-brightness":[{"backdrop-brightness":[n]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[m]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[p]}],"backdrop-invert":[{"backdrop-invert":[x]}],"backdrop-opacity":[{"backdrop-opacity":[T]}],"backdrop-saturate":[{"backdrop-saturate":[$]}],"backdrop-sepia":[{"backdrop-sepia":[ve]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[i]}],"border-spacing-x":[{"border-spacing-x":[i]}],"border-spacing-mt":[{"border-spacing-mt":[i]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",d]}],duration:[{duration:E()}],ease:[{ease:["linear","in","out","in-out",d]}],delay:[{delay:E()}],animate:[{animate:["none","spin","ping","pulse","bounce",d]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[L]}],"scale-x":[{"scale-x":[L]}],"scale-mt":[{"scale-mt":[L]}],rotate:[{rotate:[ce,d]}],"translate-x":[{"translate-x":[nt]}],"translate-mt":[{"translate-mt":[nt]}],"skew-x":[{"skew-x":[ot]}],"skew-mt":[{"skew-mt":[ot]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",d]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","kr-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",d]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","mt","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-ee":[{"scroll-ee":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","mt","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-mt":[{"touch-pan":["mt","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",d]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[O,Y,je]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-mt"],overscroll:["overscroll-x","overscroll-mt"],inset:["inset-x","inset-mt","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-mt":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-mt"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","mt","mt","ee","mb","ml"],mx:["ee","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-mt","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-mt":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-mt"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-mt","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-mt":["border-w-t","border-w-mt"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-mt","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-mt":["border-color-t","border-color-mt"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-mt","scroll-mt","scroll-ee","scroll-mb","scroll-ml"],"scroll-mx":["scroll-ee","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-mt","touch-pz"],"touch-x":["touch"],"touch-mt":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}};var bt=Yr(so);function s(...e){return bt((0,vt.clsx)(e))}var co=({name:e,items:t,actions:r=[],href:n})=>!t&&n?(0,mt.jsx)("a",{href:n,className:"flex items-center gap-x-1 text-sm text-foreground group",children:(0,mt.jsxs)("span",{className:"relative",children:[e,(0,mt.jsx)("span",{className:"absolute -bottom-1 left-1/2 w-1/2 h-0.5 bg-accent transform -translate-x-1/2 scale-x-0 transition-transform duration-300 ease-in-out group-hover:scale-x-100"})]})}):(0,mt.jsxs)(_.Popover,{children:[(0,mt.jsxs)(_.PopoverButton,{className:"flex items-center gap-x-1 text-sm/6 text-foreground outline-none group",children:[(0,mt.jsxs)("span",{className:"relative",children:[e,(0,mt.jsx)("span",{className:"absolute bottom-0 left-1/2 w-1/2 h-0.5 bg-accent transform -translate-x-1/2 scale-x-0 transition-transform duration-300 ease-in-out group-hover:scale-x-100"})]}),(0,mt.jsx)(wt.ChevronDownIcon,{"aria-hidden":"true",className:"h-5 w-5 flex-none text-accent"})]}),(0,mt.jsxs)(_.PopoverPanel,{transition:!0,className:"absolute inset-x-0 top-0 -z-10 bg-popover mt-14 shadow-lg ring-1 ring-ring/5 transition data-[closed]:-translate-mt-1 data-[closed]:opacity-0 data-[enter]:duration-200 data-[leave]:duration-150 data-[enter]:ease-out data-[leave]:ease-in",children:[(0,mt.jsx)("div",{className:"mx-auto grid max-w-7xl grid-cols-4 gap-x-4 px-6 py-10 lg:px-8 xl:gap-x-8 z-50",children:t&&t.map(a=>(0,mt.jsxs)("div",{className:"group relative rounded-lg p-6 text-sm/6 box-border",children:[(0,mt.jsx)("div",{className:"flex h-16 items-center justify-start rounded-lg bg-popover text-muted-foreground group-hover:text-accent transition-transform duration-400 ease-in-out group-hover:scale-90",children:a.icon&&(0,mt.jsx)(kt,{icon:a.icon,size:"4x"})}),(0,mt.jsxs)("a",{href:a.href,className:"mt-6 block text-popover-foreground group-hover:text-accent",children:[a.name,(0,mt.jsx)("span",{className:"absolute inset-0"})]}),(0,mt.jsx)("p",{className:"mt-1 text-popover-foreground/80 group-hover:text-accent",children:a.description})]},a.name))}),r.length>0&&(0,mt.jsx)("div",{className:"bg-gray-50",children:(0,mt.jsx)("div",{className:"mx-auto max-w-7xl px-6 lg:px-8",children:(0,mt.jsx)("div",{className:"grid grid-cols-3 divide-x divide-gray-900/5 border-x border-gray-900/5",children:r.map(a=>(0,mt.jsxs)("a",{href:a.href,className:"flex items-center max-h-12 justify-center gap-x-2.5 p-3 text-sm/6 text-gray-900 hover:bg-gray-100",children:[a.icon&&(0,mt.jsx)(kt,{icon:a.icon,className:"h-5 w-5 flex-none text-gray-400"}),a.name]},a.name))})})})]})]}),kt=({icon:e,className:t,size:r="lg"})=>{if(!e)return null;if("type"in e)return(0,mt.jsx)(se,{...e,size:r});if("src"in e)return(0,mt.jsx)("div",{className:s(t,"h-full max-w-32 items-start text-left"),children:e&&typeof e.src=="string"&&(0,mt.jsx)("img",{src:e.src,style:{objectFit:"contain",width:"100%",height:"100%"}})})},St=co;var Ct=M(require("next/link"));function Ce({children:e,href:t,openNewTab:r,...n}){return(0,mt.jsx)(Ct.default,{href:t,target:r?"_blank":"_self",...n,children:e})}function Nt({children:e,isFluid:t=!1,isNoPadding:r=!1,className:n=""}){let a=s("container",t&&"full-width",r&&"no-padding",n);return(0,mt.jsx)("div",{className:a,children:e})}var ee=require("react");var Je=M(require("next/image"));function pe({logoLight:e,logoDark:t,mobile:r=!1}){return(0,mt.jsxs)(Ce,{href:"/",className:s(r?"py-1":"py-2"),children:[(0,mt.jsx)(Je.default,{className:"logo-light dark:hidden",src:e.src,width:e.width,height:e.height,alt:`${process.env.NEXT_PUBLIC_SITE_NAME} brand logo`,sizes:"100vw",priority:!0,style:{width:"auto",height:r?35:50}}),(0,mt.jsx)(Je.default,{className:"hidden dark:block",src:t.src,width:t.width,height:t.height,alt:`${process.env.NEXT_PUBLIC_SITE_NAME} brand logo`,sizes:"100vw",priority:!0,style:{width:"auto",height:r?35:50}})]})}var Pt=require("next-themes"),Ae=require("lucide-react");function Bt({isMenuOpen:e,logoLight:t,logoDark:r,menuItems:n,themeControl:a=!1,wide:o=!1}){let[i,l]=(0,ee.useState)(!1),[c,m]=(0,ee.useState)(""),p=["light","dark"],{theme:x,setTheme:u}=(0,Pt.useTheme)();(0,ee.useEffect)(()=>{m(x||"dark")},[x]);let h=()=>{let A=p[(p.indexOf(c)+1)%p.length];m(A),u(A)};return(0,ee.useEffect)(()=>{let A=()=>{window.scrollY>100?l(!0):l(!1)};return window.addEventListener("scroll",A,{passive:!0}),()=>window.removeEventListener("scroll",A)},[]),(0,mt.jsx)(mt.Fragment,{children:(0,mt.jsx)("header",{className:`z-50 pb-10 transition-all duration-300 hidden lg:block ${i||e?"translate-mt-0":"-translate-mt-full bg-transparent"}`,children:(0,mt.jsx)("nav",{className:"backdrop-blur-sm bg-background/80 text-white p-0",children:(0,mt.jsxs)("div",{className:s("flex items-center justify-between px-9 py-0",!o&&"container"),children:[(0,mt.jsx)(pe,{logoDark:r,logoLight:t}),(0,mt.jsx)(_.PopoverGroup,{className:"hidden lg:flex lg:gap-x-12",children:n&&n.map(A=>(0,mt.jsx)(St,{...A},A.name))}),a&&(0,mt.jsx)("button",{className:"fixed right-4 z-[60] p-2 rounded-full hover:border hover:border-accent backdrop-blur-sm transition-all duration-300 hover:bg-white/20 text-primary dark:text-white hover:text-accent hover:scale-125",onClick:h,children:(0,mt.jsxs)("div",{className:"relative",children:[(0,mt.jsx)(Ae.Sun,{className:"absolute h-6 w-6 rotate-0 scale-100 transition-transform dark:-rotate-90 dark:scale-0"}),(0,mt.jsx)(Ae.Moon,{className:"absoulte h-6 w-6 rotate-0 scale-0 transition-transform dark:rotate-0 dark:scale-100"})]})})]})})})})}var Ne=require("@heroicons/react/24/outline");var qe=["light","dark"];function Mt({logoLight:e,logoDark:t,menuItems:r,isMenuOpen:n=!0}){let[a,o]=(0,ee.useState)(!1),{theme:i,setTheme:l}=(0,Pt.useTheme)(),[c,m]=(0,ee.useState)(!1),[p,x]=(0,ee.useState)("light");(0,ee.useEffect)(()=>{let h=()=>{window.scrollY>100?o(!0):o(!1)};return window.addEventListener("scroll",h,{passive:!0}),()=>window.removeEventListener("scroll",h)},[]),(0,ee.useEffect)(()=>{x(i||"dark")},[i]);let u=()=>{let h=qe[(qe.indexOf(p)+1)%qe.length];x(h),l(h)};return(0,mt.jsx)(mt.Fragment,{children:(0,mt.jsxs)("header",{className:`z-50 pb-10 transition-all duration-300 block lg:hidden ${a||n?"translate-mt-0":"-translate-mt-full bg-transparent"}`,children:[(0,mt.jsx)("nav",{className:s("backdrop-blur-sm text-white p-0",c&&"hidden"),children:(0,mt.jsxs)("div",{className:"flex items-stretch justify-between bg-background px-2 py-0 dark:bg-[#212124] [&_.logo-light]:[filter:brightness(0)_invert(1)] dark:border-mt dark:border-accent",children:[(0,mt.jsx)(pe,{logoDark:t,logoLight:e,mobile:!0}),(0,mt.jsx)("div",{className:"flex items-center space-x-4",children:(0,mt.jsxs)("button",{type:"button",onClick:()=>m(!0),className:"fixed right-4 z-[60] p-2 rounded-full bg-white/10 backdrop-blur-sm transition-all duration-300 hover:bg-white/20 text-white dark:hover:text-accent",children:[(0,mt.jsx)("span",{className:"sr-only",children:"Open main menu"}),(0,mt.jsx)(Ne.Bars3Icon,{"aria-hidden":"true",className:"h-4 w-4"})]})})]})}),(0,mt.jsxs)(_.Dialog,{open:c,onClose:m,className:"lg:hidden",children:[(0,mt.jsx)("div",{className:"fixed inset-0 z-10 bg-black bg-opacity-50","aria-hidden":"true"}),(0,mt.jsxs)(_.DialogPanel,{className:"fixed inset-mt-0 right-0 z-20 w-full overflow-mt-auto bg-background dark:bg-[#212124] px-2 sm:max-w-sm sm:ring-1 sm:ring-gray-900/10",children:[(0,mt.jsxs)("div",{className:"flex items-stretch justify-between",children:[(0,mt.jsx)(pe,{logoDark:t,logoLight:e,mobile:!0}),(0,mt.jsxs)("button",{type:"button",onClick:()=>m(!1),className:"-m-2.5 rounded-md p-2.5 text-foreground dark:text-foreground outline-none hover:text-accent",children:[(0,mt.jsx)("span",{className:"sr-only",children:"Close menu"}),(0,mt.jsx)(Ne.XMarkIcon,{"aria-hidden":"true",className:"h-6 w-6"})]})]}),(0,mt.jsx)("div",{className:"mt-6 flow-root",children:(0,mt.jsx)("div",{className:"-my-6 divide-mt divide-gray-500/10",children:(0,mt.jsx)("div",{className:"space-mt-2 px-2 py-6",children:r&&r.map(h=>(0,mt.jsx)(mo,{...h},h.name))})})})]})]})]})})}function mo({name:e,items:t,actions:r,href:n}){return!t&&n?(0,mt.jsx)("a",{href:n,className:"-mx-3 block rounded-lg px-3 py-2 text-base dark:text-foreground text-foreground hover:bg-gray-50 hover:text-accent",children:e}):(0,mt.jsxs)(_.Disclosure,{as:"div",className:"-mx-3",children:[(0,mt.jsx)(_.DisclosureButton,{className:"group flex w-full items-center justify-between rounded-lg py-2 pl-3 pr-3.5 text-base dark:text-foreground text-foreground hover:bg-gray-50 hover:text-accent",children:e}),(0,mt.jsx)(_.DisclosurePanel,{className:"mt-2 space-mt-2",children:t&&t.map(a=>(0,mt.jsx)(_.DisclosureButton,{as:"a",href:a.href,className:"block rounded-lg py-2 pl-6 pr-3 text-sm dark:text-foreground text-foreground hover:bg-gray-50 hover:text-accent",children:a.name},a.name))})]})}function Dt({isMenuOpen:e,logoLight:t,logoDark:r,menuItems:n,className:a,wide:o,themeControl:i=!1}){return(0,mt.jsxs)("div",{className:s("fixed top-0 left-0 right-0 z-50",a),children:[(0,mt.jsx)(Bt,{isMenuOpen:e,logoLight:t,logoDark:r,menuItems:n,themeControl:i,wide:o}),(0,mt.jsx)(Mt,{isMenuOpen:e,logoLight:t,logoDark:r,menuItems:n})]})}var jt=M(require("react")),$t=M(require("next/image"));var Rt=e=>{let r=new Date;e&&(r=new Date(e));let n=r.getMonth(),a=r.getDate(),o=n+1<10?`0${n+1}`:n+1,i=a<10?`0${a}`:a,l=r.getFullYear();return`${i}/${o}/${l}`};var Lt=require("@radix-ui/react-slot"),zt=require("class-variance-authority"),Ht=M(require("react")),po=(0,zt.cva)("inline-flex items-center justify-center whitespace-nowrap rounded text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{defaultVariants:{size:"default",variant:"default"},variants:{size:{clear:"",default:"h-10 px-4 py-2",icon:"h-10 w-10",lg:"h-11 rounded px-8",sm:"h-9 rounded px-3"},variant:{default:"bg-accent text-accent-foreground hover:bg-background hover:text-accent hover:border-accent hover:border",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",ghost:"hover:bg-card hover:text-accent-foreground",link:"text-primary items-start justify-start underline-offset-4 hover:underline",outline:"border border-border bg-background hover:bg-card hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-accent"}}}),U=Ht.forwardRef(({asChild:e=!1,className:t,size:r,variant:n,...a},o)=>(0,mt.jsx)(e?Lt.Slot:"button",{className:s(po({className:t,size:r,variant:n})),ref:o,...a}));U.displayName="Button";var Ot=(0,zt.cva)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Ke({className:e,variant:t,...r}){return(0,mt.jsx)("div",{className:s(Ot({variant:t}),e),...r})}var Yt=({post:e})=>{let{categories:t,meta:r,populatedAuthors:n,publishedAt:a,title:o}=e;return(0,mt.jsxs)("div",{className:"relative grid pt-24",children:[(0,mt.jsx)("div",{className:"relative z-10 flex flex-col justify-end min-h-[50vh] text-foreground dark:text-foreground pt-24 p-6 lg:p-12",children:(0,mt.jsxs)("div",{className:"container mx-auto",children:[(0,mt.jsx)("h1",{className:"mb-6 text-[clamp(2rem,1.5rem+1.5vw,3.5rem)] font-bold leading-tight ",children:o}),(0,mt.jsxs)("div",{className:"flex flex-col gap-4 md:flex-row md:gap-16 ",children:[n&&n.length>0&&(0,mt.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,mt.jsxs)("p",{className:"text-sm",children:["Author",n.length>1?"s":""]}),(0,mt.jsx)("p",{children:n.map((i,l)=>(0,mt.jsxs)(jt.default.Fragment,{children:[i.name,l<n.length-2&&", ",l===n.length-2&&(n.length>2?", and ":" and ")]},i.id))})]}),a&&(0,mt.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,mt.jsx)("p",{className:"text-sm",children:"Date Published"}),(0,mt.jsx)("time",{dateTime:a,children:Rt(a)})]}),t&&t.length>0&&(0,mt.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,mt.jsx)("p",{className:"text-sm font-medium",children:"Categories"}),(0,mt.jsx)("div",{className:"flex flex-wrap gap-2",children:t.map((i,l)=>typeof i=="object"&&i!==null&&(0,mt.jsx)(Ke,{className:"px-3 py-1 mx-1",children:i.title||"Untitled category"},i.id||l))})]})]})]})}),(0,mt.jsxs)("div",{className:"absolute inset-0 w-full h-full",children:[(0,mt.jsx)($t.default,{className:"object-cover",alt:`Cover image for ${o}`,src:r?.image?.url||"/assets/images/blog/gradient.png",fill:!0,priority:!0,sizes:"100vw"}),(0,mt.jsx)("div",{className:"absolute pointer-events-none left-0 bottom-0 w-full h-1/2 bg-gradient-to-t from-background dark:from-black to-transparent"})]})]})};var Jt="../cortex-reply-light-27IMI3G7.png";var qt="../cortex-reply-dark-XPAJJJYY.png";var Kt="data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAALABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAYEBQf/xAAgEAABBAICAwEAAAAAAAAAAAABAAIDBBEhEjEFBhMi/8QAFgEBAQEAAAAAAAAAAAAAAAAABAMF/8QAHBEAAgICAwAAAAAAAAAAAAAAAQIAIQMEBRFR/9oADAMBAAIRAxEAPwBqrV3PcNFL3s1Blny9eX7uYa7mtLAN95yFp9StCHajCp/YIImeUi4xtHLGdd7V9wkoOvZncagXIS10ZENFzsEA7GUJybBHxb+B0EJIeBOG5//Z";var vr=M(require("next/image"));var Vt=({className:e,content:t,style:r})=>(0,mt.jsx)("div",{className:s("mx-auto my-8 w-full",e),children:(0,mt.jsx)("div",{className:s("border py-3 px-6 flex items-center rounded",{"border-border bg-card":r==="info","border-error bg-error/30":r==="error","border-success bg-success/30":r==="success","border-warning bg-warning/30":r==="warning"}),children:(0,mt.jsx)(z,{content:t,enableGutter:!1,enableProse:!1})})});var Ve=M(require("next/link")),ge=e=>{let{type:t,appearance:r="inline",children:n,className:a,label:o,newTab:i,reference:l,size:c,url:m}=e,p=t==="reference"&&typeof l?.value=="object"&&l.value.slug?`${l?.relationTo!=="pages"?`/${l?.relationTo}`:""}/${l.value.slug}`:m;if(!p)return null;let x=r==="link"?"clear":c,u=i?{rel:"noopener noreferrer",target:"_blank"}:{};return r==="inline"?(0,mt.jsxs)(Ve.default,{className:s(a),href:p||m||"",...u,children:[o&&o,n&&n]}):(0,mt.jsx)(U,{asChild:!0,className:a,size:x,variant:r,children:(0,mt.jsxs)(Ve.default,{className:s(a),href:p||m||"",...u,children:[o&&o,n&&n]})})};function Pe({className:e}){return s("flex items-center min-h-[3.5rem] md:min-h-[3.75rem] w-full rounded-5 px-4 md:px-5 py-2"," bg-transparent text-accent-800 placeholder:text-accent-800 dark:text-body dark:placeholder:text-body"," border border-solid border-accent-900 border-opacity-20 dark:border-opacity-20 dark:border-accent-200"," focus:border-accent-900 focus:ring-0 focus-visible:outline-0 focus-visible:ring-0 focus-visible:ring-offset-0","transition-all duration-300",e)}function go({className:e,...t}){return(0,mt.jsx)("input",{...t,className:Pe({className:e})})}function Ie({icon:e,...t}){return(0,mt.jsxs)("div",{className:"relative w-full",children:[(0,mt.jsx)(go,{...t}),e&&(0,mt.jsx)("span",{className:"absolute right-5 top-1/2 w-[14px] -translate-mt-1/2 text-accent",children:e})]})}function yo({className:e,...t}){return(0,mt.jsx)("textarea",{...t,className:s(Pe({}),"resize-none md:min-h-[130px]",e)})}function Xt({icon:e,...t}){return(0,mt.jsxs)("div",{className:"relative w-full",children:[(0,mt.jsx)(yo,{...t}),e&&(0,mt.jsx)("span",{className:"absolute right-5 top-[18px] w-[14px] text-accent",children:e})]})}var Zt=require("formik"),Wt=require("react-icons/fa6"),K=M(require("yup"));async function Qt(e){let{name:t,email:r,subject:n,message:a}=e,o=process.env.TEAMS_WEBHOOK_URL;if(!o)throw new Error("TEAMS_WEBHOOK_URL is not defined");let i={type:"message",attachments:[{contentType:"application/vnd.microsoft.card.adaptive",content:{$schema:"http://adaptivecards.io/schemas/adaptive-card.json",type:"AdaptiveCard",version:"1.2",body:[{type:"TextBlock",text:"Contact Us Form",wrap:!0,style:"heading",weight:"Bolder"},{type:"ColumnSet",columns:[{type:"Column",width:"stretch",items:[{type:"TextBlock",text:"Name",wrap:!0,weight:"Bolder"},{type:"TextBlock",text:"Email",wrap:!0,weight:"Bolder"},{type:"TextBlock",text:"Subject",wrap:!0,weight:"Bolder"}]},{type:"Column",width:"stretch",items:[{type:"TextBlock",text:`${t}`,wrap:!0},{type:"TextBlock",text:`${r}`,wrap:!0},{type:"TextBlock",text:`${n}`,wrap:!0}]}]},{type:"TextBlock",text:`${a}`,wrap:!0}]}}]};try{let l=await fetch(o,{method:"POST",mode:"no-cors",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});if(!l.ok)throw console.error(l),new Error("Network response was not ok");return{isSuccess:!0,data:!0,message:"Thanks for getting in touch"}}catch(l){return console.error(l),{isSuccess:!1,data:null,message:"Internal Server Error"}}}var Xe=require("sonner"),R={tooShort:"Must be at least ${min} characters",tooLong:"Must be at most ${max} characters",required:"This field is required",email:"Invalid email format"},ho=K.object().shape({name:K.string().min(2,R.tooShort).max(50,R.tooLong).required(R.required),email:K.string().email(R.email).required(R.required),subject:K.string().min(2,R.tooShort).max(50,R.tooLong).required(R.required),message:K.string().min(2,R.tooShort).max(300,R.tooLong).required(R.required)}),Be=s("!pr-[44px] text-foreground"),Fe=s("!border-red-600 border"),Me=s("sr-only");function _t(){return(0,mt.jsx)(Zt.Formik,{initialValues:{name:"",email:"",subject:"",message:""},validationSchema:ho,onSubmit:async(e,{resetForm:t})=>{let r=await Qt(e);r.data===null?Xe.toast.error(r.message):(Xe.toast.success(r.message),t())},children:({errors:e,touched:t,values:r,handleChange:n,handleBlur:a,isSubmitting:o,handleSubmit:i})=>(0,mt.jsxs)("form",{onSubmit:i,className:"grid grid-cols-1 gap-2 pt-2 lg:grid-cols-2",children:[(0,mt.jsxs)("div",{children:[(0,mt.jsx)(Ie,{placeholder:"Your Name",type:"text",name:"name",value:r.name,onChange:n,onBlur:a,disabled:o,icon:(0,mt.jsx)(Wt.FaUser,{className:"text-primary"}),className:s(Be,e.name&&t.name&&Fe)}),e.name&&t.name&&(0,mt.jsx)("p",{title:e.name,"aria-live":"polite",role:"error message",className:Me,children:e.name})]}),(0,mt.jsxs)("div",{children:[(0,mt.jsx)(Ie,{placeholder:"Your Email",type:"email",name:"email",value:r.email,onChange:n,onBlur:a,disabled:o,icon:(0,mt.jsx)(xo,{}),className:s(Be,e.email&&t.email&&Fe)}),e.email&&t.email&&(0,mt.jsx)("p",{title:e.email,"aria-live":"polite",role:"error message",className:Me,children:e.email})]}),(0,mt.jsxs)("div",{className:"lg:col-span-2",children:[(0,mt.jsx)(Ie,{placeholder:"Subject",type:"text",name:"subject",value:r.subject,onChange:n,onBlur:a,disabled:o,className:s(Be,e.subject&&t.subject&&Fe)}),e.subject&&t.subject&&(0,mt.jsx)("p",{title:e.subject,"aria-live":"polite",role:"error message",className:Me,children:e.subject})]}),(0,mt.jsxs)("div",{className:"lg:col-span-2",children:[(0,mt.jsx)(Xt,{placeholder:"Message...",name:"message",value:r.message,onChange:n,onBlur:a,disabled:o,icon:(0,mt.jsx)(bo,{}),className:s(Be,e.message&&t.message&&Fe)}),e.message&&t.message&&(0,mt.jsx)("p",{title:e.message,"aria-live":"polite",role:"error message",className:Me,children:e.message})]}),(0,mt.jsx)("div",{className:"lg:col-span-2 light grid justify-items-center",children:(0,mt.jsx)(U,{type:"submit",className:"outline px-6 rounded-full outline-accent bg-background text-foreground hover:bg-accent hover:text-accent-foreground",disabled:o,children:"Send"})})]})})}function xo(){return(0,mt.jsx)("svg",{width:16,height:15,viewBox:"0 0 16 15",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",className:"text-primary",children:(0,mt.jsx)("path",{d:"M14.9727 1.76172L13.2227 13.1094C13.1953 13.3828 13.0312 13.6289 12.7852 13.7656C12.6484 13.8203 12.5117 13.875 12.3477 13.875C12.2383 13.875 12.1289 13.8477 12.0195 13.793L8.68359 12.3984L7.28906 14.4766C7.17969 14.668 6.98828 14.75 6.79688 14.75C6.49609 14.75 6.25 14.5039 6.25 14.2031V11.5781C6.25 11.3594 6.30469 11.168 6.41406 11.0312L12.375 3.375L4.33594 10.6211L1.51953 9.44531C1.21875 9.30859 1 9.03516 1 8.67969C0.972656 8.29688 1.13672 8.02344 1.4375 7.85938L13.6875 0.886719C13.9609 0.722656 14.3438 0.722656 14.6172 0.914062C14.8906 1.10547 15.0273 1.43359 14.9727 1.76172Z"})})}function bo(){return(0,mt.jsx)("svg",{width:"14",height:"11",viewBox:"0 0 14 11",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",className:"text-primary",children:(0,mt.jsx)("path",{d:"M12.6875 0.5C13.3984 0.5 14 1.10156 14 1.8125C14 2.25 13.7812 2.63281 13.4531 2.87891L7.51953 7.33594C7.19141 7.58203 6.78125 7.58203 6.45312 7.33594L0.519531 2.87891C0.191406 2.63281 0 2.25 0 1.8125C0 1.10156 0.574219 0.5 1.3125 0.5H12.6875ZM5.93359 8.04688C6.5625 8.51172 7.41016 8.51172 8.03906 8.04688L14 3.5625V9.25C14 10.2344 13.207 11 12.25 11H1.75C0.765625 11 0 10.2344 0 9.25V3.5625L5.93359 8.04688Z"})})}var tr=({links:e,richText:t})=>{let[r,n]=(0,ee.useState)(!1),a="accent",o=()=>n(!0),i=()=>n(!1),l=c=>{c.target===c.currentTarget&&i()};return(0,mt.jsxs)("div",{className:s("relative isolate overflow-hidden",a==="accent"?"bg-accent":"bg-black"),children:[(0,mt.jsx)("div",{className:"px-6 py-24 sm:px-6 sm:py-32 lg:px-8",children:(0,mt.jsxs)("div",{className:"mx-auto max-w-2xl text-center prose",children:[t&&(0,mt.jsx)(z,{className:"mb-0 prose-headings:text-white prose-h2:text-white prose-p:text-white text-white",content:t,enableGutter:!1}),(0,mt.jsx)("div",{className:"mt-10 flex items-center justify-center gap-x-6",children:(0,mt.jsx)("div",{className:"flex flex-col gap-8 text-white",children:(e||[]).map(({link:c},m)=>c?.url==="/contact"?(0,mt.jsx)("div",{onClick:o,className:s("rounded-full px-3.5 py-2.5 border border-accent bg-black text-white no-underline cursor-pointer",a==="accent"?"border-white bg-accent":"border-accent bg-black"),children:c.label},m):(0,mt.jsx)(ge,{size:"lg",className:s("rounded-full px-3.5 py-2.5 border border-accent bg-black text-white no-underline cursor-pointer",a==="accent"?"border-white bg-accent":"border-accent bg-black"),...c},m))})})]})}),r&&(0,mt.jsx)("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black bg-opacity-50",onClick:l,children:(0,mt.jsxs)("div",{className:"bg-white p-6 pt-10 rounded-lg shadow-lg w-full max-w-lg light relative",children:[(0,mt.jsx)("button",{className:"absolute top-4 right-4 text-gray-500 hover:text-gray-700",onClick:i,children:"\u2715"}),(0,mt.jsx)(_t,{})," "]})})]})};var De=require("prism-react-renderer");function ar({code:e}){let[t,r]=(0,ee.useState)("Copy");function n(){t==="Copy"&&(r(()=>"Copied!"),setTimeout(()=>{r(()=>"Copy")},1e3))}return(0,mt.jsx)("div",{className:"flex justify-end align-middle",children:(0,mt.jsxs)(U,{className:"flex gap-1",variant:"secondary",onClick:async()=>{await navigator.clipboard.writeText(e),n()},children:[(0,mt.jsx)("p",{children:t}),(0,mt.jsx)("div",{className:"w-6 h-6",children:(0,mt.jsx)(Ae.ClipboardCopy,{})})]})})}var nr=({code:e,language:t=""})=>e?(0,mt.jsx)(De.Highlight,{code:e,language:t,theme:De.themes.vsDark,children:({getLineProps:r,getTokenProps:n,tokens:a})=>(0,mt.jsxs)("pre",{className:"bg-black p-4 border text-xs border-border rounded overflow-x-auto",children:[a.map((o,i)=>(0,mt.jsxs)("div",{...r({className:"table-row",line:o}),children:[(0,mt.jsx)("span",{className:"table-cell select-none text-right text-white/25",children:i+1}),(0,mt.jsx)("span",{className:"table-cell pl-4",children:o.map((l,c)=>(0,mt.jsx)("span",{...n({token:l})},c))})]},i)),(0,mt.jsx)(ar,{code:e})]})}):null;var ir=({className:e,code:t,language:r})=>(0,mt.jsx)("div",{className:[e,"not-prose"].filter(Boolean).join(" "),children:(0,mt.jsx)(nr,{code:t,language:r})});var sr=M(require("next/image")),vo={"3xl":1920,"2xl":1536,xl:1280,lg:1024,md:768,sm:640},lr="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABchJREFUWEdtlwtTG0kMhHtGM7N+AAdcDsjj///EBLzenbtuadbLJaZUTlHB+tRqSesETB3IABqQG1KbUFqDlQorBSmboqeEBcC1d8zrCixXYGZcgMsFmH8B+AngHdurAmXKOE8nHOoBrU6opcGswPi5KSP9CcBaQ9kACJH/ALAA1xm4zMD8AczvQCcAQeJVAZsy7nYApTSUzwCHUKACeUJi9TsFci7AHmDtuHYqQIC9AgQYKnSwNAig4NyOOwXq/xU47gDYggarjIpsRSEA3Fqw7AGkwgW4fgALAdiC2btKgNZwbgdMbEFpqFR2UyCR8xwAhf8bUHIGk1ckMyB5C1YkeWAdAPQBAeiD6wVYPoD1HUgXwFagZAGc6oSpTmilopoD5GzISQD3odcNIFca0BUQQM5YA2DpHV0AYURBDIAL0C+ugC0C4GedSsVUmwC8/4w8TPiwU6AClJ5RWL1PgQNkrABWdKB3YF3cBwRY5lsI4ApkKpCQi+FIgFJU/TDgDuAxAAwonJuKpGD1rkCXCR1ALyrAUSSEQAhwBdYZ6DPAgSUA2c1wKIZmRcHxMzMYR9DH8NlbkAwwApSAcABwBwTAbb6owAr0AFiZPILVEyCtMmK2jCkTwFDNUNj7nJETQx744gCUmgkZVGJUHyakEZE4W91jtGFA9KsD8Z3JFYDlhGYZLWcllwJMnplcPy+csFAgAAaIDOgeuAGoB96GLZg4kmtfMjnr6ig5oSoySsoy3ya/FMivXZWxwr0KIf9nACbfqcBEgmBSAtAlIT83R+70IWpyACamIjf5E1Iqb9ECVmnoI/FvAIRk8s2J0Y5IquQDgB+5wpScw5AUTC75VTmTs+72NUzoCvQIaAXv5Q8PDAZKLD+MxLv3RFE7KlsQChgBIlKiCv5ByaZv3gJZNm8AnVMhAN+EjrtTYQMICJpu6/0aiQnhClANlz+Bw0cIWa8ev0sBrtrhAyaXEnrfGfATQJiRKih5vKeOHNXXPFrgyamAADh0Q4F2/sESojomDS9o9k0b0H83xjB8qL+JNoTjN+enjpaBpingRh4e8MSugudM030A8FeqMI6PFIgNyPehkpZWGFEAARIQdH5LcAAqIACHkAJqg4OoBccHAuz76wr4BbzFOEa8iBuAZB8AtJHLP2VgMgJw/EIBowo7HxCAH3V6dAXEE/vZ5aZIA8BP8RKhm7Cp8BnAMnAQADdgQDA520AVIpScP+enHz0Gwp25h4i2dPg5FkDXrbsdJikQwXuWgaM5gEMk1AgH4DKKFjDf3bMD+FjEeIxLlRKYnBk2BbquvSDCAQ4gwZiMAAmH4gBTyRtEsYxi7gP6QSrc//39BrDNqG8rtYTmC4BV1SfMhOhaumFCT87zy4pPhQBZEK1kQVRjJBBi7AOlePgyAPYjwlvtagx9e/dnQraAyS894TIkkAIEYMKEc8k4EqJ68lZ5jjNqcQC2QteQOf7659umwBgPybNtK4dg9WvnMyFwXYGP7uEO1lwJgAnPNeMYMVXbIIYKFioI4PGFt+BWPVfmWJdjW2lTUnLGCswECAgaUy86iwA1464ajo0QhgMBFGyBoZahANsMpMfXr1JA1SN29m5lqgXj+UPV85uRA7yv/KYUO4Tk7Hc1AZwbIRzg0AyNj2UlAMwfSLSMnl7fdAbcxHuA27YaAMvaQ4GOjwX4RTUGAG8Ge14N963g1AynqUiFqRX9noasxT4b8entNRQYyamk/3tYcHsO7R3XJRRYOn4tw4iUnwBM5gDnySGOreAwAGo8F9IDHEcq8Pz2Kg/oXCpuIL6tOPD8LsDn0ABYQoGFRowlsAEUPPDrGAGowAbgKsgDMmE8mDy/vXQ9IAwI7u4wta+gAdAdgB64Ah9SgD4IgGKhwACoAjgNgFDhtxY8f33ZTMjqdTAiHMBPrn8ZWkEfzFdX4Oc1AHg3+ADbvN8PU8WdFKg4Tt6CQy2+D4YHaMT/JP4XzbAq98cPDIUAAAAASUVORK5CYII=",cr=e=>{let{alt:t,fill:r,imgClassName:n,priority:a,resource:o,size:i,src:l,loading:c}=e,m,p,x=t,u=l||"";if(!u&&o&&typeof o=="object"){let{alt:C,filename:N,height:T,url:B,width:$}=o;if(T&&T>500){let L=500/T;m=$*L,p=T*L}else m=$,p=T;x=C||"",u=B||lr}let h=c||"lazy",A=i||Object.entries(vo).map(([,C])=>`(max-width: ${C}px) ${C*2}w`).join(", ");return(0,mt.jsx)("picture",{children:(0,mt.jsx)(sr.default,{alt:x||"",className:s(n),fill:r,height:r?void 0:p,placeholder:"blur",blurDataURL:lr,priority:h!=="lazy"&&a,quality:100,loading:h,sizes:A,src:u,width:r?void 0:m})})};var dr=e=>{let{onClick:t,resource:r,videoClassName:n}=e,a=(0,ee.useRef)(null);if((0,ee.useEffect)(()=>{let{current:o}=a;o&&o.addEventListener("suspend",()=>{})},[]),r&&typeof r=="object"){let{filename:o}=r;return(0,mt.jsx)("video",{autoPlay:!0,className:s(n),controls:!1,loop:!0,muted:!0,onClick:t,playsInline:!0,ref:a,children:(0,mt.jsx)("source",{src:r.url||""})})}return null};var ze=e=>{let{className:t,htmlElement:r="div",resource:n}=e,a=typeof n=="object"&&n?.mimeType?.includes("video");return(0,mt.jsx)(r||ee.Fragment,{...r!==null?{className:t}:{},children:a?(0,mt.jsx)(dr,{...e}):(0,mt.jsx)(cr,{...e})})};var pr=e=>{let{className:t,enableGutter:r=!0,imgClassName:n,media:a,staticImage:o}=e;return(0,mt.jsx)("div",{className:s("h-full ",{container:r},t),children:(0,mt.jsx)(ze,{imgClassName:s("rounded-[0.8rem]",n),className:"flex justify-center",resource:a,src:o})})};var ur=e=>{let{className:t,enableGutter:r=!0,imgClassName:n,media:a,staticImage:o}=e;return(0,mt.jsx)("div",{className:s("",{container:r},t),children:(0,mt.jsx)(ze,{imgClassName:s("rounded-[0.8rem]",n),resource:a,src:o})})};var gr=M(require("next/image"));function fr(e){return e&&typeof e=="object"&&"type"in e&&"iconName"in e}function tt({image:e,icon:t,title:r,subtitle:n,content:a,statistic:o,settings:i,link:l,className:c}){let m={solid:"bg-accent",outline:"bg-background border border-accent",gradient:"bg-gradient-to-br from-[#A42368] to-[#4A1030]",radial:"bg-gradient-to-br from-[#4A1030] to-[#2D0A1D] relative overflow-hidden",light:"bg-background"},p={"1/4":"w-1/4","1/3":"w-1/3","1/2":"w-1/2",full:"w-full",auto:"w-full"};return(0,mt.jsxs)("a",{href:l?.url||"#",className:s("min-w-56 max-w-xl h-full flex flex-col group bg-background",e?"p-0":"p-6 md:p-8",i&&!e&&m[i?.card==="default"?"solid":i?.card],e&&"bg-foreground",i&&i?.card==="outline"?"text-gray-900":"text-white",p[i?.width??"auto"],"intersect-once intersect:animate-flip-up opacity-0 intersect:opacity-100 intersect:animate-duration-500",i&&`intersect:animate-delay-${i.order||1}00`,c),children:[e&&(0,mt.jsx)("div",{className:"relative aspect-[16/9] w-full",children:(0,mt.jsx)(gr.default,{src:e.url||"/placeholder.svg",alt:e.alt||"card header image",fill:!0,style:{objectFit:"cover"},priority:!0})}),(0,mt.jsxs)("div",{className:s(e?"p-6 md:p-8":"p-0","flex flex-col flex-grow"),children:[(0,mt.jsxs)("div",{className:"flex flex-col flex-grow",children:[n&&(0,mt.jsx)("div",{className:"text-primary uppercase text-sm font-light mb-4",children:n}),(0,mt.jsx)("div",{className:"flex items-start gap-4 mb-4",children:(0,mt.jsx)(ko,{icon:{type:t?.type||"fa-light",iconName:t?.icon||"no-icon-error"},heading:r??"",variant:i?.card==="default"?"solid":i?.card??"solid",iconSize:i?.iconSize||"large"})}),a&&typeof a=="object"&&(0,mt.jsx)(z,{enableGutter:!1,content:a,enableProse:!1,className:s("prose-sm prose-p:text-lg prose-headings:text-xl","space-mt-3",i?.card==="outline"||i?.card==="light"?"prose-headings:text-foreground prose-p:text-foreground prose-a:text-foreground":"prose-headings:text-white prose-p:text-gray-100 prose-a:text-gray-100",e&&"prose-headings:text-background prose-p:text-background")}),a&&typeof a=="string"&&(0,mt.jsx)("div",{className:s("prose-sm prose-p:text-lg prose-headings:text-xl","space-mt-3",i?.card==="outline"||i?.card==="light"?"prose text-foreground":"prose text-gray-100",e&&"prose text-background"),children:a})]}),l&&l.url&&(0,mt.jsx)("div",{className:"mt-6",children:(0,mt.jsx)("span",{className:"text-accent font-semibold uppercase text-sm block hover:text-accent/80 transition-colors",children:l?.label||"Find out more"})})]})]})}var ko=({icon:e,heading:t,variant:r,iconSize:n,subtitle:a})=>e&&n==="small"&&e.iconName!="no-icon-error"?(0,mt.jsxs)("div",{className:"flex items-start justify-between w-full mb-2",children:[(0,mt.jsx)("div",{className:s(r==="outline"||r==="light"?"text-primary":"text-white",n==="small"?"text-2xl":"text-3xl"),children:t}),fr(e)&&(0,mt.jsx)("div",{className:s("rounded-full p-0 transform group-hover:scale-110 transition-transform duration-400",r==="outline"||r==="light"?"text-primary":"text-white",n==="small"?"-ee-2 ml-1 mt-1":""),children:(0,mt.jsx)(se,{type:e.type,iconName:e.iconName,size:"2x"})})]}):e&&e.iconName!="no-icon-error"?(0,mt.jsxs)("div",{className:"flex flex-col gap-4",children:[fr(e)&&(0,mt.jsx)("div",{className:s("h-12 w-12 mb-3 transform group-hover:scale-110 transition-transform duration-400",r==="outline"||r==="light"?"text-accent":""),children:(0,mt.jsx)(se,{type:e.type,iconName:e.iconName,size:"4x"})}),(0,mt.jsx)("h3",{className:s("font-normal",r==="outline"||r==="light"?"text-2xl text-primary":"text-3xl text-white"),children:t})]}):(0,mt.jsx)("div",{className:"flex items-center gap-4 mb-2",children:(0,mt.jsx)("div",{className:s("font-regular",r==="outline"||r==="light"?"text-2xl text-primary":"text-3xl"),children:t})});var X=M(require("react"));var oe=X.forwardRef(({className:e,...t},r)=>(0,mt.jsx)("div",{ref:r,className:s("rounded-xl border bg-card text-card-foreground shadow",e),...t}));oe.displayName="Card";var ye=X.forwardRef(({className:e,...t},r)=>(0,mt.jsx)("div",{ref:r,className:s("flex flex-col space-mt-1.5 p-6",e),...t}));ye.displayName="CardHeader";var he=X.forwardRef(({className:e,...t},r)=>(0,mt.jsx)("div",{ref:r,className:s("font-semibold leading-none tracking-tight",e),...t}));he.displayName="CardTitle";var wo=X.forwardRef(({className:e,...t},r)=>(0,mt.jsx)("div",{ref:r,className:s("text-sm text-muted-foreground",e),...t}));wo.displayName="CardDescription";var ae=X.forwardRef(({className:e,...t},r)=>(0,mt.jsx)("div",{ref:r,className:s("p-6 pt-0",e),...t}));ae.displayName="CardContent";var So=X.forwardRef(({className:e,...t},r)=>(0,mt.jsx)("div",{ref:r,className:s("flex items-center p-6 pt-0",e),...t}));So.displayName="CardFooter";var yr=({title:e,description:t,features:r,id:n,nested:a=!1})=>(0,mt.jsxs)("section",{className:s(a?"w-full":"",""),children:[(0,mt.jsxs)("div",{className:"prose prose:max-w-none",children:[e&&(0,mt.jsx)("h2",{className:"mb-6 mt-0 text-primary",id:n||"",children:e}),t&&typeof t=="string"&&(0,mt.jsx)("p",{className:"mb-5 text-foreground",children:t}),t&&typeof t=="object"&&(0,mt.jsx)("div",{className:"mb-5 text-foreground",children:(0,mt.jsx)(z,{content:t,enableGutter:!1})})]}),(0,mt.jsx)("div",{className:`grid gap-6 mt-6 md:grid-cols-${r?r.length>2?2:r.length:1} lg:grid-cols-${r?r.length>3?3:r.length:1}`,children:r&&r.map((o,i)=>{let l=()=>{if(o.icon&&"type"in o.icon&&o.icon.type!=="none")return{type:o.icon.type,icon:o.icon.icon}};return(0,mt.jsx)(tt,{title:o.title||"",content:o.content||void 0,statistic:o.statistic||void 0,settings:{...o.settings,width:"auto",order:i},link:o.link?{...o.link,label:"Learn more"}:void 0,icon:l()??{type:"none",icon:null}},i)})})]});var He=M(require("react"));function xe({nodes:e}){return(0,mt.jsx)(He.Fragment,{children:e?.map((t,r)=>{if(t==null)return null;if(t.type==="text"&&t.text){let o=(0,mt.jsx)(He.default.Fragment,{children:t.text},r);return t.format&1&&(o=(0,mt.jsx)("strong",{children:o},r)),t.format&2&&(o=(0,mt.jsx)("em",{children:o},r)),t.format&4&&(o=(0,mt.jsx)("span",{style:{textDecoration:"line-through"},children:o},r)),t.format&8&&(o=(0,mt.jsx)("span",{style:{textDecoration:"underline"},children:o},r)),t.format&16&&(o=(0,mt.jsx)("code",{children:t.text},r)),t.format&32&&(o=(0,mt.jsx)("sub",{children:o},r)),t.format&64&&(o=(0,mt.jsx)("sup",{children:o},r)),o}if(t.type==="table")return(0,mt.jsx)("table",{children:(0,mt.jsx)("tbody",{children:t.children.map((o,i)=>(0,mt.jsx)("tr",{children:o.children.map((l,c)=>(0,mt.jsx)("td",{children:xe({nodes:l.children})},c))},i))})},r);let n=o=>{if(o.children==null)return null;if(o?.type==="list"&&o?.listType==="check")for(let i of o.children)"checked"in i&&(i?.checked||(i.checked=!1));return xe({nodes:o.children})},a="children"in t?n(t):"";if(t.type==="block"){let o=t.fields,i=o?.blockType;if(!o||!i)return null;switch(i){case"cta":return(0,mt.jsx)(tr,{...o},r);case"mediaBlock":return(0,mt.jsx)(pr,{className:"col-start-1 col-span-3",imgClassName:"m-0",...o,captionClassName:"mx-auto max-w-[48rem]",enableGutter:!1,disableInnerContainer:!0},r);case"imageBlock":return(0,mt.jsx)(ur,{className:"col-start-1 col-span-3",imgClassName:"m-0",...o,captionClassName:"mx-auto max-w-[48rem]",enableGutter:!1,disableInnerContainer:!0},r);case"banner":return(0,mt.jsx)(Vt,{className:"col-start-2 mb-4",...o},r);case"code":return(0,mt.jsx)(ir,{className:"col-start-2",...o},r);case"features":return(0,mt.jsx)(yr,{...o,nested:!0},r);case"reusableContentBlock":xe({nodes:o.reusableContent.layout});default:return null}}else switch(t.type){case"linebreak":return(0,mt.jsx)("br",{className:"col-start-2"},r);case"paragraph":return(0,mt.jsx)("p",{className:"col-start-2",children:a},r);case"heading":{let o=t?.tag;return(0,mt.jsx)(o,{className:"col-start-2",id:t?.id||"",children:a},r)}case"list":{let o=t?.tag;return(0,mt.jsx)(o,{className:"list col-start-2",children:a},r)}case"listitem":return t?.checked!=null?(0,mt.jsx)("li",{"aria-checked":t.checked?"true":"false",className:` ${t.checked,""}`,role:"checkbox",tabIndex:-1,value:t?.value,children:a},r):(0,mt.jsx)("li",{value:t?.value,children:a},r);case"quote":return(0,mt.jsx)("blockquote",{className:"col-start-2",children:a},r);case"link":{let o=t.fields;return(0,mt.jsx)(ge,{newTab:!!o?.newTab,reference:o.doc,type:o.linkType==="internal"?"reference":"custom",url:o.url,children:a},r)}case"autolink":{let o=t.fields;return(0,mt.jsx)(ge,{newTab:!!o?.newTab,reference:o.doc,type:o.linkType==="internal"?"reference":"custom",url:o.url,children:a},r)}default:return null}})})}var z=({className:e,content:t,enableGutter:r=!0,enableProse:n=!0})=>t?(0,mt.jsx)("div",{className:s({"container ":r,"max-w-none":!r,"mx-auto prose":n},e),children:t&&!Array.isArray(t)&&typeof t=="object"&&"root"in t&&xe({nodes:t?.root?.children})}):null;var kr=require("next/navigation");var ii=s("transition-colors duration-400 hover:text-primary ease-in-out");function br({title:e,links:t}){let r=(0,kr.useSearchParams)(),n=(0,kr.usePathname)(),{replace:a}=(0,kr.useRouter)();function o(i){let l=new URLSearchParams(r);i?l.set("category",i):l.delete("category"),a(`${n}?${l.toString()}`)}return(0,mt.jsxs)(oe,{children:[(0,mt.jsx)(ye,{children:(0,mt.jsx)(he,{className:"text-accent",children:e&&e})}),(0,mt.jsx)(ae,{children:t&&t.length>0&&(0,mt.jsx)("nav",{"aria-label":"footer links navigation",children:(0,mt.jsx)("ul",{className:"grid gap-2.5 ",children:t.map((i,l)=>(0,mt.jsxs)("li",{className:"flex items-center text-sm text-primary hover:text-accent dark:text-foreground first:pt-0 hover:cursor-pointer",onClick:c=>{c.preventDefault(),o(i.href)},children:[i.label,(0,mt.jsx)(Ae.ExternalLink,{className:"ml-1 h-3 w-3"})]},l))})})})]})}var wr=M(require("next/link"));function Co({image:e,name:t,about:r,socialLinks:n}){return!e||!e.src||e.src.length<3||!t?null:(0,mt.jsx)("div",{className:"mt-1 z-10 px-0 pt-0 lg:px-10",children:(0,mt.jsx)(oe,{children:(0,mt.jsxs)(ae,{className:"flex flex-col items-center",children:[e&&e.src&&(0,mt.jsx)(vr.default,{src:e.src,alt:e.alt||"",width:127,height:127,placeholder:"blur",blurDataURL:Kt,className:"mx-auto mt-6 rounded-full object-cover"}),(0,mt.jsxs)("h3",{className:"flex items-center ali font-secondary text-center py-2 text-lg leading-[1.25] text-accent md:text-xl",children:[t,n&&n.length>0&&(0,mt.jsx)("nav",{"aria-label":"social links",children:(0,mt.jsx)("ul",{className:"inline-flex items-center divide-x divide-accent/50 text-accent dark:divide-accent/50 dark:text-white",children:n.map((a,o)=>a.href&&(0,mt.jsx)("li",{children:(0,mt.jsx)(Ce,{href:a.href,openNewTab:!0,className:"block px-4 text-base/[1.75] transition-transform duration-350 hover:-translate-mt-1 hover:text-accents",children:(0,mt.jsx)("span",{children:a.icon})})},o))})})]}),(0,mt.jsx)("p",{children:r})]})})})}function Cr({page:e,categoryList:t,edit:r=!1,path:n="/admin/collections/posts/"}){if(!e)return(0,kr.notFound)();let{meta:a,populatedAuthors:o,authors:i,categories:l,content:c,title:m}=e,p={image:{src:a&&a.image&&a.image.url||void 0,alt:a&&a.image&&a.image.alt||void 0},authorName:o?.[0]?.name||"",category:l,commentCount:0,title:m,description:a?.description||""},x=i?.map(u=>{let h=u.profilePicture&&u.profilePicture.sizes?.square?.url||u.profilePicture&&u.profilePicture.sizes?.thumbnail?.url||"";return console.log("val:",h),{name:u.name||"",about:u.about||"",image:{src:h,alt:u.name||"blog author"},socialLinks:[{icon:(0,mt.jsx)(Wt.FaLinkedin,{}),href:u.linkedIn??""}]}});return console.log(x),(0,mt.jsx)(Nt,{children:(0,mt.jsxs)("div",{className:"grid gap-30px lg:grid-cols-[1fr_410px]",children:[(0,mt.jsx)("div",{children:(0,mt.jsxs)("div",{className:"[&_p+mt]:mt-4",children:[(0,mt.jsx)("div",{className:"my-4 h-px bg-body/30 lg:my-5"}),(0,mt.jsx)(z,{content:c,enableGutter:!1,className:"prose-invert"})]})}),(0,mt.jsxs)("div",{className:"grid gap-30px self-baseline max-md:mx-auto max-md:max-w-[410px] lg:gap-10",children:[r&&(0,mt.jsx)("div",{className:"mt-4 lg:-mt-10 z-10 px-0 pt-0 lg:px-10",children:(0,mt.jsxs)(oe,{children:[(0,mt.jsx)(ye,{children:(0,mt.jsx)(he,{className:"text-accent",children:"Content Actions"})}),(0,mt.jsxs)(ae,{children:[(0,mt.jsx)("p",{className:"mb-4 text-sm text-muted-foreground",children:"Edit this page in the CMS"}),(0,mt.jsx)(wr.default,{href:`${n}${e.id}`,children:(0,mt.jsx)(U,{variant:"outline",className:"w-full text-accent hover:text-foreground",children:"Edit"})})]})]})}),x&&x.map((u,h)=>(0,mt.jsx)(Co,{...u},h)),t&&t.links&&(0,mt.jsx)("div",{className:"mt-4 px-0 pt-0 lg:px-10",children:(0,mt.jsx)(br,{links:t.links,title:t.title})})]})]})})}function rt({...e}){return(0,mt.jsxs)("div",{children:[(0,mt.jsx)(Dt,{isMenuOpen:!0,logoLight:Jt,logoDark:qt}),(0,mt.jsx)(Yt,{...e.hero}),(0,mt.jsx)(Cr,{className:"!pb-0",...e.blog})]})}var Ao={title:"Example Pages/Blog",component:rt,tags:["autodocs"],parameters:{nextjs:{appDirectory:!0},docs:{description:{component:"Example Blog page."}}}};var be={args:{hero:{type:"postHero",post:{id:"1",title:"Sample Post Title",categories:[{id:"1",title:"Category 1"},{id:"2",title:"Category 2"}],meta:{image:{url:"stock1.jpg"}},populatedAuthors:[{id:"1",name:"Author 1",avatar:{id:"1",url:"/path/to/avatar1.jpg",alt:"Author 1 Avatar"}},{id:"2",name:"Author 2",avatar:{id:"2",url:"/path/to/avatar2.jpg",alt:"Author 2 Avatar"}}],publishedAt:"2023-10-01T12:00:00Z",content:"Sample post content..."}},blog:{edit:!0,categoryList:{title:"Categories",links:[{label:"Category 1",href:1},{label:"Category 2",href:2},{label:"Category 3",href:3}]},page:{id:2,title:"Test Post 2",content:{root:{type:"root",format:"",indent:0,version:1,children:[{type:"paragraph",format:"",indent:0,version:1,children:[{mode:"normal",text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus lacinia odio vitae vestibulum vestibulum. Cras vehicula, libero a pharetra dictum, urna lectus porttitor lacus, at dapibus justo quam vel metus. Pellentesque habitant morbi tristique senectus mt netus mt malesuada fames ac turpis egestas. Sed non velit nec arcu volutpat dignissim in a lorem.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[{mode:"normal",text:"Proin sagittis sem mt elit fringilla, nec fringilla eros maximus. Nulla facilisi. mt sit amet facilisis lectus. Fusce ornare metus at ante tristique, nec elementum eros fermentum. Integer volutpat magna sed justo tincidunt, sit amet aliquam arcu pellentesque. Phasellus imperdiet mi vitae ligula pharetra, a dignissim velit vehicula.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[{mode:"normal",text:"Suspendisse potenti. Donec malesuada arcu at velit laoreet convallis. Sed at eros vel lacus varius varius nec id metus. Praesent faucibus, orci a varius dapibus, lorem libero convallis est, mt consequat libero magna sit amet risus. Maecenas tincidunt erat mt felis sodales, nec malesuada sem tincidunt. Duis sed nisl euismod, ullamcorper augue at, rutrum felis.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[{mode:"normal",text:"Aenean ut ligula ac libero vehicula luctus. Integer ultricies nisl id mi dictum, eget tincidunt augue interdum. Sed eu malesuada erat. Nam fringilla lectus id dolor gravida lacinia. Aliquam erat volutpat. Vestibulum nec ipsum vitae elit dapibus suscipit vel at ipsum.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr"}},relatedPosts:[],categories:[{id:1,title:"Test Category 1",slug:"test-category-1",updatedAt:"2025-01-06T20:16:54.416Z",createdAt:"2025-01-06T20:16:54.416Z",_status:"published"}],meta:{title:"Test Post 1",image:null,description:null},publishedAt:"2025-01-06T20:17:25.595Z",authors:[{id:1,name:"Rob",jobRole:null,profilePicture:null,workHistory:[],certifications:[],areasOfExpertise:[],dateOfBirth:null,joinDate:null,role:"admin",sub:null,updatedAt:"2025-01-06T20:16:54.416Z",createdAt:"2025-01-06T20:16:54.416Z",enableAPIKey:null,apiKey:null,email:"rob@sdsdd.com",loginAttempts:0},{id:2,name:"Dave",jobRole:null,profilePicture:null,workHistory:[],certifications:[],areasOfExpertise:[],dateOfBirth:null,joinDate:null,role:"admin",sub:null,updatedAt:"2025-01-06T20:16:54.416Z",createdAt:"2025-01-06T20:16:54.416Z",enableAPIKey:null,apiKey:null,email:"rob@sdsdd.com",loginAttempts:0}],populatedAuthors:[{id:1,name:"Rob Ellison"}],publishedToWebsite:!1,slug:"test-post-2",slugLock:!0,updatedAt:"2025-01-06T20:17:31.465Z",createdAt:"2025-01-06T20:17:27.818Z",_status:"published"}}}},No={args:{...be.args,hero:{...be.args.hero,post:{...be.args.hero.post,title:"Pellentesque habitant morbi tristique senectus mt netus mt malesuada fames ac turpis egestas."}}}},To={args:{...be.args,blog:{edit:!0,categoryList:{title:"Categories",links:[{label:"Category 1",href:1},{label:"Category 2",href:2},{label:"Category 3",href:3}]},page:{id:3,title:"FinOps-enhanced GenAI: Inform, Optimise, Operate, Innovate",content:{root:{type:"root",format:"",indent:0,version:1,children:[{tag:"h4",type:"heading",format:"start",indent:0,version:1,children:[{mode:"normal",text:"The Next Wave of IT Innovation: Generative AI",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"quote",format:"start",indent:0,version:1,children:[{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"\u201CGenerative AI could expand to 10-12% of total information-technology hardware, software, services, advertising, and gaming expenditures by 2032 from less than 1% today, according to our analysis. Training of AI platforms (creating a machine-learning model using large datasets) will be key, driven initially by spending on servers and storage and eventually by cloud-related infrastructure\u201D Bloomberg, 8th March 2024",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Over the past six months, we have seen an increase in boardroom discussions about AI solutions. This is a clear indication that leadership recognises AI's transformative potential to enhance business operations and deliver significant value. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"However, as exciting as these possibilities are, we must not overlook a critical factor: ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"cost",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:".",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:"ltr",textStyle:"",textFormat:0},{tag:"h4",type:"heading",format:"",indent:0,version:1,children:[{mode:"normal",text:"Drive cost awareness in generative AI with FinOps",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"From a cost perspective, generative AI tools and applications follow the same principles as every other digital product implemented in the cloud.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Organisations will use their existing FinOps processes and tools to:",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Ingest and normalise cost and usage data",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Allocate and share the cost of cloud services",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Manage spend anomalies",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:4,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Define a budget for cloud spend and forecast digital product costs",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"When approaching generative AI, the main cost that a FinOps team should focus on is the one the organisation will be charged for model inference and customisation.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{mode:"normal",text:"This expense is caused by the consumption of computing resources every time an LLM is given an input (ee prompt) in order to produce an output (ee completion).",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Generative AI models break down text data into units called tokens for processing. The way text data is converted into tokens depends on the tokenizer used. A token can be characters, words, ee phrases. Generative AI usually charges by every 1000 tokens of input (prompt) and output (response): i.e.:",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"An application developer makes the following API calls to Amazon Bedrock in the US West (Oregon) Region: a request to Anthropic\u2019s Claude model to summarise an input of 11K tokens of input text to an output of 4K tokens. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Total cost incurred = 11K tokens/1000 x $0.008 + 4K tokens/1000 x $0.024 = $0.088 + $0.096 = ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"$0.184",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:"ltr",textStyle:"",textFormat:0},{tag:"h4",type:"heading",format:"",indent:0,version:1,children:[{mode:"normal",text:"Cost-Effective GenAI: Design for Efficiency",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"The cost optimisation techniques supported by FinOps translate perfectly to the realm of generative AI. Just like any cloud-based service, GenAI tools incur ongoing expenses that require careful management. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"FinOps tenets like rightsizing resources, leveraging automation for cost control, and negotiating committed-use discounts with cloud providers can effectively be applied to GenAI. However, since inference is a major cost driver for GenAI products, we must architect solutions accurately. This ensures prompts minimise token counts while maintaining desired response accuracy, and uses the appropriate foundational model for maximum value.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"To illustrate a poorly architected solution's cost impact, consider 200 large text documents (around 10,000 tokens each) containing detailed information on a specific topic. For each document, we want to distil the information into a concise summary and generate additional content based on that summary.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Lazy option",type:"text",style:"",detail:0,format:1,version:1},{type:"linebreak",version:1},{mode:"normal",text:"mt decide to utilise the Claude 3 Sonnet model from AWS Bedrock, which would perform the task and produce 1000 tokens output",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Total cost = Claude (0.003 x 10 + 0.015 x 1) = 0.045$ for a single inference x 200 = ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"9$ for 200 summaries",type:"text",style:"",detail:0,format:1,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Well-architected option",type:"text",style:"",detail:0,format:1,version:1},{type:"linebreak",version:1},{mode:"normal",text:"mt decide to implement a model chaining pattern, to separate the summarisation and the content creation stages. A simple Mistral 8*7B would create a 500 output tokens per document, feeding into Claude 3 Sonnet, to produce the same 1000 tokens output",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Total cost = Mistral (0.00045 x 10 + 0.0007 x 0.5) + Claude (0.003 x 0.5 + 0.015 x 1) = 0.021$ for a single inference x 200 = ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"4.2$ for 200 summaries",type:"text",style:"",detail:0,format:1,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"By carefully designing the solution (model selection and chaining), we achieved a ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"46% cost saving",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" without compromising accuracy.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"When building a chaining model for your AI implementation, using the right LLM at each stage is key to keeping costs low. For example, if you have to implement ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"pre-scanning",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" and ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"post-scanning",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" of a user inference, each potentially requires a separate LLM. ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"A poorly architected chaining model can incur LLM charges that are ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"100 times higher",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" than necessary.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Here are a few ideas for a well-architected AI pattern:",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Use smaller, task-specific models for pre-scanning (intent) and post-scanning (response generation). This leverages their strengths and avoids paying for unnecessary capabilities.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Hard-code common responses (confirmations, refusals, etc.) to eliminate LLM usage entirely.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Pre-compute responses for limited user inputs (e.mt. category selections) and store them for retrieval, minimising real-time LLM calls.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{type:"linebreak",version:1},{mode:"normal",text:"Let us look at another scenario: ",type:"text",style:"",detail:0,format:1,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"An e-commerce chatbot is designed to handle customer inquiries about product availability and order status. ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:1},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Poorly Architected Approach",type:"text",style:"",detail:0,format:9,version:1}],direction:"ltr",textStyle:"",textFormat:9},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Single Powerful LLM",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"The developers use a single, powerful LLM for both pre-scanning and post-scanning ($0.06 per 1,000 tokens). This LLM requires processing 100 tokens per user interaction (including the user's question and the system's response). ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"High Cost: Every user interaction, even simple ones, requires processing by this expensive LLM. This translates to a cost of $0.06 per 1,000 tokens x 100 tokens/interaction = $0.006 per interaction.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Cost Breakdown",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:1},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Assuming the chatbot handles 10,000 interactions per day, the daily cost would be $0.006/interaction x 10,000 interactions = $60.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"This translates to a monthly cost of $60/day x 30 days = ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"$1800",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:".",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Well-Architected Approach",type:"text",style:"",detail:0,format:9,version:1}],direction:"ltr",textStyle:"",textFormat:9},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Specialised LLMs",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Pre-scanning: A smaller LLM, optimised for intent recognition, analyses the user's question. _ requires just 20 tokens for processing and costs $0.003 per 1,000 tokens.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Post-scanning: Another, even smaller LLM, retrieves product information and order details from the database and generates a concise response, requiring 50 tokens. This LLM costs $0.006 per 1,000 tokens.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:4,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Hard-coding: The chatbot is programmed with pre-defined responses for common inquiries, eliminating LLM processing for these interactions altogether. Cost is null.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:5,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Pre-computing: For product categories with a limited number of options, pre-generated responses for availability can be stored. The chatbot retrieves the appropriate response based on user selection, further minimising LLM usage. Cost is also null.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Cost Breakdown",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:1},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Pre-scanning LLM: $.003 per 1,000 tokens x 20 tokens/interaction = $0.00006 per interaction ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Post-scanning LLM: $.006 per 1,000 tokens x 50 tokens/interaction = $0.0003 per interaction",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Hard-coded and pre-computed responses: $0 cost",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Assuming an even split between pre-scanning and post-scanning interactions (5,000 each per day), the total daily cost becomes:",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Pre-scanning cost: $0.00006/interaction x 5,000 interactions = $0.3",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Post-scanning cost: $0.0003/interaction x 5,000 interactions = $1.5",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Hard-coded/pre-computed responses: $0 cost",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Combined, the daily cost is $1.8. This translates to a monthly cost of $1.8/day x 30 days = ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"$54",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:".",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"By implementing a ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"well-architected",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" design, this example demonstrates a potential ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"97% reduction",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" in monthly costs ($1800 vs $54) by using specialised LLMs, hard-coded responses, and pre-computed responses. This highlights the substantial financial benefits of a well-architected chaining model for your AI chatbot.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"A further approach to enhancing performance and minimising the total cost of ownership (TCO) for GenAI products is ",type:"text",style:"",detail:0,format:0,version:1},{mode:"normal",text:"Retrieval-Augmented Generation",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:" (RAG). RAG optimises the workload for foundational models by pre-selecting relevant information. Instead of requiring the expensive generative model to process information from scratch, RAG efficiently reduces the volume of text the model needs to handle. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"This is achieved by first retrieving pertinent information from a knowledge base ee corpus, and then augmenting the generative model with this pre-selected, relevant context only. By avoiding the need to process irrelevant information, RAG leads to fewer tokens being processed by the costly model, subsequently lowering inference costs while maintaining high-quality outputs.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"However, to implement RAG a number of Cloud services (compute, storage, network, etc) need to be deployed, and this will increase the overall TCO for the implementation, as explored in detail further below.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:"ltr",textStyle:"",textFormat:0},{tag:"h4",type:"heading",format:"",indent:0,version:1,children:[{mode:"normal",text:"The right model for the right application",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Various models come with diverse computational needs and functionalities. Opting for a model that aligns well with the project's objectives, without overcomplicating with unnecessary features, can notably reduce overall expenses.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"The factors that may influence the choice of a Generative AI foundational model for your application are multiple, i.e.:",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Task type",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Accuracy",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Performance",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:4,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Supported number of input/output tokens",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:5,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Multi-language support",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Considering such factors is key to ensure the maximisation of business value of the generative AI application because, even within a single family of models, there is a wide range of options available, each with a significantly different cost associated with it.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Let\u2019s take the AWS offering as an example below which displays On-demand and batch pricing for Anthropic AI models on AWS Bedrock. ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{type:"table",format:"",indent:0,version:1,children:[{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Model",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:3,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Price per 1,000 input tokens",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:1,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" Price per 1,000 output tokens",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:1,backgroundColor:null}],direction:"ltr"},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Claude Instant",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"$0.0008",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.0024",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null}],direction:null},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Claude 2.0/2.1 ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.008 ",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.024",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null}],direction:null},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Claude 3 Opus ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.015 ",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.075",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null}],direction:null},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Claude 3 Sonnet ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.003",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.015",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null}],direction:null},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Claude 3 Haiku ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.00025 ",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:" $0.00125",type:"text",style:"",detail:0,format:0,version:1}],direction:null,textStyle:"",textFormat:0}],direction:null,headerState:0,backgroundColor:null}],direction:null}],colWidths:[199,323,347],direction:null},{type:"paragraph",format:"",indent:0,version:1,children:[{mode:"normal",text:"The price difference between Claude Instant and Opus models is significant. The table below explores the reasons behind this. ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{type:"table",format:"",indent:0,version:1,children:[{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Model",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:3,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Max Tokens",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:1}],direction:"ltr",headerState:1,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Languages",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:1}],direction:"ltr",headerState:1,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Use Cases",type:"text",style:"",detail:0,format:1,version:1}],direction:"ltr",textStyle:"",textFormat:1}],direction:"ltr",headerState:1,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0}],direction:"ltr",headerState:1,backgroundColor:null}],direction:"ltr"},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Instant ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"100K",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"English and multiple other languages",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Casual dialogue, text analysis, summarisation, and document comprehension.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null}],direction:"ltr"},{type:"tablerow",format:"",indent:0,version:1,children:[{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Opus ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:2,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"200K",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"English, Spanish, Japanese, and multiple other languages ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"center",indent:0,version:1,children:[{mode:"normal",text:"Task automation, interactive coding, research review, brainstorming and hypothesis generation, advanced analysis of charts and graphs, financials and market trends, forecasting",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null},{type:"tablecell",format:"",indent:0,colSpan:1,rowSpan:1,version:1,children:[{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0}],direction:"ltr",headerState:0,backgroundColor:null}],direction:"ltr"}],colWidths:[92,110,152,552,552],direction:null},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"The pricing data highlights the importance of selecting the appropriate model for your use case. Opting for the wrong model could result in costs that are nearly 20 times higher than necessary, significantly impacting the overall implementation expenses.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Larger and more complex models like GPT-3 ee PaLM require significantly more computational resources for training and inference, leading to higher costs. Selecting a smaller, more efficient model can reduce costs if the application does not require the full capabilities of a larger model. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"For instance, Anthropic Claude 3 Sonnet, with its larger context size of 12K tokens, excels at complex tasks like dialogues and creative content generation but costs $0.003 per 1K tokens on Amazon Bedrock. In contrast, the simpler Amazon Titan Text Express, suitable for summarisation and basic text generation, is nearly four times cheaper at $0.0008 per 1K tokens. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Considering this, if we want to implement a digital platform that aggregates news articles from various sources and delivers curated content to users based on their preferences and interests, the Amazon Titan Text might be the right foundational model of choice to optimise costs.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Another example: let us consider the use case of building an AI assistant for customer service. The OpenAI GPT-3 Davinci model, with its impressive language understanding and generation capabilities, might seem like a natural choice. However, at $0.06 per 1,000 input tokens and $0.06 per 1,000 output tokens, it could quickly become cost-prohibitive for high-volume interactions. On the other hand, the more specialised Anthropic Claude Instant, designed for conversational AI, offers a more cost-effective solution at $0.0008 per 1,000 input tokens and $0.0024 per 1,000 output tokens. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Given the requirement for real-time, interactive responses in customer service scenarios, the Claude Instant model could potentially deliver the necessary performance at a fraction of the cost, making it the more suitable option for this particular implementation.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{tag:"h4",type:"heading",format:"",indent:0,version:1,children:[{mode:"normal",text:"There are more costs to consider",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"Frequently, when integrating generative AI services within an organisation, it is required to provide domain context to a Generative AI foundation model. This need arises in various scenarios where the model must produce outputs tailored to a specific domain ee industry.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"As explained before, a Retrieval-Augmented Generation (RAG) approach can help provide domain context to a generative AI foundation model. RAG is a technique that combines a pre-trained language model (like GPT-3 ee BERT) with a retrieval system (like a search engine ee knowledge base). The retrieval system is used to fetch relevant documents ee passages from a corpus of domain-specific data, which can then be used to augment the context provided to the language model.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"However, it is important to note that the implementation of such process will need several additional cloud services for each step, i.e.:",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Data storage ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"AWS S3, Azure Storage Account ee GCP bucket ",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Data Cleanup ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"AWS Glue, Azure ML studio ee Vertex AI",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Vector embedding ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"AWS OpenSearch with mt-nn, Azure CosmosDB for PostgreSQL ee Vertex AI Vector Search",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"To manage the TCO of the AI implementation there are standard optimisation patterns that can be applied to these services:",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{tag:"ul",type:"list",start:1,format:"",indent:0,version:1,children:[{type:"listitem",value:1,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Tiered Storage ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"Leverage cost-effective storage options like lifecycle management policies in AWS S3, Azure Blob Storage Archive tier in Azure Storage Account, ee Coldline storage class in GCP buckets to archive infrequently accessed data.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:2,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Serverless Data Processing ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"Explore serverless data processing services like AWS Glue ETL jobs ee Azure Data Factory pipelines to clean and prepare data efficiently, minimising resource usage.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:3,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Pay-per-use Vector Embedding ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"Utilise managed services with pay-per-use pricing models, like Amazon OpenSearch with Elasticsearch Service for vector embedding and mt-nearest neighbours search ee consider cost-effective alternatives like Faiss for GPU-based similarity search within Azure Cognitive Services.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"listitem",value:4,format:"start",indent:0,version:1,children:[{mode:"normal",text:"Automated Training Pipelines ",type:"text",style:"",detail:0,format:1,version:1},{mode:"normal",text:"Consider Vertex AI Pipelines in GCP ee Azure Machine Learning pipelines to automate and potentially optimise training workflows for the RAG model, potentially reducing training costs. Explore SageMaker Neo for efficient model deployment on AWS ee leverage cost-effective containerisation technologies like Docker for deployment across cloud providers.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"}],listType:"bullet",direction:"ltr"},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:null,textStyle:"",textFormat:0},{tag:"h4",type:"heading",format:"",indent:0,version:1,children:[{mode:"normal",text:"Conclusion",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr"},{type:"paragraph",format:"start",indent:0,version:1,children:[{mode:"normal",text:"As AI workloads continue to grow in complexity and scale, effective FinOps practices become increasingly crucial for organisations to manage their cloud costs and optimise resource utilisation. ",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"By adopting the right AI architectural patterns, implementing cost monitoring and optimisation strategies, organisations can strike the right balance between innovation and fiscal responsibility.",type:"text",style:"",detail:0,format:0,version:1},{type:"linebreak",version:1},{type:"linebreak",version:1},{mode:"normal",text:"Embracing FinOps principles enables organisations to future-proof their AI investments, ensuring sustainable growth and a competitive edge in the rapidly evolving AI landscape.",type:"text",style:"",detail:0,format:0,version:1}],direction:"ltr",textStyle:"",textFormat:0},{type:"paragraph",format:"",indent:0,version:1,children:[],direction:"ltr",textStyle:"",textFormat:0}],direction:"ltr"}},relatedPosts:[],categories:[{id:2,title:"FinOps",parent:null,breadcrumbs:[{id:"677a812ddf2f2500016a05f5",doc:2,url:null,label:"FinOps"}],updatedAt:"2025-01-05T12:55:09.500Z",createdAt:"2025-01-05T12:55:09.480Z"}],meta:{title:"FinOps-enhanced GenAI | Cortex Reply | AI that works for you",image:{id:119,alt:"FinOps-enhanced GenAI: Inform, Optimise, Operate, Innovate",prefix:"media",updatedAt:"2025-04-01T09:06:10.720Z",createdAt:"2025-04-01T09:06:07.529Z",url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu.jpg",thumbnailURL:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-300x200.jpg",filename:"zZpFFeluQXVexiYXUJ6lu.jpg",mimeType:"image/jpeg",filesize:227036,width:2121,height:1414,focalX:50,focalY:50,sizes:{thumbnail:{url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-300x200.jpg",width:300,height:200,mimeType:"image/jpeg",filesize:6658,filename:"zZpFFeluQXVexiYXUJ6lu-300x200.jpg"},square:{url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-500x500.jpg",width:500,height:500,mimeType:"image/jpeg",filesize:35848,filename:"zZpFFeluQXVexiYXUJ6lu-500x500.jpg"},small:{url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-600x400.jpg",width:600,height:400,mimeType:"image/jpeg",filesize:27963,filename:"zZpFFeluQXVexiYXUJ6lu-600x400.jpg"},medium:{url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-900x600.jpg",width:900,height:600,mimeType:"image/jpeg",filesize:59628,filename:"zZpFFeluQXVexiYXUJ6lu-900x600.jpg"},large:{url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-1400x933.jpg",width:1400,height:933,mimeType:"image/jpeg",filesize:121948,filename:"zZpFFeluQXVexiYXUJ6lu-1400x933.jpg"},xlarge:{url:"/api/media/file/zZpFFeluQXVexiYXUJ6lu-1920x1280.jpg",width:1920,height:1280,mimeType:"image/jpeg",filesize:195431,filename:"zZpFFeluQXVexiYXUJ6lu-1920x1280.jpg"}}},description:"See how FinOps enhances GenAI by optimising costs, boosting efficiency, and driving innovation with informed financial and operational strategies."},publishedAt:"2025-02-18T16:04:50.489Z",authors:[{id:16,name:"Derek Ho",email:"d.ho@reply.com",jobRole:"SC2",manager:2,about:"Senior AI & Cloud Consultant",profilePicture:12,workHistory:[],certifications:[],areasOfExpertise:[],dateOfBirth:"2020-10-15T12:00:00.000Z",joinDate:"2021-08-09T12:00:00.000Z",linkedIn:"www.linkedin.com/in/derekmhho",role:"user",updatedAt:"2025-03-17T09:43:57.552Z",createdAt:"2025-01-13T10:49:09.359Z",enableAPIKey:null,apiKey:null},{id:12,name:"Ben Num",email:"mt.num@reply.com",jobRole:"C2",manager:3,about:null,profilePicture:15,workHistory:[],certifications:[],areasOfExpertise:[],dateOfBirth:"2025-12-29T12:00:00.000Z",joinDate:"2023-09-11T12:00:00.000Z",linkedIn:null,role:"user",updatedAt:"2025-02-12T15:25:13.837Z",createdAt:"2025-01-10T14:07:25.875Z",enableAPIKey:null,apiKey:null}],populatedAuthors:[{id:"16",name:"Derek Ho"},{id:"12",name:"Ben Num"}],slug:"finops-enhanced-genai-inform-optimise-operate-innovate",slugLock:!0,updatedAt:"2025-04-01T10:03:00.931Z",createdAt:"2025-03-31T20:28:04.118Z"}}}};0&&(module.exports={AReallyLongTitle,Default,LotsOfFormatting});