@inchurch/matcha-theme 20.0.11 → 20.277.0

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 (116) hide show
  1. package/abstracts/_colors.scss +404 -404
  2. package/abstracts/_elevation.scss +102 -102
  3. package/abstracts/_functions.scss +1186 -1212
  4. package/abstracts/_media-breakpoint.scss +23 -23
  5. package/abstracts/_theme-api.scss +230 -0
  6. package/abstracts/_typography.scss +127 -127
  7. package/base/_reset.scss +438 -438
  8. package/components/app-page-header.scss +259 -0
  9. package/components/matcha-accordion.scss +293 -157
  10. package/components/matcha-audio-player.scss +1 -2
  11. package/components/matcha-autocomplete.scss +10 -11
  12. package/components/matcha-avatar.scss +173 -33
  13. package/components/matcha-badge.scss +15 -15
  14. package/components/matcha-breadcrumb.scss +231 -126
  15. package/components/matcha-button-toggle.scss +46 -2
  16. package/components/matcha-buttons.scss +908 -784
  17. package/components/matcha-calendar.scss +99 -35
  18. package/components/matcha-cards.scss +58 -33
  19. package/components/matcha-chart-card.scss +5 -12
  20. package/components/matcha-checkbox.scss +191 -490
  21. package/components/matcha-chip.scss +297 -212
  22. package/components/matcha-color-pick.scss +1 -2
  23. package/components/matcha-command-palette.scss +290 -63
  24. package/components/matcha-crop.scss +406 -172
  25. package/components/matcha-date.scss +81 -81
  26. package/components/matcha-divider.scss +86 -31
  27. package/components/matcha-draggable.scss +4 -5
  28. package/components/matcha-drawer.scss +207 -66
  29. package/components/matcha-drop-image.scss +14 -0
  30. package/components/matcha-drop-list.scss +87 -47
  31. package/components/matcha-emoji.scss +2 -2
  32. package/components/matcha-empty-state.scss +195 -83
  33. package/components/matcha-file-uploader.scss +462 -0
  34. package/components/matcha-flag.scss +93 -52
  35. package/components/matcha-footer.scss +67 -164
  36. package/components/matcha-form-field.scss +55 -3
  37. package/components/matcha-form-section.scss +100 -101
  38. package/components/matcha-header.scss +134 -325
  39. package/components/matcha-highlight.scss +65 -197
  40. package/components/matcha-hint-text.scss +25 -4
  41. package/components/matcha-horizontal-tree.scss +316 -317
  42. package/components/matcha-icon.scss +37 -45
  43. package/components/matcha-image.scss +2 -3
  44. package/components/matcha-list.scss +14 -15
  45. package/components/matcha-menu.scss +15 -2
  46. package/components/matcha-modal.scss +59 -86
  47. package/components/matcha-nav.scss +362 -231
  48. package/components/matcha-notification.scss +412 -197
  49. package/components/matcha-option.scss +98 -23
  50. package/components/matcha-page-builder.scss +16 -16
  51. package/components/matcha-paginator.scss +688 -235
  52. package/components/matcha-panel.scss +42 -27
  53. package/components/matcha-profile-card.scss +50 -50
  54. package/components/matcha-progress-bar.scss +257 -153
  55. package/components/matcha-radio.scss +244 -452
  56. package/components/matcha-scrollbar.scss +1 -2
  57. package/components/matcha-scrollbox-shadow.scss +120 -122
  58. package/components/matcha-section.scss +5 -9
  59. package/components/matcha-select-multiple.scss +56 -0
  60. package/components/matcha-select.scss +10 -10
  61. package/components/matcha-skeleton.scss +24 -7
  62. package/components/matcha-slide-toggle.scss +80 -301
  63. package/components/matcha-slider.scss +174 -77
  64. package/components/matcha-snack-bar.scss +123 -131
  65. package/components/matcha-spin.scss +12 -103
  66. package/components/matcha-spinner.scss +76 -57
  67. package/components/matcha-status-pill.scss +82 -0
  68. package/components/matcha-stepper.scss +376 -177
  69. package/components/matcha-table.scss +568 -785
  70. package/components/matcha-tabs.scss +622 -469
  71. package/components/matcha-text-editor.scss +78 -78
  72. package/components/matcha-time.scss +2 -2
  73. package/components/matcha-toolbar.scss +359 -206
  74. package/components/matcha-tooltip.scss +158 -62
  75. package/components/matcha-tree-view.scss +189 -0
  76. package/fonts/manrope/manrope-latin-ext.woff2 +0 -0
  77. package/fonts/manrope/manrope-latin.woff2 +0 -0
  78. package/layout/matcha-page-layout.scss +4 -4
  79. package/main.scss +237 -265
  80. package/package.json +1 -1
  81. package/tokens/_animations-tokens.scss +37 -37
  82. package/tokens/_breakpoints-tokens.scss +35 -26
  83. package/tokens/_color-tokens.scss +1149 -1152
  84. package/tokens/_css-custom-properties.scss +704 -568
  85. package/tokens/_primitives.scss +82 -0
  86. package/tokens/_semantic-aliases.scss +120 -0
  87. package/tokens/_spacing-tokens.scss +94 -94
  88. package/vendors/angular-editor.scss +56 -56
  89. package/vendors/angular-material-fixes.scss +297 -297
  90. package/vendors/charts.scss +92 -92
  91. package/vendors/ng5-slider.scss +56 -56
  92. package/vendors/ngx-material-timepicker.scss +50 -50
  93. package/components/matcha-uploader.scss +0 -215
  94. package/fonts/CircularStd-Black.eot +0 -0
  95. package/fonts/CircularStd-Black.svg +0 -3426
  96. package/fonts/CircularStd-Black.ttf +0 -0
  97. package/fonts/CircularStd-Black.woff +0 -0
  98. package/fonts/CircularStd-Black.woff2 +0 -0
  99. package/fonts/CircularStd-Bold.eot +0 -0
  100. package/fonts/CircularStd-Bold.otf +0 -0
  101. package/fonts/CircularStd-Bold.svg +0 -13532
  102. package/fonts/CircularStd-Bold.ttf +0 -0
  103. package/fonts/CircularStd-Bold.woff +0 -0
  104. package/fonts/CircularStd-Bold.woff2 +0 -0
  105. package/fonts/CircularStd-Medium.eot +0 -0
  106. package/fonts/CircularStd-Medium.otf +0 -0
  107. package/fonts/CircularStd-Medium.svg +0 -13511
  108. package/fonts/CircularStd-Medium.ttf +0 -0
  109. package/fonts/CircularStd-Medium.woff +0 -0
  110. package/fonts/CircularStd-Medium.woff2 +0 -0
  111. package/fonts/CircularStd-Regular.eot +0 -0
  112. package/fonts/CircularStd-Regular.otf +0 -0
  113. package/fonts/CircularStd-Regular.svg +0 -2378
  114. package/fonts/CircularStd-Regular.ttf +0 -0
  115. package/fonts/CircularStd-Regular.woff +0 -0
  116. package/fonts/CircularStd-Regular.woff2 +0 -0
@@ -1,187 +1,90 @@
1
1
  @use "sass:map";
2
2
 
3
3
  // =============================================================================
4
- // matcha-footer.scss — App footer bar (branding + actions)
5
- // Aligned with Figma matcha/footer (3 variantes: Default, Expanded, Mobile)
6
- // Angular: matcha-footer (standalone component)
4
+ // matcha-footer.scss — App footer bar
5
+ // 1:1 com Figma DSV3 matcha/footer (nodeId 15930:27)
6
+ // Default · w fluida · h 28 · padding 8/16
7
+ // • Expanded · w fluida · h 28 · padding 8/16
8
+ // • Mobile · w fluida · h 24 · padding 6/16
9
+ // • bg surface/card · border-top hairline surface/border
10
+ // • topLeftRadius/topRightRadius = 8 · bottom = 0
11
+ // • Conteúdo centralizado (brand inchurch via matcha-brand)
7
12
  // =============================================================================
8
13
 
9
14
  @mixin matcha-footer-theme($theme) {
10
- $is-dark: map.get($theme, is-dark);
11
15
 
12
- // ── Footer Container ──
13
- .matcha-footer {
14
- background: var(--matcha-color-surface, #{getSurface($theme)});
15
- border-top: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border, #{getGrey($theme)});
16
-
17
- // ── Brand area ──
18
- .matcha-footer__brand {
19
- color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
20
- }
21
-
22
- .matcha-footer__brand-icon {
23
- color: var(--matcha-color-accent, #{getAccent($theme)});
24
- }
25
-
26
- .matcha-footer__brand-text {
27
- color: var(--matcha-color-fg, #{getForeground($theme)});
28
- }
29
-
30
- // ── Copyright ──
31
- .matcha-footer__copyright {
32
- color: var(--matcha-color-text-placeholder, #{getBlueGrey($theme)});
33
- }
34
-
35
- // ── Version info ──
36
- .matcha-footer__version {
37
- color: var(--matcha-color-text-placeholder, #{getBlueGrey($theme)});
38
- }
39
- }
40
-
41
- // ── Chat FAB ──
42
- .matcha-footer-fab {
43
- background: var(--matcha-color-accent, #{getAccent($theme)});
44
- color: var(--matcha-color-accent-contrast, #{getAccentContrast($theme)});
45
- box-shadow: var(--matcha-shadow-2, #{if($is-dark, $shadow-2-dark, $shadow-2-light)});
46
-
47
- &:hover {
48
- opacity: 0.9;
16
+ .matcha-footer {
17
+ background: var(--matcha-color-surface-card);
18
+ border-top: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border);
19
+ color: var(--matcha-color-text-label);
49
20
  }
50
-
51
- &:focus-visible {
52
- outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
53
- outline-offset: var(--matcha-state-focus-ring-offset, 2px);
54
- }
55
-
56
- .matcha-footer-fab__badge {
57
- background: var(--matcha-color-feedback-danger, #{getDanger($theme)});
58
- color: var(--matcha-color-feedback-danger-contrast, #{getDangerContrast($theme)});
59
- }
60
- }
61
21
  }
62
22
 
63
- // ── Layout ──────────────────────────────────────────────────────────────────
64
-
65
23
  .matcha-footer {
66
- display: flex;
67
- align-items: center;
68
- justify-content: center;
69
- width: 100%;
70
- // Figma matcha/footer: h 28, pad 8/16
71
- min-height: 28px;
72
- padding: var(--matcha-space-100, 8px) var(--matcha-space-200, 16px);
73
- box-sizing: border-box;
74
- position: relative;
75
- z-index: 1;
76
- }
77
-
78
- .matcha-footer__brand {
79
- display: flex;
80
- align-items: center;
81
- gap: var(--matcha-space-050, 4px);
82
- }
83
-
84
- .matcha-footer__brand-icon {
85
- display: flex;
86
- align-items: center;
87
- justify-content: center;
88
- width: var(--matcha-icon-size-sm, 16px);
89
- height: var(--matcha-icon-size-sm, 16px);
90
- flex-shrink: 0;
91
- }
92
-
93
- .matcha-footer__brand-text {
94
- font-family: var(--matcha-font-family);
95
- font-size: var(--matcha-text-body-sm, 12px);
96
- font-weight: var(--matcha-weight-semibold, 600);
97
- line-height: var(--matcha-leading-body-sm, 16px);
98
- white-space: nowrap;
24
+ display: flex;
25
+ align-items: center;
26
+ justify-content: center;
27
+ box-sizing: border-box;
28
+ position: relative;
29
+ z-index: 1;
30
+ // Gap default footer nunca colado no conteúdo nem nas bordas.
31
+ // Tokens: --matcha-footer-gap-block (top) e --matcha-footer-gap-inline (laterais).
32
+ // Fallback unificado --matcha-footer-gap controla os 3 simultaneamente.
33
+ margin-block-start: var(--matcha-footer-gap-block, var(--matcha-footer-gap, var(--matcha-space-300, 24px)));
34
+ margin-inline: var(--matcha-footer-gap-inline, var(--matcha-footer-gap, var(--matcha-space-300, 24px)));
35
+ // max(0, ...) protege de width negativo se container <= 2 * gap-inline.
36
+ width: max(0px, calc(100% - 2 * var(--matcha-footer-gap-inline, var(--matcha-footer-gap, var(--matcha-space-300, 24px)))));
37
+ // Figma DSV3 Default/Expanded: h 28, padding 8/16. Logical props pra RTL.
38
+ min-block-size: var(--matcha-footer-height, 28px);
39
+ padding-block: var(--matcha-space-100, 8px);
40
+ padding-inline: var(--matcha-space-200, 16px);
41
+ // Top corners arredondados (Figma DSV3 topLeftRadius/topRightRadius = 8).
42
+ border-start-start-radius: var(--matcha-radius-lg, 8px);
43
+ border-start-end-radius: var(--matcha-radius-lg, 8px);
44
+ border-end-start-radius: 0;
45
+ border-end-end-radius: 0;
46
+ font-family: var(--matcha-font-family);
47
+ font-size: var(--matcha-text-body-sm, 12px);
48
+ line-height: var(--matcha-leading-body-sm, 16px);
99
49
  }
100
50
 
101
- .matcha-footer__copyright {
102
- font-family: var(--matcha-font-family);
103
- font-size: var(--matcha-text-body-sm, 12px);
104
- line-height: var(--matcha-leading-body-sm, 16px);
105
- white-space: nowrap;
51
+ // ── Forced colors (Windows High Contrast) ──────────────────────────────────
52
+ // Border hairline com surface/border (12% opacidade) pode sumir em high-contrast.
53
+ // CanvasText é o token system semantic — sempre visível.
54
+ @media (forced-colors: active) {
55
+ .matcha-footer {
56
+ border-top: 1px solid CanvasText;
57
+ }
106
58
  }
107
59
 
108
- .matcha-footer__version {
109
- font-family: var(--matcha-font-family);
110
- font-size: var(--matcha-text-body-xs, 10px);
111
- line-height: 1.4;
112
- white-space: nowrap;
60
+ // ── Reduced motion (defensivo) ──────────────────────────────────────────────
61
+ // Hoje footer não tem transitions, mas mantemos o block pra futuro (sticky
62
+ // shadow, scroll-shrink) — quando adicionar, já está coberto.
63
+ @media (prefers-reduced-motion: reduce) {
64
+ .matcha-footer {
65
+ transition: none !important;
66
+ animation: none !important;
67
+ }
113
68
  }
114
69
 
115
- // ── Chat FAB ────────────────────────────────────────────────────────────────
116
-
117
- .matcha-footer-fab {
118
- position: fixed;
119
- bottom: var(--matcha-space-200, 16px);
120
- right: var(--matcha-space-200, 16px);
121
- display: flex;
122
- align-items: center;
123
- justify-content: center;
124
- width: 48px;
125
- height: 48px;
126
- border: none;
127
- border-radius: var(--matcha-radius-pill, 9999px);
128
- cursor: pointer;
129
- z-index: 100;
130
- transition: opacity var(--matcha-duration-instant, 80ms) linear;
131
-
132
- .matcha-footer-fab__icon {
133
- width: var(--matcha-icon-size-md, 24px);
134
- height: var(--matcha-icon-size-md, 24px);
135
- }
136
-
137
- .matcha-footer-fab__badge {
138
- position: absolute;
139
- top: var(--matcha-space-050, 4px);
140
- right: var(--matcha-space-050, 4px);
141
- min-width: var(--matcha-space-200, 16px);
142
- height: var(--matcha-space-200, 16px);
143
- border-radius: var(--matcha-radius-pill, 9999px);
144
- font-family: var(--matcha-font-family);
145
- font-size: var(--matcha-text-body-xs, 10px);
146
- font-weight: var(--matcha-weight-bold, 700);
147
- display: flex;
148
- align-items: center;
149
- justify-content: center;
150
- padding: 0 var(--matcha-space-050, 4px);
151
- }
152
-
153
- // Empty badge (dot only)
154
- .matcha-footer-fab__badge--dot {
155
- min-width: var(--matcha-space-100, 8px);
156
- height: var(--matcha-space-100, 8px);
157
- padding: 0;
158
- }
70
+ // ── Print ──────────────────────────────────────────────────────────────────
71
+ // Convenção DS: chrome (header/footer) some em impressão, conteúdo full-page.
72
+ @media print {
73
+ .matcha-footer {
74
+ display: none;
75
+ }
159
76
  }
160
77
 
161
78
  // ── Responsive ──────────────────────────────────────────────────────────────
162
79
 
163
80
  @include media-breakpoint('xs') {
164
- .matcha-footer {
165
- min-height: var(--matcha-space-400, 32px);
166
- padding: var(--matcha-space-075, 6px) var(--matcha-space-200, 16px);
167
- }
168
-
169
- .matcha-footer__brand-text {
170
- font-size: var(--matcha-text-body-xs, 10px);
171
- }
172
-
173
- .matcha-footer-fab {
174
- bottom: var(--matcha-space-150, 12px);
175
- right: var(--matcha-space-150, 12px);
176
- width: 48px;
177
- height: 48px;
178
- }
179
- }
180
-
181
- // ── Reduced motion ──────────────────────────────────────────────────────────
182
-
183
- @media (prefers-reduced-motion: reduce) {
184
- .matcha-footer-fab {
185
- transition: none;
186
- }
81
+ .matcha-footer {
82
+ // Figma DSV3 Mobile: h 24, padding 6/16. Gap reduzido em mobile.
83
+ min-block-size: 24px;
84
+ padding-block: var(--matcha-space-075, 6px);
85
+ padding-inline: var(--matcha-space-200, 16px);
86
+ margin-block-start: var(--matcha-footer-gap-block, var(--matcha-footer-gap, var(--matcha-space-200, 16px)));
87
+ margin-inline: var(--matcha-footer-gap-inline, var(--matcha-footer-gap, var(--matcha-space-200, 16px)));
88
+ width: max(0px, calc(100% - 2 * var(--matcha-footer-gap-inline, var(--matcha-footer-gap, var(--matcha-space-200, 16px)))));
89
+ }
187
90
  }
@@ -516,16 +516,16 @@ matcha-form-field[readonly="true"] .matcha-form-field {
516
516
  input[type="date"],
517
517
  input[type="time"],
518
518
  textarea {
519
- color: var(--matcha-color-text-primary, #{getForeground($theme)});
519
+ color: var(--matcha-color-text-primary);
520
520
 
521
521
  &::placeholder {
522
- color: var(--matcha-color-text-placeholder, #{getGrey($theme)});
522
+ color: var(--matcha-color-text-placeholder);
523
523
  }
524
524
  }
525
525
 
526
526
  input:disabled,
527
527
  textarea:disabled {
528
- color: var(--matcha-color-interaction-disabled-fg, #{getDisabledContrast($theme)});
528
+ color: var(--matcha-color-interaction-disabled-fg);
529
529
  }
530
530
 
531
531
  // Disabled: muted text, cursor not-allowed (sinalização inequívoca de "não pode interagir").
@@ -550,3 +550,55 @@ matcha-form-field[readonly="true"] .matcha-form-field {
550
550
  @include generate-matcha-form-field-size-classes($helper-breakpoints);
551
551
  }
552
552
  }
553
+
554
+ // ── Forced colors ──
555
+ // Field precisa border + bg explícitos pra ser visível como input.
556
+ @media (forced-colors: active) {
557
+ matcha-form-field {
558
+ .matcha-field-control,
559
+ .matcha-form-field__control {
560
+ border: 1px solid CanvasText !important;
561
+ background: Canvas !important;
562
+ color: CanvasText !important;
563
+ }
564
+
565
+ // Estado focused
566
+ &.is-focused .matcha-field-control,
567
+ &.is-focused .matcha-form-field__control,
568
+ .matcha-field-control:focus-within,
569
+ .matcha-form-field__control:focus-within {
570
+ outline: 2px solid CanvasText !important;
571
+ outline-offset: 2px;
572
+ }
573
+
574
+ // Estado erro/invalid
575
+ &.is-invalid .matcha-field-control,
576
+ &.has-error .matcha-form-field__control {
577
+ border-color: CanvasText !important;
578
+ border-width: 2px !important;
579
+ }
580
+
581
+ &[disabled],
582
+ &.is-disabled {
583
+ opacity: 0.5;
584
+
585
+ .matcha-field-control,
586
+ .matcha-form-field__control {
587
+ border-color: GrayText !important;
588
+ color: GrayText !important;
589
+ }
590
+ }
591
+ }
592
+ }
593
+
594
+ // ── Print ──
595
+ // Form fields preservam estado (form values). Sem fundo decorativo.
596
+ @media print {
597
+ matcha-form-field {
598
+ .matcha-field-control,
599
+ .matcha-form-field__control {
600
+ border: 1px solid currentColor !important;
601
+ background: transparent !important;
602
+ }
603
+ }
604
+ }
@@ -1,101 +1,100 @@
1
- @use "sass:map";
2
-
3
- // =============================================================================
4
- // matcha-form-section.scss — Form section divider for CRUD pages
5
- // Aligned with Figma matcha/form-section:
6
- // Tipo(3: Section, Sub-section, Section + Descrição)
7
- // Usage: Inline divider inside form flows to group related fields
8
- // NOT a card — just a heading row with accent indicator
9
- // =============================================================================
10
-
11
- @mixin matcha-form-section-theme($theme) {
12
- $is-dark: map.get($theme, is-dark);
13
-
14
- // ── Section (accent bar + title) ──
15
- .matcha-form-section {
16
- .matcha-form-section__bar {
17
- background: var(--matcha-color-accent, #{getAccent($theme)});
18
- }
19
-
20
- .matcha-form-section__title {
21
- color: var(--matcha-color-fg, #{getForeground($theme)});
22
- }
23
-
24
- .matcha-form-section__description {
25
- color: var(--matcha-color-text-secondary, #{getBlueGrey($theme)});
26
- }
27
- }
28
-
29
- // ── Sub-section (bullet + title) ──
30
- .matcha-form-subsection {
31
- .matcha-form-subsection__bullet {
32
- background: var(--matcha-color-fg, #{getForeground($theme)});
33
- }
34
-
35
- .matcha-form-subsection__title {
36
- color: var(--matcha-color-fg, #{getForeground($theme)});
37
- }
38
- }
39
- }
40
-
41
- // ── Section Layout ─────────────────────────────────────────────────────────
42
-
43
- .matcha-form-section {
44
- display: flex;
45
- align-items: flex-start;
46
- gap: var(--matcha-space-150, 12px);
47
- width: 100%;
48
- }
49
-
50
- .matcha-form-section__bar {
51
- width: var(--matcha-border-medium, 4px);
52
- align-self: stretch;
53
- border-radius: var(--matcha-radius-sm, 2px);
54
- flex-shrink: 0;
55
- min-height: var(--matcha-space-250, 20px);
56
- }
57
-
58
- .matcha-form-section__content {
59
- display: flex;
60
- flex-direction: column;
61
- gap: var(--matcha-space-050, 4px);
62
- flex: 1;
63
- min-width: 0;
64
- }
65
-
66
- .matcha-form-section__title {
67
- font-family: var(--matcha-font-family);
68
- font-size: var(--matcha-text-title-sm, 16px);
69
- font-weight: var(--matcha-weight-semibold, 600);
70
- line-height: var(--matcha-leading-title-sm, 22px);
71
- }
72
-
73
- .matcha-form-section__description {
74
- font-family: var(--matcha-font-family);
75
- font-size: var(--matcha-text-body-sm, 12px);
76
- font-weight: var(--matcha-weight-regular, 400);
77
- line-height: var(--matcha-leading-body-sm, 16px);
78
- }
79
-
80
- // ── Sub-section Layout ─────────────────────────────────────────────────────
81
-
82
- .matcha-form-subsection {
83
- display: flex;
84
- align-items: center;
85
- gap: var(--matcha-space-100, 8px);
86
- width: 100%;
87
- }
88
-
89
- .matcha-form-subsection__bullet {
90
- width: 6px;
91
- height: 6px;
92
- border-radius: var(--matcha-radius-pill, 9999px);
93
- flex-shrink: 0;
94
- }
95
-
96
- .matcha-form-subsection__title {
97
- font-family: var(--matcha-font-family);
98
- font-size: var(--matcha-text-body-md, 14px);
99
- font-weight: var(--matcha-weight-medium, 500);
100
- line-height: var(--matcha-leading-body-md, 20px);
101
- }
1
+ @use "sass:map";
2
+
3
+ // =============================================================================
4
+ // matcha-form-section.scss — Form section divider for CRUD pages
5
+ // Aligned with Figma matcha/form-section:
6
+ // Tipo(3: Section, Sub-section, Section + Descrição)
7
+ // Usage: Inline divider inside form flows to group related fields
8
+ // NOT a card — just a heading row with accent indicator
9
+ // =============================================================================
10
+
11
+ @mixin matcha-form-section-theme($theme) {
12
+
13
+ // ── Section (accent bar + title) ──
14
+ .matcha-form-section {
15
+ .matcha-form-section__bar {
16
+ background: var(--matcha-color-accent);
17
+ }
18
+
19
+ .matcha-form-section__title {
20
+ color: var(--matcha-color-fg);
21
+ }
22
+
23
+ .matcha-form-section__description {
24
+ color: var(--matcha-color-text-secondary);
25
+ }
26
+ }
27
+
28
+ // ── Sub-section (bullet + title) ──
29
+ .matcha-form-subsection {
30
+ .matcha-form-subsection__bullet {
31
+ background: var(--matcha-color-fg);
32
+ }
33
+
34
+ .matcha-form-subsection__title {
35
+ color: var(--matcha-color-fg);
36
+ }
37
+ }
38
+ }
39
+
40
+ // ── Section Layout ─────────────────────────────────────────────────────────
41
+
42
+ .matcha-form-section {
43
+ display: flex;
44
+ align-items: flex-start;
45
+ gap: var(--matcha-space-150, 12px);
46
+ width: 100%;
47
+ }
48
+
49
+ .matcha-form-section__bar {
50
+ width: var(--matcha-border-medium, 4px);
51
+ align-self: stretch;
52
+ border-radius: var(--matcha-radius-sm, 2px);
53
+ flex-shrink: 0;
54
+ min-height: var(--matcha-space-250, 20px);
55
+ }
56
+
57
+ .matcha-form-section__content {
58
+ display: flex;
59
+ flex-direction: column;
60
+ gap: var(--matcha-space-050, 4px);
61
+ flex: 1;
62
+ min-width: 0;
63
+ }
64
+
65
+ .matcha-form-section__title {
66
+ font-family: var(--matcha-font-family);
67
+ font-size: var(--matcha-text-title-sm, 16px);
68
+ font-weight: var(--matcha-weight-semibold, 600);
69
+ line-height: var(--matcha-leading-title-sm, 22px);
70
+ }
71
+
72
+ .matcha-form-section__description {
73
+ font-family: var(--matcha-font-family);
74
+ font-size: var(--matcha-text-body-sm, 12px);
75
+ font-weight: var(--matcha-weight-regular, 400);
76
+ line-height: var(--matcha-leading-body-sm, 16px);
77
+ }
78
+
79
+ // ── Sub-section Layout ─────────────────────────────────────────────────────
80
+
81
+ .matcha-form-subsection {
82
+ display: flex;
83
+ align-items: center;
84
+ gap: var(--matcha-space-100, 8px);
85
+ width: 100%;
86
+ }
87
+
88
+ .matcha-form-subsection__bullet {
89
+ width: 6px;
90
+ height: 6px;
91
+ border-radius: var(--matcha-radius-pill, 9999px);
92
+ flex-shrink: 0;
93
+ }
94
+
95
+ .matcha-form-subsection__title {
96
+ font-family: var(--matcha-font-family);
97
+ font-size: var(--matcha-text-body-md, 14px);
98
+ font-weight: var(--matcha-weight-medium, 500);
99
+ line-height: var(--matcha-leading-body-md, 20px);
100
+ }