@flamingo-stack/openframe-frontend-core 0.0.722 → 0.0.724

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 (137) hide show
  1. package/dist/{chunk-XJYAUIOL.cjs → chunk-2A4AGW7Z.cjs} +11 -11
  2. package/dist/{chunk-65C4WHG4.js → chunk-2HLGX6JF.js} +5 -5
  3. package/dist/{chunk-5K6YKRP5.cjs → chunk-3MMKIVWZ.cjs} +23 -23
  4. package/dist/{chunk-P7Y626YJ.cjs → chunk-3NVSC3BU.cjs} +687 -611
  5. package/dist/{chunk-VSYQJCNR.js → chunk-4N5DLIEC.js} +1 -1
  6. package/dist/{chunk-GYSTZD6X.cjs → chunk-5CJGNPTT.cjs} +35 -35
  7. package/dist/{chunk-AWWLEYAU.js → chunk-6BKDXUOQ.js} +6 -6
  8. package/dist/{chunk-BUDZWXRG.js → chunk-6QO6BIX7.js} +1 -1
  9. package/dist/{chunk-FDWYBJYD.cjs → chunk-7AXOAA5T.cjs} +3 -3
  10. package/dist/{chunk-SZF7ENIW.js → chunk-7CNGNPBI.js} +3 -3
  11. package/dist/{chunk-6HRQLM6T.cjs → chunk-A4WHVIYZ.cjs} +17 -17
  12. package/dist/{chunk-VV5INIQB.cjs → chunk-BIWG3CYN.cjs} +3 -3
  13. package/dist/{chunk-I3UUMRO7.js → chunk-BWMEQ7IZ.js} +1 -1
  14. package/dist/{chunk-7UZ2JZJY.js → chunk-CJENFR5T.js} +29 -3
  15. package/dist/{chunk-IITZ6JSC.cjs → chunk-DGNGABNG.cjs} +33 -7
  16. package/dist/{chunk-KWBH63GV.cjs → chunk-FR4MFSH5.cjs} +19 -19
  17. package/dist/{chunk-DWSBTGKT.cjs → chunk-GRB5HVEV.cjs} +2610 -2125
  18. package/dist/{chunk-JQ55FFIK.cjs → chunk-IPUDFAU5.cjs} +31 -31
  19. package/dist/{chunk-F33RMJOL.js → chunk-IUQKIU5A.js} +6 -6
  20. package/dist/{chunk-LV6UJD2K.cjs → chunk-JKWQWHNV.cjs} +6 -1
  21. package/dist/{chunk-VC7COEWF.cjs → chunk-JQ7A7PO5.cjs} +76 -76
  22. package/dist/{chunk-BCU6UUNQ.js → chunk-KKO4GRM3.js} +4 -4
  23. package/dist/{chunk-RVQV6J5K.cjs → chunk-L5CAET76.cjs} +64 -64
  24. package/dist/{chunk-WY4SLTMZ.js → chunk-MRBPJ4NB.js} +1 -1
  25. package/dist/{chunk-IF72N4PE.js → chunk-MU5F5QXJ.js} +6 -6
  26. package/dist/{chunk-NMGWNUKB.js → chunk-N2PX26BZ.js} +2 -2
  27. package/dist/{chunk-NFABAOMD.cjs → chunk-N4NGKXUU.cjs} +15 -15
  28. package/dist/{chunk-ETQVXIYW.js → chunk-NLZZUWR6.js} +4 -4
  29. package/dist/{chunk-ZMHP4Y6M.js → chunk-OFOBVPDV.js} +2 -2
  30. package/dist/{chunk-DX3W7DPC.js → chunk-OWFDXYEO.js} +1 -1
  31. package/dist/{chunk-HA2ASGJM.js → chunk-PF4WAKCS.js} +4 -4
  32. package/dist/{chunk-GAFK3WNT.cjs → chunk-QJ67GFF3.cjs} +32 -32
  33. package/dist/{chunk-KBPGSPXQ.js → chunk-QN3OXRTM.js} +4492 -4007
  34. package/dist/{chunk-ZHC6MDGF.cjs → chunk-QUI7DKBW.cjs} +41 -41
  35. package/dist/{chunk-E7NIZXDT.js → chunk-S4SVKXHN.js} +88 -12
  36. package/dist/{chunk-VYHCN5NU.cjs → chunk-SOTXV3T5.cjs} +3 -3
  37. package/dist/{chunk-MJ4SXOG2.cjs → chunk-SVDXNMBL.cjs} +16 -16
  38. package/dist/{chunk-UYMTAFHG.js → chunk-VLPGV5WH.js} +1 -1
  39. package/dist/{chunk-SZ3CBFSH.js → chunk-XDTD6YGG.js} +7 -7
  40. package/dist/{chunk-VU7RU3LL.cjs → chunk-YKV45BSJ.cjs} +4 -4
  41. package/dist/{chunk-XR7NVJXS.cjs → chunk-ZKL52ALL.cjs} +3 -3
  42. package/dist/{chunk-EWED6ISQ.js → chunk-ZQKN2Z6W.js} +5 -0
  43. package/dist/{cloud-tenants-4Z36KWSX.js → cloud-tenants-5MINXS5J.js} +6 -6
  44. package/dist/{cloud-tenants-5NIC5VXK.cjs → cloud-tenants-UMZJZTMB.cjs} +7 -7
  45. package/dist/components/case-studies/index.cjs +20 -20
  46. package/dist/components/case-studies/index.js +7 -7
  47. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  48. package/dist/components/chat/index.cjs +5 -5
  49. package/dist/components/chat/index.js +4 -4
  50. package/dist/components/chat/utils/icon-library.d.ts +2 -0
  51. package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
  52. package/dist/components/contact/index.cjs +8 -8
  53. package/dist/components/contact/index.js +7 -7
  54. package/dist/components/docs/index.cjs +11 -11
  55. package/dist/components/docs/index.js +10 -10
  56. package/dist/components/embeds/index.cjs +8 -8
  57. package/dist/components/embeds/index.js +7 -7
  58. package/dist/components/faq/index.cjs +8 -8
  59. package/dist/components/faq/index.js +7 -7
  60. package/dist/components/features/index.cjs +23 -7
  61. package/dist/components/features/index.d.ts +1 -0
  62. package/dist/components/features/index.d.ts.map +1 -1
  63. package/dist/components/features/index.js +22 -6
  64. package/dist/components/features/model-token-rates.d.ts +179 -0
  65. package/dist/components/features/model-token-rates.d.ts.map +1 -0
  66. package/dist/components/help-center-pages/index.cjs +130 -126
  67. package/dist/components/help-center-pages/index.js +47 -43
  68. package/dist/components/help-center-pages/trust-center-page.d.ts +34 -1
  69. package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
  70. package/dist/components/help-center-pages/trust-center-sections.d.ts +1 -1
  71. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  72. package/dist/components/index.cjs +73 -55
  73. package/dist/components/index.js +36 -18
  74. package/dist/components/meeting-scheduler/index.cjs +32 -32
  75. package/dist/components/meeting-scheduler/index.js +6 -6
  76. package/dist/components/navigation/index.cjs +10 -10
  77. package/dist/components/navigation/index.js +9 -9
  78. package/dist/components/onboarding-guides/index.cjs +10 -10
  79. package/dist/components/onboarding-guides/index.js +9 -9
  80. package/dist/components/product-demo/index.cjs +7 -7
  81. package/dist/components/product-demo/index.js +7 -7
  82. package/dist/components/related-content/index.cjs +4 -4
  83. package/dist/components/related-content/index.js +3 -3
  84. package/dist/components/tickets/index.cjs +11 -11
  85. package/dist/components/tickets/index.js +10 -10
  86. package/dist/components/ui/data-attribution.d.ts +3 -1
  87. package/dist/components/ui/data-attribution.d.ts.map +1 -1
  88. package/dist/components/ui/download-button.d.ts +19 -0
  89. package/dist/components/ui/download-button.d.ts.map +1 -0
  90. package/dist/components/ui/index.cjs +9 -7
  91. package/dist/components/ui/index.d.ts +1 -0
  92. package/dist/components/ui/index.d.ts.map +1 -1
  93. package/dist/components/ui/index.js +8 -6
  94. package/dist/{devices-2TK3LAKM.js → devices-FSSUAUQN.js} +6 -6
  95. package/dist/{devices-7IKT72DK.cjs → devices-HOT7YSDN.cjs} +8 -8
  96. package/dist/index.cjs +53 -11
  97. package/dist/index.js +52 -10
  98. package/dist/{knowledge-HYSEV35H.cjs → knowledge-3N6HCFLU.cjs} +8 -8
  99. package/dist/{knowledge-3GJ4MU3V.js → knowledge-7HRUJX26.js} +6 -6
  100. package/dist/{logs-ZX3NADQC.cjs → logs-75M5YP6V.cjs} +15 -15
  101. package/dist/{logs-TATVM62H.js → logs-T25OE2QW.js} +6 -6
  102. package/dist/{policies-MRRKLF4Q.js → policies-4OK4XTD4.js} +6 -6
  103. package/dist/{policies-J4FSDKPI.cjs → policies-BTG7UJJC.cjs} +11 -11
  104. package/dist/{remote-session-Z2YCUPHU.cjs → remote-session-4DTOM3QD.cjs} +5 -5
  105. package/dist/{remote-session-WCLR47RN.js → remote-session-AZJXG7ZF.js} +3 -3
  106. package/dist/{software-update-KM46WUVQ.js → software-update-5SOV4FIR.js} +6 -6
  107. package/dist/{software-update-CXUBWYD2.cjs → software-update-OZURO4VK.cjs} +11 -11
  108. package/dist/types/index.cjs +27 -2
  109. package/dist/types/index.js +25 -3
  110. package/dist/types/trust-center.d.ts +19 -2
  111. package/dist/types/trust-center.d.ts.map +1 -1
  112. package/dist/utils/ai-providers.d.ts +29 -0
  113. package/dist/utils/ai-providers.d.ts.map +1 -0
  114. package/dist/utils/index.cjs +76 -2
  115. package/dist/utils/index.d.ts +2 -0
  116. package/dist/utils/index.d.ts.map +1 -1
  117. package/dist/utils/index.js +68 -3
  118. package/dist/utils/list-url.d.ts.map +1 -1
  119. package/dist/utils/model-token-rates.d.ts +55 -0
  120. package/dist/utils/model-token-rates.d.ts.map +1 -0
  121. package/dist/utils/source-icons.d.ts.map +1 -1
  122. package/package.json +1 -1
  123. package/src/components/chat/entity-cards/dispatch.tsx +3 -0
  124. package/src/components/chat/utils/icon-library.tsx +6 -0
  125. package/src/components/features/index.ts +1 -0
  126. package/src/components/features/model-token-rates.tsx +696 -0
  127. package/src/components/help-center-pages/trust-center-page.tsx +50 -29
  128. package/src/components/help-center-pages/trust-center-sections.tsx +2 -2
  129. package/src/components/ui/data-attribution.tsx +19 -6
  130. package/src/components/ui/download-button.tsx +34 -0
  131. package/src/components/ui/index.ts +1 -0
  132. package/src/types/trust-center.ts +52 -4
  133. package/src/utils/ai-providers.ts +46 -0
  134. package/src/utils/index.ts +2 -0
  135. package/src/utils/list-url.ts +1 -0
  136. package/src/utils/model-token-rates.ts +103 -0
  137. package/src/utils/source-icons.ts +3 -0
@@ -37,7 +37,7 @@ var _chunkBYUIFT7Qcjs = require('./chunk-BYUIFT7Q.cjs');
37
37
 
38
38
 
39
39
 
40
- var _chunkIITZ6JSCcjs = require('./chunk-IITZ6JSC.cjs');
40
+ var _chunkDGNGABNGcjs = require('./chunk-DGNGABNG.cjs');
41
41
 
42
42
 
43
43
  var _chunk7GRPR7XAcjs = require('./chunk-7GRPR7XA.cjs');
@@ -438,13 +438,13 @@ function cardEntry(definition) {
438
438
  }
439
439
  function programEntry(configKey) {
440
440
  return cardEntry({
441
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.ProgramCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
441
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDGNGABNGcjs.ProgramCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
442
442
  decode: decodeProgramRow,
443
443
  render: (item, ctx) => {
444
444
  const config = _optionalChain([ctx, 'access', _2 => _2.extras, 'optionalAccess', _3 => _3.programConfigs, 'optionalAccess', _4 => _4[configKey]]);
445
445
  if (!config) return null;
446
446
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
447
- _chunkIITZ6JSCcjs.ProgramCard,
447
+ _chunkDGNGABNGcjs.ProgramCard,
448
448
  {
449
449
  config,
450
450
  item,
@@ -461,10 +461,10 @@ function programEntry(configKey) {
461
461
  }
462
462
  function roadmapEntry(cardType) {
463
463
  return cardEntry({
464
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.RoadmapCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
464
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDGNGABNGcjs.RoadmapCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
465
465
  decode: decodeRoadmapRow,
466
466
  render: (item, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
467
- _chunkIITZ6JSCcjs.RoadmapCard,
467
+ _chunkDGNGABNGcjs.RoadmapCard,
468
468
  {
469
469
  item,
470
470
  href: ctx.href,
@@ -481,10 +481,10 @@ function roadmapEntry(cardType) {
481
481
  }
482
482
  var RELATED_CARD_REGISTRY = {
483
483
  blog_post_existing: cardEntry({
484
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.BlogCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
484
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDGNGABNGcjs.BlogCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
485
485
  decode: decodeBlogRow,
486
486
  render: (post, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
487
- _chunkIITZ6JSCcjs.BlogCard,
487
+ _chunkDGNGABNGcjs.BlogCard,
488
488
  {
489
489
  post,
490
490
  size: ctx.legacySize,
@@ -496,10 +496,10 @@ var RELATED_CARD_REGISTRY = {
496
496
  )
497
497
  }),
498
498
  case_study: cardEntry({
499
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.CaseStudyCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
499
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDGNGABNGcjs.CaseStudyCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
500
500
  decode: decodeCaseStudyRow,
501
501
  render: (study, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
502
- _chunkIITZ6JSCcjs.CaseStudyCard,
502
+ _chunkDGNGABNGcjs.CaseStudyCard,
503
503
  {
504
504
  study,
505
505
  size: ctx.legacySize,
@@ -511,10 +511,10 @@ var RELATED_CARD_REGISTRY = {
511
511
  )
512
512
  }),
513
513
  customer_interview: cardEntry({
514
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.CustomerInterviewCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
514
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDGNGABNGcjs.CustomerInterviewCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
515
515
  decode: decodeCustomerInterviewRow,
516
516
  render: (interview, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
517
- _chunkIITZ6JSCcjs.CustomerInterviewCard,
517
+ _chunkDGNGABNGcjs.CustomerInterviewCard,
518
518
  {
519
519
  interview,
520
520
  size: ctx.legacySize,
@@ -532,13 +532,13 @@ var RELATED_CARD_REGISTRY = {
532
532
  * record, and the three props the rail sets itself are read off it.
533
533
  */
534
534
  product_release: cardEntry({
535
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.ProductReleaseCardSkeleton, { size: size === "sm" ? "sm" : "lg" }),
535
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDGNGABNGcjs.ProductReleaseCardSkeleton, { size: size === "sm" ? "sm" : "lg" }),
536
536
  decode: asRecord,
537
537
  render: (release, ctx) => {
538
- const buildReleaseProps = _nullishCoalesce(_optionalChain([ctx, 'access', _5 => _5.extras, 'optionalAccess', _6 => _6.buildProductReleaseCardProps]), () => ( _chunkIITZ6JSCcjs.buildProductReleaseCardProps));
538
+ const buildReleaseProps = _nullishCoalesce(_optionalChain([ctx, 'access', _5 => _5.extras, 'optionalAccess', _6 => _6.buildProductReleaseCardProps]), () => ( _chunkDGNGABNGcjs.buildProductReleaseCardProps));
539
539
  const releaseProps = buildReleaseProps(release);
540
540
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
541
- _chunkIITZ6JSCcjs.ProductReleaseCard,
541
+ _chunkDGNGABNGcjs.ProductReleaseCard,
542
542
  {
543
543
  size: ctx.size === "sm" ? "sm" : "lg",
544
544
  title: str(release, "title"),
@@ -554,10 +554,10 @@ var RELATED_CARD_REGISTRY = {
554
554
  webinar: programEntry("webinar"),
555
555
  event: programEntry("event"),
556
556
  investor_update: cardEntry({
557
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.InvestorUpdateCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
557
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDGNGABNGcjs.InvestorUpdateCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
558
558
  decode: decodeInvestorUpdateRow,
559
559
  render: (update, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
560
- _chunkIITZ6JSCcjs.InvestorUpdateCard,
560
+ _chunkDGNGABNGcjs.InvestorUpdateCard,
561
561
  {
562
562
  update,
563
563
  size: ctx.legacySize,
@@ -572,10 +572,10 @@ var RELATED_CARD_REGISTRY = {
572
572
  * step-numbered 'default' variant is for the guide detail page's "More in
573
573
  * section" rail, not this full-width row. */
574
574
  onboarding_guide: cardEntry({
575
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.OnboardingGuideCardSkeleton, { size: size === "sm" ? "sm" : "catalog" }),
575
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDGNGABNGcjs.OnboardingGuideCardSkeleton, { size: size === "sm" ? "sm" : "catalog" }),
576
576
  decode: decodeOnboardingGuideRow,
577
577
  render: (guide, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
578
- _chunkIITZ6JSCcjs.OnboardingGuideCard,
578
+ _chunkDGNGABNGcjs.OnboardingGuideCard,
579
579
  {
580
580
  guide,
581
581
  size: ctx.size === "sm" ? "sm" : "catalog",
@@ -592,10 +592,10 @@ var RELATED_CARD_REGISTRY = {
592
592
  * href: an object with `href: undefined` is still truthy and would wrap the
593
593
  * card in a dead <a>. */
594
594
  what_i_shipped: cardEntry({
595
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.WhatIShippedCardSkeleton, {}),
595
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDGNGABNGcjs.WhatIShippedCardSkeleton, {}),
596
596
  decode: decodeEmployeeEntryRow,
597
597
  render: (entry, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
598
- _chunkIITZ6JSCcjs.WhatIShippedCard,
598
+ _chunkDGNGABNGcjs.WhatIShippedCard,
599
599
  {
600
600
  entry,
601
601
  placeholderUrl: ctx.placeholderUrl,
@@ -605,10 +605,10 @@ var RELATED_CARD_REGISTRY = {
605
605
  }),
606
606
  /** Same shared employee-entry shape + anchor contract as What I Shipped. */
607
607
  how_i_work: cardEntry({
608
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.HowIWorkCardSkeleton, {}),
608
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDGNGABNGcjs.HowIWorkCardSkeleton, {}),
609
609
  decode: decodeEmployeeEntryRow,
610
610
  render: (entry, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
611
- _chunkIITZ6JSCcjs.HowIWorkCard,
611
+ _chunkDGNGABNGcjs.HowIWorkCard,
612
612
  {
613
613
  entry,
614
614
  placeholderUrl: ctx.placeholderUrl,
@@ -618,10 +618,10 @@ var RELATED_CARD_REGISTRY = {
618
618
  }),
619
619
  /** Same shared employee-entry shape + anchor contract as What I Shipped. */
620
620
  ai_prompt: cardEntry({
621
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.AiPromptCardSkeleton, {}),
621
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDGNGABNGcjs.AiPromptCardSkeleton, {}),
622
622
  decode: decodeEmployeeEntryRow,
623
623
  render: (entry, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
624
- _chunkIITZ6JSCcjs.AiPromptCard,
624
+ _chunkDGNGABNGcjs.AiPromptCard,
625
625
  {
626
626
  entry,
627
627
  placeholderUrl: ctx.placeholderUrl,
@@ -642,7 +642,7 @@ function DefaultLinkPropsProvider({
642
642
  children
643
643
  }) {
644
644
  if (!href) return children(null);
645
- const newTab = _chunkIITZ6JSCcjs.decideNewTab.call(void 0, { href, targetPlatform, currentSource: "" });
645
+ const newTab = _chunkDGNGABNGcjs.decideNewTab.call(void 0, { href, targetPlatform, currentSource: "" });
646
646
  return children(newTab ? { href, target: "_blank", rel: "noopener noreferrer" } : { href });
647
647
  }
648
648
  function defaultResolveHref(ref) {
@@ -700,9 +700,9 @@ function useGroupItems(type, refs, buildUrl) {
700
700
  const url = ids.length > 0 ? buildUrl(type, ids) : null;
701
701
  const [pages, setPages] = _react.useState.call(void 0, () => /* @__PURE__ */ new Map());
702
702
  const cached = url !== null ? pages.get(url) : void 0;
703
- const { data, dataUrl, error } = _chunkIITZ6JSCcjs.useSelfFetch.call(void 0, cached ? null : url);
703
+ const { data, dataUrl, error } = _chunkDGNGABNGcjs.useSelfFetch.call(void 0, cached ? null : url);
704
704
  if (data != null && dataUrl !== null && !pages.has(dataUrl)) {
705
- setPages(new Map(pages).set(dataUrl, _chunkIITZ6JSCcjs.extractItems.call(void 0, data)));
705
+ setPages(new Map(pages).set(dataUrl, _chunkDGNGABNGcjs.extractItems.call(void 0, data)));
706
706
  }
707
707
  if (url === null) return { items: null, isLoading: false };
708
708
  return { items: _nullishCoalesce(cached, () => ( (error ? [] : null))), isLoading: !cached && !error };
@@ -711,7 +711,7 @@ function gridClassFor(columns) {
711
711
  return columns === 3 ? "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6" : "grid grid-cols-1 sm:grid-cols-2 gap-6";
712
712
  }
713
713
  function resolveGroupConfig(type) {
714
- return _nullishCoalesce(_chunkIITZ6JSCcjs.CONTENT_REF_GROUPS[type], () => ( {
714
+ return _nullishCoalesce(_chunkDGNGABNGcjs.CONTENT_REF_GROUPS[type], () => ( {
715
715
  label: type,
716
716
  order: 999,
717
717
  layout: "grid",
@@ -754,7 +754,7 @@ function ContentGroup({
754
754
  }
755
755
  if (!items) return null;
756
756
  const rowKey = (it) => {
757
- const extracted = _chunkIITZ6JSCcjs.extractItemId.call(void 0, type, it);
757
+ const extracted = _chunkDGNGABNGcjs.extractItemId.call(void 0, type, it);
758
758
  if (extracted !== null) return extracted;
759
759
  return String(typeof it === "object" && it !== null ? it.id : void 0);
760
760
  };
@@ -822,11 +822,11 @@ function RelatedContentSection({
822
822
  types: includeTypes !== void 0 ? includeTypes.join(",") : void 0,
823
823
  excludeTypes: excludeTypes && excludeTypes.length > 0 ? excludeTypes.join(",") : void 0
824
824
  };
825
- const authorUrl = contentRefs === void 0 && authorId && !suggestionsDisabled ? _chunkIITZ6JSCcjs.buildSuggestionUrl.call(void 0, "/api/related-content", {
825
+ const authorUrl = contentRefs === void 0 && authorId && !suggestionsDisabled ? _chunkDGNGABNGcjs.buildSuggestionUrl.call(void 0, "/api/related-content", {
826
826
  apiBaseUrl,
827
827
  extraParams: { authorId, ...typeFilterParams }
828
828
  }) : null;
829
- const suggestUrl = _nullishCoalesce(authorUrl, () => ( (contentRefs === void 0 && entityType && entityId !== void 0 && entityId !== null && entityId !== "" && !suggestionsDisabled ? _chunkIITZ6JSCcjs.buildSuggestionUrl.call(void 0, "/api/related-content", {
829
+ const suggestUrl = _nullishCoalesce(authorUrl, () => ( (contentRefs === void 0 && entityType && entityId !== void 0 && entityId !== null && entityId !== "" && !suggestionsDisabled ? _chunkDGNGABNGcjs.buildSuggestionUrl.call(void 0, "/api/related-content", {
830
830
  apiBaseUrl,
831
831
  entityType,
832
832
  entityId,
@@ -843,9 +843,9 @@ function RelatedContentSection({
843
843
  () => !suggestionsDisabled && initialItems ? { refs: initialItems } : void 0,
844
844
  [initialItems, suggestionsDisabled]
845
845
  );
846
- const { data, isLoading } = _chunkIITZ6JSCcjs.useSelfFetch.call(void 0, suggestUrl, { initialData });
846
+ const { data, isLoading } = _chunkDGNGABNGcjs.useSelfFetch.call(void 0, suggestUrl, { initialData });
847
847
  const effectiveBuildListUrl = _react.useMemo.call(void 0,
848
- () => _nullishCoalesce(buildListUrl2, () => ( ((type, ids) => _chunkIITZ6JSCcjs.buildListUrl.call(void 0, type, ids, apiBaseUrl)))),
848
+ () => _nullishCoalesce(buildListUrl2, () => ( ((type, ids) => _chunkDGNGABNGcjs.buildListUrl.call(void 0, type, ids, apiBaseUrl)))),
849
849
  [buildListUrl2, apiBaseUrl]
850
850
  );
851
851
  const refs = _nullishCoalesce(_nullishCoalesce(contentRefs, () => ( _optionalChain([data, 'optionalAccess', _10 => _10.refs]))), () => ( []));
@@ -856,12 +856,12 @@ function RelatedContentSection({
856
856
  if (isLoading) {
857
857
  const skeletonType = _nullishCoalesce(_nullishCoalesce(_optionalChain([includeTypes, 'optionalAccess', _11 => _11[0]]), () => ( entityType)), () => ( "blog_post_existing"));
858
858
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-8", children: [
859
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-ods-text-primary text-h2", children: _chunkIITZ6JSCcjs.accentSentenceMarks.call(void 0, title) }),
859
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-ods-text-primary text-h2", children: _chunkDGNGABNGcjs.accentSentenceMarks.call(void 0, title) }),
860
860
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: gridClassFor(columns), children: Array.from({ length: 3 }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { children: renderSkeletonForType(skeletonType, "default", adminCampaignCard) }, i)) })
861
861
  ] });
862
862
  }
863
863
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-8", children: [
864
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-2xl font-bold text-ods-text-primary", children: _chunkIITZ6JSCcjs.accentSentenceMarks.call(void 0, title) }),
864
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-2xl font-bold text-ods-text-primary", children: _chunkDGNGABNGcjs.accentSentenceMarks.call(void 0, title) }),
865
865
  _nullishCoalesce(emptyState, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary", children: emptyStateText })))
866
866
  ] });
867
867
  }
@@ -870,16 +870,16 @@ function RelatedContentSection({
870
870
  if (!grouped[ref.type]) grouped[ref.type] = [];
871
871
  grouped[ref.type].push(ref);
872
872
  }
873
- let orderedTypes = _chunkIITZ6JSCcjs.orderContentRefTypes.call(void 0, Object.keys(grouped));
873
+ let orderedTypes = _chunkDGNGABNGcjs.orderContentRefTypes.call(void 0, Object.keys(grouped));
874
874
  if (entityType) {
875
- const canonicalEntityType = _chunkIITZ6JSCcjs.canonicalContentRefType.call(void 0, entityType);
876
- const sameType = orderedTypes.filter((t) => _chunkIITZ6JSCcjs.canonicalContentRefType.call(void 0, t) === canonicalEntityType);
875
+ const canonicalEntityType = _chunkDGNGABNGcjs.canonicalContentRefType.call(void 0, entityType);
876
+ const sameType = orderedTypes.filter((t) => _chunkDGNGABNGcjs.canonicalContentRefType.call(void 0, t) === canonicalEntityType);
877
877
  if (sameType.length > 0) {
878
- orderedTypes = [...sameType, ...orderedTypes.filter((t) => _chunkIITZ6JSCcjs.canonicalContentRefType.call(void 0, t) !== canonicalEntityType)];
878
+ orderedTypes = [...sameType, ...orderedTypes.filter((t) => _chunkDGNGABNGcjs.canonicalContentRefType.call(void 0, t) !== canonicalEntityType)];
879
879
  }
880
880
  }
881
881
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-8", children: [
882
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-ods-text-primary text-h2", children: _chunkIITZ6JSCcjs.accentSentenceMarks.call(void 0, title) }),
882
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-ods-text-primary text-h2", children: _chunkDGNGABNGcjs.accentSentenceMarks.call(void 0, title) }),
883
883
  orderedTypes.map((type) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
884
884
  ContentGroup,
885
885
  {
@@ -891,7 +891,7 @@ function RelatedContentSection({
891
891
  LinkProvider,
892
892
  extras,
893
893
  adminCampaignCard,
894
- heading: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "font-semibold text-ods-text-secondary text-h5", children: _chunkIITZ6JSCcjs.getContentRefLabelOrTitleCase.call(void 0, type) })
894
+ heading: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "font-semibold text-ods-text-secondary text-h5", children: _chunkDGNGABNGcjs.getContentRefLabelOrTitleCase.call(void 0, type) })
895
895
  },
896
896
  type
897
897
  ))
@@ -34,7 +34,7 @@ import {
34
34
  OWNER_TYPE,
35
35
  formatDate,
36
36
  formatTime
37
- } from "./chunk-WY4SLTMZ.js";
37
+ } from "./chunk-MRBPJ4NB.js";
38
38
  import {
39
39
  ActionsMenuDropdown,
40
40
  OverlayOpenRegistryProvider,
@@ -140,7 +140,7 @@ import {
140
140
  trustFrameworksSummary,
141
141
  useSelfFetch,
142
142
  useVideoWarmup
143
- } from "./chunk-7UZ2JZJY.js";
143
+ } from "./chunk-CJENFR5T.js";
144
144
  import {
145
145
  AgentMark
146
146
  } from "./chunk-H3PKYE4N.js";
@@ -148,7 +148,7 @@ import {
148
148
  AvatarStack,
149
149
  getIconComponent,
150
150
  resolveIcon
151
- } from "./chunk-EWED6ISQ.js";
151
+ } from "./chunk-ZQKN2Z6W.js";
152
152
  import {
153
153
  FloatingTooltip,
154
154
  SquareAvatar,
@@ -4924,23 +4924,23 @@ function ChatMessageListSkeleton({
4924
4924
  // src/components/chat/cycling-phrase.tsx
4925
4925
  import { useEffect as useEffect5, useMemo as useMemo7, useState as useState9 } from "react";
4926
4926
  import { jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
4927
- function CyclingPhrase({ words, className, charMs = 60, holdMs = 4500 }) {
4927
+ function CyclingPhrase({ words: words2, className, charMs = 60, holdMs = 4500 }) {
4928
4928
  const [wordIndex, setWordIndex] = useState9(0);
4929
4929
  const [text2, setText] = useState9("");
4930
4930
  const [cursor, setCursor] = useState9(0);
4931
- const target = words[wordIndex] ?? "";
4932
- const holding = words.length > 0 && cursor >= Math.max(text2.length, target.length);
4931
+ const target = words2[wordIndex] ?? "";
4932
+ const holding = words2.length > 0 && cursor >= Math.max(text2.length, target.length);
4933
4933
  const shownText = holding ? target : text2;
4934
4934
  const placeholder = useMemo7(
4935
- () => words.reduce((longest, w) => w.length > longest.length ? w : longest, ""),
4936
- [words]
4935
+ () => words2.reduce((longest, w) => w.length > longest.length ? w : longest, ""),
4936
+ [words2]
4937
4937
  );
4938
4938
  useEffect5(() => {
4939
- if (words.length === 0) return void 0;
4939
+ if (words2.length === 0) return void 0;
4940
4940
  let timeoutId;
4941
4941
  if (holding) {
4942
4942
  timeoutId = setTimeout(() => {
4943
- setWordIndex((i) => (i + 1) % words.length);
4943
+ setWordIndex((i) => (i + 1) % words2.length);
4944
4944
  setCursor(0);
4945
4945
  setText(target);
4946
4946
  }, holdMs);
@@ -4956,8 +4956,8 @@ function CyclingPhrase({ words, className, charMs = 60, holdMs = 4500 }) {
4956
4956
  setCursor((c) => c + 1);
4957
4957
  }, charMs);
4958
4958
  return () => clearTimeout(timeoutId);
4959
- }, [wordIndex, cursor, text2, holding, target, words, charMs, holdMs]);
4960
- if (words.length === 0) return null;
4959
+ }, [wordIndex, cursor, text2, holding, target, words2, charMs, holdMs]);
4960
+ if (words2.length === 0) return null;
4961
4961
  const before = shownText.slice(0, cursor);
4962
4962
  const after = shownText.slice(cursor);
4963
4963
  const cursorBlock = /* @__PURE__ */ jsx23(
@@ -5912,6 +5912,67 @@ if (_orderIdx("flamingo") > _orderIdx("flamingo-teaser") || _orderIdx("flamingo"
5912
5912
  );
5913
5913
  }
5914
5914
 
5915
+ // src/utils/ai-providers.ts
5916
+ var AI_PROVIDERS = {
5917
+ ANTHROPIC: { label: "Anthropic", icon: "anthropic-logo-grey" },
5918
+ OPENAI: { label: "OpenAI", icon: "openai-logo-grey" },
5919
+ GOOGLE_GEMINI: { label: "Google Gemini", icon: "gemini-logo-grey" }
5920
+ };
5921
+ var words = (key) => key.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean);
5922
+ function aiProvider(key, stated) {
5923
+ const known = AI_PROVIDERS[key];
5924
+ const parts = words(key);
5925
+ return {
5926
+ label: stated?.label || known?.label || parts.map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ") || key,
5927
+ icon: stated?.icon || known?.icon || `${parts.join("-")}-logo-grey`
5928
+ };
5929
+ }
5930
+
5931
+ // src/utils/model-token-rates.ts
5932
+ var TOKEN_RATE_EMPTY = "\u2014";
5933
+ function formatTokenRate(value) {
5934
+ if (value == null || !Number.isFinite(value) || value <= 0) return TOKEN_RATE_EMPTY;
5935
+ const rounded = value >= 0.1 ? Number(value.toFixed(2)) : Number(value.toPrecision(2));
5936
+ return `${rounded}\xD7`;
5937
+ }
5938
+ function tokenCost(tokens, tokenPrice) {
5939
+ if (!tokenPrice || !(tokenPrice.tokens > 0) || !(tokenPrice.price > 0) || !(tokens >= 0)) return null;
5940
+ return tokens / tokenPrice.tokens * tokenPrice.price;
5941
+ }
5942
+ var TOKEN_AMOUNT_UNITS = [
5943
+ { size: 1e9, suffix: "B" },
5944
+ { size: 1e6, suffix: "M" },
5945
+ { size: 1e3, suffix: "K" }
5946
+ ];
5947
+ function formatTokenAmount(tokens) {
5948
+ if (tokens == null || !Number.isFinite(tokens) || tokens < 0) return TOKEN_RATE_EMPTY;
5949
+ const whole = Math.round(tokens);
5950
+ if (whole < 1e3) return String(whole);
5951
+ for (const [index, unit] of TOKEN_AMOUNT_UNITS.entries()) {
5952
+ if (whole < unit.size) continue;
5953
+ const figure = Number((whole / unit.size).toPrecision(3));
5954
+ const larger = TOKEN_AMOUNT_UNITS[index - 1];
5955
+ return figure >= 1e3 && larger ? `1${larger.suffix}` : `${figure}${unit.suffix}`;
5956
+ }
5957
+ return String(whole);
5958
+ }
5959
+ function tokensForBalance(balance, rate) {
5960
+ if (rate == null || !Number.isFinite(rate) || rate <= 0 || !(balance > 0)) return null;
5961
+ return balance / rate;
5962
+ }
5963
+ function tokenRateProviderLabel(providerType, stated) {
5964
+ return aiProvider(providerType, { label: stated }).label;
5965
+ }
5966
+ function groupTokenRatesByProvider(rates) {
5967
+ const groups = /* @__PURE__ */ new Map();
5968
+ for (const rate of rates) {
5969
+ const group = groups.get(rate.providerType);
5970
+ if (group) group.push(rate);
5971
+ else groups.set(rate.providerType, [rate]);
5972
+ }
5973
+ return [...groups].map(([providerType, grouped]) => ({ providerType, rates: grouped }));
5974
+ }
5975
+
5915
5976
  // src/utils/trial.ts
5916
5977
  var TRIAL_DAYS = 14;
5917
5978
  var TRIAL_LABELS = {
@@ -6814,6 +6875,7 @@ var SOURCE_ICON_NAMES = {
6814
6875
  "trust-center": "shield-check",
6815
6876
  // The public website's own pages (live source): the site's own mark, as a glyph in the slot's colour
6816
6877
  "website-pages": "flamingo-logo-grey",
6878
+ "openframe-pricing": "money-bill-dollar",
6817
6879
  // The OpenMSP vendor directory: the icon the site menu's "Tool directory" entry draws (it reads this one)
6818
6880
  vendors: "package-search",
6819
6881
  // Financials
@@ -6879,6 +6941,7 @@ var SOURCE_LABELS_BY_TABLE = {
6879
6941
  // Trust
6880
6942
  "trust-center": "Trust Center",
6881
6943
  "website-pages": "Website",
6944
+ "openframe-pricing": "OpenFrame pricing",
6882
6945
  vendors: "Vendor Directory",
6883
6946
  // Financials
6884
6947
  "investor-updates": "Investor Updates",
@@ -6948,6 +7011,7 @@ var DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = {
6948
7011
  // Trust
6949
7012
  trust_center: "trust-center",
6950
7013
  site_page: "website-pages",
7014
+ openframe_price: "openframe-pricing",
6951
7015
  vendor: "vendors",
6952
7016
  // Financials
6953
7017
  investor_update: "investor-updates",
@@ -15826,6 +15890,9 @@ var REF_GLYPH_CARD_CONFIGS = {
15826
15890
  // A page of the public website (pricing, product, legal, and every page the navigation lists), read live
15827
15891
  // from the data the page shows. A glyph card: a page has no cover of its own, and the card opens the page.
15828
15892
  site_page: { label: "Website page", icon: (ref) => /* @__PURE__ */ jsx85(SitePageGlyph, { iconName: refText(ref, "icon_name") }) },
15893
+ // What OpenFrame charges, read live from its billing: the plan in force, or one AI model's token exchange
15894
+ // rate. A glyph card; it opens the pricing page.
15895
+ openframe_price: { label: "OpenFrame price", icon: () => /* @__PURE__ */ jsx85(OpenFrameGlyph, { size: 24 }) },
15829
15896
  // A vendor (product) of the OpenMSP directory. A glyph card; it opens the vendor's page there.
15830
15897
  vendor: { label: "Vendor", icon: (ref) => /* @__PURE__ */ jsx85(VendorGlyph, { title: ref?.title ?? "", logoUrl: refText(ref, "logo_url") }) }
15831
15898
  };
@@ -26410,6 +26477,15 @@ export {
26410
26477
  getRequestOrigin,
26411
26478
  resolveRedirectTarget,
26412
26479
  getAllPlatformBaseDomains,
26480
+ AI_PROVIDERS,
26481
+ aiProvider,
26482
+ TOKEN_RATE_EMPTY,
26483
+ formatTokenRate,
26484
+ tokenCost,
26485
+ formatTokenAmount,
26486
+ tokensForBalance,
26487
+ tokenRateProviderLabel,
26488
+ groupTokenRatesByProvider,
26413
26489
  TRIAL_DAYS,
26414
26490
  TRIAL_LABELS,
26415
26491
  SEO_TITLE_MAX_LENGTH,
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkP7Y626YJcjs = require('./chunk-P7Y626YJ.cjs');
5
+ var _chunk3NVSC3BUcjs = require('./chunk-3NVSC3BU.cjs');
6
6
 
7
7
 
8
8
 
@@ -45,7 +45,7 @@ function HorizontalSectionNav({
45
45
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "nav", { ref: navRef, "aria-label": label, className: _chunk3ATAYP36cjs.cn.call(void 0, "flex h-14 items-stretch gap-6 bg-ods-bg", className), children: [
46
46
  brand && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden shrink-0 items-center gap-2.5 border-r border-ods-border pr-6 text-ods-text-primary text-h4 content-lg:flex", children: brand }),
47
47
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
48
- _chunkP7Y626YJcjs.ScrollShadow,
48
+ _chunk3NVSC3BUcjs.ScrollShadow,
49
49
  {
50
50
  axis: "horizontal",
51
51
  className: "min-w-0 flex-1",
@@ -330,7 +330,7 @@ function useScrollSpy(sections, options = {}) {
330
330
  // src/components/navigation/multi-level-navigation.tsx
331
331
  var _lucidereact = require('lucide-react');
332
332
 
333
- var DEFAULT_FOLDER_INDEX_FILE2 = _chunkP7Y626YJcjs.DEFAULT_FOLDER_INDEX_FILE;
333
+ var DEFAULT_FOLDER_INDEX_FILE2 = _chunk3NVSC3BUcjs.DEFAULT_FOLDER_INDEX_FILE;
334
334
  function isNodeVisuallySelected(node, selectedPath, folderIndexFile = DEFAULT_FOLDER_INDEX_FILE2) {
335
335
  const FOLDER_INDEX_FILE = folderIndexFile.toLowerCase();
336
336
  if (selectedPath === node.path) {
@@ -6,13 +6,13 @@ var _chunk4LY6R4TNcjs = require('./chunk-4LY6R4TN.cjs');
6
6
 
7
7
 
8
8
 
9
- var _chunkP7Y626YJcjs = require('./chunk-P7Y626YJ.cjs');
9
+ var _chunk3NVSC3BUcjs = require('./chunk-3NVSC3BU.cjs');
10
10
 
11
11
 
12
12
 
13
13
 
14
14
 
15
- var _chunkIITZ6JSCcjs = require('./chunk-IITZ6JSC.cjs');
15
+ var _chunkDGNGABNGcjs = require('./chunk-DGNGABNG.cjs');
16
16
 
17
17
 
18
18
  var _chunkTKFTWM3Vcjs = require('./chunk-TKFTWM3V.cjs');
@@ -118,31 +118,31 @@ CveLink.displayName = "CveLink";
118
118
  // src/components/platform/ShellTypeBadge.tsx
119
119
 
120
120
  var shellIconMap = {
121
- [_chunkP7Y626YJcjs.ShellTypeValues.POWERSHELL]: {
121
+ [_chunk3NVSC3BUcjs.ShellTypeValues.POWERSHELL]: {
122
122
  icon: _chunkVX4E6YSBcjs.PowershellLogoGreyIcon,
123
123
  props: { size: 16, className: "text-ods-text-secondary" }
124
124
  },
125
- [_chunkP7Y626YJcjs.ShellTypeValues.CMD]: {
125
+ [_chunk3NVSC3BUcjs.ShellTypeValues.CMD]: {
126
126
  icon: _chunkLLSUVPQCcjs.CmdIcon,
127
127
  props: { size: 16, color: "var(--color-text-secondary)" }
128
128
  },
129
- [_chunkP7Y626YJcjs.ShellTypeValues.BASH]: {
129
+ [_chunk3NVSC3BUcjs.ShellTypeValues.BASH]: {
130
130
  icon: _chunkLLSUVPQCcjs.BashIcon,
131
131
  props: { size: 16, color: "var(--color-text-secondary)" }
132
132
  },
133
- [_chunkP7Y626YJcjs.ShellTypeValues.PYTHON]: {
133
+ [_chunk3NVSC3BUcjs.ShellTypeValues.PYTHON]: {
134
134
  icon: _chunkVX4E6YSBcjs.PythonLogoIcon,
135
135
  props: { size: 16, className: "text-ods-text-secondary" }
136
136
  },
137
- [_chunkP7Y626YJcjs.ShellTypeValues.NUSHELL]: {
137
+ [_chunk3NVSC3BUcjs.ShellTypeValues.NUSHELL]: {
138
138
  icon: _chunkLLSUVPQCcjs.NushellIcon,
139
139
  props: { size: 16, color: "var(--color-text-secondary)" }
140
140
  },
141
- [_chunkP7Y626YJcjs.ShellTypeValues.DENO]: {
141
+ [_chunk3NVSC3BUcjs.ShellTypeValues.DENO]: {
142
142
  icon: _chunkLLSUVPQCcjs.DenoIcon,
143
143
  props: { size: 16, color: "var(--color-text-secondary)" }
144
144
  },
145
- [_chunkP7Y626YJcjs.ShellTypeValues.SHELL]: {
145
+ [_chunk3NVSC3BUcjs.ShellTypeValues.SHELL]: {
146
146
  icon: _chunkLLSUVPQCcjs.ShellIcon,
147
147
  props: { size: 16, color: "var(--color-text-secondary)" }
148
148
  }
@@ -153,7 +153,7 @@ var defaultIconConfig = {
153
153
  };
154
154
  var ShellTypeBadge = ({ shellType, className, iconClassName }) => {
155
155
  const normalizedType = _optionalChain([shellType, 'optionalAccess', _ => _.toUpperCase, 'call', _2 => _2()]);
156
- const label = _chunkP7Y626YJcjs.getShellLabel.call(void 0, normalizedType);
156
+ const label = _chunk3NVSC3BUcjs.getShellLabel.call(void 0, normalizedType);
157
157
  const { icon: IconComponent, props: iconProps } = _nullishCoalesce(shellIconMap[normalizedType], () => ( defaultIconConfig));
158
158
  const defaultIconClassName = "className" in iconProps ? iconProps.className : void 0;
159
159
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex items-center gap-1", className), children: [
@@ -169,7 +169,7 @@ function formatSupportedPlatforms(platforms) {
169
169
  if (!platforms || platforms.length === 0) {
170
170
  return "All Platforms";
171
171
  }
172
- return platforms.map((platform) => _chunkP7Y626YJcjs.getOSLabel.call(void 0, platform)).join(", ");
172
+ return platforms.map((platform) => _chunk3NVSC3BUcjs.getOSLabel.call(void 0, platform)).join(", ");
173
173
  }
174
174
  function InfoCell({ label, value, avatar, className }) {
175
175
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex min-w-0 items-center gap-2", className), children: [
@@ -189,7 +189,7 @@ var ScriptInfoSection = ({
189
189
  author,
190
190
  className
191
191
  }) => {
192
- const shellLabel = _chunkP7Y626YJcjs.getShellLabel.call(void 0, shellType);
192
+ const shellLabel = _chunk3NVSC3BUcjs.getShellLabel.call(void 0, shellType);
193
193
  const platformsLabel = formatSupportedPlatforms(supportedPlatforms);
194
194
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "overflow-hidden rounded-[6px] border border-ods-border bg-ods-card", className), children: [
195
195
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border-b border-ods-border p-4", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-1", children: [
@@ -364,7 +364,7 @@ function OnboardingStepCard({
364
364
  onSkip();
365
365
  };
366
366
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
367
- _chunkIITZ6JSCcjs.InteractiveCard,
367
+ _chunkDGNGABNGcjs.InteractiveCard,
368
368
  {
369
369
  clickable: false,
370
370
  className: _chunk3ATAYP36cjs.cn.call(void 0,
@@ -390,7 +390,7 @@ function OnboardingStepCard({
390
390
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[32px] w-[100px] animate-pulse rounded-[6px] bg-ods-border" }),
391
391
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[32px] w-[120px] animate-pulse rounded-[6px] bg-ods-border" })
392
392
  ] }) : isCompleted ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
393
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.StatusBadge, { text: "COMPLETED", variant: "card", colorScheme: "success" }),
393
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDGNGABNGcjs.StatusBadge, { text: "COMPLETED", variant: "card", colorScheme: "success" }),
394
394
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
395
395
  _chunkHQIOMFJHcjs.Button,
396
396
  {
@@ -401,7 +401,7 @@ function OnboardingStepCard({
401
401
  children: step.completedText
402
402
  }
403
403
  )
404
- ] }) : isSkipped ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.StatusBadge, { text: "SKIPPED", variant: "card", colorScheme: "default" }) }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
404
+ ] }) : isSkipped ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDGNGABNGcjs.StatusBadge, { text: "SKIPPED", variant: "card", colorScheme: "default" }) }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
405
405
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHQIOMFJHcjs.Button, { variant: "outline", onClick: handleSkip, children: "Skip Step" }),
406
406
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHQIOMFJHcjs.Button, { variant: "accent", onClick: handleAction, disabled: isProcessing, leftIcon: step.actionIcon("black"), children: step.actionText })
407
407
  ] })
@@ -518,7 +518,7 @@ function OnboardingWalkthrough({
518
518
  const isAllComplete = allStepsComplete(steps);
519
519
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "w-full space-y-4", className), children: [
520
520
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col items-start justify-between gap-3 md:flex-row md:items-center md:gap-0", children: [
521
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: _chunkIITZ6JSCcjs.SECTION_HEADING_CLASS, children: _chunkIITZ6JSCcjs.accentSentenceMarks.call(void 0, title) }),
521
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: _chunkDGNGABNGcjs.SECTION_HEADING_CLASS, children: _chunkDGNGABNGcjs.accentSentenceMarks.call(void 0, title) }),
522
522
  isLoadingCompletion ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[48px] w-full animate-pulse rounded-[6px] bg-ods-border md:w-[160px]" }) : isAllComplete ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHQIOMFJHcjs.Button, { variant: "accent", onClick: handleDismiss, className: "w-full md:w-auto", children: "Close Onboarding" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHQIOMFJHcjs.Button, { variant: "outline", onClick: handleDismiss, className: "w-full md:w-auto", children: "Skip Onboarding" })
523
523
  ] }),
524
524
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, spacing), children: steps.map((step) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -10,7 +10,7 @@ import {
10
10
  ModalHeader,
11
11
  ModalTitle,
12
12
  formatTime
13
- } from "./chunk-WY4SLTMZ.js";
13
+ } from "./chunk-MRBPJ4NB.js";
14
14
  import {
15
15
  ActionsMenuDropdown,
16
16
  Tooltip,