@primer/brand-css 0.0.0-20250212132611

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 (75) hide show
  1. package/components/Accordion/Accordion.css +305 -0
  2. package/components/ActionMenu/ActionMenu.css +187 -0
  3. package/components/AnchorNav/AnchorNav.css +427 -0
  4. package/components/Avatar/Avatar.css +115 -0
  5. package/components/Bento/Bento.css +2157 -0
  6. package/components/Box/Box.css +2795 -0
  7. package/components/Box/Box.features.css +48 -0
  8. package/components/Breadcrumbs/Breadcrumbs.css +81 -0
  9. package/components/BreakoutBanner/BreakoutBanner.css +109 -0
  10. package/components/Button/Button.css +207 -0
  11. package/components/ButtonGroup/ButtonGroup.css +10 -0
  12. package/components/CTABanner/CTABanner.css +104 -0
  13. package/components/CTAForm/CTAForm.css +48 -0
  14. package/components/Card/Card.css +183 -0
  15. package/components/ComparisonTable/ComparisonTable.css +290 -0
  16. package/components/ExpandableArrow/ExpandableArrow.css +26 -0
  17. package/components/EyebrowBanner/EyebrowBanner.css +320 -0
  18. package/components/FAQ/FAQ.css +51 -0
  19. package/components/FAQ/FAQGroup.css +51 -0
  20. package/components/Footnotes/Footnotes.css +35 -0
  21. package/components/FrostedGlassVFX/FrostedGlassVFX.css +50 -0
  22. package/components/Grid/Grid.css +741 -0
  23. package/components/Heading/Heading.css +284 -0
  24. package/components/Hero/Hero.css +87 -0
  25. package/components/IDE/IDE.css +392 -0
  26. package/components/Icon/Icon.css +121 -0
  27. package/components/Image/Image.css +54 -0
  28. package/components/InlineLink/InlineLink.css +30 -0
  29. package/components/Label/Label.css +167 -0
  30. package/components/Link/Link.css +84 -0
  31. package/components/LogoSuite/LogoSuite.css +165 -0
  32. package/components/MinimalFooter/MinimalFooter.css +116 -0
  33. package/components/MonaSans/MonaSans.css +4 -0
  34. package/components/Pagination/Pagination.css +117 -0
  35. package/components/Pillar/Pillar.css +106 -0
  36. package/components/PricingOptions/PricingOptions.css +357 -0
  37. package/components/Prose/Prose.css +332 -0
  38. package/components/Section/Section.css +156 -0
  39. package/components/Section/Section.features.css +33 -0
  40. package/components/SectionIntro/SectionIntro.css +48 -0
  41. package/components/Stack/Stack.css +793 -0
  42. package/components/Statistic/Statistic.css +91 -0
  43. package/components/SubNav/SubNav.css +678 -0
  44. package/components/SubdomainNavBar/SubdomainNavBar.css +728 -0
  45. package/components/Testimonial/Testimonial.css +228 -0
  46. package/components/Text/Text.css +195 -0
  47. package/components/Timeline/Timeline.css +79 -0
  48. package/components/Tooltip/Tooltip.css +170 -0
  49. package/components/VideoPlayer/VideoPlayer.css +348 -0
  50. package/components/VideoPlayer/components/Captions/Captions.css +17 -0
  51. package/components/VideoPlayer/components/VolumeControl/VolumeControl.css +3 -0
  52. package/components/animation/Animation.css +192 -0
  53. package/components/animation/TextRevealAnimation/TextRevealAnimation.css +38 -0
  54. package/components/forms/Checkbox/Checkbox.css +88 -0
  55. package/components/forms/ControlGroup/ControlGroup.css +59 -0
  56. package/components/forms/FormControl/FormControl.css +113 -0
  57. package/components/forms/Radio/Radio.css +111 -0
  58. package/components/forms/Select/Select.css +143 -0
  59. package/components/forms/TextInput/TextInput.css +266 -0
  60. package/components/forms/Textarea/Textarea.css +129 -0
  61. package/components/list/ListItem/ListItem.css +29 -0
  62. package/components/list/OrderedList/OrderedList.css +3 -0
  63. package/components/list/list-shared.css +10 -0
  64. package/components/recipes/FeaturePreviewLPs/FeaturePreviewLevelOne/FeaturePreviewLevelOne.css +204 -0
  65. package/components/recipes/FeaturePreviewLPs/FeaturePreviewLevelTwo/FeaturePreviewLevelTwo.css +57 -0
  66. package/components/recipes/FeaturePreviewLPs/FeaturePreviewLevelZero/FeaturePreviewLevelZero.css +3 -0
  67. package/components/recipes/SolutionTemplates/CategoryPage/CategoryPage.css +83 -0
  68. package/components/recipes/SolutionTemplates/SolutionPage/SolutionPage.css +119 -0
  69. package/components/recipes/SolutionTemplates/SolutionsOverview/SolutionsOverview.css +35 -0
  70. package/components/recipes/SolutionTemplates/parallax.css +165 -0
  71. package/components/recipes/seo/Article/Article.css +289 -0
  72. package/components/recipes/seo/Category/CategoryPage.css +43 -0
  73. package/components/river/RiverStoryScroll/RiverStoryScroll.css +470 -0
  74. package/components/river/river-shared.css +205 -0
  75. package/package.json +42 -0
@@ -0,0 +1,59 @@
1
+ .ControlGroup__container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--base-size-8);
5
+ font-family: var(--brand-body-fontFamily);
6
+ font-size: var(--brand-text-size-100);
7
+ border: none;
8
+ margin: 0;
9
+ padding: 0;
10
+ }
11
+
12
+ .ControlGroup__label {
13
+ margin: 0;
14
+ padding: 0;
15
+ margin-block-end: var(--base-size-8);
16
+ }
17
+
18
+ .ControlGroup__validation {
19
+ display: flex;
20
+ gap: var(--base-size-4);
21
+ font-weight: var(--base-text-weight-medium);
22
+ }
23
+
24
+ .ControlGroup__validation--success {
25
+ color: var(--brand-color-success-fg);
26
+ }
27
+
28
+ .ControlGroup__validation--error {
29
+ color: var(--brand-color-error-fg);
30
+ }
31
+
32
+ .ControlGroup__validation-icon--success {
33
+ position: relative;
34
+ top: -1px;
35
+ }
36
+
37
+ .ControlGroup__validation-icon--error {
38
+ position: relative;
39
+ top: -0.5px;
40
+ }
41
+
42
+ .ControlGroup__validation--animate-in {
43
+ animation: 170ms ControlGroupValidationFadeIn var(--brand-animation-easing-glide);
44
+ }
45
+
46
+ .ControlGroup__container label {
47
+ font-weight: var(--base-text-weight-medium);
48
+ }
49
+
50
+ @keyframes ControlGroupValidationFadeIn {
51
+ 0% {
52
+ opacity: 0;
53
+ transform: translateY(-100%);
54
+ }
55
+ 100% {
56
+ opacity: 1;
57
+ transform: translateY(0);
58
+ }
59
+ }
@@ -0,0 +1,113 @@
1
+ .FormControl {
2
+ display: inline-flex;
3
+ font-family: var(--brand-body-fontFamily);
4
+ flex-direction: column;
5
+ gap: var(--base-size-8);
6
+ }
7
+
8
+ .FormControl--fullWidth {
9
+ width: 100%;
10
+ }
11
+
12
+ .FormControl--checkbox {
13
+ display: grid;
14
+ grid-template-columns: auto 1fr;
15
+ }
16
+
17
+ .FormControl--border {
18
+ border: 1px solid var(--brand-control-color-border-default);
19
+ border-radius: var(--brand-borderRadius-medium);
20
+ padding: var(--base-size-12);
21
+ }
22
+
23
+ .FormControl-label {
24
+ color: var(--brand-color-text-default);
25
+ font-weight: var(--base-text-weight-semibold);
26
+ font-family: var(--brand-body-fontFamily);
27
+ }
28
+
29
+ .FormControl-label--visually-hidden {
30
+ position: absolute;
31
+ width: 1px;
32
+ height: 1px;
33
+ padding: 0;
34
+ margin: -1px;
35
+ overflow: hidden;
36
+ clip: rect(0, 0, 0, 0);
37
+ white-space: nowrap;
38
+ border-width: 0;
39
+ }
40
+
41
+ .FormControl-label--medium {
42
+ letter-spacing: var(--brand-text-letterSpacing-100);
43
+ font-size: var(--brand-text-size-100);
44
+ line-height: var(--brand-text-lineHeight-100);
45
+ }
46
+
47
+ .FormControl-label--large {
48
+ letter-spacing: var(--brand-text-letterSpacing-300);
49
+ font-size: var(--brand-text-size-300);
50
+ line-height: var(--brand-text-lineHeight-300);
51
+ }
52
+
53
+ .FormControl-label--checkbox {
54
+ cursor: pointer;
55
+ font-size: var(--brand-text-size-100);
56
+ font-weight: var(--base-text-weight-semibold);
57
+ line-height: var(--base-size-24); /* FIXME */
58
+ position: relative;
59
+ top: 2px;
60
+ width: 100%;
61
+ }
62
+
63
+ .FormControl-control--radio {
64
+ margin: 2px 0 0;
65
+ }
66
+
67
+ .FormControl-hint {
68
+ grid-column: 1 / 3;
69
+ display: block;
70
+ }
71
+
72
+ /*Validation*/
73
+ .FormControl-validation {
74
+ display: flex;
75
+ gap: var(--base-size-4);
76
+ }
77
+
78
+ .FormControl-validation--success {
79
+ color: var(--brand-color-success-fg);
80
+ }
81
+
82
+ .FormControl-validation--error {
83
+ color: var(--brand-color-error-fg);
84
+ }
85
+
86
+ .FormControl-validation-success-icon {
87
+ position: relative;
88
+ top: -1px;
89
+ }
90
+
91
+ .FormControl-validation-error-icon {
92
+ position: relative;
93
+ top: -0.5px;
94
+ }
95
+
96
+ .FormControl-validation--animate-in {
97
+ animation: 170ms FormControlValidationFadeIn cubic-bezier(0.44, 0.74, 0.36, 1);
98
+ }
99
+
100
+ @keyframes FormControlValidationFadeIn {
101
+ 0% {
102
+ opacity: 0;
103
+ transform: translateY(-100%);
104
+ }
105
+ 100% {
106
+ opacity: 1;
107
+ transform: translateY(0);
108
+ }
109
+ }
110
+
111
+ .FormControl-validation-checkbox {
112
+ grid-column: 1 / 3;
113
+ }
@@ -0,0 +1,111 @@
1
+ /*
2
+ * Default Radio styles
3
+ */
4
+ .Radio-wrapper {
5
+ position: relative;
6
+ -webkit-user-select: none;
7
+ -moz-user-select: none;
8
+ user-select: none;
9
+ cursor: pointer;
10
+ grid-row: 1;
11
+ }
12
+
13
+ .Radio {
14
+ align-items: center;
15
+ background-color: var(--brand-control-radio-bg-default);
16
+ border: solid var(--brand-borderWidth-thick, 1px) var(--brand-control-color-border-default);
17
+ border-radius: 50%;
18
+ cursor: pointer;
19
+ display: inline-flex;
20
+ height: 20px;
21
+ justify-content: center;
22
+ margin: 3px 0; /* mimic default browser-applied vertical margin */
23
+ margin: 3px 3px 0px 5px; /* Emulate browser defaults */
24
+
25
+ width: 20px;
26
+ outline: none;
27
+ box-shadow: 0 0 0 3px transparent;
28
+ position: relative;
29
+ }
30
+
31
+ /*
32
+ Fixes safari bug where outline doesn't respect border-radius
33
+ */
34
+ .Radio::before {
35
+ content: '';
36
+ position: absolute;
37
+ top: -4px;
38
+ right: -2px;
39
+ bottom: -2px;
40
+ left: -4px;
41
+ border: 2px solid var(--brand-control-radio-bg-default);
42
+ border-radius: 50%;
43
+ width: 24px;
44
+ height: 24px;
45
+ }
46
+
47
+ /**
48
+ * Radio native input - visually hidden
49
+ */
50
+ .Radio-input {
51
+ border: 0;
52
+ clip: rect(1px, 1px, 1px, 1px);
53
+ height: 1px;
54
+ overflow: hidden;
55
+ padding: 0;
56
+ position: absolute;
57
+ width: 1px;
58
+ }
59
+
60
+ .Radio-dot {
61
+ position: absolute;
62
+ display: none;
63
+ border-color: var(--brand-control-radio-dot-default);
64
+ width: 12px;
65
+ height: 12px;
66
+ border-radius: 50%;
67
+ background: var(--brand-control-radio-dot-default);
68
+ position: absolute;
69
+ display: block;
70
+ transform: scale(0.7);
71
+ opacity: 0;
72
+ transition: transform 0.35s var(--brand-animation-easing-glide), opacity 0.35s var(--brand-animation-easing-glide);
73
+ }
74
+ @media (prefers-reduced-motion) {
75
+ .Radio-dot {
76
+ transition: none;
77
+ }
78
+ }
79
+
80
+ /*
81
+ * Checked state
82
+ */
83
+
84
+ .Radio-input:checked + .Radio {
85
+ background-color: var(--brand-control-radio-bg-checked);
86
+ border-color: var(--brand-control-radio-border-checked);
87
+ }
88
+
89
+ .Radio-input:checked + .Radio .Radio-dot {
90
+ opacity: 1;
91
+ transform: scale(1);
92
+ }
93
+
94
+ .Radio-input:focus + .Radio {
95
+ box-shadow: 0 0 0 4px var(--brand-color-focus);
96
+ }
97
+
98
+ /* TODO: Check with a11y team */
99
+ .Radio-input:checked:focus + .Radio {
100
+ border-color: var(--brand-control-radio-border-checked);
101
+ }
102
+
103
+ .Radio-input[disabled] + .Radio,
104
+ .Radio-input[disabled]:checked + .Radio {
105
+ -webkit-text-fill-color: var(--brand-control-color-fg-disabled);
106
+ color: var(--brand-control-color-fg-disabled);
107
+ cursor: not-allowed;
108
+ background-color: var(--brand-control-radio-bg-disabled);
109
+ border-color: var(--brand-control-color-border-disabled);
110
+ opacity: 1;
111
+ }
@@ -0,0 +1,143 @@
1
+ /*
2
+ * Default Select styles
3
+ */
4
+ .Select {
5
+ -webkit-appearance: none;
6
+ -moz-appearance: none;
7
+ appearance: none;
8
+ color: var(--brand-control-color-fg-default);
9
+ cursor: pointer;
10
+ background-color: var(--brand-color-canvas-default);
11
+ border: none;
12
+ border-radius: var(--brand-borderRadius-medium);
13
+ line-height: var(--brand-text-lineHeight-200);
14
+ transition: var(--brand-control-animation-duration) var(--brand-control-animation-easing);
15
+ transition-property: color, background-color, box-shadow, border-color;
16
+ width: 100%;
17
+ grid-column: 1 / -1;
18
+ grid-row: 1;
19
+ }
20
+
21
+ @media screen and (forced-colors: active) {
22
+ /* Maintain dark bg color in Firefox on Windows high-contrast mode */
23
+ .Select:disabled {
24
+ background-color: -moz-combobox;
25
+ }
26
+ }
27
+
28
+ .Select::-moz-placeholder {
29
+ color: var(--brand-color-text-subtle);
30
+ opacity: 1;
31
+ }
32
+
33
+ .Select::placeholder {
34
+ color: var(--brand-color-text-subtle);
35
+ opacity: 1;
36
+ }
37
+
38
+ .Select:focus-visible {
39
+ border-color: var(--brand-color-focus);
40
+ outline: none;
41
+ box-shadow: 0 0 0 2px var(--brand-color-focus);
42
+ }
43
+
44
+ .Select[disabled] {
45
+ -webkit-text-fill-color: var(--brand-control-color-fg-disabled);
46
+ color: var(--brand-control-color-fg-disabled);
47
+ cursor: not-allowed;
48
+ background-color: var(--brand-control-color-canvas-disabled);
49
+ border-color: var(--brand-control-color-border-disabled);
50
+ opacity: 1;
51
+ }
52
+
53
+ .Select-wrapper--disabled.Select-wrapper::after {
54
+ background-color: var(--brand-control-color-fg-disabled);
55
+ }
56
+
57
+ /*
58
+ * Sizes
59
+ */
60
+
61
+ .Select-wrapper--medium {
62
+ height: var(--brand-control-medium-size);
63
+ }
64
+
65
+ .Select-wrapper--medium::after {
66
+ margin-inline-end: calc(var(--brand-control-medium-paddingInline-condensed) / 2);
67
+ }
68
+
69
+ .Select--medium {
70
+ font-weight: var(--brand-text-weight-100);
71
+ font-size: var(--brand-text-size-100);
72
+ padding-inline: var(--brand-control-medium-paddingInline-condensed);
73
+ padding-inline-end: calc(var(--brand-control-medium-paddingInline-condensed) + var(--base-size-16));
74
+ padding-block: 0;
75
+ }
76
+
77
+ .Select-wrapper--large {
78
+ height: var(--brand-control-large-size);
79
+ }
80
+
81
+ .Select-wrapper--large::after {
82
+ margin-inline-end: var(--base-size-8);
83
+ }
84
+
85
+ .Select--large {
86
+ font-weight: var(--brand-text-weight-200);
87
+ font-size: var(--brand-text-size-200);
88
+ padding-inline: var(--brand-control-large-paddingInline-condensed);
89
+ padding-inline-end: calc(var(--brand-control-large-paddingInline-condensed) + var(--base-size-16));
90
+ padding-block: 0;
91
+ }
92
+
93
+ /*
94
+ * Select wrapper
95
+ */
96
+
97
+ .Select-wrapper {
98
+ border: solid var(--brand-borderWidth-thin, 1px) var(--brand-control-color-border-default);
99
+ border-radius: var(--brand-borderRadius-medium, 6px);
100
+ font-family: var(--brand-body-fontFamily);
101
+ position: relative;
102
+ display: inline-grid;
103
+ grid-template-columns: minmax(0, auto) var(--base-size-16);
104
+ }
105
+
106
+ .Select-wrapper::after {
107
+ content: '';
108
+ position: absolute;
109
+ right: 0;
110
+ width: var(--base-size-16);
111
+ height: var(--base-size-16);
112
+ pointer-events: none;
113
+ background-color: var(--brand-control-color-fg-default);
114
+ mask: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0iIzU4NjA2OSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNC40MjcgOS40MjdsMy4zOTYgMy4zOTZhLjI1MS4yNTEgMCAwMC4zNTQgMGwzLjM5Ni0zLjM5NkEuMjUuMjUgMCAwMDExLjM5NiA5SDQuNjA0YS4yNS4yNSAwIDAwLS4xNzcuNDI3ek00LjQyMyA2LjQ3TDcuODIgMy4wNzJhLjI1LjI1IDAgMDEuMzU0IDBMMTEuNTcgNi40N2EuMjUuMjUgMCAwMS0uMTc3LjQyN0g0LjZhLjI1LjI1IDAgMDEtLjE3Ny0uNDI3eiIgLz48L3N2Zz4=');
115
+ -webkit-mask: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0iIzU4NjA2OSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNC40MjcgOS40MjdsMy4zOTYgMy4zOTZhLjI1MS4yNTEgMCAwMC4zNTQgMGwzLjM5Ni0zLjM5NkEuMjUuMjUgMCAwMDExLjM5NiA5SDQuNjA0YS4yNS4yNSAwIDAwLS4xNzcuNDI3ek00LjQyMyA2LjQ3TDcuODIgMy4wNzJhLjI1LjI1IDAgMDEuMzU0IDBMMTEuNTcgNi40N2EuMjUuMjUgMCAwMS0uMTc3LjQyN0g0LjZhLjI1LjI1IDAgMDEtLjE3Ny0uNDI3eiIgLz48L3N2Zz4=');
116
+ mask-size: contain;
117
+ -webkit-mask-size: contain;
118
+ mask-repeat: no-repeat;
119
+ -webkit-mask-repeat: no-repeat;
120
+ grid-column: 2;
121
+ grid-row: 1;
122
+ place-self: center end;
123
+ }
124
+
125
+ .Select-wrapper--disabled {
126
+ border-color: var(--brand-control-color-border-disabled);
127
+ }
128
+
129
+ .Select-wrapper--fullWidth {
130
+ width: 100%;
131
+ }
132
+
133
+ /*
134
+ * Validation
135
+ */
136
+
137
+ .Select--success {
138
+ border-color: var(--brand-color-success-fg);
139
+ }
140
+
141
+ .Select--error {
142
+ border-color: var(--brand-color-error-fg);
143
+ }
@@ -0,0 +1,266 @@
1
+ /*
2
+ * Default TextInput styles
3
+ */
4
+ .TextInput {
5
+ display: flex;
6
+ color: var(--brand-control-color-fg-default);
7
+ background-color: var(--brand-color-canvas-default);
8
+ border: none;
9
+ border-radius: var(--brand-borderRadius-medium);
10
+ line-height: var(--brand-text-lineHeight-100);
11
+ transition: var(--brand-control-animation-duration) var(--brand-control-animation-easing);
12
+ transition-property: color, background-color, box-shadow;
13
+ }
14
+
15
+ .TextInput::-moz-placeholder {
16
+ color: var(--brand-color-text-subtle);
17
+ opacity: 1;
18
+ }
19
+
20
+ .TextInput::placeholder {
21
+ color: var(--brand-color-text-subtle);
22
+ opacity: 1;
23
+ }
24
+
25
+ .TextInput[disabled] {
26
+ -webkit-text-fill-color: var(--brand-control-color-fg-disabled);
27
+ color: var(--brand-control-color-fg-disabled);
28
+ cursor: not-allowed;
29
+ background-color: var(--brand-control-color-canvas-disabled);
30
+ opacity: 1;
31
+ }
32
+
33
+ .TextInput:focus {
34
+ outline: none;
35
+ }
36
+
37
+ /*
38
+ * Sizes
39
+ */
40
+
41
+ .TextInput-wrapper--medium {
42
+ height: var(--brand-control-medium-size);
43
+ }
44
+
45
+ .TextInput--medium {
46
+ font-weight: var(--brand-text-weight-100);
47
+ font-size: var(--brand-text-size-100);
48
+ padding: var(--brand-control-medium-paddingBlock-normal) var(--brand-control-medium-paddingInline-condensed);
49
+ }
50
+
51
+ .TextInput--large {
52
+ font-weight: var(--brand-text-weight-200);
53
+ font-size: var(--brand-text-size-200);
54
+ padding: var(--brand-control-large-paddingBlock-normal) var(--brand-control-large-paddingInline-condensed);
55
+ }
56
+
57
+ .TextInput-wrapper--large {
58
+ height: var(--brand-control-large-size);
59
+ }
60
+
61
+ /*
62
+ * Visual states
63
+ */
64
+ .TextInput--fullWidth {
65
+ width: 100%;
66
+ }
67
+
68
+ /*
69
+ * TextInput wrapper
70
+ */
71
+
72
+ .TextInput-wrapper--disabled {
73
+ border-color: var(--brand-control-color-border-disabled);
74
+ }
75
+
76
+ .TextInput-wrapper {
77
+ font-family: var(--brand-body-fontFamily);
78
+ display: inline-flex;
79
+ position: relative;
80
+ border: solid var(--brand-borderWidth-thin, 1px) var(--brand-control-color-border-default);
81
+ border-radius: var(--brand-borderRadius-medium);
82
+ transition: var(--brand-control-animation-duration) var(--brand-control-animation-easing);
83
+ transition-property: border;
84
+ }
85
+
86
+ .TextInput-wrapper--invisible {
87
+ border-color: transparent;
88
+ }
89
+
90
+ .TextInput-wrapper--fullWidth {
91
+ width: 100%;
92
+ display: flex;
93
+ }
94
+
95
+ .TextInput-wrapper:not(.TextInput-wrapper--fullWidth) {
96
+ width: -moz-min-content;
97
+ width: min-content;
98
+ }
99
+
100
+ .TextInput-wrapper--monospace {
101
+ font-family: var(--brand-fontStack-monospace);
102
+ }
103
+
104
+ .TextInput-wrapper:focus-within {
105
+ border-color: var(--brand-color-focus);
106
+ box-shadow: 0 0 0 1px var(--brand-color-focus);
107
+ outline: none;
108
+ }
109
+
110
+ /*
111
+ * Validation
112
+ */
113
+
114
+ .TextInput-wrapper--success,
115
+ .TextInput-wrapper--success.TextInput-wrapper--disabled {
116
+ border-color: var(--brand-color-success-fg);
117
+ }
118
+
119
+ .TextInput-wrapper--error,
120
+ .TextInput-wrapper--error.TextInput-wrapper--disabled {
121
+ border-color: var(--brand-color-error-fg);
122
+ }
123
+
124
+ /*
125
+ * TextInput visuals
126
+ */
127
+ .TextInput--has-leading-visual--medium {
128
+ padding-inline-start: calc(
129
+ var(--brand-control-medium-paddingInline-condensed) + var(--base-size-16) + var(--brand-control-medium-gap)
130
+ );
131
+ }
132
+
133
+ .TextInput--has-leading-visual--large {
134
+ padding-inline-start: calc(
135
+ var(--brand-control-large-paddingInline-condensed) + var(--base-size-20) + var(--brand-control-large-gap)
136
+ );
137
+ }
138
+
139
+ .TextInput--has-trailing-visual--medium {
140
+ padding-inline-end: calc(
141
+ var(--brand-control-medium-paddingInline-condensed) + var(--base-size-16) + var(--brand-control-medium-gap)
142
+ );
143
+ }
144
+
145
+ .TextInput--has-trailing-visual--large {
146
+ padding-inline-end: calc(
147
+ var(--brand-control-medium-paddingInline-condensed) + var(--base-size-20) + var(--brand-control-medium-gap)
148
+ );
149
+ }
150
+
151
+ .TextInput-leading-visual,
152
+ .TextInput-trailing-visual {
153
+ display: grid;
154
+ position: absolute;
155
+ top: 0;
156
+ display: flex;
157
+ width: var(--base-size-16);
158
+ height: 100%;
159
+ align-items: center;
160
+ color: var(--color-fg-muted);
161
+ pointer-events: none;
162
+ color: var(--brand-color-text-default);
163
+ }
164
+
165
+ .TextInput-leading-visual--medium {
166
+ left: var(--brand-control-medium-paddingInline-condensed);
167
+ }
168
+
169
+ .TextInput-trailing-visual--medium {
170
+ right: var(--brand-control-medium-paddingInline-condensed);
171
+ }
172
+
173
+ .TextInput-leading-visual--large {
174
+ left: var(--brand-control-large-paddingInline-condensed);
175
+ }
176
+
177
+ .TextInput-trailing-visual--large {
178
+ right: var(--brand-control-large-paddingInline-condensed);
179
+ }
180
+
181
+ .TextInput-leading-visual-icon--medium {
182
+ width: var(--base-size-16);
183
+ height: var(--base-size-16);
184
+ }
185
+
186
+ .TextInput-leading-visual-icon--large {
187
+ width: var(--base-size-20);
188
+ height: var(--base-size-20);
189
+ }
190
+
191
+ /*
192
+ * TextInput leading and trailing text
193
+ */
194
+
195
+ .TextInput-leading-text,
196
+ .TextInput-trailing-text {
197
+ display: flex;
198
+ align-items: center;
199
+ color: var(--brand-color-text-muted);
200
+ pointer-events: none;
201
+ white-space: nowrap;
202
+ }
203
+
204
+ .TextInput-leading-text--disabled,
205
+ .TextInput-trailing-text--disabled {
206
+ color: var(--brand-control-color-fg-disabled);
207
+ background-color: var(--brand-control-color-canvas-disabled);
208
+ }
209
+
210
+ .TextInput-leading-text {
211
+ border-top-left-radius: var(--brand-borderRadius-medium, 6px);
212
+ border-bottom-left-radius: var(--brand-borderRadius-medium, 6px);
213
+ border-right: 0;
214
+ }
215
+
216
+ .TextInput-trailing-text {
217
+ border-top-right-radius: var(--brand-borderRadius-medium, 6px);
218
+ border-bottom-right-radius: var(--brand-borderRadius-medium, 6px);
219
+ border-left: 0;
220
+ }
221
+
222
+ .TextInput-leading-text-inner,
223
+ .TextInput-trailing-text-inner {
224
+ display: inline-flex;
225
+ color: var(--brand-color-text-muted);
226
+ }
227
+
228
+ .TextInput-leading-text-inner--medium,
229
+ .TextInput-trailing-text-inner--medium {
230
+ padding-inline: var(--brand-control-medium-paddingInline-condensed);
231
+ }
232
+
233
+ .TextInput-leading-text-inner--large,
234
+ .TextInput-trailing-text-inner--large {
235
+ padding-inline: var(--brand-control-large-paddingInline-condensed);
236
+ }
237
+
238
+ .TextInput-leading-text-inner {
239
+ border-right: 1px solid var(--brand-color-border-default);
240
+ }
241
+
242
+ .TextInput-trailing-text-inner {
243
+ border-left: 1px solid var(--brand-color-border-default);
244
+ }
245
+
246
+ .TextInput--has-leading-text {
247
+ border-left: 0;
248
+ border-top-left-radius: 0;
249
+ border-bottom-left-radius: 0;
250
+ }
251
+
252
+ .TextInput--has-trailing-text {
253
+ border-right: 0;
254
+ border-top-right-radius: 0;
255
+ border-bottom-right-radius: 0;
256
+ }
257
+
258
+ .TextInput-leading-text--success,
259
+ .TextInput-trailing-text--success {
260
+ border-color: var(--brand-color-success-fg);
261
+ }
262
+
263
+ .TextInput-leading-text--error,
264
+ .TextInput-trailing-text--error {
265
+ border-color: var(--brand-color-error-fg);
266
+ }