@primer/brand-mcp 0.74.0 → 0.75.0-rc.89e3cadf

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.
@@ -33,7 +33,7 @@ export function resolveInstalledAssets(fromDir = process.cwd()) {
33
33
  /** Collects exported PascalCase const names from a package's `.d.ts` type declarations. */
34
34
  const exportedNames = (packageDir) => {
35
35
  const names = new Set();
36
- for (const subDir of ['dist', 'lib', '.']) {
36
+ for (const subDir of ['dist', 'dist/icons', 'lib', '.']) {
37
37
  let entries;
38
38
  try {
39
39
  entries = readdirSync(join(packageDir, subDir));
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-assets.js","sourceRoot":"","sources":["../../../src/brand/resolve-assets/resolve-assets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-assets.js","sourceRoot":"","sources":["../../../src/brand/resolve-assets/resolve-assets.ts"],"names":[],"mappings":"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"}
package/dist/catalog.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "brandPackage": "@primer/react-brand",
3
- "generatedFromVersion": "0.74.0",
4
- "generatedAt": "2026-08-26T14:41:49.838Z",
3
+ "generatedFromVersion": "0.75.0-rc.89e3cadf",
4
+ "generatedAt": "2026-09-03T15:37:04.851Z",
5
5
  "components": [
6
6
  {
7
7
  "name": "Hero",
@@ -66,7 +66,7 @@
66
66
  "examples": [
67
67
  {
68
68
  "title": "Hero example",
69
- "code": "<Hero\n imageContainerRef={imageRef}\n enableAnimation\n variant=\"gridline-expressive\"\n trailingComponent={() => (\n <Text variant=\"muted\">\n Already have Visual Studio Code? <InlineLink href=\"#\">Open now</InlineLink>\n </Text>\n )}\n>\n <Hero.Label>GitHub Copilot</Hero.Label>\n <Hero.Heading>Command your craft</Hero.Heading>\n <Hero.Description>Your AI accelerator for every workflow, from the editor to the enterprise.</Hero.Description>\n <Hero.ButtonGroup>\n <Button as=\"a\" href=\"#\">\n Try Copilot now\n </Button>\n <Button as=\"a\" href=\"#\">\n See plans & pricing\n </Button>\n </Hero.ButtonGroup>\n <Hero.Image\n enableBorder={false}\n position=\"block-end\"\n src={renderUI3}\n alt=\"placeholder image, blank with gray solid fill\"\n />\n</Hero>",
69
+ "code": "<Hero\n imageContainerRef={imageRef}\n enableAnimation\n variant=\"gridline-expressive\"\n trailingComponent={() => (\n <Text variant=\"muted\">\n Already have Visual Studio Code? <InlineLink href=\"#\">Open now</InlineLink>\n </Text>\n )}\n>\n <Hero.Label animate initialText=\"Your AI assistant\">\n Your AI accelerator\n </Hero.Label>\n <Hero.Heading>Command your craft</Hero.Heading>\n <Hero.Description>Your AI accelerator for every workflow, from the editor to the enterprise.</Hero.Description>\n <Hero.ButtonGroup>\n <Button as=\"a\" href=\"#\">\n Try Copilot now\n </Button>\n <Button as=\"a\" href=\"#\">\n See plans & pricing\n </Button>\n </Hero.ButtonGroup>\n <Hero.Image\n enableBorder={false}\n position=\"block-end\"\n src={renderUI3}\n alt=\"placeholder image, blank with gray solid fill\"\n />\n</Hero>",
70
70
  "source": "story"
71
71
  }
72
72
  ],
@@ -583,6 +583,8 @@
583
583
  "name": "SubdomainNavBar",
584
584
  "module": "@primer/react-brand",
585
585
  "subcomponents": [
586
+ "SubdomainNavBar.openSearch",
587
+ "SubdomainNavBar.closeSearch",
586
588
  "SubdomainNavBar.Link",
587
589
  "SubdomainNavBar.Search",
588
590
  "SubdomainNavBar.PrimaryAction",
@@ -590,12 +592,6 @@
590
592
  "SubdomainNavBar.testIds"
591
593
  ],
592
594
  "props": [
593
- {
594
- "name": "className",
595
- "type": "string",
596
- "description": "Forward a custom HTML class attribute",
597
- "required": false
598
- },
599
595
  {
600
596
  "name": "fixed",
601
597
  "type": "boolean",
@@ -608,10 +604,22 @@
608
604
  "description": "Fill the maximum width of the parent container. Defaults to `false`.",
609
605
  "required": false
610
606
  },
607
+ {
608
+ "name": "leadingComponent",
609
+ "type": "React.ReactElement",
610
+ "description": "Optional React element rendered after the navigation links.",
611
+ "required": false
612
+ },
613
+ {
614
+ "name": "trailingComponent",
615
+ "type": "React.ReactElement",
616
+ "description": "Optional React element rendered after the actions.",
617
+ "required": false
618
+ },
611
619
  {
612
620
  "name": "title",
613
621
  "type": "string",
614
- "description": "The title or name of the subdomain. Appears adjacent to the logo and is required for communicating content to assisitive technologies.",
622
+ "description": "The title or name of the subdomain. Appears adjacent to the logo and is required for communicating content to assistive technologies.",
615
623
  "required": true
616
624
  },
617
625
  {
@@ -625,9 +633,27 @@
625
633
  "type": "string",
626
634
  "description": "Optionally change the URL of the logo",
627
635
  "required": false
636
+ },
637
+ {
638
+ "name": "menuLabels",
639
+ "type": "Partial<SubdomainNavBarMenuLabels>",
640
+ "description": "Customizable visible and accessible menu labels.",
641
+ "required": false
642
+ },
643
+ {
644
+ "name": "skipToContentTargetId",
645
+ "type": "string",
646
+ "description": "ID of the element that receives focus when the skip-to-content link is activated. Defaults to the first rendered `main` element that is not hidden from assistive technologies.",
647
+ "required": false
648
+ }
649
+ ],
650
+ "examples": [
651
+ {
652
+ "title": "SubdomainNavBar example",
653
+ "code": "<SubdomainNavBar\n title=\"Site title\"\n titleHref=\"/\"\n fullWidth\n fixed={false}\n leadingComponent={<Token>v1.5.3</Token>}\n trailingComponent={\n <ActionMenu size=\"small\" onSelect={setSelectedLanguage} selectionVariant=\"single\">\n <ActionMenu.Button variant=\"secondary\" leadingVisual={<GlobeIcon />}>\n {selectedLanguage}\n </ActionMenu.Button>\n <ActionMenu.Overlay aria-label=\"Select language\">\n {['English', 'Deutsch', 'Español', 'Français', '日本語'].map(language => (\n <ActionMenu.Item key={language} value={language} selected={language === selectedLanguage}>\n {language}\n </ActionMenu.Item>\n ))}\n </ActionMenu.Overlay>\n </ActionMenu>\n }\n>\n <SubdomainNavBar.Link href=\"#default\">Default</SubdomainNavBar.Link>\n <SubdomainNavBar.Link href=\"#hover\">Hover</SubdomainNavBar.Link>\n <SubdomainNavBar.Link href=\"#focus\">Focus</SubdomainNavBar.Link>\n <SubdomainNavBar.Link href=\"#active\">Active</SubdomainNavBar.Link>\n <SubdomainNavBar.Link href=\"#current\" aria-current=\"page\">\n Current\n </SubdomainNavBar.Link>\n <SubdomainNavBar.Search\n placeholder=\"Search ...\"\n keyboardShortcut=\"/\"\n searchTerm=\"How do i\"\n searchResults={groupedSearchResults}\n onSubmit={event => event.preventDefault()}\n onChange={() => undefined}\n />\n <SubdomainNavBar.SecondaryAction href=\"#\">Contact sales</SubdomainNavBar.SecondaryAction>\n <SubdomainNavBar.PrimaryAction href=\"#\">Get started</SubdomainNavBar.PrimaryAction>\n</SubdomainNavBar>",
654
+ "source": "story"
628
655
  }
629
656
  ],
630
- "examples": [],
631
657
  "description": "Use the subdomain nav bar component for top level navigation for subdomain sites.",
632
658
  "keywords": [
633
659
  "navigation",
@@ -3373,7 +3399,13 @@
3373
3399
  {
3374
3400
  "name": "animate",
3375
3401
  "type": "boolean",
3376
- "description": "Whether to animate the text reveal with a sliding wipe animation and a cursor that transitions from grey to green.",
3402
+ "description": "Whether to animate the text with a typing effect.",
3403
+ "required": false
3404
+ },
3405
+ {
3406
+ "name": "initialText",
3407
+ "type": "string",
3408
+ "description": "Optional text to type before transitioning to the final text",
3377
3409
  "required": false
3378
3410
  },
3379
3411
  {
@@ -3456,12 +3488,12 @@
3456
3488
  "kind": "icon"
3457
3489
  },
3458
3490
  {
3459
- "name": "AlertIcon",
3491
+ "name": "AlertFillIcon",
3460
3492
  "module": "@primer/octicons-react",
3461
3493
  "kind": "icon"
3462
3494
  },
3463
3495
  {
3464
- "name": "AlertFillIcon",
3496
+ "name": "AlertIcon",
3465
3497
  "module": "@primer/octicons-react",
3466
3498
  "kind": "icon"
3467
3499
  },
@@ -3531,12 +3563,12 @@
3531
3563
  "kind": "icon"
3532
3564
  },
3533
3565
  {
3534
- "name": "BellIcon",
3566
+ "name": "BellFillIcon",
3535
3567
  "module": "@primer/octicons-react",
3536
3568
  "kind": "icon"
3537
3569
  },
3538
3570
  {
3539
- "name": "BellFillIcon",
3571
+ "name": "BellIcon",
3540
3572
  "module": "@primer/octicons-react",
3541
3573
  "kind": "icon"
3542
3574
  },
@@ -3566,27 +3598,27 @@
3566
3598
  "kind": "icon"
3567
3599
  },
3568
3600
  {
3569
- "name": "BookmarkIcon",
3601
+ "name": "BookmarkFillIcon",
3570
3602
  "module": "@primer/octicons-react",
3571
3603
  "kind": "icon"
3572
3604
  },
3573
3605
  {
3574
- "name": "BookmarkFillIcon",
3606
+ "name": "BookmarkFilledIcon",
3575
3607
  "module": "@primer/octicons-react",
3576
3608
  "kind": "icon"
3577
3609
  },
3578
3610
  {
3579
- "name": "BookmarkFilledIcon",
3611
+ "name": "BookmarkIcon",
3580
3612
  "module": "@primer/octicons-react",
3581
3613
  "kind": "icon"
3582
3614
  },
3583
3615
  {
3584
- "name": "BookmarkSlashIcon",
3616
+ "name": "BookmarkSlashFillIcon",
3585
3617
  "module": "@primer/octicons-react",
3586
3618
  "kind": "icon"
3587
3619
  },
3588
3620
  {
3589
- "name": "BookmarkSlashFillIcon",
3621
+ "name": "BookmarkSlashIcon",
3590
3622
  "module": "@primer/octicons-react",
3591
3623
  "kind": "icon"
3592
3624
  },
@@ -3631,7 +3663,7 @@
3631
3663
  "kind": "icon"
3632
3664
  },
3633
3665
  {
3634
- "name": "CheckIcon",
3666
+ "name": "CheckCircleFillIcon",
3635
3667
  "module": "@primer/octicons-react",
3636
3668
  "kind": "icon"
3637
3669
  },
@@ -3641,17 +3673,17 @@
3641
3673
  "kind": "icon"
3642
3674
  },
3643
3675
  {
3644
- "name": "CheckCircleFillIcon",
3676
+ "name": "CheckIcon",
3645
3677
  "module": "@primer/octicons-react",
3646
3678
  "kind": "icon"
3647
3679
  },
3648
3680
  {
3649
- "name": "CheckboxIcon",
3681
+ "name": "CheckboxFillIcon",
3650
3682
  "module": "@primer/octicons-react",
3651
3683
  "kind": "icon"
3652
3684
  },
3653
3685
  {
3654
- "name": "CheckboxFillIcon",
3686
+ "name": "CheckboxIcon",
3655
3687
  "module": "@primer/octicons-react",
3656
3688
  "kind": "icon"
3657
3689
  },
@@ -3691,12 +3723,12 @@
3691
3723
  "kind": "icon"
3692
3724
  },
3693
3725
  {
3694
- "name": "ClockIcon",
3726
+ "name": "ClockFillIcon",
3695
3727
  "module": "@primer/octicons-react",
3696
3728
  "kind": "icon"
3697
3729
  },
3698
3730
  {
3699
- "name": "ClockFillIcon",
3731
+ "name": "ClockIcon",
3700
3732
  "module": "@primer/octicons-react",
3701
3733
  "kind": "icon"
3702
3734
  },
@@ -3731,12 +3763,12 @@
3731
3763
  "kind": "icon"
3732
3764
  },
3733
3765
  {
3734
- "name": "CodescanIcon",
3766
+ "name": "CodescanCheckmarkIcon",
3735
3767
  "module": "@primer/octicons-react",
3736
3768
  "kind": "icon"
3737
3769
  },
3738
3770
  {
3739
- "name": "CodescanCheckmarkIcon",
3771
+ "name": "CodescanIcon",
3740
3772
  "module": "@primer/octicons-react",
3741
3773
  "kind": "icon"
3742
3774
  },
@@ -3756,17 +3788,17 @@
3756
3788
  "kind": "icon"
3757
3789
  },
3758
3790
  {
3759
- "name": "CommentIcon",
3791
+ "name": "CommentAiIcon",
3760
3792
  "module": "@primer/octicons-react",
3761
3793
  "kind": "icon"
3762
3794
  },
3763
3795
  {
3764
- "name": "CommentAiIcon",
3796
+ "name": "CommentDiscussionIcon",
3765
3797
  "module": "@primer/octicons-react",
3766
3798
  "kind": "icon"
3767
3799
  },
3768
3800
  {
3769
- "name": "CommentDiscussionIcon",
3801
+ "name": "CommentIcon",
3770
3802
  "module": "@primer/octicons-react",
3771
3803
  "kind": "icon"
3772
3804
  },
@@ -3786,12 +3818,12 @@
3786
3818
  "kind": "icon"
3787
3819
  },
3788
3820
  {
3789
- "name": "CopilotIcon",
3821
+ "name": "CopilotErrorIcon",
3790
3822
  "module": "@primer/octicons-react",
3791
3823
  "kind": "icon"
3792
3824
  },
3793
3825
  {
3794
- "name": "CopilotErrorIcon",
3826
+ "name": "CopilotIcon",
3795
3827
  "module": "@primer/octicons-react",
3796
3828
  "kind": "icon"
3797
3829
  },
@@ -3881,12 +3913,12 @@
3881
3913
  "kind": "icon"
3882
3914
  },
3883
3915
  {
3884
- "name": "DiffIcon",
3916
+ "name": "DiffAddedIcon",
3885
3917
  "module": "@primer/octicons-react",
3886
3918
  "kind": "icon"
3887
3919
  },
3888
3920
  {
3889
- "name": "DiffAddedIcon",
3921
+ "name": "DiffIcon",
3890
3922
  "module": "@primer/octicons-react",
3891
3923
  "kind": "icon"
3892
3924
  },
@@ -3926,12 +3958,12 @@
3926
3958
  "kind": "icon"
3927
3959
  },
3928
3960
  {
3929
- "name": "DotIcon",
3961
+ "name": "DotFillIcon",
3930
3962
  "module": "@primer/octicons-react",
3931
3963
  "kind": "icon"
3932
3964
  },
3933
3965
  {
3934
- "name": "DotFillIcon",
3966
+ "name": "DotIcon",
3935
3967
  "module": "@primer/octicons-react",
3936
3968
  "kind": "icon"
3937
3969
  },
@@ -3956,12 +3988,12 @@
3956
3988
  "kind": "icon"
3957
3989
  },
3958
3990
  {
3959
- "name": "EyeIcon",
3991
+ "name": "EyeClosedIcon",
3960
3992
  "module": "@primer/octicons-react",
3961
3993
  "kind": "icon"
3962
3994
  },
3963
3995
  {
3964
- "name": "EyeClosedIcon",
3996
+ "name": "EyeIcon",
3965
3997
  "module": "@primer/octicons-react",
3966
3998
  "kind": "icon"
3967
3999
  },
@@ -4060,11 +4092,6 @@
4060
4092
  "module": "@primer/octicons-react",
4061
4093
  "kind": "icon"
4062
4094
  },
4063
- {
4064
- "name": "FileIcon",
4065
- "module": "@primer/octicons-react",
4066
- "kind": "icon"
4067
- },
4068
4095
  {
4069
4096
  "name": "FileAddedIcon",
4070
4097
  "module": "@primer/octicons-react",
@@ -4096,12 +4123,12 @@
4096
4123
  "kind": "icon"
4097
4124
  },
4098
4125
  {
4099
- "name": "FileDirectoryIcon",
4126
+ "name": "FileDirectoryFillIcon",
4100
4127
  "module": "@primer/octicons-react",
4101
4128
  "kind": "icon"
4102
4129
  },
4103
4130
  {
4104
- "name": "FileDirectoryFillIcon",
4131
+ "name": "FileDirectoryIcon",
4105
4132
  "module": "@primer/octicons-react",
4106
4133
  "kind": "icon"
4107
4134
  },
@@ -4115,6 +4142,11 @@
4115
4142
  "module": "@primer/octicons-react",
4116
4143
  "kind": "icon"
4117
4144
  },
4145
+ {
4146
+ "name": "FileIcon",
4147
+ "module": "@primer/octicons-react",
4148
+ "kind": "icon"
4149
+ },
4118
4150
  {
4119
4151
  "name": "FileMediaIcon",
4120
4152
  "module": "@primer/octicons-react",
@@ -4160,6 +4192,11 @@
4160
4192
  "module": "@primer/octicons-react",
4161
4193
  "kind": "icon"
4162
4194
  },
4195
+ {
4196
+ "name": "FlagIcon",
4197
+ "module": "@primer/octicons-react",
4198
+ "kind": "icon"
4199
+ },
4163
4200
  {
4164
4201
  "name": "FlameIcon",
4165
4202
  "module": "@primer/octicons-react",
@@ -4176,12 +4213,12 @@
4176
4213
  "kind": "icon"
4177
4214
  },
4178
4215
  {
4179
- "name": "FoldIcon",
4216
+ "name": "FoldDownIcon",
4180
4217
  "module": "@primer/octicons-react",
4181
4218
  "kind": "icon"
4182
4219
  },
4183
4220
  {
4184
- "name": "FoldDownIcon",
4221
+ "name": "FoldIcon",
4185
4222
  "module": "@primer/octicons-react",
4186
4223
  "kind": "icon"
4187
4224
  },
@@ -4201,12 +4238,12 @@
4201
4238
  "kind": "icon"
4202
4239
  },
4203
4240
  {
4204
- "name": "GitBranchIcon",
4241
+ "name": "GitBranchCheckIcon",
4205
4242
  "module": "@primer/octicons-react",
4206
4243
  "kind": "icon"
4207
4244
  },
4208
4245
  {
4209
- "name": "GitBranchCheckIcon",
4246
+ "name": "GitBranchIcon",
4210
4247
  "module": "@primer/octicons-react",
4211
4248
  "kind": "icon"
4212
4249
  },
@@ -4231,17 +4268,17 @@
4231
4268
  "kind": "icon"
4232
4269
  },
4233
4270
  {
4234
- "name": "GitPullRequestIcon",
4271
+ "name": "GitPullRequestClosedIcon",
4235
4272
  "module": "@primer/octicons-react",
4236
4273
  "kind": "icon"
4237
4274
  },
4238
4275
  {
4239
- "name": "GitPullRequestClosedIcon",
4276
+ "name": "GitPullRequestDraftIcon",
4240
4277
  "module": "@primer/octicons-react",
4241
4278
  "kind": "icon"
4242
4279
  },
4243
4280
  {
4244
- "name": "GitPullRequestDraftIcon",
4281
+ "name": "GitPullRequestIcon",
4245
4282
  "module": "@primer/octicons-react",
4246
4283
  "kind": "icon"
4247
4284
  },
@@ -4266,17 +4303,22 @@
4266
4303
  "kind": "icon"
4267
4304
  },
4268
4305
  {
4269
- "name": "GraphIcon",
4306
+ "name": "GraphBarHorizontalIcon",
4270
4307
  "module": "@primer/octicons-react",
4271
4308
  "kind": "icon"
4272
4309
  },
4273
4310
  {
4274
- "name": "GraphBarHorizontalIcon",
4311
+ "name": "GraphBarVerticalIcon",
4275
4312
  "module": "@primer/octicons-react",
4276
4313
  "kind": "icon"
4277
4314
  },
4278
4315
  {
4279
- "name": "GraphBarVerticalIcon",
4316
+ "name": "GraphIcon",
4317
+ "module": "@primer/octicons-react",
4318
+ "kind": "icon"
4319
+ },
4320
+ {
4321
+ "name": "GraphStackedAreaIcon",
4280
4322
  "module": "@primer/octicons-react",
4281
4323
  "kind": "icon"
4282
4324
  },
@@ -4291,12 +4333,12 @@
4291
4333
  "kind": "icon"
4292
4334
  },
4293
4335
  {
4294
- "name": "HeartIcon",
4336
+ "name": "HeartFillIcon",
4295
4337
  "module": "@primer/octicons-react",
4296
4338
  "kind": "icon"
4297
4339
  },
4298
4340
  {
4299
- "name": "HeartFillIcon",
4341
+ "name": "HeartIcon",
4300
4342
  "module": "@primer/octicons-react",
4301
4343
  "kind": "icon"
4302
4344
  },
@@ -4306,12 +4348,12 @@
4306
4348
  "kind": "icon"
4307
4349
  },
4308
4350
  {
4309
- "name": "HomeIcon",
4351
+ "name": "HomeFillIcon",
4310
4352
  "module": "@primer/octicons-react",
4311
4353
  "kind": "icon"
4312
4354
  },
4313
4355
  {
4314
- "name": "HomeFillIcon",
4356
+ "name": "HomeIcon",
4315
4357
  "module": "@primer/octicons-react",
4316
4358
  "kind": "icon"
4317
4359
  },
@@ -4341,12 +4383,12 @@
4341
4383
  "kind": "icon"
4342
4384
  },
4343
4385
  {
4344
- "name": "InboxIcon",
4386
+ "name": "InboxFillIcon",
4345
4387
  "module": "@primer/octicons-react",
4346
4388
  "kind": "icon"
4347
4389
  },
4348
4390
  {
4349
- "name": "InboxFillIcon",
4391
+ "name": "InboxIcon",
4350
4392
  "module": "@primer/octicons-react",
4351
4393
  "kind": "icon"
4352
4394
  },
@@ -4380,6 +4422,11 @@
4380
4422
  "module": "@primer/octicons-react",
4381
4423
  "kind": "icon"
4382
4424
  },
4425
+ {
4426
+ "name": "IssueRelatesToIcon",
4427
+ "module": "@primer/octicons-react",
4428
+ "kind": "icon"
4429
+ },
4383
4430
  {
4384
4431
  "name": "IssueReopenedIcon",
4385
4432
  "module": "@primer/octicons-react",
@@ -4411,12 +4458,12 @@
4411
4458
  "kind": "icon"
4412
4459
  },
4413
4460
  {
4414
- "name": "KeyIcon",
4461
+ "name": "KeyAsteriskIcon",
4415
4462
  "module": "@primer/octicons-react",
4416
4463
  "kind": "icon"
4417
4464
  },
4418
4465
  {
4419
- "name": "KeyAsteriskIcon",
4466
+ "name": "KeyIcon",
4420
4467
  "module": "@primer/octicons-react",
4421
4468
  "kind": "icon"
4422
4469
  },
@@ -4431,12 +4478,12 @@
4431
4478
  "kind": "icon"
4432
4479
  },
4433
4480
  {
4434
- "name": "LinkIcon",
4481
+ "name": "LinkExternalIcon",
4435
4482
  "module": "@primer/octicons-react",
4436
4483
  "kind": "icon"
4437
4484
  },
4438
4485
  {
4439
- "name": "LinkExternalIcon",
4486
+ "name": "LinkIcon",
4440
4487
  "module": "@primer/octicons-react",
4441
4488
  "kind": "icon"
4442
4489
  },
@@ -4581,12 +4628,12 @@
4581
4628
  "kind": "icon"
4582
4629
  },
4583
4630
  {
4584
- "name": "NoEntryIcon",
4631
+ "name": "NoEntryFillIcon",
4585
4632
  "module": "@primer/octicons-react",
4586
4633
  "kind": "icon"
4587
4634
  },
4588
4635
  {
4589
- "name": "NoEntryFillIcon",
4636
+ "name": "NoEntryIcon",
4590
4637
  "module": "@primer/octicons-react",
4591
4638
  "kind": "icon"
4592
4639
  },
@@ -4616,17 +4663,17 @@
4616
4663
  "kind": "icon"
4617
4664
  },
4618
4665
  {
4619
- "name": "PackageIcon",
4666
+ "name": "PackageDependenciesIcon",
4620
4667
  "module": "@primer/octicons-react",
4621
4668
  "kind": "icon"
4622
4669
  },
4623
4670
  {
4624
- "name": "PackageDependenciesIcon",
4671
+ "name": "PackageDependentsIcon",
4625
4672
  "module": "@primer/octicons-react",
4626
4673
  "kind": "icon"
4627
4674
  },
4628
4675
  {
4629
- "name": "PackageDependentsIcon",
4676
+ "name": "PackageIcon",
4630
4677
  "module": "@primer/octicons-react",
4631
4678
  "kind": "icon"
4632
4679
  },
@@ -4661,12 +4708,12 @@
4661
4708
  "kind": "icon"
4662
4709
  },
4663
4710
  {
4664
- "name": "PencilIcon",
4711
+ "name": "PencilAiIcon",
4665
4712
  "module": "@primer/octicons-react",
4666
4713
  "kind": "icon"
4667
4714
  },
4668
4715
  {
4669
- "name": "PencilAiIcon",
4716
+ "name": "PencilIcon",
4670
4717
  "module": "@primer/octicons-react",
4671
4718
  "kind": "icon"
4672
4719
  },
@@ -4676,17 +4723,17 @@
4676
4723
  "kind": "icon"
4677
4724
  },
4678
4725
  {
4679
- "name": "PersonIcon",
4726
+ "name": "PersonAddIcon",
4680
4727
  "module": "@primer/octicons-react",
4681
4728
  "kind": "icon"
4682
4729
  },
4683
4730
  {
4684
- "name": "PersonAddIcon",
4731
+ "name": "PersonFillIcon",
4685
4732
  "module": "@primer/octicons-react",
4686
4733
  "kind": "icon"
4687
4734
  },
4688
4735
  {
4689
- "name": "PersonFillIcon",
4736
+ "name": "PersonIcon",
4690
4737
  "module": "@primer/octicons-react",
4691
4738
  "kind": "icon"
4692
4739
  },
@@ -4715,13 +4762,18 @@
4715
4762
  "module": "@primer/octicons-react",
4716
4763
  "kind": "icon"
4717
4764
  },
4765
+ {
4766
+ "name": "PlusCircleIcon",
4767
+ "module": "@primer/octicons-react",
4768
+ "kind": "icon"
4769
+ },
4718
4770
  {
4719
4771
  "name": "PlusIcon",
4720
4772
  "module": "@primer/octicons-react",
4721
4773
  "kind": "icon"
4722
4774
  },
4723
4775
  {
4724
- "name": "PlusCircleIcon",
4776
+ "name": "ProjectCheckIcon",
4725
4777
  "module": "@primer/octicons-react",
4726
4778
  "kind": "icon"
4727
4779
  },
@@ -4750,6 +4802,11 @@
4750
4802
  "module": "@primer/octicons-react",
4751
4803
  "kind": "icon"
4752
4804
  },
4805
+ {
4806
+ "name": "QuestionBubbleIcon",
4807
+ "module": "@primer/octicons-react",
4808
+ "kind": "icon"
4809
+ },
4753
4810
  {
4754
4811
  "name": "QuestionIcon",
4755
4812
  "module": "@primer/octicons-react",
@@ -4780,11 +4837,6 @@
4780
4837
  "module": "@primer/octicons-react",
4781
4838
  "kind": "icon"
4782
4839
  },
4783
- {
4784
- "name": "RepoIcon",
4785
- "module": "@primer/octicons-react",
4786
- "kind": "icon"
4787
- },
4788
4840
  {
4789
4841
  "name": "RepoCloneIcon",
4790
4842
  "module": "@primer/octicons-react",
@@ -4805,6 +4857,16 @@
4805
4857
  "module": "@primer/octicons-react",
4806
4858
  "kind": "icon"
4807
4859
  },
4860
+ {
4861
+ "name": "RepoForkedLockedIcon",
4862
+ "module": "@primer/octicons-react",
4863
+ "kind": "icon"
4864
+ },
4865
+ {
4866
+ "name": "RepoIcon",
4867
+ "module": "@primer/octicons-react",
4868
+ "kind": "icon"
4869
+ },
4808
4870
  {
4809
4871
  "name": "RepoLockedIcon",
4810
4872
  "module": "@primer/octicons-react",
@@ -4850,6 +4912,11 @@
4850
4912
  "module": "@primer/octicons-react",
4851
4913
  "kind": "icon"
4852
4914
  },
4915
+ {
4916
+ "name": "SandboxIcon",
4917
+ "module": "@primer/octicons-react",
4918
+ "kind": "icon"
4919
+ },
4853
4920
  {
4854
4921
  "name": "ScreenFullIcon",
4855
4922
  "module": "@primer/octicons-react",
@@ -4871,22 +4938,22 @@
4871
4938
  "kind": "icon"
4872
4939
  },
4873
4940
  {
4874
- "name": "ShareIcon",
4941
+ "name": "ShareAndroidIcon",
4875
4942
  "module": "@primer/octicons-react",
4876
4943
  "kind": "icon"
4877
4944
  },
4878
4945
  {
4879
- "name": "ShareAndroidIcon",
4946
+ "name": "ShareIcon",
4880
4947
  "module": "@primer/octicons-react",
4881
4948
  "kind": "icon"
4882
4949
  },
4883
4950
  {
4884
- "name": "ShieldIcon",
4951
+ "name": "ShieldCheckIcon",
4885
4952
  "module": "@primer/octicons-react",
4886
4953
  "kind": "icon"
4887
4954
  },
4888
4955
  {
4889
- "name": "ShieldCheckIcon",
4956
+ "name": "ShieldIcon",
4890
4957
  "module": "@primer/octicons-react",
4891
4958
  "kind": "icon"
4892
4959
  },
@@ -4931,12 +4998,12 @@
4931
4998
  "kind": "icon"
4932
4999
  },
4933
5000
  {
4934
- "name": "SkipIcon",
5001
+ "name": "SkipFillIcon",
4935
5002
  "module": "@primer/octicons-react",
4936
5003
  "kind": "icon"
4937
5004
  },
4938
5005
  {
4939
- "name": "SkipFillIcon",
5006
+ "name": "SkipIcon",
4940
5007
  "module": "@primer/octicons-react",
4941
5008
  "kind": "icon"
4942
5009
  },
@@ -4946,22 +5013,22 @@
4946
5013
  "kind": "icon"
4947
5014
  },
4948
5015
  {
4949
- "name": "SmileyIcon",
5016
+ "name": "SmileyFrownIcon",
4950
5017
  "module": "@primer/octicons-react",
4951
5018
  "kind": "icon"
4952
5019
  },
4953
5020
  {
4954
- "name": "SmileyFrownIcon",
5021
+ "name": "SmileyFrustratedIcon",
4955
5022
  "module": "@primer/octicons-react",
4956
5023
  "kind": "icon"
4957
5024
  },
4958
5025
  {
4959
- "name": "SmileyFrustratedIcon",
5026
+ "name": "SmileyGrinIcon",
4960
5027
  "module": "@primer/octicons-react",
4961
5028
  "kind": "icon"
4962
5029
  },
4963
5030
  {
4964
- "name": "SmileyGrinIcon",
5031
+ "name": "SmileyIcon",
4965
5032
  "module": "@primer/octicons-react",
4966
5033
  "kind": "icon"
4967
5034
  },
@@ -5001,12 +5068,12 @@
5001
5068
  "kind": "icon"
5002
5069
  },
5003
5070
  {
5004
- "name": "SparkleIcon",
5071
+ "name": "SparkleFillIcon",
5005
5072
  "module": "@primer/octicons-react",
5006
5073
  "kind": "icon"
5007
5074
  },
5008
5075
  {
5009
- "name": "SparkleFillIcon",
5076
+ "name": "SparkleIcon",
5010
5077
  "module": "@primer/octicons-react",
5011
5078
  "kind": "icon"
5012
5079
  },
@@ -5026,17 +5093,17 @@
5026
5093
  "kind": "icon"
5027
5094
  },
5028
5095
  {
5029
- "name": "SquareIcon",
5096
+ "name": "SquareCircleIcon",
5030
5097
  "module": "@primer/octicons-react",
5031
5098
  "kind": "icon"
5032
5099
  },
5033
5100
  {
5034
- "name": "SquareCircleIcon",
5101
+ "name": "SquareFillIcon",
5035
5102
  "module": "@primer/octicons-react",
5036
5103
  "kind": "icon"
5037
5104
  },
5038
5105
  {
5039
- "name": "SquareFillIcon",
5106
+ "name": "SquareIcon",
5040
5107
  "module": "@primer/octicons-react",
5041
5108
  "kind": "icon"
5042
5109
  },
@@ -5045,13 +5112,23 @@
5045
5112
  "module": "@primer/octicons-react",
5046
5113
  "kind": "icon"
5047
5114
  },
5115
+ {
5116
+ "name": "StackAddIcon",
5117
+ "module": "@primer/octicons-react",
5118
+ "kind": "icon"
5119
+ },
5120
+ {
5121
+ "name": "StackCheckIcon",
5122
+ "module": "@primer/octicons-react",
5123
+ "kind": "icon"
5124
+ },
5048
5125
  {
5049
5126
  "name": "StackIcon",
5050
5127
  "module": "@primer/octicons-react",
5051
5128
  "kind": "icon"
5052
5129
  },
5053
5130
  {
5054
- "name": "StarIcon",
5131
+ "name": "StackRemoveIcon",
5055
5132
  "module": "@primer/octicons-react",
5056
5133
  "kind": "icon"
5057
5134
  },
@@ -5060,6 +5137,11 @@
5060
5137
  "module": "@primer/octicons-react",
5061
5138
  "kind": "icon"
5062
5139
  },
5140
+ {
5141
+ "name": "StarIcon",
5142
+ "module": "@primer/octicons-react",
5143
+ "kind": "icon"
5144
+ },
5063
5145
  {
5064
5146
  "name": "StopIcon",
5065
5147
  "module": "@primer/octicons-react",
@@ -5086,12 +5168,12 @@
5086
5168
  "kind": "icon"
5087
5169
  },
5088
5170
  {
5089
- "name": "TabIcon",
5171
+ "name": "TabExternalIcon",
5090
5172
  "module": "@primer/octicons-react",
5091
5173
  "kind": "icon"
5092
5174
  },
5093
5175
  {
5094
- "name": "TabExternalIcon",
5176
+ "name": "TabIcon",
5095
5177
  "module": "@primer/octicons-react",
5096
5178
  "kind": "icon"
5097
5179
  },
@@ -5111,12 +5193,12 @@
5111
5193
  "kind": "icon"
5112
5194
  },
5113
5195
  {
5114
- "name": "TelescopeIcon",
5196
+ "name": "TelescopeFillIcon",
5115
5197
  "module": "@primer/octicons-react",
5116
5198
  "kind": "icon"
5117
5199
  },
5118
5200
  {
5119
- "name": "TelescopeFillIcon",
5201
+ "name": "TelescopeIcon",
5120
5202
  "module": "@primer/octicons-react",
5121
5203
  "kind": "icon"
5122
5204
  },
@@ -5250,6 +5332,11 @@
5250
5332
  "module": "@primer/octicons-react",
5251
5333
  "kind": "icon"
5252
5334
  },
5335
+ {
5336
+ "name": "ViewFilesIcon",
5337
+ "module": "@primer/octicons-react",
5338
+ "kind": "icon"
5339
+ },
5253
5340
  {
5254
5341
  "name": "VscodeIcon",
5255
5342
  "module": "@primer/octicons-react",
@@ -5271,7 +5358,7 @@
5271
5358
  "kind": "icon"
5272
5359
  },
5273
5360
  {
5274
- "name": "XIcon",
5361
+ "name": "XCircleFillIcon",
5275
5362
  "module": "@primer/octicons-react",
5276
5363
  "kind": "icon"
5277
5364
  },
@@ -5281,7 +5368,7 @@
5281
5368
  "kind": "icon"
5282
5369
  },
5283
5370
  {
5284
- "name": "XCircleFillIcon",
5371
+ "name": "XIcon",
5285
5372
  "module": "@primer/octicons-react",
5286
5373
  "kind": "icon"
5287
5374
  },
@@ -8577,6 +8664,21 @@
8577
8664
  "value": "var(--brand-color-text-default)",
8578
8665
  "group": "functional"
8579
8666
  },
8667
+ {
8668
+ "name": "--brand-SubdomainNavBar-color-link-bgColor",
8669
+ "value": "var(--base-color-scale-gray-1)",
8670
+ "group": "functional"
8671
+ },
8672
+ {
8673
+ "name": "--brand-SubdomainNavBar-searchDialog-shadowColor",
8674
+ "value": "rgba(0, 0, 0, 0.1)",
8675
+ "group": "functional"
8676
+ },
8677
+ {
8678
+ "name": "--brand-SubdomainNavBar-searchDialog-backdropColor",
8679
+ "value": "rgba(0, 0, 0, 0.2)",
8680
+ "group": "functional"
8681
+ },
8580
8682
  {
8581
8683
  "name": "--brand-SubdomainNavBar-border-nav-default",
8582
8684
  "value": "var(--base-color-scale-gray-9)",
@@ -8892,8 +8994,23 @@
8892
8994
  "value": "var(--base-color-scale-green-7)",
8893
8995
  "group": "functional"
8894
8996
  },
8997
+ {
8998
+ "name": "--brand-TextCursorAnimation-cursor-animationDuration",
8999
+ "value": "833ms",
9000
+ "group": "functional"
9001
+ },
8895
9002
  {
8896
9003
  "name": "--brand-TextCursorAnimation-cursor-color",
9004
+ "value": "var(--base-color-scale-purple-5)",
9005
+ "group": "functional"
9006
+ },
9007
+ {
9008
+ "name": "--brand-TextCursorAnimation-cursor-deleteColor",
9009
+ "value": "var(--base-color-scale-blue-4)",
9010
+ "group": "functional"
9011
+ },
9012
+ {
9013
+ "name": "--brand-TextCursorAnimation-cursor-finalColor",
8897
9014
  "value": "var(--base-color-scale-green-6)",
8898
9015
  "group": "functional"
8899
9016
  },
@@ -10203,7 +10320,7 @@
10203
10320
  "full page",
10204
10321
  "template"
10205
10322
  ],
10206
- "source": "import {CodeOfConductIcon, CpuIcon, LightBulbIcon, LogoGithubIcon, SparkleFillIcon} from '@primer/octicons-react'\nimport {clsx} from 'clsx'\nimport React, {useEffect} from 'react'\n\nimport {\n Box,\n Button,\n Card,\n ColorModesEnum,\n CTABanner,\n FAQ,\n FAQGroup,\n Grid,\n Hero,\n Heading,\n InlineLink,\n LogoSuite,\n MinimalVideoPlayer,\n Section,\n SectionIntro,\n SubNav,\n Text,\n River,\n EyebrowText,\n Link,\n Stack,\n Token,\n PricingOptions,\n Tabs,\n Tiles,\n Image,\n useTheme,\n Footnotes,\n} from '../../..'\nimport {RedlineBackground} from '../../../component-helpers'\nimport placeholderBg from '../../../fixtures/images/dither-bg-landscape-purple.png'\nimport brandDividerWide from '../../../fixtures/images/brand-divider-copilot-wide.png'\nimport mercardo from '../../../fixtures/images/bento/mercado.png'\nimport copilotHeroHead from '../../../fixtures/images/copilot-mascot-head-peeking.png'\nimport renderUI3 from '../../../fixtures/images/copilot-vscode-agent-mode-3.png'\nimport renderUI3Dark from '../../../fixtures/images/copilot-vscode-agent-mode-3-dark.png'\nimport heroAnimation from '../../../fixtures/videos/copilot-agent-mode-hero.mp4'\nimport {logos} from '../../../LogoSuite/LogoSuite.fixtures'\nimport {tileItems} from '../../../Tiles/Tiles.fixtures'\n\nimport {defaultFlexSuiteAIOverviewContent, type FlexSuiteAIOverviewContent} from './FlexSuiteAIOverview.content'\nimport styles from './FlexSuiteAIOverview.module.css'\n\nexport type FlexSuiteAIOverviewTemplateProps = {\n content: FlexSuiteAIOverviewContent\n}\n\nconst cardIcons = [CpuIcon, LightBulbIcon, CodeOfConductIcon] as const\n\nexport function FlexSuiteAIOverview() {\n return <FlexSuiteAIOverviewTemplate content={defaultFlexSuiteAIOverviewContent} />\n}\n\nexport function FlexSuiteAIOverviewTemplate({content}: FlexSuiteAIOverviewTemplateProps) {\n const heroImageRef = React.useRef<HTMLDivElement>(null)\n const riverImageRefs = React.useRef<Array<HTMLDivElement | null>>([])\n const {colorMode} = useTheme()\n\n useEffect(() => {\n const cleanups: Array<() => void> = []\n\n if (heroImageRef.current) {\n cleanups.push(TempFadeInBackgroundEffect(heroImageRef.current, placeholderBg, 500))\n }\n\n for (const element of riverImageRefs.current) {\n if (element) {\n cleanups.push(TempFadeInBackgroundEffect(element, placeholderBg, 500))\n }\n }\n\n return () => {\n for (const cleanup of cleanups) {\n cleanup()\n }\n }\n }, [])\n\n return (\n <>\n <Box className={styles.page} backgroundColor=\"default\">\n <Box backgroundColor=\"subtle\" style={{height: 72}} />\n\n <SubNav>\n <SubNav.Heading href=\"#\">{content.subNav.heading}</SubNav.Heading>\n\n {content.subNav.links.map(link => (\n <SubNav.Link key={link} href=\"#\">\n {link}\n </SubNav.Link>\n ))}\n </SubNav>\n <Box paddingBlockStart={64}></Box>\n\n <Section paddingBlockStart=\"none\" paddingBlockEnd=\"none\" fullWidth>\n <Hero\n imageContainerRef={heroImageRef}\n enableAnimation\n variant=\"gridline-expressive\"\n trailingComponent={() => (\n <Box className={styles.heroTrailingPeek}>\n <Text variant=\"muted\">\n {content.hero.trailingText} <InlineLink href=\"#\">{content.hero.trailingLinkText}</InlineLink>\n </Text>\n <Image\n className={styles.heroTrailingPeekImage}\n style={\n {\n ['--hero-peek-left' as string]: '-310px',\n ['--hero-peek-bottom' as string]: '-65px',\n ['--hero-peek-width' as string]: '190px',\n } as React.CSSProperties\n }\n src={copilotHeroHead}\n alt={content.hero.peekAlt}\n />\n </Box>\n )}\n >\n <Hero.Label>{content.hero.label}</Hero.Label>\n <Hero.Heading>\n {content.hero.headingLine1} <br /> {content.hero.headingLine2}\n </Hero.Heading>\n <Hero.Description>{content.hero.description}</Hero.Description>\n <Hero.ButtonGroup>\n <Button as=\"a\" href=\"#\" variant=\"primary\">\n {content.hero.primaryAction}\n </Button>\n <Button as=\"a\" href=\"#\" variant=\"secondary\">\n {content.hero.secondaryAction}\n </Button>\n </Hero.ButtonGroup>\n {process.env.NODE_ENV === 'test' ? (\n <Hero.Image\n enableBorder={false}\n position=\"block-end\"\n src={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n alt={content.hero.imageAlt}\n />\n ) : (\n <Hero.Video enableBorder={false} position=\"block-end\">\n <MinimalVideoPlayer\n internalAccessibleLabels={content.hero.videoControls}\n poster={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n src={heroAnimation}\n title={content.hero.imageAlt}\n />\n </Hero.Video>\n )}\n </Hero>\n </Section>\n\n <LogoSuite variant=\"gridline-expressive\">\n <LogoSuite.Heading visuallyHidden>{content.logoSuiteHeading}</LogoSuite.Heading>\n <LogoSuite.Logobar marquee={process.env.NODE_ENV !== 'test'}>{logos.slice(0, 8)}</LogoSuite.Logobar>\n </LogoSuite>\n\n <Box className={clsx(styles.cardGridFrame, styles.cardGridFrameNoTopBorder)}>\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.resourceCards.map((card, index) => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 4}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card\n href=\"#\"\n fullWidth\n ctaVariant=\"arrow\"\n ctaText={content.common.learnMore}\n className={clsx(styles.resourceCard, styles.resourceCardWithIcon)}\n >\n <Card.Icon\n icon={cardIcons[index]}\n color=\"green\"\n hasBackground\n size=\"medium\"\n className={styles.resourceCardIcon}\n />\n <Card.Heading>{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n\n <Section paddingBlockStart=\"condensed\" paddingBlockEnd=\"none\">\n <SectionIntro align=\"center\" fullWidth>\n <SectionIntro.Label>{content.workflow.label}</SectionIntro.Label>\n <SectionIntro.Heading>{content.workflow.heading}</SectionIntro.Heading>\n <SectionIntro.Description>{content.workflow.description}</SectionIntro.Description>\n </SectionIntro>\n </Section>\n <Section paddingBlockStart=\"condensed\" paddingBlockEnd=\"none\">\n <Stack direction=\"vertical\" padding=\"none\" gap=\"spacious\">\n <River variant=\"gridline\">\n <River.Visual\n ref={element => {\n riverImageRefs.current[0] = element\n }}\n >\n <picture>\n <source\n srcSet={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n media=\"(max-width: 47.99rem)\"\n />\n <img\n src={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n alt={content.rivers[0].imageAlt}\n />\n </picture>\n </River.Visual>\n <River.Content>\n <EyebrowText>{content.rivers[0].eyebrow}</EyebrowText>\n <Heading>{content.rivers[0].heading}</Heading>\n <Text>{content.rivers[0].description}</Text>\n <Link href=\"#\">{content.rivers[0].linkText}</Link>\n </River.Content>\n </River>\n <River variant=\"gridline\">\n <River.Visual\n ref={element => {\n riverImageRefs.current[1] = element\n }}\n >\n <picture>\n <source\n srcSet={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n media=\"(max-width: 47.99rem)\"\n />\n <img\n src={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n alt={content.rivers[1].imageAlt}\n />\n </picture>\n </River.Visual>\n <River.Content>\n <EyebrowText>{content.rivers[1].eyebrow}</EyebrowText>\n <Heading>{content.rivers[1].heading}</Heading>\n <Text>{content.rivers[1].description}</Text>\n <Link href=\"#\">{content.rivers[1].linkText}</Link>\n </River.Content>\n </River>\n <River variant=\"gridline\">\n <River.Visual\n ref={element => {\n riverImageRefs.current[2] = element\n }}\n >\n <picture>\n <source\n srcSet={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n media=\"(max-width: 47.99rem)\"\n />\n <img\n src={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n alt={content.rivers[2].imageAlt}\n />\n </picture>\n </River.Visual>\n <River.Content>\n <EyebrowText>{content.rivers[2].eyebrow}</EyebrowText>\n <Heading>{content.rivers[2].heading}</Heading>\n <Text>{content.rivers[2].description}</Text>\n <Link href=\"#\">{content.rivers[2].linkText}</Link>\n </River.Content>\n </River>\n </Stack>\n </Section>\n <Box marginBlockStart={48}>\n <CTABanner variant=\"balanced\" hasGridLines>\n <CTABanner.Logo>{<LogoGithubIcon size={64} />}</CTABanner.Logo>\n <CTABanner.Heading size=\"5\">\n {content.bento.headingPrefix} <b>{content.bento.headingEmphasis}</b>\n </CTABanner.Heading>\n <CTABanner.Link href=\"#\">{content.bento.linkText}</CTABanner.Link>\n <CTABanner.Image src={mercardo} alt={content.bento.imageAlt} />\n </CTABanner>\n </Box>\n <Stack justifyContent=\"center\" padding=\"none\">\n <Box borderBlockEndWidth=\"thin\" borderColor=\"muted\" borderStyle=\"solid\">\n <Image src={brandDividerWide} alt={content.common.brandDividerAlt} style={{display: 'block'}} />\n </Box>\n </Stack>\n <Section paddingBlockStart=\"none\" paddingBlockEnd=\"none\">\n <Box paddingBlockEnd={48} paddingBlockStart={48}>\n <SectionIntro align=\"center\" fullWidth>\n <SectionIntro.Heading>{content.organization.heading}</SectionIntro.Heading>\n <SectionIntro.Description>{content.organization.description}</SectionIntro.Description>\n </SectionIntro>\n </Box>\n </Section>\n\n <Box className={styles.cardGridFrame}>\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.organization.cards.map((card, index) => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 4}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card\n href=\"#\"\n fullWidth\n ctaVariant=\"arrow\"\n ctaText={content.common.learnMore}\n className={clsx(styles.resourceCard, styles.resourceCardWithIcon)}\n >\n <Card.Icon\n icon={cardIcons[index]}\n color=\"green\"\n hasBackground\n size=\"medium\"\n className={styles.resourceCardIcon}\n />\n <Card.Tokens>\n <Token>{card.tag}</Token>\n </Card.Tokens>\n <Card.Heading>{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n\n <Section paddingBlockStart=\"none\" paddingBlockEnd=\"none\">\n <Box paddingBlockEnd={4} paddingBlockStart={60}>\n <SectionIntro align=\"center\" fullWidth>\n <SectionIntro.Label>{content.plans.label}</SectionIntro.Label>\n <SectionIntro.Heading>{content.plans.heading}</SectionIntro.Heading>\n </SectionIntro>\n </Box>\n </Section>\n <Tabs aria-label={content.plans.tabsAriaLabel} variant=\"accent\" className={styles.fullWidthTabsPanel}>\n {content.plans.tabs.map(tab => (\n <Tabs.Item key={tab}>{tab}</Tabs.Item>\n ))}\n {content.plans.tabs.map(tab => (\n <Tabs.Panel key={tab}>\n <Box className={styles.cardGridFrame} backgroundColor=\"default\">\n <Grid>\n <Grid.Column span={12}>\n <PricingOptions\n style={{marginBlock: 'calc(var(--brand-borderWidth-thin) * -1)'}}\n variant=\"default-gradient\"\n >\n <PricingOptions.Item>\n <PricingOptions.Heading>{content.pricing.free.heading}</PricingOptions.Heading>\n <PricingOptions.Description>{content.pricing.free.description}</PricingOptions.Description>\n <PricingOptions.Price>{content.pricing.free.price}</PricingOptions.Price>\n <PricingOptions.FeatureList>\n <PricingOptions.FeatureListItem>\n {content.pricing.free.features[0]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem>\n {content.pricing.free.features[1]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem\n leadingVisual={SparkleFillIcon}\n leadingVisualFill=\"var(--base-color-scale-purple-5)\"\n >\n {content.pricing.free.features[2]}\n </PricingOptions.FeatureListItem>\n </PricingOptions.FeatureList>\n <PricingOptions.PrimaryAction as=\"a\" href=\"#\" variant=\"primary\">\n {content.pricing.free.primaryAction}\n </PricingOptions.PrimaryAction>\n {content.pricing.free.secondaryAction ? (\n <PricingOptions.SecondaryAction as=\"a\" href=\"#\" variant=\"subtle\">\n {content.pricing.free.secondaryAction}\n </PricingOptions.SecondaryAction>\n ) : null}\n </PricingOptions.Item>\n <PricingOptions.Item>\n <PricingOptions.Heading>{content.pricing.pro.heading}</PricingOptions.Heading>\n {content.pricing.pro.label ? (\n <PricingOptions.Label>{content.pricing.pro.label}</PricingOptions.Label>\n ) : null}\n <PricingOptions.Description>{content.pricing.pro.description}</PricingOptions.Description>\n <PricingOptions.Price trailingText={content.pricing.pro.trailingText}>\n {content.pricing.pro.price}\n </PricingOptions.Price>\n <PricingOptions.PrimaryAction as=\"a\" href=\"#\" variant=\"primary\">\n {content.pricing.pro.primaryAction}\n </PricingOptions.PrimaryAction>\n <PricingOptions.FeatureList>\n <PricingOptions.FeatureListHeading>\n {content.pricing.pro.featureListHeading}\n </PricingOptions.FeatureListHeading>\n <PricingOptions.FeatureListItem>\n {content.pricing.pro.features[0]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem>\n {content.pricing.pro.features[1]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem>\n {content.pricing.pro.features[2]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem>\n {content.pricing.pro.features[3]}\n </PricingOptions.FeatureListItem>\n </PricingOptions.FeatureList>\n {content.pricing.pro.footnote ? (\n <PricingOptions.Footnote>\n {content.pricing.pro.footnote}{' '}\n {content.pricing.pro.footnoteLinkText ? (\n <InlineLink href=\"#\">{content.pricing.pro.footnoteLinkText}</InlineLink>\n ) : null}\n </PricingOptions.Footnote>\n ) : null}\n </PricingOptions.Item>\n\n <PricingOptions.Item>\n <PricingOptions.Heading>{content.pricing.proPlus.heading}</PricingOptions.Heading>\n <PricingOptions.Description>{content.pricing.proPlus.description}</PricingOptions.Description>\n <PricingOptions.Price trailingText={content.pricing.proPlus.trailingText}>\n {content.pricing.proPlus.price}\n </PricingOptions.Price>\n <PricingOptions.PrimaryAction as=\"a\" href=\"#\" variant=\"primary\">\n {content.pricing.proPlus.primaryAction}\n </PricingOptions.PrimaryAction>\n <PricingOptions.FeatureList>\n <PricingOptions.FeatureListHeading>\n {content.pricing.proPlus.featureListHeading}\n </PricingOptions.FeatureListHeading>\n <PricingOptions.FeatureListItem>\n {content.pricing.proPlus.features[0]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem>\n {content.pricing.proPlus.features[1]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem\n leadingVisual={SparkleFillIcon}\n leadingVisualFill=\"var(--base-color-scale-purple-5)\"\n >\n {content.pricing.proPlus.features[2]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem>\n {content.pricing.proPlus.features[3]}\n </PricingOptions.FeatureListItem>\n </PricingOptions.FeatureList>\n </PricingOptions.Item>\n </PricingOptions>\n </Grid.Column>\n </Grid>\n </Box>\n </Tabs.Panel>\n ))}\n </Tabs>\n\n <Section paddingBlockEnd=\"none\">\n <Tiles variant=\"gridlines\" layout=\"compact\">\n {tileItems.slice(0, 6).map(item => (\n <Tiles.Item key={item.name} name={item.name} href={item.href}>\n {item.icon}\n </Tiles.Item>\n ))}\n </Tiles>\n </Section>\n\n <Section paddingBlockStart=\"none\" paddingBlockEnd=\"none\">\n <Box paddingBlockEnd={32} paddingBlockStart={80}>\n <SectionIntro align=\"center\" fullWidth>\n <SectionIntro.Heading>{content.resources.heading}</SectionIntro.Heading>\n </SectionIntro>\n </Box>\n </Section>\n\n <Box className={styles.cardGridFrame} marginBlockEnd={80}>\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.resources.cards.map((card, index) => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 4}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card\n href=\"#\"\n fullWidth\n ctaVariant=\"arrow\"\n ctaText={content.common.learnMore}\n className={clsx(styles.resourceCard, styles.resourceCardWithIcon)}\n >\n <Card.Icon\n icon={cardIcons[index]}\n color=\"green\"\n hasBackground\n size=\"medium\"\n className={styles.resourceCardIcon}\n />\n <Card.Tokens>\n <Token>{card.tag}</Token>\n </Card.Tokens>\n <Card.Heading>{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n <Box paddingBlockEnd={64}>\n <FAQGroup variant=\"gridline\" defaultSelectedIndex={1}>\n <FAQGroup.Heading>\n <Box paddingInlineStart=\"spacious\">\n {content.faq.headingLine1}\n <br />\n {content.faq.headingLine2}\n </Box>\n </FAQGroup.Heading>\n {content.faq.groups.map(group => (\n <FAQ key={group.heading} variant=\"gridline\">\n <FAQ.Heading>{group.heading}</FAQ.Heading>\n {group.items.map((item, index) => (\n <FAQ.Item key={item.question} name={`faq-${group.heading}`} open={index === 0}>\n <FAQ.Question>{item.question}</FAQ.Question>\n <FAQ.Answer>\n <Text as=\"p\" variant=\"muted\">\n {item.answer}\n </Text>\n </FAQ.Answer>\n </FAQ.Item>\n ))}\n </FAQ>\n ))}\n </FAQGroup>\n </Box>\n <footer>\n <Section as=\"div\" paddingBlockStart=\"none\" paddingBlockEnd=\"none\">\n <Grid>\n <Grid.Column>\n <Box paddingInlineStart={32}>\n <Footnotes>\n <Footnotes.Item id=\"economic-impact\" href=\"#economic-impact-ref\">\n Code review will incur Actions usage.{' '}\n </Footnotes.Item>\n <Footnotes.Item id=\"third-party\" href=\"#third-party-ref\">\n Response times may vary during periods of high usage. Requests may be subject to rate limiting.\n </Footnotes.Item>\n <Footnotes.Item id=\"ai\" href=\"#ai-ref\">\n Flex allotments will vary over time.\n </Footnotes.Item>\n </Footnotes>\n </Box>\n </Grid.Column>\n </Grid>\n </Section>\n </footer>\n\n <RedlineBackground style={{height: 600, display: 'flex', flexDirection: 'column', gap: 'var(--base-size-32)'}}>\n <RedlineBackground\n style={{height: 84, marginTop: 'auto', backgroundColor: 'var(--brand-color-border-default)'}}\n />\n </RedlineBackground>\n </Box>\n </>\n )\n}\n\nfunction TempFadeInBackgroundEffect(element: HTMLDivElement, backgroundImageUrl: string, delay = 100) {\n element.style.position = 'relative'\n\n const bgDiv = document.createElement('div')\n bgDiv.style.cssText = `\n position: absolute;\n inset: 0;\n background-image: url(${backgroundImageUrl});\n background-size: cover;\n background-position: center;\n opacity: 0;\n transition: opacity 1.5s ease-out;\n z-index: 0;\n `\n element.insertBefore(bgDiv, element.firstChild)\n\n const children = element.children\n for (let index = 1; index < children.length; index += 1) {\n ;(children[index] as HTMLElement).style.position = 'relative'\n ;(children[index] as HTMLElement).style.zIndex = '1'\n }\n\n const timer = setTimeout(() => {\n bgDiv.style.opacity = '1'\n }, delay)\n\n return () => {\n clearTimeout(timer)\n bgDiv.remove()\n }\n}"
10323
+ "source": "import {CodeOfConductIcon, CpuIcon, LightBulbIcon, LogoGithubIcon, SparkleFillIcon} from '@primer/octicons-react'\nimport {clsx} from 'clsx'\nimport React, {useEffect} from 'react'\n\nimport {\n Box,\n Button,\n Card,\n ColorModesEnum,\n CTABanner,\n FAQ,\n FAQGroup,\n Grid,\n Hero,\n Heading,\n InlineLink,\n LogoSuite,\n MinimalVideoPlayer,\n Section,\n SectionIntro,\n SubNav,\n Text,\n River,\n EyebrowText,\n Link,\n Stack,\n Token,\n PricingOptions,\n Tabs,\n Tiles,\n Image,\n useTheme,\n Footnotes,\n} from '../../..'\nimport {RedlineBackground} from '../../../component-helpers'\nimport placeholderBg from '../../../fixtures/images/dither-bg-landscape-purple.png'\nimport brandDividerWide from '../../../fixtures/images/brand-divider-copilot-wide.png'\nimport mercardo from '../../../fixtures/images/bento/mercado.png'\nimport copilotHeroHead from '../../../fixtures/images/copilot-mascot-head-peeking.png'\nimport renderUI3 from '../../../fixtures/images/copilot-vscode-agent-mode-3.png'\nimport renderUI3Dark from '../../../fixtures/images/copilot-vscode-agent-mode-3-dark.png'\nimport heroAnimation from '../../../fixtures/videos/copilot-agent-mode-hero.mp4'\nimport {logos} from '../../../LogoSuite/LogoSuite.fixtures'\nimport {tileItems} from '../../../Tiles/Tiles.fixtures'\n\nimport {defaultFlexSuiteAIOverviewContent, type FlexSuiteAIOverviewContent} from './FlexSuiteAIOverview.content'\nimport styles from './FlexSuiteAIOverview.module.css'\n\nexport type FlexSuiteAIOverviewTemplateProps = {\n content: FlexSuiteAIOverviewContent\n}\n\nconst cardIcons = [CpuIcon, LightBulbIcon, CodeOfConductIcon] as const\n\nexport function FlexSuiteAIOverview() {\n return <FlexSuiteAIOverviewTemplate content={defaultFlexSuiteAIOverviewContent} />\n}\n\nexport function FlexSuiteAIOverviewTemplate({content}: FlexSuiteAIOverviewTemplateProps) {\n const heroImageRef = React.useRef<HTMLDivElement>(null)\n const riverImageRefs = React.useRef<Array<HTMLDivElement | null>>([])\n const {colorMode} = useTheme()\n\n useEffect(() => {\n const cleanups: Array<() => void> = []\n\n if (heroImageRef.current) {\n cleanups.push(TempFadeInBackgroundEffect(heroImageRef.current, placeholderBg, 500))\n }\n\n for (const element of riverImageRefs.current) {\n if (element) {\n cleanups.push(TempFadeInBackgroundEffect(element, placeholderBg, 500))\n }\n }\n\n return () => {\n for (const cleanup of cleanups) {\n cleanup()\n }\n }\n }, [])\n\n return (\n <>\n <Box className={styles.page} backgroundColor=\"default\">\n <Box backgroundColor=\"subtle\" style={{height: 72}} />\n\n <SubNav>\n <SubNav.Heading href=\"#\">{content.subNav.heading}</SubNav.Heading>\n\n {content.subNav.links.map(link => (\n <SubNav.Link key={link} href=\"#\">\n {link}\n </SubNav.Link>\n ))}\n </SubNav>\n <Box paddingBlockStart={64}></Box>\n\n <Section paddingBlockStart=\"none\" paddingBlockEnd=\"none\" fullWidth>\n <Hero\n imageContainerRef={heroImageRef}\n enableAnimation\n variant=\"gridline-expressive\"\n trailingComponent={() => (\n <Box className={styles.heroTrailingPeek}>\n <Text variant=\"muted\">\n {content.hero.trailingText} <InlineLink href=\"#\">{content.hero.trailingLinkText}</InlineLink>\n </Text>\n <Image\n className={styles.heroTrailingPeekImage}\n style={\n {\n ['--hero-peek-left' as string]: '-310px',\n ['--hero-peek-bottom' as string]: '-65px',\n ['--hero-peek-width' as string]: '190px',\n } as React.CSSProperties\n }\n src={copilotHeroHead}\n alt={content.hero.peekAlt}\n />\n </Box>\n )}\n >\n <Hero.Label animate initialText={content.hero.initialLabel}>\n {content.hero.label}\n </Hero.Label>\n <Hero.Heading>\n {content.hero.headingLine1} <br /> {content.hero.headingLine2}\n </Hero.Heading>\n <Hero.Description>{content.hero.description}</Hero.Description>\n <Hero.ButtonGroup>\n <Button as=\"a\" href=\"#\" variant=\"primary\">\n {content.hero.primaryAction}\n </Button>\n <Button as=\"a\" href=\"#\" variant=\"secondary\">\n {content.hero.secondaryAction}\n </Button>\n </Hero.ButtonGroup>\n {process.env.NODE_ENV === 'test' ? (\n <Hero.Image\n enableBorder={false}\n position=\"block-end\"\n src={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n alt={content.hero.imageAlt}\n />\n ) : (\n <Hero.Video enableBorder={false} position=\"block-end\">\n <MinimalVideoPlayer\n internalAccessibleLabels={content.hero.videoControls}\n poster={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n src={heroAnimation}\n title={content.hero.imageAlt}\n />\n </Hero.Video>\n )}\n </Hero>\n </Section>\n\n <LogoSuite variant=\"gridline-expressive\">\n <LogoSuite.Heading visuallyHidden>{content.logoSuiteHeading}</LogoSuite.Heading>\n <LogoSuite.Logobar marquee={process.env.NODE_ENV !== 'test'}>{logos.slice(0, 8)}</LogoSuite.Logobar>\n </LogoSuite>\n\n <Box className={clsx(styles.cardGridFrame, styles.cardGridFrameNoTopBorder)}>\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.resourceCards.map((card, index) => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 4}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card\n href=\"#\"\n fullWidth\n ctaVariant=\"arrow\"\n ctaText={content.common.learnMore}\n className={clsx(styles.resourceCard, styles.resourceCardWithIcon)}\n >\n <Card.Icon\n icon={cardIcons[index]}\n color=\"green\"\n hasBackground\n size=\"medium\"\n className={styles.resourceCardIcon}\n />\n <Card.Heading>{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n\n <Section paddingBlockStart=\"condensed\" paddingBlockEnd=\"none\">\n <SectionIntro align=\"center\" fullWidth>\n <SectionIntro.Label>{content.workflow.label}</SectionIntro.Label>\n <SectionIntro.Heading>{content.workflow.heading}</SectionIntro.Heading>\n <SectionIntro.Description>{content.workflow.description}</SectionIntro.Description>\n </SectionIntro>\n </Section>\n <Section paddingBlockStart=\"condensed\" paddingBlockEnd=\"none\">\n <Stack direction=\"vertical\" padding=\"none\" gap=\"spacious\">\n <River variant=\"gridline\">\n <River.Visual\n ref={element => {\n riverImageRefs.current[0] = element\n }}\n >\n <picture>\n <source\n srcSet={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n media=\"(max-width: 47.99rem)\"\n />\n <img\n src={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n alt={content.rivers[0].imageAlt}\n />\n </picture>\n </River.Visual>\n <River.Content>\n <EyebrowText>{content.rivers[0].eyebrow}</EyebrowText>\n <Heading>{content.rivers[0].heading}</Heading>\n <Text>{content.rivers[0].description}</Text>\n <Link href=\"#\">{content.rivers[0].linkText}</Link>\n </River.Content>\n </River>\n <River variant=\"gridline\">\n <River.Visual\n ref={element => {\n riverImageRefs.current[1] = element\n }}\n >\n <picture>\n <source\n srcSet={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n media=\"(max-width: 47.99rem)\"\n />\n <img\n src={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n alt={content.rivers[1].imageAlt}\n />\n </picture>\n </River.Visual>\n <River.Content>\n <EyebrowText>{content.rivers[1].eyebrow}</EyebrowText>\n <Heading>{content.rivers[1].heading}</Heading>\n <Text>{content.rivers[1].description}</Text>\n <Link href=\"#\">{content.rivers[1].linkText}</Link>\n </River.Content>\n </River>\n <River variant=\"gridline\">\n <River.Visual\n ref={element => {\n riverImageRefs.current[2] = element\n }}\n >\n <picture>\n <source\n srcSet={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n media=\"(max-width: 47.99rem)\"\n />\n <img\n src={colorMode === ColorModesEnum.DARK ? renderUI3Dark : renderUI3}\n alt={content.rivers[2].imageAlt}\n />\n </picture>\n </River.Visual>\n <River.Content>\n <EyebrowText>{content.rivers[2].eyebrow}</EyebrowText>\n <Heading>{content.rivers[2].heading}</Heading>\n <Text>{content.rivers[2].description}</Text>\n <Link href=\"#\">{content.rivers[2].linkText}</Link>\n </River.Content>\n </River>\n </Stack>\n </Section>\n <Box marginBlockStart={48}>\n <CTABanner variant=\"balanced\" hasGridLines>\n <CTABanner.Logo>{<LogoGithubIcon size={64} />}</CTABanner.Logo>\n <CTABanner.Heading size=\"5\">\n {content.bento.headingPrefix} <b>{content.bento.headingEmphasis}</b>\n </CTABanner.Heading>\n <CTABanner.Link href=\"#\">{content.bento.linkText}</CTABanner.Link>\n <CTABanner.Image src={mercardo} alt={content.bento.imageAlt} />\n </CTABanner>\n </Box>\n <Stack justifyContent=\"center\" padding=\"none\">\n <Box borderBlockEndWidth=\"thin\" borderColor=\"muted\" borderStyle=\"solid\">\n <Image src={brandDividerWide} alt={content.common.brandDividerAlt} style={{display: 'block'}} />\n </Box>\n </Stack>\n <Section paddingBlockStart=\"none\" paddingBlockEnd=\"none\">\n <Box paddingBlockEnd={48} paddingBlockStart={48}>\n <SectionIntro align=\"center\" fullWidth>\n <SectionIntro.Heading>{content.organization.heading}</SectionIntro.Heading>\n <SectionIntro.Description>{content.organization.description}</SectionIntro.Description>\n </SectionIntro>\n </Box>\n </Section>\n\n <Box className={styles.cardGridFrame}>\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.organization.cards.map((card, index) => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 4}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card\n href=\"#\"\n fullWidth\n ctaVariant=\"arrow\"\n ctaText={content.common.learnMore}\n className={clsx(styles.resourceCard, styles.resourceCardWithIcon)}\n >\n <Card.Icon\n icon={cardIcons[index]}\n color=\"green\"\n hasBackground\n size=\"medium\"\n className={styles.resourceCardIcon}\n />\n <Card.Tokens>\n <Token>{card.tag}</Token>\n </Card.Tokens>\n <Card.Heading>{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n\n <Section paddingBlockStart=\"none\" paddingBlockEnd=\"none\">\n <Box paddingBlockEnd={4} paddingBlockStart={60}>\n <SectionIntro align=\"center\" fullWidth>\n <SectionIntro.Label>{content.plans.label}</SectionIntro.Label>\n <SectionIntro.Heading>{content.plans.heading}</SectionIntro.Heading>\n </SectionIntro>\n </Box>\n </Section>\n <Tabs aria-label={content.plans.tabsAriaLabel} variant=\"accent\" className={styles.fullWidthTabsPanel}>\n {content.plans.tabs.map(tab => (\n <Tabs.Item key={tab}>{tab}</Tabs.Item>\n ))}\n {content.plans.tabs.map(tab => (\n <Tabs.Panel key={tab}>\n <Box className={styles.cardGridFrame} backgroundColor=\"default\">\n <Grid>\n <Grid.Column span={12}>\n <PricingOptions\n style={{marginBlock: 'calc(var(--brand-borderWidth-thin) * -1)'}}\n variant=\"default-gradient\"\n >\n <PricingOptions.Item>\n <PricingOptions.Heading>{content.pricing.free.heading}</PricingOptions.Heading>\n <PricingOptions.Description>{content.pricing.free.description}</PricingOptions.Description>\n <PricingOptions.Price>{content.pricing.free.price}</PricingOptions.Price>\n <PricingOptions.FeatureList>\n <PricingOptions.FeatureListItem>\n {content.pricing.free.features[0]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem>\n {content.pricing.free.features[1]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem\n leadingVisual={SparkleFillIcon}\n leadingVisualFill=\"var(--base-color-scale-purple-5)\"\n >\n {content.pricing.free.features[2]}\n </PricingOptions.FeatureListItem>\n </PricingOptions.FeatureList>\n <PricingOptions.PrimaryAction as=\"a\" href=\"#\" variant=\"primary\">\n {content.pricing.free.primaryAction}\n </PricingOptions.PrimaryAction>\n {content.pricing.free.secondaryAction ? (\n <PricingOptions.SecondaryAction as=\"a\" href=\"#\" variant=\"subtle\">\n {content.pricing.free.secondaryAction}\n </PricingOptions.SecondaryAction>\n ) : null}\n </PricingOptions.Item>\n <PricingOptions.Item>\n <PricingOptions.Heading>{content.pricing.pro.heading}</PricingOptions.Heading>\n {content.pricing.pro.label ? (\n <PricingOptions.Label>{content.pricing.pro.label}</PricingOptions.Label>\n ) : null}\n <PricingOptions.Description>{content.pricing.pro.description}</PricingOptions.Description>\n <PricingOptions.Price trailingText={content.pricing.pro.trailingText}>\n {content.pricing.pro.price}\n </PricingOptions.Price>\n <PricingOptions.PrimaryAction as=\"a\" href=\"#\" variant=\"primary\">\n {content.pricing.pro.primaryAction}\n </PricingOptions.PrimaryAction>\n <PricingOptions.FeatureList>\n <PricingOptions.FeatureListHeading>\n {content.pricing.pro.featureListHeading}\n </PricingOptions.FeatureListHeading>\n <PricingOptions.FeatureListItem>\n {content.pricing.pro.features[0]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem>\n {content.pricing.pro.features[1]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem>\n {content.pricing.pro.features[2]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem>\n {content.pricing.pro.features[3]}\n </PricingOptions.FeatureListItem>\n </PricingOptions.FeatureList>\n {content.pricing.pro.footnote ? (\n <PricingOptions.Footnote>\n {content.pricing.pro.footnote}{' '}\n {content.pricing.pro.footnoteLinkText ? (\n <InlineLink href=\"#\">{content.pricing.pro.footnoteLinkText}</InlineLink>\n ) : null}\n </PricingOptions.Footnote>\n ) : null}\n </PricingOptions.Item>\n\n <PricingOptions.Item>\n <PricingOptions.Heading>{content.pricing.proPlus.heading}</PricingOptions.Heading>\n <PricingOptions.Description>{content.pricing.proPlus.description}</PricingOptions.Description>\n <PricingOptions.Price trailingText={content.pricing.proPlus.trailingText}>\n {content.pricing.proPlus.price}\n </PricingOptions.Price>\n <PricingOptions.PrimaryAction as=\"a\" href=\"#\" variant=\"primary\">\n {content.pricing.proPlus.primaryAction}\n </PricingOptions.PrimaryAction>\n <PricingOptions.FeatureList>\n <PricingOptions.FeatureListHeading>\n {content.pricing.proPlus.featureListHeading}\n </PricingOptions.FeatureListHeading>\n <PricingOptions.FeatureListItem>\n {content.pricing.proPlus.features[0]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem>\n {content.pricing.proPlus.features[1]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem\n leadingVisual={SparkleFillIcon}\n leadingVisualFill=\"var(--base-color-scale-purple-5)\"\n >\n {content.pricing.proPlus.features[2]}\n </PricingOptions.FeatureListItem>\n <PricingOptions.FeatureListItem>\n {content.pricing.proPlus.features[3]}\n </PricingOptions.FeatureListItem>\n </PricingOptions.FeatureList>\n </PricingOptions.Item>\n </PricingOptions>\n </Grid.Column>\n </Grid>\n </Box>\n </Tabs.Panel>\n ))}\n </Tabs>\n\n <Section paddingBlockEnd=\"none\">\n <Tiles variant=\"gridlines\" layout=\"compact\">\n {tileItems.slice(0, 6).map(item => (\n <Tiles.Item key={item.name} name={item.name} href={item.href}>\n {item.icon}\n </Tiles.Item>\n ))}\n </Tiles>\n </Section>\n\n <Section paddingBlockStart=\"none\" paddingBlockEnd=\"none\">\n <Box paddingBlockEnd={32} paddingBlockStart={80}>\n <SectionIntro align=\"center\" fullWidth>\n <SectionIntro.Heading>{content.resources.heading}</SectionIntro.Heading>\n </SectionIntro>\n </Box>\n </Section>\n\n <Box className={styles.cardGridFrame} marginBlockEnd={80}>\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.resources.cards.map((card, index) => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 4}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card\n href=\"#\"\n fullWidth\n ctaVariant=\"arrow\"\n ctaText={content.common.learnMore}\n className={clsx(styles.resourceCard, styles.resourceCardWithIcon)}\n >\n <Card.Icon\n icon={cardIcons[index]}\n color=\"green\"\n hasBackground\n size=\"medium\"\n className={styles.resourceCardIcon}\n />\n <Card.Tokens>\n <Token>{card.tag}</Token>\n </Card.Tokens>\n <Card.Heading>{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n <Box paddingBlockEnd={64}>\n <FAQGroup variant=\"gridline\" defaultSelectedIndex={1}>\n <FAQGroup.Heading>\n <Box paddingInlineStart=\"spacious\">\n {content.faq.headingLine1}\n <br />\n {content.faq.headingLine2}\n </Box>\n </FAQGroup.Heading>\n {content.faq.groups.map(group => (\n <FAQ key={group.heading} variant=\"gridline\">\n <FAQ.Heading>{group.heading}</FAQ.Heading>\n {group.items.map((item, index) => (\n <FAQ.Item key={item.question} name={`faq-${group.heading}`} open={index === 0}>\n <FAQ.Question>{item.question}</FAQ.Question>\n <FAQ.Answer>\n <Text as=\"p\" variant=\"muted\">\n {item.answer}\n </Text>\n </FAQ.Answer>\n </FAQ.Item>\n ))}\n </FAQ>\n ))}\n </FAQGroup>\n </Box>\n <footer>\n <Section as=\"div\" paddingBlockStart=\"none\" paddingBlockEnd=\"none\">\n <Grid>\n <Grid.Column>\n <Box paddingInlineStart={32}>\n <Footnotes>\n <Footnotes.Item id=\"economic-impact\" href=\"#economic-impact-ref\">\n Code review will incur Actions usage.{' '}\n </Footnotes.Item>\n <Footnotes.Item id=\"third-party\" href=\"#third-party-ref\">\n Response times may vary during periods of high usage. Requests may be subject to rate limiting.\n </Footnotes.Item>\n <Footnotes.Item id=\"ai\" href=\"#ai-ref\">\n Flex allotments will vary over time.\n </Footnotes.Item>\n </Footnotes>\n </Box>\n </Grid.Column>\n </Grid>\n </Section>\n </footer>\n\n <RedlineBackground style={{height: 600, display: 'flex', flexDirection: 'column', gap: 'var(--base-size-32)'}}>\n <RedlineBackground\n style={{height: 84, marginTop: 'auto', backgroundColor: 'var(--brand-color-border-default)'}}\n />\n </RedlineBackground>\n </Box>\n </>\n )\n}\n\nfunction TempFadeInBackgroundEffect(element: HTMLDivElement, backgroundImageUrl: string, delay = 100) {\n element.style.position = 'relative'\n\n const bgDiv = document.createElement('div')\n bgDiv.style.cssText = `\n position: absolute;\n inset: 0;\n background-image: url(${backgroundImageUrl});\n background-size: cover;\n background-position: center;\n opacity: 0;\n transition: opacity 1.5s ease-out;\n z-index: 0;\n `\n element.insertBefore(bgDiv, element.firstChild)\n\n const children = element.children\n for (let index = 1; index < children.length; index += 1) {\n ;(children[index] as HTMLElement).style.position = 'relative'\n ;(children[index] as HTMLElement).style.zIndex = '1'\n }\n\n const timer = setTimeout(() => {\n bgDiv.style.opacity = '1'\n }, delay)\n\n return () => {\n clearTimeout(timer)\n bgDiv.remove()\n }\n}"
10207
10324
  },
10208
10325
  {
10209
10326
  "name": "FlexSuiteSecurityCategory",
@@ -10220,7 +10337,7 @@
10220
10337
  "full page",
10221
10338
  "template"
10222
10339
  ],
10223
- "source": "import {CodeOfConductIcon, CpuIcon, LightBulbIcon} from '@primer/octicons-react'\nimport {clsx} from 'clsx'\n\nimport {\n Box,\n Card,\n Grid,\n Hero,\n Pillar,\n LogoSuite,\n Section,\n SectionIntro,\n Stack,\n SubNav,\n Image,\n Token,\n Testimonial,\n CTABanner,\n Button,\n Text,\n} from '../../../..'\nimport {logos} from '../../../../LogoSuite/LogoSuite.fixtures'\nimport placeholderBg from '../../../../fixtures/images/security-banner-wide.png'\nimport placeholderImage from '../../../../fixtures/images/placeholder.png'\nimport monaAvatar from '../../../../fixtures/images/avatar-mona.png'\nimport brandDividerWide from '../../../../fixtures/images/brand-divider-security-wide.png'\nimport riverFootstepsChat from './fixtures/images/river-footsteps-chat.png'\nimport riverFootstepsChatMobile from './fixtures/images/river-footsteps-chat-mobile.png'\nimport riverFootstepsReview from './fixtures/images/river-footsteps-review.png'\nimport riverFootstepsReviewMobile from './fixtures/images/river-footsteps-review-mobile.png'\nimport riverFootstepsWorkflow from './fixtures/images/river-footsteps-workflow.png'\nimport riverFootstepsWorkflowMobile from './fixtures/images/river-footsteps-workflow-mobile.png'\n\nimport {\n defaultFlexSuiteSecurityCategoryContent,\n type FlexSuiteSecurityCategoryContent,\n} from './FlexSuiteSecurityCategory.content'\nimport styles from '../../Overview/FlexSuiteAIOverview.module.css'\nimport {RedlineBackground} from '../../../../component-helpers'\nimport {LockIcon} from '@primer/octovisuals-react'\n\nexport type FlexSuiteSecurityCategoryTemplateProps = {\n content: FlexSuiteSecurityCategoryContent\n}\n\nconst cardIcons = [CpuIcon, LightBulbIcon, CodeOfConductIcon] as const\nconst riverFootstepsImages = [riverFootstepsWorkflow, riverFootstepsReview, riverFootstepsChat] as const\nconst riverFootstepsMobileImages = [\n riverFootstepsWorkflowMobile,\n riverFootstepsReviewMobile,\n riverFootstepsChatMobile,\n] as const\n\nexport function FlexSuiteSecurityCategory() {\n return <FlexSuiteSecurityCategoryTemplate content={defaultFlexSuiteSecurityCategoryContent} />\n}\n\nexport function FlexSuiteSecurityCategoryTemplate({content}: FlexSuiteSecurityCategoryTemplateProps) {\n return (\n <Box className={styles.page} backgroundColor=\"default\">\n <Box backgroundColor=\"subtle\" style={{height: 72}} />\n\n <SubNav>\n <SubNav.Heading href=\"#\" aria-current=\"page\">\n {content.subNav.heading}\n </SubNav.Heading>\n\n {content.subNav.links.map(link => (\n <SubNav.Link key={link} href=\"#\">\n {link}\n </SubNav.Link>\n ))}\n </SubNav>\n\n <Section paddingBlockStart=\"none\" paddingBlockEnd=\"none\">\n <Hero align=\"center\">\n <Hero.Label>{content.hero.label}</Hero.Label>\n <Hero.Heading>{content.hero.heading}</Hero.Heading>\n <Hero.ButtonGroup>\n <Button as=\"a\" href=\"#\" variant=\"primary\">\n {content.hero.primaryAction}\n </Button>\n <Button as=\"a\" href=\"#\" variant=\"secondary\">\n {content.hero.secondaryAction}\n </Button>\n </Hero.ButtonGroup>\n </Hero>\n </Section>\n <Stack justifyContent=\"center\" padding=\"none\" style={{marginTop: 'calc(var(--base-size-64) * -1)'}}>\n <Box borderBlockEndWidth=\"thin\" borderColor=\"muted\" borderStyle=\"solid\">\n <Image src={placeholderBg} alt={content.common.heroImageAlt} style={{display: 'block', width: '100%'}} />\n </Box>\n </Stack>\n <Box\n className={clsx(styles.cardGridFrame)}\n marginBlockStart={{narrow: 24, wide: 80}}\n marginBlockEnd={{narrow: 24, wide: 64}}\n >\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.highlights.map((card, index) => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 4}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card\n href=\"#\"\n fullWidth\n ctaVariant=\"arrow\"\n ctaText={content.common.learnMore}\n className={clsx(styles.resourceCard, styles.resourceCardWithIcon)}\n >\n <Card.Icon\n icon={cardIcons[index]}\n color=\"green\"\n hasBackground\n size=\"medium\"\n className={styles.resourceCardIcon}\n />\n {card.tag ? (\n <Card.Tokens>\n <Token>{card.tag}</Token>\n </Card.Tokens>\n ) : null}\n <Card.Heading as=\"h2\">{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n\n <Box borderBlockStartWidth=\"thin\" borderColor=\"muted\" borderStyle=\"solid\">\n <LogoSuite variant=\"gridline-expressive\">\n <LogoSuite.Heading visuallyHidden>{content.logoSuiteHeading}</LogoSuite.Heading>\n <LogoSuite.Logobar marquee={process.env.NODE_ENV !== 'test'}>{logos.slice(0, 8)}</LogoSuite.Logobar>\n </LogoSuite>\n </Box>\n\n <Section paddingBlockEnd=\"none\" paddingBlockStart=\"condensed\">\n <SectionIntro align=\"center\">\n <SectionIntro.Label>{content.workflow.label}</SectionIntro.Label>\n <SectionIntro.Heading>{content.workflow.heading}</SectionIntro.Heading>\n </SectionIntro>\n </Section>\n\n <Box className={styles.cardGridFrame} marginBlockStart={48}>\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.capabilities.map(card => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 6}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card\n href=\"#\"\n fullWidth\n ctaVariant=\"arrow\"\n ctaText={content.common.learnMore}\n className={styles.resourceCard}\n >\n <Card.Image aspectRatio=\"16:10\" src={placeholderImage} alt=\"\" />\n <Card.Heading>{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n\n <Section paddingBlockStart=\"condensed\" paddingBlockEnd=\"none\">\n <SectionIntro align=\"center\" fullWidth>\n <SectionIntro.Label>{content.customerStories.label}</SectionIntro.Label>\n <SectionIntro.Heading>{content.customerStories.heading}</SectionIntro.Heading>\n </SectionIntro>\n </Section>\n\n <Box className={styles.cardGridFrame} marginBlockStart={48}>\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.customerStories.cards.map(card => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 4}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card href=\"#\" fullWidth ctaVariant=\"arrow\" className={styles.resourceCard}>\n {card.tag ? (\n <Card.Tokens>\n <Token>{card.tag}</Token>\n </Card.Tokens>\n ) : null}\n <Card.Heading>{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n\n <Section className={styles.testimonialSection} paddingBlockStart=\"none\" paddingBlockEnd=\"none\">\n <Testimonial variant=\"expressive\" size=\"large\">\n <Testimonial.Quote>\n {content.testimonial.quoteLead} <em>{content.testimonial.quoteEmphasis}</em>{' '}\n {content.testimonial.quoteTrailing}\n </Testimonial.Quote>\n <Testimonial.Link href=\"#\">{content.testimonial.linkText}</Testimonial.Link>\n <Testimonial.Avatar src={monaAvatar} alt={content.testimonial.avatarAlt} />\n <Testimonial.Name position={content.testimonial.position}>{content.testimonial.name}</Testimonial.Name>\n </Testimonial>\n </Section>\n\n <Box borderBlockEndWidth=\"thin\" borderColor=\"muted\" borderStyle=\"solid\">\n <Section paddingBlockEnd=\"none\" paddingBlockStart=\"none\">\n <Box\n borderInlineStartWidth=\"thin\"\n borderInlineEndWidth=\"thin\"\n borderColor=\"muted\"\n borderStyle=\"solid\"\n padding={{narrow: 20, regular: 48, wide: 64}}\n >\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n <Grid.Column span={{xsmall: 12, large: 5}}>\n <SectionIntro>\n <SectionIntro.Heading>{content.riverFootstepsSection.heading}</SectionIntro.Heading>\n <SectionIntro.Link href=\"#\">{content.riverFootstepsSection.linkText}</SectionIntro.Link>\n </SectionIntro>\n </Grid.Column>\n <Grid.Column span={{xsmall: 12, large: 7}}>\n <Grid className={styles.riverFootstepsGrid}>\n {content.riverFootstepsSection.pillars.map((pillar, index) => (\n <Grid.Column key={pillar.heading} span={{xsmall: 12, medium: 6}}>\n <Pillar fullWidth>\n <Pillar.Image\n as=\"picture\"\n src={riverFootstepsMobileImages[index]}\n alt={pillar.imageAlt}\n sources={[{srcset: riverFootstepsImages[index], media: '(min-width: 48rem)'}]}\n className={styles.riverFootstepsImage}\n />\n <Pillar.Heading>{pillar.heading}</Pillar.Heading>\n <Pillar.Link href=\"#\">{pillar.linkText}</Pillar.Link>\n </Pillar>\n </Grid.Column>\n ))}\n </Grid>\n </Grid.Column>\n </Grid>\n </Box>\n </Section>\n </Box>\n\n <Section paddingBlockStart=\"condensed\" paddingBlockEnd=\"condensed\">\n <SectionIntro align=\"center\" fullWidth>\n <SectionIntro.Heading>{content.resources.heading}</SectionIntro.Heading>\n </SectionIntro>\n </Section>\n\n <Box className={styles.cardGridFrame} marginBlockEnd={80}>\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.resources.cards.map(card => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 4}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card\n href=\"#\"\n fullWidth\n ctaVariant=\"arrow\"\n ctaText={content.common.learnMore}\n className={styles.resourceCard}\n >\n {card.tag ? (\n <Card.Tokens>\n <Token>{card.tag}</Token>\n </Card.Tokens>\n ) : null}\n <Card.Heading>{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n\n <Box\n borderBlockStartWidth=\"thin\"\n borderBlockEndWidth=\"thin\"\n borderColor=\"muted\"\n borderStyle=\"solid\"\n marginBlockEnd=\"spacious\"\n >\n <Section paddingBlockEnd=\"none\" paddingBlockStart=\"none\">\n <CTABanner\n leadingComponent={() => (\n <Text>\n <LockIcon size={64} />\n </Text>\n )}\n >\n <CTABanner.Heading>{content.cta.heading}</CTABanner.Heading>\n\n <CTABanner.ButtonGroup>\n <Button>{content.cta.primaryAction}</Button>\n <Button>{content.cta.secondaryAction}</Button>\n </CTABanner.ButtonGroup>\n </CTABanner>\n </Section>\n </Box>\n <Stack justifyContent=\"center\" padding=\"none\">\n <Box borderBlockEndWidth=\"thin\" borderColor=\"muted\" borderStyle=\"solid\">\n <Image src={brandDividerWide} alt=\"\" style={{display: 'block'}} />\n </Box>\n </Stack>\n <RedlineBackground style={{height: 600, display: 'flex', flexDirection: 'column', gap: 'var(--base-size-32)'}}>\n <RedlineBackground\n style={{height: 84, marginTop: 'auto', backgroundColor: 'var(--brand-color-border-default)'}}\n />\n </RedlineBackground>\n </Box>\n )\n}"
10340
+ "source": "import {CodeOfConductIcon, CpuIcon, LightBulbIcon} from '@primer/octicons-react'\nimport {clsx} from 'clsx'\n\nimport {\n Box,\n Card,\n Grid,\n Hero,\n Pillar,\n LogoSuite,\n Section,\n SectionIntro,\n Stack,\n SubNav,\n Image,\n Token,\n Testimonial,\n CTABanner,\n Button,\n Text,\n} from '../../../..'\nimport {logos} from '../../../../LogoSuite/LogoSuite.fixtures'\nimport placeholderBg from '../../../../fixtures/images/security-banner-wide.png'\nimport placeholderImage from '../../../../fixtures/images/placeholder.png'\nimport monaAvatar from '../../../../fixtures/images/avatar-mona.png'\nimport brandDividerWide from '../../../../fixtures/images/brand-divider-security-wide.png'\nimport riverFootstepsChat from './fixtures/images/river-footsteps-chat.png'\nimport riverFootstepsChatMobile from './fixtures/images/river-footsteps-chat-mobile.png'\nimport riverFootstepsReview from './fixtures/images/river-footsteps-review.png'\nimport riverFootstepsReviewMobile from './fixtures/images/river-footsteps-review-mobile.png'\nimport riverFootstepsWorkflow from './fixtures/images/river-footsteps-workflow.png'\nimport riverFootstepsWorkflowMobile from './fixtures/images/river-footsteps-workflow-mobile.png'\n\nimport {\n defaultFlexSuiteSecurityCategoryContent,\n type FlexSuiteSecurityCategoryContent,\n} from './FlexSuiteSecurityCategory.content'\nimport styles from '../../Overview/FlexSuiteAIOverview.module.css'\nimport {RedlineBackground} from '../../../../component-helpers'\nimport {LockIcon} from '@primer/octovisuals-react'\n\nexport type FlexSuiteSecurityCategoryTemplateProps = {\n content: FlexSuiteSecurityCategoryContent\n}\n\nconst cardIcons = [CpuIcon, LightBulbIcon, CodeOfConductIcon] as const\nconst riverFootstepsImages = [riverFootstepsWorkflow, riverFootstepsReview, riverFootstepsChat] as const\nconst riverFootstepsMobileImages = [\n riverFootstepsWorkflowMobile,\n riverFootstepsReviewMobile,\n riverFootstepsChatMobile,\n] as const\n\nexport function FlexSuiteSecurityCategory() {\n return <FlexSuiteSecurityCategoryTemplate content={defaultFlexSuiteSecurityCategoryContent} />\n}\n\nexport function FlexSuiteSecurityCategoryTemplate({content}: FlexSuiteSecurityCategoryTemplateProps) {\n return (\n <Box className={styles.page} backgroundColor=\"default\">\n <Box backgroundColor=\"subtle\" style={{height: 72}} />\n\n <SubNav>\n <SubNav.Heading href=\"#\" aria-current=\"page\">\n {content.subNav.heading}\n </SubNav.Heading>\n\n {content.subNav.links.map(link => (\n <SubNav.Link key={link} href=\"#\">\n {link}\n </SubNav.Link>\n ))}\n </SubNav>\n\n <Section paddingBlockStart=\"none\" paddingBlockEnd=\"none\">\n <Hero align=\"center\">\n <Hero.Label animate initialText={content.hero.initialLabel}>\n {content.hero.label}\n </Hero.Label>\n <Hero.Heading>{content.hero.heading}</Hero.Heading>\n <Hero.ButtonGroup>\n <Button as=\"a\" href=\"#\" variant=\"primary\">\n {content.hero.primaryAction}\n </Button>\n <Button as=\"a\" href=\"#\" variant=\"secondary\">\n {content.hero.secondaryAction}\n </Button>\n </Hero.ButtonGroup>\n </Hero>\n </Section>\n <Stack justifyContent=\"center\" padding=\"none\" style={{marginTop: 'calc(var(--base-size-64) * -1)'}}>\n <Box borderBlockEndWidth=\"thin\" borderColor=\"muted\" borderStyle=\"solid\">\n <Image src={placeholderBg} alt={content.common.heroImageAlt} style={{display: 'block', width: '100%'}} />\n </Box>\n </Stack>\n <Box\n className={clsx(styles.cardGridFrame)}\n marginBlockStart={{narrow: 24, wide: 80}}\n marginBlockEnd={{narrow: 24, wide: 64}}\n >\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.highlights.map((card, index) => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 4}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card\n href=\"#\"\n fullWidth\n ctaVariant=\"arrow\"\n ctaText={content.common.learnMore}\n className={clsx(styles.resourceCard, styles.resourceCardWithIcon)}\n >\n <Card.Icon\n icon={cardIcons[index]}\n color=\"green\"\n hasBackground\n size=\"medium\"\n className={styles.resourceCardIcon}\n />\n {card.tag ? (\n <Card.Tokens>\n <Token>{card.tag}</Token>\n </Card.Tokens>\n ) : null}\n <Card.Heading as=\"h2\">{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n\n <Box borderBlockStartWidth=\"thin\" borderColor=\"muted\" borderStyle=\"solid\">\n <LogoSuite variant=\"gridline-expressive\">\n <LogoSuite.Heading visuallyHidden>{content.logoSuiteHeading}</LogoSuite.Heading>\n <LogoSuite.Logobar marquee={process.env.NODE_ENV !== 'test'}>{logos.slice(0, 8)}</LogoSuite.Logobar>\n </LogoSuite>\n </Box>\n\n <Section paddingBlockEnd=\"none\" paddingBlockStart=\"condensed\">\n <SectionIntro align=\"center\">\n <SectionIntro.Label>{content.workflow.label}</SectionIntro.Label>\n <SectionIntro.Heading>{content.workflow.heading}</SectionIntro.Heading>\n </SectionIntro>\n </Section>\n\n <Box className={styles.cardGridFrame} marginBlockStart={48}>\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.capabilities.map(card => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 6}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card\n href=\"#\"\n fullWidth\n ctaVariant=\"arrow\"\n ctaText={content.common.learnMore}\n className={styles.resourceCard}\n >\n <Card.Image aspectRatio=\"16:10\" src={placeholderImage} alt=\"\" />\n <Card.Heading>{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n\n <Section paddingBlockStart=\"condensed\" paddingBlockEnd=\"none\">\n <SectionIntro align=\"center\" fullWidth>\n <SectionIntro.Label>{content.customerStories.label}</SectionIntro.Label>\n <SectionIntro.Heading>{content.customerStories.heading}</SectionIntro.Heading>\n </SectionIntro>\n </Section>\n\n <Box className={styles.cardGridFrame} marginBlockStart={48}>\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.customerStories.cards.map(card => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 4}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card href=\"#\" fullWidth ctaVariant=\"arrow\" className={styles.resourceCard}>\n {card.tag ? (\n <Card.Tokens>\n <Token>{card.tag}</Token>\n </Card.Tokens>\n ) : null}\n <Card.Heading>{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n\n <Section className={styles.testimonialSection} paddingBlockStart=\"none\" paddingBlockEnd=\"none\">\n <Testimonial variant=\"expressive\" size=\"large\">\n <Testimonial.Quote>\n {content.testimonial.quoteLead} <em>{content.testimonial.quoteEmphasis}</em>{' '}\n {content.testimonial.quoteTrailing}\n </Testimonial.Quote>\n <Testimonial.Link href=\"#\">{content.testimonial.linkText}</Testimonial.Link>\n <Testimonial.Avatar src={monaAvatar} alt={content.testimonial.avatarAlt} />\n <Testimonial.Name position={content.testimonial.position}>{content.testimonial.name}</Testimonial.Name>\n </Testimonial>\n </Section>\n\n <Box borderBlockEndWidth=\"thin\" borderColor=\"muted\" borderStyle=\"solid\">\n <Section paddingBlockEnd=\"none\" paddingBlockStart=\"none\">\n <Box\n borderInlineStartWidth=\"thin\"\n borderInlineEndWidth=\"thin\"\n borderColor=\"muted\"\n borderStyle=\"solid\"\n padding={{narrow: 20, regular: 48, wide: 64}}\n >\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n <Grid.Column span={{xsmall: 12, large: 5}}>\n <SectionIntro>\n <SectionIntro.Heading>{content.riverFootstepsSection.heading}</SectionIntro.Heading>\n <SectionIntro.Link href=\"#\">{content.riverFootstepsSection.linkText}</SectionIntro.Link>\n </SectionIntro>\n </Grid.Column>\n <Grid.Column span={{xsmall: 12, large: 7}}>\n <Grid className={styles.riverFootstepsGrid}>\n {content.riverFootstepsSection.pillars.map((pillar, index) => (\n <Grid.Column key={pillar.heading} span={{xsmall: 12, medium: 6}}>\n <Pillar fullWidth>\n <Pillar.Image\n as=\"picture\"\n src={riverFootstepsMobileImages[index]}\n alt={pillar.imageAlt}\n sources={[{srcset: riverFootstepsImages[index], media: '(min-width: 48rem)'}]}\n className={styles.riverFootstepsImage}\n />\n <Pillar.Heading>{pillar.heading}</Pillar.Heading>\n <Pillar.Link href=\"#\">{pillar.linkText}</Pillar.Link>\n </Pillar>\n </Grid.Column>\n ))}\n </Grid>\n </Grid.Column>\n </Grid>\n </Box>\n </Section>\n </Box>\n\n <Section paddingBlockStart=\"condensed\" paddingBlockEnd=\"condensed\">\n <SectionIntro align=\"center\" fullWidth>\n <SectionIntro.Heading>{content.resources.heading}</SectionIntro.Heading>\n </SectionIntro>\n </Section>\n\n <Box className={styles.cardGridFrame} marginBlockEnd={80}>\n <Box className={styles.cardGridContent}>\n <Grid columnGap=\"none\" rowGap=\"none\" enableGutters={false}>\n {content.resources.cards.map(card => (\n <Grid.Column\n key={card.heading}\n span={{xsmall: 12, large: 4}}\n className={clsx(styles.cardGridColumn, styles.cardGridColumnArrowHover)}\n >\n <Box className={styles.cardGridItem}>\n <Card\n href=\"#\"\n fullWidth\n ctaVariant=\"arrow\"\n ctaText={content.common.learnMore}\n className={styles.resourceCard}\n >\n {card.tag ? (\n <Card.Tokens>\n <Token>{card.tag}</Token>\n </Card.Tokens>\n ) : null}\n <Card.Heading>{card.heading}</Card.Heading>\n <Card.Description>{card.description}</Card.Description>\n </Card>\n </Box>\n </Grid.Column>\n ))}\n </Grid>\n </Box>\n </Box>\n\n <Box\n borderBlockStartWidth=\"thin\"\n borderBlockEndWidth=\"thin\"\n borderColor=\"muted\"\n borderStyle=\"solid\"\n marginBlockEnd=\"spacious\"\n >\n <Section paddingBlockEnd=\"none\" paddingBlockStart=\"none\">\n <CTABanner\n leadingComponent={() => (\n <Text>\n <LockIcon size={64} />\n </Text>\n )}\n >\n <CTABanner.Heading>{content.cta.heading}</CTABanner.Heading>\n\n <CTABanner.ButtonGroup>\n <Button>{content.cta.primaryAction}</Button>\n <Button>{content.cta.secondaryAction}</Button>\n </CTABanner.ButtonGroup>\n </CTABanner>\n </Section>\n </Box>\n <Stack justifyContent=\"center\" padding=\"none\">\n <Box borderBlockEndWidth=\"thin\" borderColor=\"muted\" borderStyle=\"solid\">\n <Image src={brandDividerWide} alt=\"\" style={{display: 'block'}} />\n </Box>\n </Stack>\n <RedlineBackground style={{height: 600, display: 'flex', flexDirection: 'column', gap: 'var(--base-size-32)'}}>\n <RedlineBackground\n style={{height: 84, marginTop: 'auto', backgroundColor: 'var(--brand-color-border-default)'}}\n />\n </RedlineBackground>\n </Box>\n )\n}"
10224
10341
  }
10225
10342
  ]
10226
10343
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer/brand-mcp",
3
- "version": "0.74.0",
3
+ "version": "0.75.0-rc.89e3cadf",
4
4
  "description": "MCP (Model Context Protocol) server that helps AI agents use Primer Brand (@primer/react-brand) correctly when building GitHub marketing and landing pages.",
5
5
  "keywords": [
6
6
  "primer",
@@ -54,12 +54,12 @@
54
54
  "prepack": "npm run build"
55
55
  },
56
56
  "dependencies": {
57
- "@modelcontextprotocol/sdk": "^1.24.0",
58
- "zod": "3.25.58"
57
+ "@modelcontextprotocol/sdk": "^1.30.0",
58
+ "zod": "3.25.76"
59
59
  },
60
60
  "devDependencies": {
61
- "@modelcontextprotocol/inspector": "^0.16.6",
62
- "@types/node": "24.12.0"
61
+ "@modelcontextprotocol/inspector": "^0.22.0",
62
+ "@types/node": "24.13.3"
63
63
  },
64
64
  "engines": {
65
65
  "node": ">=24.0.0 <25"