ionbase-ui 0.26.0 → 0.28.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.
- package/dist/components/Avatar.d.ts +33 -0
- package/dist/components/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar.js +43 -4
- package/dist/components/Avatar.js.map +1 -1
- package/dist/components/AvatarGradient.d.ts +44 -0
- package/dist/components/AvatarGradient.d.ts.map +1 -0
- package/dist/components/AvatarGradient.js +32 -0
- package/dist/components/AvatarGradient.js.map +1 -0
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/figma-descriptions.json +34 -29
- package/dist/figma-map.json +94 -3
- package/dist/meta/Avatar.json +137 -7
- package/dist/meta/AvatarGradient.json +202 -0
- package/dist/meta/AvatarGroup.json +26 -3
- package/dist/meta/Button.json +4 -0
- package/dist/meta/components.json +370 -11
- package/dist/meta/contrast.json +591 -283
- package/dist/meta/index.json +40 -1
- package/dist/meta/patterns/index.json +1 -1
- package/dist/styles/avatar-gradient.css +218 -0
- package/dist/styles/avatar.css +185 -19
- package/dist/styles/button.css +47 -18
- package/dist/styles/index.css +1 -0
- package/dist/styles/tokens/base.css +26 -26
- package/dist/styles/tokens/theme-dark.css +6 -6
- package/dist/tokens/index.d.ts +10 -10
- package/dist/tokens/index.js +10 -10
- package/llms.txt +2 -2
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "ionbase-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.0",
|
|
4
4
|
"generated": "by scripts/build-meta.mjs — do not edit; intent lives in meta/*.json",
|
|
5
5
|
"hooks": [
|
|
6
6
|
"useToast"
|
|
@@ -897,7 +897,7 @@
|
|
|
897
897
|
"name": "Avatar",
|
|
898
898
|
"source": "src/components/Avatar.tsx",
|
|
899
899
|
"propsType": "AvatarProps",
|
|
900
|
-
"description": "Avatar picks its content the way Figma's `Type` variant does, but by\nprecedence rather than by a prop: image, then initials, then icon. A caller\npassing `src` and `initials` gets the image with the initials as its alt\nfallback, which is what you want when the image 404s.\n\nA failed `src` falls through to initials (then icon) rather than leaving the\nbrowser's broken-image glyph — that is why initials exist alongside `src`.\n\nIt is a `<span>`, not a `<div>`, so it can sit inline beside text without the\ncaller fighting a block element.",
|
|
900
|
+
"description": "Avatar picks its content the way Figma's `Type` variant does, but by\nprecedence rather than by a prop: image, then initials, then icon. A caller\npassing `src` and `initials` gets the image with the initials as its alt\nfallback, which is what you want when the image 404s.\n\nA failed `src` falls through to initials (then icon) rather than leaving the\nbrowser's broken-image glyph — that is why initials exist alongside `src`.\n\nIt is a `<span>`, not a `<div>`, so it can sit inline beside text without the\ncaller fighting a block element.\n\nTHE MEDIA IS A CHILD, AND IT HAS TO BE\n\nThe box that clips the image is `.ion-avatar__media`, not the root. The root\ncannot clip: a corner indicator sits outside a circle's clip path and would\nbe sliced in half by the `overflow: hidden` that crops the photo. Figma\ndraws exactly this — an unclipped frame holding a clipped `Media` child and\nthe indicators as its siblings.",
|
|
901
901
|
"import": "import { Avatar } from 'ionbase-ui';",
|
|
902
902
|
"status": "stable",
|
|
903
903
|
"summary": "A person or entity marker. Content is chosen by precedence — image, then initials, then icon — not by a type prop.",
|
|
@@ -937,21 +937,67 @@
|
|
|
937
937
|
"square": {
|
|
938
938
|
"use": "organisations, projects, workspaces and other non-human entities"
|
|
939
939
|
}
|
|
940
|
+
},
|
|
941
|
+
"topIndicator": {
|
|
942
|
+
"neutral": {
|
|
943
|
+
"use": "no state, or a state this system has no colour for"
|
|
944
|
+
},
|
|
945
|
+
"primary": {
|
|
946
|
+
"use": "attention rather than health — a request, an invite, a mention"
|
|
947
|
+
},
|
|
948
|
+
"success": {
|
|
949
|
+
"use": "online, available, verified, complete"
|
|
950
|
+
},
|
|
951
|
+
"warning": {
|
|
952
|
+
"use": "away, idle, needs attention but is not broken"
|
|
953
|
+
},
|
|
954
|
+
"error": {
|
|
955
|
+
"use": "offline, blocked, failed"
|
|
956
|
+
},
|
|
957
|
+
"information": {
|
|
958
|
+
"use": "a neutral fact about the person — a role or a badge, not a state"
|
|
959
|
+
}
|
|
960
|
+
},
|
|
961
|
+
"bottomIndicator": {
|
|
962
|
+
"neutral": {
|
|
963
|
+
"use": "no state, or a state this system has no colour for"
|
|
964
|
+
},
|
|
965
|
+
"primary": {
|
|
966
|
+
"use": "attention rather than health — a request, an invite, a mention"
|
|
967
|
+
},
|
|
968
|
+
"success": {
|
|
969
|
+
"use": "online, available, verified, complete"
|
|
970
|
+
},
|
|
971
|
+
"warning": {
|
|
972
|
+
"use": "away, idle, needs attention but is not broken"
|
|
973
|
+
},
|
|
974
|
+
"error": {
|
|
975
|
+
"use": "offline, blocked, failed"
|
|
976
|
+
},
|
|
977
|
+
"information": {
|
|
978
|
+
"use": "a neutral fact about the person — a role or a badge, not a state"
|
|
979
|
+
}
|
|
940
980
|
}
|
|
941
981
|
},
|
|
942
982
|
"slots": {
|
|
943
983
|
"icon": {
|
|
944
984
|
"accepts": "Icon",
|
|
945
985
|
"note": "the last fallback — rendered only when there is neither `src` nor `initials`"
|
|
986
|
+
},
|
|
987
|
+
"topIndicatorIcon": {
|
|
988
|
+
"accepts": "Icon",
|
|
989
|
+
"note": "replaces the top indicator's default check glyph. The bottom indicator takes no glyph — Figma draws it bare, and at Mini it is 8px, which nothing legible fits inside."
|
|
946
990
|
}
|
|
947
991
|
},
|
|
948
992
|
"a11y": {
|
|
949
993
|
"guarantees": [
|
|
950
994
|
"`alt` falls back to `initials`, so the avatar is never announced as an unlabelled image",
|
|
951
|
-
"a `src` that fails to load falls through to initials, then icon — never the browser's broken-image glyph"
|
|
995
|
+
"a `src` that fails to load falls through to initials, then icon — never the browser's broken-image glyph",
|
|
996
|
+
"indicator labels are announced wherever they land: folded into the avatar's own `aria-label` when there is no image (the root is `role=\"img\"` and therefore a leaf), and carried as hidden text inside each indicator when there is"
|
|
952
997
|
],
|
|
953
998
|
"requires": [
|
|
954
|
-
"`alt` describing the person, not the picture — \"Ada Lovelace\", not \"profile photo\""
|
|
999
|
+
"`alt` describing the person, not the picture — \"Ada Lovelace\", not \"profile photo\"",
|
|
1000
|
+
"`topIndicatorLabel` / `bottomIndicatorLabel` on any indicator that carries meaning. An indicator with no label is decorative, which is the right answer only when the same fact is already stated in text beside it."
|
|
955
1001
|
]
|
|
956
1002
|
},
|
|
957
1003
|
"antiPatterns": [
|
|
@@ -963,43 +1009,75 @@
|
|
|
963
1009
|
"dont": "using Avatar as a button",
|
|
964
1010
|
"do": "put the Avatar inside a Button or Link",
|
|
965
1011
|
"why": "Avatar renders a <span> with no role and takes no focus"
|
|
1012
|
+
},
|
|
1013
|
+
{
|
|
1014
|
+
"dont": "using an indicator's colour as the only carrier of a status",
|
|
1015
|
+
"do": "pass `topIndicatorLabel` / `bottomIndicatorLabel`, or state the status in text nearby",
|
|
1016
|
+
"why": "WCAG 1.4.1. A green dot and a red dot are the same dot to a screen reader, and to a good share of sighted users too"
|
|
1017
|
+
},
|
|
1018
|
+
{
|
|
1019
|
+
"dont": "reaching for `ring` to mean selected or focused",
|
|
1020
|
+
"why": "it is a static brand ring from the design, not a focus indicator. Focus belongs on whatever interactive element wraps the avatar, and that element draws its own"
|
|
966
1021
|
}
|
|
967
1022
|
],
|
|
968
1023
|
"stylesheet": "src/styles/avatar.css",
|
|
969
1024
|
"tokens": [
|
|
970
1025
|
"--border-strong",
|
|
1026
|
+
"--border-subtle",
|
|
971
1027
|
"--border-width-default",
|
|
1028
|
+
"--border-width-thick",
|
|
972
1029
|
"--font-family-sans",
|
|
973
1030
|
"--font-weight-medium",
|
|
1031
|
+
"--font-weight-regular",
|
|
974
1032
|
"--icon-size-2xs",
|
|
975
1033
|
"--icon-size-lg",
|
|
976
1034
|
"--icon-size-md",
|
|
977
1035
|
"--icon-size-sm",
|
|
978
1036
|
"--icon-tertiary",
|
|
1037
|
+
"--ion-avatar-border",
|
|
979
1038
|
"--ion-avatar-font-size",
|
|
1039
|
+
"--ion-avatar-font-weight",
|
|
980
1040
|
"--ion-avatar-group-overlap",
|
|
981
1041
|
"--ion-avatar-icon",
|
|
1042
|
+
"--ion-avatar-indicator-icon",
|
|
1043
|
+
"--ion-avatar-indicator-ring",
|
|
1044
|
+
"--ion-avatar-indicator-size",
|
|
982
1045
|
"--ion-avatar-line-height",
|
|
983
1046
|
"--ion-avatar-radius",
|
|
1047
|
+
"--ion-avatar-ring-width",
|
|
984
1048
|
"--ion-avatar-size",
|
|
1049
|
+
"--ion-avatar-surface",
|
|
985
1050
|
"--radius-full",
|
|
986
1051
|
"--radius-md",
|
|
987
1052
|
"--radius-sm",
|
|
988
1053
|
"--radius-xs",
|
|
1054
|
+
"--ring-offset",
|
|
1055
|
+
"--spacing-12",
|
|
1056
|
+
"--spacing-14",
|
|
1057
|
+
"--spacing-16",
|
|
989
1058
|
"--spacing-24",
|
|
990
1059
|
"--spacing-32",
|
|
991
1060
|
"--spacing-40",
|
|
992
1061
|
"--spacing-48",
|
|
1062
|
+
"--spacing-8",
|
|
1063
|
+
"--surface-error",
|
|
1064
|
+
"--surface-information",
|
|
1065
|
+
"--surface-inverse",
|
|
993
1066
|
"--surface-muted",
|
|
1067
|
+
"--surface-placeholder",
|
|
1068
|
+
"--surface-primary",
|
|
1069
|
+
"--surface-success",
|
|
1070
|
+
"--surface-warning",
|
|
1071
|
+
"--text-on-color",
|
|
994
1072
|
"--text-tertiary",
|
|
995
1073
|
"--type-body",
|
|
1074
|
+
"--type-body-lg",
|
|
1075
|
+
"--type-body-lg-line-height",
|
|
996
1076
|
"--type-body-line-height",
|
|
997
1077
|
"--type-body-sm",
|
|
998
1078
|
"--type-body-sm-line-height",
|
|
999
1079
|
"--type-caption",
|
|
1000
|
-
"--type-caption-line-height"
|
|
1001
|
-
"--type-h5",
|
|
1002
|
-
"--type-h5-line-height"
|
|
1080
|
+
"--type-caption-line-height"
|
|
1003
1081
|
],
|
|
1004
1082
|
"props": {
|
|
1005
1083
|
"size": {
|
|
@@ -1047,15 +1125,269 @@
|
|
|
1047
1125
|
"required": false,
|
|
1048
1126
|
"origin": "own",
|
|
1049
1127
|
"description": "Figma's `Type=Icon`. Rendered when there is neither `src` nor `initials`."
|
|
1128
|
+
},
|
|
1129
|
+
"ring": {
|
|
1130
|
+
"type": "boolean | undefined",
|
|
1131
|
+
"required": false,
|
|
1132
|
+
"origin": "own",
|
|
1133
|
+
"description": "Figma's `Show Ring` — a 1px/2px brand ring drawn inside the avatar's edge."
|
|
1134
|
+
},
|
|
1135
|
+
"topIndicator": {
|
|
1136
|
+
"type": "AvatarIndicatorIntent | undefined",
|
|
1137
|
+
"required": false,
|
|
1138
|
+
"origin": "own",
|
|
1139
|
+
"description": "Figma's `Show Top Indicator`, as the intent of the `Status Indicator`\ninstance it holds. Top-right, and it carries a glyph: this is the corner\nthat says something was verified or requested, not who is online.",
|
|
1140
|
+
"values": [
|
|
1141
|
+
"neutral",
|
|
1142
|
+
"primary",
|
|
1143
|
+
"success",
|
|
1144
|
+
"warning",
|
|
1145
|
+
"error",
|
|
1146
|
+
"information"
|
|
1147
|
+
]
|
|
1148
|
+
},
|
|
1149
|
+
"topIndicatorIcon": {
|
|
1150
|
+
"type": "React.ReactNode",
|
|
1151
|
+
"required": false,
|
|
1152
|
+
"origin": "own",
|
|
1153
|
+
"description": "Replaces the top indicator's default check glyph."
|
|
1154
|
+
},
|
|
1155
|
+
"topIndicatorLabel": {
|
|
1156
|
+
"type": "string | undefined",
|
|
1157
|
+
"required": false,
|
|
1158
|
+
"origin": "own",
|
|
1159
|
+
"description": "Names the top indicator for assistive tech. Without it the mark is decorative."
|
|
1160
|
+
},
|
|
1161
|
+
"bottomIndicator": {
|
|
1162
|
+
"type": "AvatarIndicatorIntent | undefined",
|
|
1163
|
+
"required": false,
|
|
1164
|
+
"origin": "own",
|
|
1165
|
+
"description": "Figma's `Show Bottom Indicator`. Bottom-right and glyphless — the presence\ndot.",
|
|
1166
|
+
"values": [
|
|
1167
|
+
"neutral",
|
|
1168
|
+
"primary",
|
|
1169
|
+
"success",
|
|
1170
|
+
"warning",
|
|
1171
|
+
"error",
|
|
1172
|
+
"information"
|
|
1173
|
+
]
|
|
1174
|
+
},
|
|
1175
|
+
"bottomIndicatorLabel": {
|
|
1176
|
+
"type": "string | undefined",
|
|
1177
|
+
"required": false,
|
|
1178
|
+
"origin": "own",
|
|
1179
|
+
"description": "Names the bottom indicator for assistive tech. Colour alone is not a status."
|
|
1050
1180
|
}
|
|
1051
1181
|
},
|
|
1052
1182
|
"propCounts": {
|
|
1053
|
-
"own":
|
|
1183
|
+
"own": 12,
|
|
1054
1184
|
"aria": 0,
|
|
1055
1185
|
"dom": 278,
|
|
1056
1186
|
"other": 0
|
|
1057
1187
|
}
|
|
1058
1188
|
},
|
|
1189
|
+
"AvatarGradient": {
|
|
1190
|
+
"name": "AvatarGradient",
|
|
1191
|
+
"source": "src/components/AvatarGradient.tsx",
|
|
1192
|
+
"propsType": "AvatarGradientProps",
|
|
1193
|
+
"description": "AvatarGradient is Avatar's initials-only sibling: a tinted, bevelled disc for\npeople who have no photo.\n\nIT IS A SEPARATE COMPONENT BECAUSE FIGMA DRAWS A SEPARATE COMPONENT, AND THE\nAXES ARE THE ARGUMENT\n\nIt has `Color`, which Avatar does not. It has no `Shape`, because a gradient\nthis directional only reads on a circle. It has no `Type`, because there is\nno image and no icon to fall back to — the initials are the whole content.\nFolding it into Avatar would mean a `color` prop that does nothing on three\nof Avatar's four states and a `shape` prop that this one has to reject.\n\nThere is no `icon` and no `src` fallback here on purpose. If you have a\nphoto, or nothing at all to put in the circle, that is `Avatar`.",
|
|
1194
|
+
"import": "import { AvatarGradient } from 'ionbase-ui';",
|
|
1195
|
+
"status": "stable",
|
|
1196
|
+
"summary": "Avatar's initials-only sibling: a tinted, bevelled disc in one of seven colours, for people with no photo.",
|
|
1197
|
+
"useWhen": [
|
|
1198
|
+
"someone has no profile image and the fallback should still look deliberate rather than empty",
|
|
1199
|
+
"a list of people reads better when each one is a different colour — the colour is recognisable long before the letters are legible"
|
|
1200
|
+
],
|
|
1201
|
+
"useInstead": [
|
|
1202
|
+
{
|
|
1203
|
+
"when": "there is a photo, or there may be one later",
|
|
1204
|
+
"use": "Avatar",
|
|
1205
|
+
"why": "Avatar falls back from image to initials to icon on its own; this component has no image to fall back from"
|
|
1206
|
+
},
|
|
1207
|
+
{
|
|
1208
|
+
"when": "the mark needs a square shape, an icon, a ring or a status indicator",
|
|
1209
|
+
"use": "Avatar",
|
|
1210
|
+
"why": "Figma draws none of those on this component, and a gradient this directional only reads on a circle"
|
|
1211
|
+
},
|
|
1212
|
+
{
|
|
1213
|
+
"when": "the thing being marked is a status, count or category rather than a person",
|
|
1214
|
+
"use": "Badge"
|
|
1215
|
+
}
|
|
1216
|
+
],
|
|
1217
|
+
"variants": {
|
|
1218
|
+
"size": {
|
|
1219
|
+
"mini": {
|
|
1220
|
+
"use": "24px — inline beside body text, dense table rows"
|
|
1221
|
+
},
|
|
1222
|
+
"sm": {
|
|
1223
|
+
"use": "32px — menu rows, compact lists"
|
|
1224
|
+
},
|
|
1225
|
+
"md": {
|
|
1226
|
+
"use": "the default, 40px"
|
|
1227
|
+
},
|
|
1228
|
+
"lg": {
|
|
1229
|
+
"use": "48px — profile headers and detail pages"
|
|
1230
|
+
}
|
|
1231
|
+
},
|
|
1232
|
+
"color": {
|
|
1233
|
+
"slate": {
|
|
1234
|
+
"use": "the default. The one to reach for when nothing about the person suggests a colour"
|
|
1235
|
+
},
|
|
1236
|
+
"blue": {
|
|
1237
|
+
"use": "one of seven, picked to tell people apart"
|
|
1238
|
+
},
|
|
1239
|
+
"violet": {
|
|
1240
|
+
"use": "one of seven, picked to tell people apart"
|
|
1241
|
+
},
|
|
1242
|
+
"pink": {
|
|
1243
|
+
"use": "one of seven, picked to tell people apart"
|
|
1244
|
+
},
|
|
1245
|
+
"orange": {
|
|
1246
|
+
"use": "one of seven, picked to tell people apart"
|
|
1247
|
+
},
|
|
1248
|
+
"green": {
|
|
1249
|
+
"use": "as the rest. Not a status — a green disc here does not mean online, and Avatar's `bottomIndicator` is what does"
|
|
1250
|
+
},
|
|
1251
|
+
"red": {
|
|
1252
|
+
"use": "as the rest. Not an error — this is identity, not state"
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
},
|
|
1256
|
+
"a11y": {
|
|
1257
|
+
"guarantees": [
|
|
1258
|
+
"`alt` falls back to `initials`, so the disc is never announced as an unlabelled image",
|
|
1259
|
+
"all seven colours clear WCAG AA for the initials against the palest end of their own gradient, which is the worst case the text sits on"
|
|
1260
|
+
],
|
|
1261
|
+
"requires": [
|
|
1262
|
+
"`alt` naming the person — \"Ada Lovelace\", not \"AB\". Two letters are not a name, and that is all a screen reader would otherwise get"
|
|
1263
|
+
],
|
|
1264
|
+
"notes": [
|
|
1265
|
+
"Colour is decoration here, never information. Nothing about which of the seven a person gets should be recoverable, because a screen reader cannot recover it.",
|
|
1266
|
+
"The first version of this component was a saturated disc with white initials and failed AA on four of its colours. It was fixed in Figma by inverting it — pale disc, coloured initials — rather than in code. Do not reintroduce the saturated version."
|
|
1267
|
+
]
|
|
1268
|
+
},
|
|
1269
|
+
"antiPatterns": [
|
|
1270
|
+
{
|
|
1271
|
+
"dont": "picking the colour from a status — green for online, red for failing",
|
|
1272
|
+
"do": "use Avatar's `bottomIndicator`, or say it in text",
|
|
1273
|
+
"why": "the colour is identity, not state. It is also invisible to assistive tech, so a status expressed only this way is not expressed at all"
|
|
1274
|
+
},
|
|
1275
|
+
{
|
|
1276
|
+
"dont": "hashing a user id to a colour and treating it as stable",
|
|
1277
|
+
"do": "store the chosen colour with the person, the way you would store their avatar",
|
|
1278
|
+
"why": "the palette has eight entries and any hash of it will collide; worse, it silently reassigns everyone the day the palette or the hash changes"
|
|
1279
|
+
},
|
|
1280
|
+
{
|
|
1281
|
+
"dont": "passing more than two letters",
|
|
1282
|
+
"why": "Figma draws two. Three fit at 48 and clip at 24, so it looks correct in the story and wrong in the table"
|
|
1283
|
+
}
|
|
1284
|
+
],
|
|
1285
|
+
"stylesheet": "src/styles/avatar-gradient.css",
|
|
1286
|
+
"tokens": [
|
|
1287
|
+
"--color-blue-200",
|
|
1288
|
+
"--color-blue-300",
|
|
1289
|
+
"--color-blue-50",
|
|
1290
|
+
"--color-blue-600",
|
|
1291
|
+
"--color-gray-200",
|
|
1292
|
+
"--color-gray-300",
|
|
1293
|
+
"--color-gray-50",
|
|
1294
|
+
"--color-gray-600",
|
|
1295
|
+
"--color-green-200",
|
|
1296
|
+
"--color-green-300",
|
|
1297
|
+
"--color-green-50",
|
|
1298
|
+
"--color-green-600",
|
|
1299
|
+
"--color-orange-200",
|
|
1300
|
+
"--color-orange-300",
|
|
1301
|
+
"--color-orange-50",
|
|
1302
|
+
"--color-orange-600",
|
|
1303
|
+
"--color-pink-200",
|
|
1304
|
+
"--color-pink-300",
|
|
1305
|
+
"--color-pink-50",
|
|
1306
|
+
"--color-pink-600",
|
|
1307
|
+
"--color-purple-200",
|
|
1308
|
+
"--color-purple-300",
|
|
1309
|
+
"--color-purple-50",
|
|
1310
|
+
"--color-purple-600",
|
|
1311
|
+
"--color-red-200",
|
|
1312
|
+
"--color-red-300",
|
|
1313
|
+
"--color-red-50",
|
|
1314
|
+
"--color-red-600",
|
|
1315
|
+
"--font-family-sans",
|
|
1316
|
+
"--font-weight-medium",
|
|
1317
|
+
"--font-weight-regular",
|
|
1318
|
+
"--ion-avatar-gradient-bevel",
|
|
1319
|
+
"--ion-avatar-gradient-font-size",
|
|
1320
|
+
"--ion-avatar-gradient-font-weight",
|
|
1321
|
+
"--ion-avatar-gradient-from",
|
|
1322
|
+
"--ion-avatar-gradient-line-height",
|
|
1323
|
+
"--ion-avatar-gradient-mid",
|
|
1324
|
+
"--ion-avatar-gradient-sheen",
|
|
1325
|
+
"--ion-avatar-gradient-sheen-mid",
|
|
1326
|
+
"--ion-avatar-gradient-size",
|
|
1327
|
+
"--ion-avatar-gradient-text",
|
|
1328
|
+
"--ion-avatar-gradient-to",
|
|
1329
|
+
"--radius-full",
|
|
1330
|
+
"--spacing-24",
|
|
1331
|
+
"--spacing-32",
|
|
1332
|
+
"--spacing-40",
|
|
1333
|
+
"--spacing-48",
|
|
1334
|
+
"--type-body",
|
|
1335
|
+
"--type-body-lg",
|
|
1336
|
+
"--type-body-lg-line-height",
|
|
1337
|
+
"--type-body-line-height",
|
|
1338
|
+
"--type-body-sm",
|
|
1339
|
+
"--type-body-sm-line-height",
|
|
1340
|
+
"--type-caption",
|
|
1341
|
+
"--type-caption-line-height"
|
|
1342
|
+
],
|
|
1343
|
+
"props": {
|
|
1344
|
+
"size": {
|
|
1345
|
+
"type": "AvatarSize | undefined",
|
|
1346
|
+
"required": false,
|
|
1347
|
+
"origin": "own",
|
|
1348
|
+
"description": "Matches the Figma `Size` variant: Mini 24, Small 32, Medium 40, Large 48.",
|
|
1349
|
+
"values": [
|
|
1350
|
+
"sm",
|
|
1351
|
+
"md",
|
|
1352
|
+
"lg",
|
|
1353
|
+
"mini"
|
|
1354
|
+
]
|
|
1355
|
+
},
|
|
1356
|
+
"color": {
|
|
1357
|
+
"type": "AvatarGradientColor | undefined",
|
|
1358
|
+
"required": false,
|
|
1359
|
+
"origin": "own",
|
|
1360
|
+
"description": "Matches the Figma `Color` variant.",
|
|
1361
|
+
"values": [
|
|
1362
|
+
"slate",
|
|
1363
|
+
"blue",
|
|
1364
|
+
"violet",
|
|
1365
|
+
"pink",
|
|
1366
|
+
"orange",
|
|
1367
|
+
"green",
|
|
1368
|
+
"red"
|
|
1369
|
+
]
|
|
1370
|
+
},
|
|
1371
|
+
"initials": {
|
|
1372
|
+
"type": "string | undefined",
|
|
1373
|
+
"required": false,
|
|
1374
|
+
"origin": "own",
|
|
1375
|
+
"description": "The two letters. Figma's `Initials`."
|
|
1376
|
+
},
|
|
1377
|
+
"alt": {
|
|
1378
|
+
"type": "string | undefined",
|
|
1379
|
+
"required": false,
|
|
1380
|
+
"origin": "own",
|
|
1381
|
+
"description": "Describes the person, not the picture — \"Ada Lovelace\", not \"avatar\".\nWithout it the initials are announced as the letters they are, which is\nnot a name."
|
|
1382
|
+
}
|
|
1383
|
+
},
|
|
1384
|
+
"propCounts": {
|
|
1385
|
+
"own": 4,
|
|
1386
|
+
"aria": 0,
|
|
1387
|
+
"dom": 277,
|
|
1388
|
+
"other": 0
|
|
1389
|
+
}
|
|
1390
|
+
},
|
|
1059
1391
|
"AvatarGroup": {
|
|
1060
1392
|
"name": "AvatarGroup",
|
|
1061
1393
|
"source": "src/components/Avatar.tsx",
|
|
@@ -1122,38 +1454,61 @@
|
|
|
1122
1454
|
"stylesheet": "src/styles/avatar.css",
|
|
1123
1455
|
"tokens": [
|
|
1124
1456
|
"--border-strong",
|
|
1457
|
+
"--border-subtle",
|
|
1125
1458
|
"--border-width-default",
|
|
1459
|
+
"--border-width-thick",
|
|
1126
1460
|
"--font-family-sans",
|
|
1127
1461
|
"--font-weight-medium",
|
|
1462
|
+
"--font-weight-regular",
|
|
1128
1463
|
"--icon-size-2xs",
|
|
1129
1464
|
"--icon-size-lg",
|
|
1130
1465
|
"--icon-size-md",
|
|
1131
1466
|
"--icon-size-sm",
|
|
1132
1467
|
"--icon-tertiary",
|
|
1468
|
+
"--ion-avatar-border",
|
|
1133
1469
|
"--ion-avatar-font-size",
|
|
1470
|
+
"--ion-avatar-font-weight",
|
|
1134
1471
|
"--ion-avatar-group-overlap",
|
|
1135
1472
|
"--ion-avatar-icon",
|
|
1473
|
+
"--ion-avatar-indicator-icon",
|
|
1474
|
+
"--ion-avatar-indicator-ring",
|
|
1475
|
+
"--ion-avatar-indicator-size",
|
|
1136
1476
|
"--ion-avatar-line-height",
|
|
1137
1477
|
"--ion-avatar-radius",
|
|
1478
|
+
"--ion-avatar-ring-width",
|
|
1138
1479
|
"--ion-avatar-size",
|
|
1480
|
+
"--ion-avatar-surface",
|
|
1139
1481
|
"--radius-full",
|
|
1140
1482
|
"--radius-md",
|
|
1141
1483
|
"--radius-sm",
|
|
1142
1484
|
"--radius-xs",
|
|
1485
|
+
"--ring-offset",
|
|
1486
|
+
"--spacing-12",
|
|
1487
|
+
"--spacing-14",
|
|
1488
|
+
"--spacing-16",
|
|
1143
1489
|
"--spacing-24",
|
|
1144
1490
|
"--spacing-32",
|
|
1145
1491
|
"--spacing-40",
|
|
1146
1492
|
"--spacing-48",
|
|
1493
|
+
"--spacing-8",
|
|
1494
|
+
"--surface-error",
|
|
1495
|
+
"--surface-information",
|
|
1496
|
+
"--surface-inverse",
|
|
1147
1497
|
"--surface-muted",
|
|
1498
|
+
"--surface-placeholder",
|
|
1499
|
+
"--surface-primary",
|
|
1500
|
+
"--surface-success",
|
|
1501
|
+
"--surface-warning",
|
|
1502
|
+
"--text-on-color",
|
|
1148
1503
|
"--text-tertiary",
|
|
1149
1504
|
"--type-body",
|
|
1505
|
+
"--type-body-lg",
|
|
1506
|
+
"--type-body-lg-line-height",
|
|
1150
1507
|
"--type-body-line-height",
|
|
1151
1508
|
"--type-body-sm",
|
|
1152
1509
|
"--type-body-sm-line-height",
|
|
1153
1510
|
"--type-caption",
|
|
1154
|
-
"--type-caption-line-height"
|
|
1155
|
-
"--type-h5",
|
|
1156
|
-
"--type-h5-line-height"
|
|
1511
|
+
"--type-caption-line-height"
|
|
1157
1512
|
],
|
|
1158
1513
|
"props": {
|
|
1159
1514
|
"size": {
|
|
@@ -1489,6 +1844,7 @@
|
|
|
1489
1844
|
"--ion-button-pressed",
|
|
1490
1845
|
"--ion-button-raised",
|
|
1491
1846
|
"--ion-button-ring",
|
|
1847
|
+
"--ion-button-shadow",
|
|
1492
1848
|
"--ion-button-size",
|
|
1493
1849
|
"--ion-duration-base",
|
|
1494
1850
|
"--ion-duration-fast",
|
|
@@ -1504,6 +1860,9 @@
|
|
|
1504
1860
|
"--ion-shadow-raised-lifted-lg",
|
|
1505
1861
|
"--ion-shadow-raised-lifted-sm",
|
|
1506
1862
|
"--ion-shadow-raised-lifted-xs",
|
|
1863
|
+
"--ion-shadow-shadow-md",
|
|
1864
|
+
"--ion-shadow-shadow-sm",
|
|
1865
|
+
"--ion-shadow-shadow-xs",
|
|
1507
1866
|
"--radius-md",
|
|
1508
1867
|
"--spacing-12",
|
|
1509
1868
|
"--spacing-16",
|