@inchurch/matcha-theme 20.0.3

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 (112) hide show
  1. package/README.md +303 -0
  2. package/abstracts/_colors.scss +405 -0
  3. package/abstracts/_elevation.scss +102 -0
  4. package/abstracts/_functions.scss +1213 -0
  5. package/abstracts/_media-breakpoint.scss +23 -0
  6. package/abstracts/_typography.scss +127 -0
  7. package/base/_reset.scss +438 -0
  8. package/components/matcha-accordion.scss +157 -0
  9. package/components/matcha-audio-player.scss +32 -0
  10. package/components/matcha-autocomplete.scss +134 -0
  11. package/components/matcha-avatar.scss +161 -0
  12. package/components/matcha-badge.scss +120 -0
  13. package/components/matcha-breadcrumb.scss +126 -0
  14. package/components/matcha-button-toggle.scss +363 -0
  15. package/components/matcha-buttons.scss +784 -0
  16. package/components/matcha-calendar.scss +154 -0
  17. package/components/matcha-cards.scss +205 -0
  18. package/components/matcha-chart-card.scss +60 -0
  19. package/components/matcha-checkbox.scss +554 -0
  20. package/components/matcha-chip.scss +212 -0
  21. package/components/matcha-color-pick.scss +35 -0
  22. package/components/matcha-command-palette.scss +89 -0
  23. package/components/matcha-crop.scss +172 -0
  24. package/components/matcha-date.scss +81 -0
  25. package/components/matcha-divider.scss +45 -0
  26. package/components/matcha-draggable.scss +24 -0
  27. package/components/matcha-drawer.scss +235 -0
  28. package/components/matcha-drop-list.scss +390 -0
  29. package/components/matcha-emoji.scss +69 -0
  30. package/components/matcha-empty-state.scss +118 -0
  31. package/components/matcha-flag.scss +62 -0
  32. package/components/matcha-footer.scss +187 -0
  33. package/components/matcha-form-field.scss +552 -0
  34. package/components/matcha-form-section.scss +101 -0
  35. package/components/matcha-header.scss +325 -0
  36. package/components/matcha-highlight.scss +296 -0
  37. package/components/matcha-hint-text.scss +66 -0
  38. package/components/matcha-horizontal-tree.scss +317 -0
  39. package/components/matcha-icon.scss +106 -0
  40. package/components/matcha-image.scss +62 -0
  41. package/components/matcha-list.scss +212 -0
  42. package/components/matcha-menu.scss +86 -0
  43. package/components/matcha-modal.scss +234 -0
  44. package/components/matcha-nav.scss +450 -0
  45. package/components/matcha-notification.scss +197 -0
  46. package/components/matcha-option.scss +95 -0
  47. package/components/matcha-page-builder.scss +4186 -0
  48. package/components/matcha-paginator.scss +235 -0
  49. package/components/matcha-panel.scss +167 -0
  50. package/components/matcha-profile-card.scss +50 -0
  51. package/components/matcha-progress-bar.scss +209 -0
  52. package/components/matcha-radio.scss +528 -0
  53. package/components/matcha-ripple.scss +7 -0
  54. package/components/matcha-scrollbar.scss +35 -0
  55. package/components/matcha-scrollbox-shadow.scss +123 -0
  56. package/components/matcha-section.scss +105 -0
  57. package/components/matcha-select.scss +661 -0
  58. package/components/matcha-skeleton.scss +138 -0
  59. package/components/matcha-slide-toggle.scss +590 -0
  60. package/components/matcha-slider.scss +188 -0
  61. package/components/matcha-snack-bar.scss +266 -0
  62. package/components/matcha-spin.scss +252 -0
  63. package/components/matcha-spinner.scss +78 -0
  64. package/components/matcha-stepper.scss +177 -0
  65. package/components/matcha-table-cell.scss +41 -0
  66. package/components/matcha-table.scss +785 -0
  67. package/components/matcha-tabs.scss +469 -0
  68. package/components/matcha-text-editor.scss +151 -0
  69. package/components/matcha-time.scss +33 -0
  70. package/components/matcha-timepicker.scss +13 -0
  71. package/components/matcha-toolbar.scss +206 -0
  72. package/components/matcha-tooltip.scss +128 -0
  73. package/components/matcha-uploader.scss +215 -0
  74. package/css/matcha-style.css +76772 -0
  75. package/fonts/CircularStd-Black.eot +0 -0
  76. package/fonts/CircularStd-Black.svg +3426 -0
  77. package/fonts/CircularStd-Black.ttf +0 -0
  78. package/fonts/CircularStd-Black.woff +0 -0
  79. package/fonts/CircularStd-Black.woff2 +0 -0
  80. package/fonts/CircularStd-Bold.eot +0 -0
  81. package/fonts/CircularStd-Bold.otf +0 -0
  82. package/fonts/CircularStd-Bold.svg +13532 -0
  83. package/fonts/CircularStd-Bold.ttf +0 -0
  84. package/fonts/CircularStd-Bold.woff +0 -0
  85. package/fonts/CircularStd-Bold.woff2 +0 -0
  86. package/fonts/CircularStd-Medium.eot +0 -0
  87. package/fonts/CircularStd-Medium.otf +0 -0
  88. package/fonts/CircularStd-Medium.svg +13511 -0
  89. package/fonts/CircularStd-Medium.ttf +0 -0
  90. package/fonts/CircularStd-Medium.woff +0 -0
  91. package/fonts/CircularStd-Medium.woff2 +0 -0
  92. package/fonts/CircularStd-Regular.eot +0 -0
  93. package/fonts/CircularStd-Regular.otf +0 -0
  94. package/fonts/CircularStd-Regular.svg +2378 -0
  95. package/fonts/CircularStd-Regular.ttf +0 -0
  96. package/fonts/CircularStd-Regular.woff +0 -0
  97. package/fonts/CircularStd-Regular.woff2 +0 -0
  98. package/main.scss +262 -0
  99. package/package.json +11 -0
  100. package/tokens/_animations-tokens.scss +37 -0
  101. package/tokens/_breakpoints-tokens.scss +26 -0
  102. package/tokens/_color-tokens.scss +1153 -0
  103. package/tokens/_css-custom-properties.scss +568 -0
  104. package/tokens/_elevation-tokens.scss +33 -0
  105. package/tokens/_spacing-tokens.scss +94 -0
  106. package/tokens/_typography-tokens.scss +65 -0
  107. package/vendors/angular-editor.scss +56 -0
  108. package/vendors/angular-material-fixes.scss +297 -0
  109. package/vendors/calendar.scss +2880 -0
  110. package/vendors/charts.scss +92 -0
  111. package/vendors/ng5-slider.scss +56 -0
  112. package/vendors/ngx-material-timepicker.scss +50 -0
@@ -0,0 +1,325 @@
1
+ @use "sass:map";
2
+
3
+ // =============================================================================
4
+ // matcha-header.scss — App topbar + Profile card
5
+ // Aligned with Figma matcha/header (3 estilos) + matcha/header/profile (2 estilos)
6
+ // =============================================================================
7
+
8
+ @mixin matcha-header-theme($theme) {
9
+ $is-dark: map.get($theme, is-dark);
10
+
11
+ // ── App Topbar ──
12
+ .matcha-header {
13
+ &__content {
14
+ background: var(--matcha-color-surface, #{getSurface($theme)});
15
+
16
+ &__title__icon {
17
+ color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
18
+ }
19
+
20
+ &__options {
21
+ background: var(--matcha-color-surface, #{getSurface($theme)});
22
+ }
23
+ }
24
+
25
+ .matcha-header-church-id {
26
+ color: var(--matcha-color-text-placeholder, #{getBlueGrey($theme)});
27
+ }
28
+
29
+ .matcha-header-user-name {
30
+ color: var(--matcha-color-fg, #{getForeground($theme)});
31
+ }
32
+
33
+ @include media-breakpoint('gt-sm') {
34
+ &__content {
35
+ background: var(--matcha-color-surface, #{getSurface($theme)});
36
+
37
+ &__options {
38
+ background: transparent;
39
+ }
40
+ }
41
+ }
42
+ }
43
+
44
+ // ── Profile Card ──
45
+ .matcha-header-profile {
46
+ background: var(--matcha-color-surface, #{getSurface($theme)});
47
+
48
+ .profile-back {
49
+ color: var(--matcha-color-fg, #{getForeground($theme)});
50
+
51
+ &:hover {
52
+ opacity: 0.8;
53
+ }
54
+
55
+ &:focus-visible {
56
+ outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
57
+ outline-offset: var(--matcha-state-focus-ring-offset, 2px);
58
+ border-radius: var(--matcha-radius-md, 4px);
59
+ }
60
+ }
61
+
62
+ .profile-dates {
63
+ color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
64
+ }
65
+
66
+ .profile-name {
67
+ color: var(--matcha-color-fg, #{getForeground($theme)});
68
+ }
69
+
70
+ .profile-meta {
71
+ color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
72
+ }
73
+
74
+ .profile-church {
75
+ color: var(--matcha-color-fg, #{getForeground($theme)});
76
+ }
77
+
78
+ .profile-function-label {
79
+ color: var(--matcha-color-accent, #{getAccent($theme)});
80
+ }
81
+
82
+ .profile-function-value {
83
+ color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
84
+ }
85
+
86
+ .profile-enrollment {
87
+ color: var(--matcha-color-fg, #{getForeground($theme)});
88
+ }
89
+
90
+ .profile-edit {
91
+ color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
92
+ cursor: pointer;
93
+
94
+ &:hover {
95
+ color: var(--matcha-color-fg, #{getForeground($theme)});
96
+ }
97
+
98
+ &:focus-visible {
99
+ outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
100
+ outline-offset: var(--matcha-state-focus-ring-offset, 2px);
101
+ }
102
+ }
103
+ }
104
+ }
105
+
106
+ // ── Layout — App Topbar ─────────────────────────────────────────────────────
107
+
108
+ .matcha-header {
109
+ &__content {
110
+ display: flex;
111
+ flex-wrap: wrap;
112
+ align-items: center;
113
+ justify-content: space-between;
114
+ width: 100%;
115
+ height: var(--matcha-space-600, 48px);
116
+ padding: var(--matcha-space-100, 8px) var(--matcha-space-300, 24px) var(--matcha-space-100, 8px) var(--matcha-space-200, 16px);
117
+ gap: var(--matcha-space-200, 16px);
118
+ }
119
+
120
+ .matcha-header-left {
121
+ display: flex;
122
+ align-items: center;
123
+ gap: var(--matcha-space-200, 16px);
124
+ flex: 1;
125
+ min-width: 0;
126
+ }
127
+
128
+ .matcha-header-right {
129
+ display: flex;
130
+ align-items: center;
131
+ gap: var(--matcha-space-200, 16px);
132
+ }
133
+
134
+ .matcha-header-user {
135
+ display: flex;
136
+ align-items: center;
137
+ gap: var(--matcha-space-100, 8px);
138
+ cursor: pointer;
139
+ }
140
+
141
+ .matcha-header-church-id {
142
+ font-family: var(--matcha-font-family);
143
+ font-size: var(--matcha-text-caption, 11px);
144
+ line-height: var(--matcha-leading-caption, 14px);
145
+ letter-spacing: var(--matcha-letter-spacing-caption, 0.3px);
146
+ white-space: nowrap;
147
+ }
148
+
149
+ .matcha-header-user-name {
150
+ font-family: var(--matcha-font-family);
151
+ font-size: var(--matcha-text-button-sm, 13px);
152
+ font-weight: var(--matcha-weight-medium, 500);
153
+ line-height: var(--matcha-leading-button-sm, 19px);
154
+ letter-spacing: var(--matcha-letter-spacing-button, 0.2px);
155
+ white-space: nowrap;
156
+ }
157
+ }
158
+
159
+ // ── Layout — Profile Card ───────────────────────────────────────────────────
160
+
161
+ .matcha-header-profile {
162
+ display: flex;
163
+ flex-direction: column;
164
+ gap: var(--matcha-space-200, 16px);
165
+ padding: var(--matcha-space-300, 24px);
166
+ border-radius: var(--matcha-radius-lg, 8px);
167
+ width: 100%;
168
+
169
+ .profile-nav {
170
+ display: flex;
171
+ align-items: center;
172
+ justify-content: space-between;
173
+ gap: var(--matcha-space-100, 8px);
174
+ }
175
+
176
+ .profile-back {
177
+ display: flex;
178
+ align-items: center;
179
+ gap: var(--matcha-space-100, 8px);
180
+ cursor: pointer;
181
+ border: none;
182
+ background: none;
183
+ padding: 0;
184
+ font-family: var(--matcha-font-family);
185
+ font-size: var(--matcha-text-body-md, 14px);
186
+ }
187
+
188
+ .profile-dates {
189
+ display: flex;
190
+ align-items: center;
191
+ gap: var(--matcha-space-200, 16px);
192
+ font-family: var(--matcha-font-family);
193
+ font-size: var(--matcha-text-body-md, 14px);
194
+ line-height: var(--matcha-leading-body-md, 20px);
195
+ }
196
+
197
+ .profile-row {
198
+ display: flex;
199
+ align-items: center;
200
+ gap: var(--matcha-space-200, 16px);
201
+ width: 100%;
202
+ }
203
+
204
+ .profile-info {
205
+ display: flex;
206
+ flex-direction: column;
207
+ gap: var(--matcha-space-050, 4px);
208
+ flex: 1;
209
+ min-width: 0;
210
+ }
211
+
212
+ .profile-name {
213
+ font-family: var(--matcha-font-family);
214
+ font-size: var(--matcha-text-display, 32px);
215
+ font-weight: var(--matcha-weight-bold, 700);
216
+ line-height: var(--matcha-leading-display, 40px);
217
+ }
218
+
219
+ .profile-meta {
220
+ display: flex;
221
+ align-items: center;
222
+ gap: var(--matcha-space-100, 8px);
223
+ flex-wrap: wrap;
224
+ font-family: var(--matcha-font-family);
225
+ font-size: var(--matcha-text-body-sm, 12px);
226
+ line-height: var(--matcha-leading-body-sm, 16px);
227
+ }
228
+
229
+ .profile-actions {
230
+ display: flex;
231
+ align-items: center;
232
+ gap: var(--matcha-space-100, 8px);
233
+ }
234
+
235
+ .profile-church {
236
+ display: flex;
237
+ align-items: center;
238
+ justify-content: space-between;
239
+ gap: var(--matcha-space-100, 8px);
240
+ width: 100%;
241
+ font-family: var(--matcha-font-family);
242
+ font-size: var(--matcha-text-title-sm, 16px);
243
+ font-weight: var(--matcha-weight-semibold, 600);
244
+ line-height: var(--matcha-leading-title-sm, 22px);
245
+ }
246
+
247
+ .profile-footer {
248
+ display: flex;
249
+ align-items: center;
250
+ justify-content: space-between;
251
+ gap: var(--matcha-space-200, 16px);
252
+ width: 100%;
253
+ }
254
+
255
+ .profile-functions {
256
+ display: flex;
257
+ align-items: center;
258
+ gap: var(--matcha-space-050, 4px);
259
+ font-family: var(--matcha-font-family);
260
+ font-size: var(--matcha-text-body-md, 14px);
261
+ line-height: var(--matcha-leading-body-md, 20px);
262
+ }
263
+
264
+ .profile-enrollment {
265
+ display: flex;
266
+ align-items: center;
267
+ gap: var(--matcha-space-100, 8px);
268
+ font-family: var(--matcha-font-family);
269
+ font-size: var(--matcha-text-body-md, 14px);
270
+ line-height: var(--matcha-leading-body-md, 20px);
271
+ }
272
+ }
273
+
274
+ // ── Responsive — Header ──
275
+ @include media-breakpoint('xs') {
276
+ .matcha-header {
277
+ &__content {
278
+ height: var(--matcha-space-600, 48px);
279
+ padding: var(--matcha-space-100, 8px) var(--matcha-space-200, 16px);
280
+ }
281
+
282
+ .matcha-header-user-name {
283
+ display: none;
284
+ }
285
+ }
286
+ }
287
+
288
+ // ── Responsive — Profile ──
289
+ @include media-breakpoint('xs') {
290
+ .matcha-header-profile {
291
+ .profile-nav {
292
+ flex-direction: column;
293
+ align-items: flex-start;
294
+ }
295
+
296
+ .profile-dates {
297
+ flex-wrap: wrap;
298
+ }
299
+
300
+ .profile-row {
301
+ flex-direction: column;
302
+ align-items: flex-start;
303
+ }
304
+
305
+ .profile-name {
306
+ font-size: var(--matcha-text-title-md, 18px);
307
+ font-weight: var(--matcha-weight-semibold, 600);
308
+ line-height: var(--matcha-leading-title-md, 24px);
309
+ }
310
+
311
+ .profile-footer {
312
+ flex-direction: column;
313
+ align-items: flex-start;
314
+ gap: var(--matcha-space-100, 8px);
315
+ }
316
+ }
317
+ }
318
+
319
+ // ── Reduced motion ──
320
+ @media (prefers-reduced-motion: reduce) {
321
+ .matcha-header-profile .profile-edit,
322
+ .matcha-header-profile .profile-back {
323
+ transition: none;
324
+ }
325
+ }
@@ -0,0 +1,296 @@
1
+ @mixin matcha-highlight-theme($theme) {
2
+ // ========================================
3
+ // TEMA PADRÃO (MATCHA)
4
+ // ========================================
5
+
6
+ matcha-highlight {
7
+ padding: 16px;
8
+ border-radius: 8px;
9
+ display: flex;
10
+ overflow:auto;
11
+ position: relative;
12
+ min-height:56px;
13
+
14
+ // Variáveis CSS para tema padrão (Matcha)
15
+ --prism-bg: transparent;
16
+ --prism-text: #{getBlue($theme)};
17
+ --prism-comment: #{getBlue($theme)};
18
+ --prism-keyword: #{getBlue($theme)};
19
+ --prism-string: #{getBlue($theme)};
20
+ --prism-number: #{getBlue($theme)};
21
+ --prism-function: #{getBlue($theme)};
22
+ --prism-variable: #{getBlue($theme)};
23
+ --prism-type: #{getBlue($theme)};
24
+ --prism-operator: #{getBlue($theme)};
25
+ --prism-punctuation: #{getBlue($theme)};
26
+ --prism-property: #{getBlue($theme)};
27
+ --prism-tag: #{getBlue($theme)};
28
+ --prism-attribute: #{getBlue($theme)};
29
+ --prism-class: #{getBlue($theme)};
30
+ --prism-constant: #{getBlue($theme)};
31
+ --prism-regex: #{getBlue($theme)};
32
+ --prism-important: #{getBlue($theme)};
33
+
34
+ --code-font-family: Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace;
35
+ --code-font-size: 14px;
36
+ --code-line-height: 1.6;
37
+
38
+ // =========================================================================
39
+ // TEMAS ALTERNATIVOS
40
+ // =========================================================================
41
+ // -------------------------------------------------------------------------
42
+ // Tema claro
43
+ // -------------------------------------------------------------------------
44
+ &[theme="vs-code-light"] {
45
+ --prism-bg: #ffffff;
46
+ --prism-text: #000000;
47
+ --prism-comment: #6a9955;
48
+ --prism-keyword: #0000ff;
49
+ --prism-string: #a31515;
50
+ --prism-number: #098658;
51
+ --prism-function: #795e26;
52
+ --prism-variable: #001080;
53
+ --prism-type: #267f99;
54
+ --prism-operator: #000000;
55
+ --prism-punctuation: #000000;
56
+ --prism-property: #0451a5;
57
+ --prism-tag: #800000;
58
+ --prism-attribute: #ff0000;
59
+ --prism-class: #267f99;
60
+ --prism-constant: #0070c1;
61
+ --prism-regex: #811f3f;
62
+ --prism-important: #e50000;
63
+ }
64
+
65
+ // -------------------------------------------------------------------------
66
+ // Tema escuro
67
+ // -------------------------------------------------------------------------
68
+ &[theme="vs-code-dark"] {
69
+ --prism-bg: #1e1e1e;
70
+ --prism-text: #d4d4d4;
71
+ --prism-comment: #6a9955;
72
+ --prism-keyword: #569cd6;
73
+ --prism-string: #ce9178;
74
+ --prism-number: #b5cea8;
75
+ --prism-function: #dcdcaa;
76
+ --prism-variable: #9cdcfe;
77
+ --prism-type: #4ec9b0;
78
+ --prism-operator: #d4d4d4;
79
+ --prism-punctuation: #d4d4d4;
80
+ --prism-property: #92c5f8;
81
+ --prism-tag: #f44747;
82
+ --prism-attribute: #92c5f8;
83
+ --prism-class: #4ec9b0;
84
+ --prism-constant: #4fc1ff;
85
+ --prism-regex: #d16969;
86
+ --prism-important: #ff6b6b;
87
+ }
88
+
89
+ // -------------------------------------------------------------------------
90
+ // Tema Dracula
91
+ // -------------------------------------------------------------------------
92
+ &[theme="dracula"] {
93
+ --prism-bg: #282a36;
94
+ --prism-text: #f8f8f2;
95
+ --prism-comment: #6272a4;
96
+ --prism-keyword: #ff79c6;
97
+ --prism-string: #f1fa8c;
98
+ --prism-number: #bd93f9;
99
+ --prism-function: #50fa7b;
100
+ --prism-variable: #8be9fd;
101
+ --prism-type: #8be9fd;
102
+ --prism-operator: #ff79c6;
103
+ --prism-punctuation: #f8f8f2;
104
+ --prism-property: #66d9ef;
105
+ --prism-tag: #ff79c6;
106
+ --prism-attribute: #50fa7b;
107
+ --prism-class: #bd93f9;
108
+ --prism-constant: #bd93f9;
109
+ --prism-regex: #ffb86c;
110
+ --prism-important: #ff5555;
111
+ }
112
+
113
+ // -------------------------------------------------------------------------
114
+ // Tema matcha
115
+ // -------------------------------------------------------------------------
116
+ &[theme="matcha"] {
117
+ --prism-bg: #1a2420;
118
+ --prism-text: #e6f4ea;
119
+ --prism-comment: #5c7f6e;
120
+ --prism-keyword: #7fffd4;
121
+ --prism-string: #b7f774;
122
+ --prism-number: #6ee7b7;
123
+ --prism-function: #4ade80;
124
+ --prism-variable: #a7ffeb;
125
+ --prism-type: #34d399;
126
+ --prism-operator: #7fffd4;
127
+ --prism-punctuation: #e6f4ea;
128
+ --prism-property: #5eead4;
129
+ --prism-tag: #2dd4bf;
130
+ --prism-attribute: #bbf7d0;
131
+ --prism-class: #6ee7b7;
132
+ --prism-constant: #99f6e4;
133
+ --prism-regex: #bef264;
134
+ --prism-important: #22d3ee;
135
+ }
136
+
137
+ // -------------------------------------------------------------------------
138
+ // Tema none (sem tema específico - usa cores padrão do sistema)
139
+ // -------------------------------------------------------------------------
140
+ &[theme="none"] {
141
+ --prism-bg: transparent;
142
+ --prism-text: inherit;
143
+ --prism-comment: inherit;
144
+ --prism-keyword: inherit;
145
+ --prism-string: inherit;
146
+ --prism-number: inherit;
147
+ --prism-function: inherit;
148
+ --prism-variable: inherit;
149
+ --prism-type: inherit;
150
+ --prism-operator: inherit;
151
+ --prism-punctuation: inherit;
152
+ --prism-property: inherit;
153
+ --prism-tag: inherit;
154
+ --prism-attribute: inherit;
155
+ --prism-class: inherit;
156
+ --prism-constant: inherit;
157
+ --prism-regex: inherit;
158
+ --prism-important: inherit;
159
+ }
160
+
161
+ // ========================================
162
+ // ESTILOS BASE DO COMPONENTE
163
+ // ========================================
164
+
165
+ pre,code { margin: 0; padding: 0;}
166
+ background: var(--prism-bg);
167
+
168
+ // Estilos base
169
+ code[class*="language-"],
170
+ pre[class*="language-"] {
171
+ color: var(--prism-text);
172
+ background: var(--prism-bg);
173
+ text-shadow: none;
174
+ font-family: var(--code-font-family);
175
+ font-size: var(--code-font-size);
176
+ text-align: left;
177
+ white-space: pre;
178
+ word-spacing: normal;
179
+ word-break: normal;
180
+ word-wrap: normal;
181
+ line-height: var(--code-line-height);
182
+ tab-size: 4;
183
+ hyphens: none;
184
+ margin: 0;
185
+ padding: 0;
186
+ }
187
+
188
+ pre[class*="language-"] {
189
+ padding: 0;
190
+ margin: 0;
191
+ overflow: auto;
192
+ border-radius: 8px;
193
+ }
194
+
195
+ code[class*="language-"] {
196
+ padding: 0;
197
+ background: transparent;
198
+ }
199
+
200
+ // Cores específicas para syntax highlighting
201
+ .token.comment,
202
+ .token.prolog,
203
+ .token.doctype,
204
+ .token.cdata {
205
+ color: var(--prism-comment);
206
+ font-style: italic;
207
+ }
208
+
209
+ .token.punctuation {
210
+ color: var(--prism-punctuation);
211
+ }
212
+
213
+ .token.property,
214
+ .token.tag,
215
+ .token.constant,
216
+ .token.symbol,
217
+ .token.deleted {
218
+ color: var(--prism-tag);
219
+ }
220
+
221
+ .token.boolean,
222
+ .token.number {
223
+ color: var(--prism-number);
224
+ }
225
+
226
+ .token.selector,
227
+ .token.attr-name,
228
+ .token.string,
229
+ .token.char,
230
+ .token.builtin,
231
+ .token.inserted {
232
+ color: var(--prism-string);
233
+ }
234
+
235
+ .token.operator,
236
+ .token.entity,
237
+ .token.url,
238
+ .language-css .token.string,
239
+ .style .token.string,
240
+ .token.variable {
241
+ color: var(--prism-operator);
242
+ }
243
+
244
+ .token.atrule,
245
+ .token.attr-value,
246
+ .token.function,
247
+ .token.class-name {
248
+ color: var(--prism-function);
249
+ }
250
+
251
+ .token.keyword {
252
+ color: var(--prism-keyword);
253
+ }
254
+
255
+ .token.regex,
256
+ .token.important {
257
+ color: var(--prism-regex);
258
+ }
259
+
260
+ .token.important,
261
+ .token.bold {
262
+ font-weight: bold;
263
+ }
264
+
265
+ .token.italic {
266
+ font-style: italic;
267
+ }
268
+
269
+ .token.entity {
270
+ cursor: help;
271
+ }
272
+
273
+ // ========================================
274
+ // CONTAINER E COPY BUTTON
275
+ // ========================================
276
+
277
+ .matcha-highlight-container {
278
+ position: relative;
279
+ border-radius: 8px;
280
+ }
281
+
282
+ .copy-button {
283
+ opacity: 0;
284
+ transition: opacity 0.2s ease;
285
+ }
286
+
287
+ &:hover .copy-button {
288
+ opacity: 1;
289
+ }
290
+
291
+ .highlight-content {
292
+ position: relative;
293
+ }
294
+ }
295
+
296
+ }
@@ -0,0 +1,66 @@
1
+ // =============================================================================
2
+ // matcha-hint-text.scss — Hint/error/warning/info/success text
3
+ // Aligned with Figma matcha/hint-text: Tipo(4) × Tamanho(SM/MD) = 8 variants
4
+ // =============================================================================
5
+
6
+ @mixin generate-matcha-hint-size-classes($helper-breakpoints) {
7
+ @each $breakpoint, $materialBreakpoint in $helper-breakpoints {
8
+ @include media-breakpoint($materialBreakpoint) {
9
+ $infix: if($materialBreakpoint == null, "", "-#{$breakpoint}");
10
+
11
+ &[size#{$infix}="sm"],
12
+ &[size#{$infix}="tiny"] {
13
+ font-size: px-to-rem(12px);
14
+ line-height: px-to-rem(16px);
15
+
16
+ matcha-icon span {
17
+ width: px-to-rem(16px);
18
+ height: px-to-rem(16px);
19
+ font-size: px-to-rem(16px);
20
+ line-height: px-to-rem(16px);
21
+ }
22
+ }
23
+
24
+ &[size#{$infix}="md"],
25
+ &[size#{$infix}="medium"] {
26
+ font-size: px-to-rem(14px);
27
+ line-height: px-to-rem(24px);
28
+
29
+ matcha-icon,
30
+ matcha-icon span {
31
+ width: px-to-rem(24px);
32
+ height: px-to-rem(24px);
33
+ font-size: px-to-rem(24px);
34
+ line-height: px-to-rem(24px);
35
+ }
36
+ }
37
+ }
38
+ }
39
+ }
40
+
41
+ @mixin matcha-hint-text($theme) {
42
+ matcha-hint-text {
43
+ width: 100%;
44
+ display: flex;
45
+ align-items: center;
46
+ gap: var(--matcha-space-050, 4px);
47
+
48
+ @include generate-matcha-hint-size-classes($helper-breakpoints);
49
+
50
+ &[type="error"] {
51
+ color: var(--matcha-color-danger, #{getDanger($theme)});
52
+ }
53
+
54
+ &[type="warning"] {
55
+ color: var(--matcha-color-warn, #{getWarn($theme)});
56
+ }
57
+
58
+ &[type="info"] {
59
+ color: var(--matcha-color-info, #{getInfo($theme)});
60
+ }
61
+
62
+ &[type="success"] {
63
+ color: var(--matcha-color-success, #{getSuccess($theme)});
64
+ }
65
+ }
66
+ }