|
1 | 1 | @use "../../themes/ionic/ionic.globals.scss" as globals; |
| 2 | +@use "./chip.common"; |
2 | 3 |
|
3 | 4 | // Ionic Chip |
4 | 5 | // -------------------------------------------------- |
5 | 6 |
|
6 | 7 | :host { |
7 | | - --background: #{globals.$ion-primitives-neutral-100}; |
8 | | - --color: #{globals.$ion-primitives-neutral-900}; |
| 8 | + /** |
| 9 | + * @prop --focus-ring-color: Color of the focus ring |
| 10 | + * @prop --focus-ring-width: Width of the focus ring |
| 11 | + */ |
9 | 12 | --focus-ring-color: #{globals.$ion-border-focus-default}; |
10 | 13 | --focus-ring-width: #{globals.$ion-border-size-050}; |
11 | 14 |
|
12 | | - @include globals.font-smoothing; |
13 | 15 | @include globals.padding(globals.$ion-space-150, globals.$ion-space-200); |
14 | 16 | @include globals.border-radius(var(--border-radius)); |
15 | 17 |
|
16 | | - display: inline-flex; |
17 | | - |
18 | | - position: relative; |
19 | | - |
20 | | - align-items: center; |
21 | | - justify-content: center; |
22 | | - |
23 | 18 | gap: globals.$ion-space-100; |
24 | 19 |
|
25 | | - background: var(--background); |
26 | | - color: var(--color); |
27 | | - |
28 | 20 | font-family: globals.$ion-font-family; |
29 | 21 | font-weight: globals.$ion-font-weight-medium; |
30 | 22 |
|
31 | 23 | line-height: globals.$ion-font-line-height-full; |
32 | | - |
33 | | - cursor: pointer; |
34 | | - |
35 | | - overflow: hidden; |
36 | | - |
37 | | - box-sizing: border-box; |
38 | | - |
39 | | - vertical-align: middle; |
40 | 24 | } |
41 | 25 |
|
42 | 26 | // Outline Chip |
|
45 | 29 | :host(.chip-outline) { |
46 | 30 | border-width: globals.$ion-border-size-025; |
47 | 31 | border-style: globals.$ion-border-style-solid; |
48 | | - border-color: globals.$ion-primitives-neutral-100; |
49 | | - |
50 | | - background: transparent; |
51 | | -} |
52 | | - |
53 | | -:host(.chip-outline.ion-color) { |
54 | | - border-color: globals.current-color(base, 0.32); |
55 | 32 | } |
56 | 33 |
|
57 | 34 | // Chip: Focus |
|
66 | 43 | // --------------------------------------------- |
67 | 44 |
|
68 | 45 | @media (any-hover: hover) { |
69 | | - :host(:hover) { |
| 46 | + :host(.chip-subtle:hover) { |
70 | 47 | --background: #{globals.$ion-primitives-neutral-200}; |
71 | 48 | } |
72 | 49 |
|
73 | | - :host(.ion-color:hover) { |
74 | | - background: globals.current-color(base, 0.12); |
| 50 | + :host(.chip-bold:hover) { |
| 51 | + --background: #{globals.$ion-primitives-neutral-1100}; |
| 52 | + } |
| 53 | + |
| 54 | + :host(.chip-subtle.ion-color:hover) { |
| 55 | + background: globals.current-color(tint, $subtle: true); |
| 56 | + } |
| 57 | + |
| 58 | + :host(.chip-bold.ion-color:hover) { |
| 59 | + background: globals.current-color(shade); |
75 | 60 | } |
76 | 61 | } |
77 | 62 |
|
|
80 | 65 |
|
81 | 66 | :host(.chip-disabled) { |
82 | 67 | opacity: 0.6; |
83 | | - pointer-events: none; |
84 | 68 | } |
85 | 69 |
|
86 | 70 | // Chip Shapes |
|
110 | 94 | :host(.chip-small) { |
111 | 95 | min-height: globals.$ion-scale-600; |
112 | 96 |
|
113 | | - font-size: #{globals.$ion-font-size-300}; |
| 97 | + font-size: globals.$ion-font-size-300; |
114 | 98 | } |
115 | 99 |
|
116 | 100 | :host(.chip-large) { |
|
119 | 103 | font-size: globals.$ion-font-size-350; |
120 | 104 | } |
121 | 105 |
|
| 106 | +// Subtle Chip |
| 107 | +// --------------------------------------------- |
| 108 | + |
| 109 | +:host(.chip-subtle) { |
| 110 | + --background: #{globals.$ion-primitives-neutral-100}; |
| 111 | + --color: #{globals.$ion-primitives-neutral-800}; |
| 112 | +} |
| 113 | + |
| 114 | +:host(.chip-outline.chip-subtle) { |
| 115 | + border-color: globals.$ion-primitives-neutral-300; |
| 116 | +} |
| 117 | + |
| 118 | +// Bold Chip |
| 119 | +// --------------------------------------------- |
| 120 | + |
| 121 | +:host(.chip-bold) { |
| 122 | + --background: #{globals.$ion-bg-neutral-bold-default}; |
| 123 | + --color: #{globals.$ion-primitives-base-white}; |
| 124 | +} |
| 125 | + |
| 126 | +:host(.chip-outline.chip-bold) { |
| 127 | + // TODO(FW-6450): this is a made up design choice based on a |
| 128 | + // darker shade of the background color |
| 129 | + border-color: globals.$ion-primitives-neutral-1200; |
| 130 | +} |
| 131 | + |
122 | 132 | // Chip Colors |
123 | 133 | // --------------------------------------------- |
124 | 134 |
|
125 | | -:host(.ion-color) { |
126 | | - background: globals.current-color(base, 0.08); |
127 | | - color: globals.current-color(shade); |
| 135 | +// Subtle |
| 136 | +:host(.chip-subtle.ion-color) { |
| 137 | + background: globals.current-color(base, $subtle: true); |
| 138 | + color: globals.current-color(contrast, $subtle: true); |
| 139 | +} |
| 140 | + |
| 141 | +:host(.chip-subtle.chip-outline.ion-color) { |
| 142 | + border-color: globals.current-color(shade, $subtle: true); |
128 | 143 | } |
129 | 144 |
|
130 | | -:host(.ion-color:focus) { |
131 | | - background: globals.current-color(base, 0.12); |
| 145 | +// Bold |
| 146 | +:host(.chip-bold.ion-color) { |
| 147 | + background: globals.current-color(base); |
| 148 | + color: globals.current-color(contrast); |
132 | 149 | } |
133 | 150 |
|
134 | | -:host(.ion-color.ion-activated) { |
135 | | - background: globals.current-color(base, 0.16); |
| 151 | +:host(.chip-bold.chip-outline.ion-color) { |
| 152 | + border-color: globals.current-color(shade); |
136 | 153 | } |
0 commit comments