@rogieking/figui3 8.10.1 → 8.11.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/fig-lab.css CHANGED
@@ -223,6 +223,8 @@ fig-chat-message {
223
223
  propskit-fill,
224
224
  propskit-gradient,
225
225
  propskit-palette,
226
+ propskit-image,
227
+ propskit-editable-select,
226
228
  propskit-select,
227
229
  propskit-easing,
228
230
  propskit-text,
@@ -403,6 +405,8 @@ fig-content:has(> propskit-group[name]:last-child) {
403
405
  propskit-color,
404
406
  propskit-fill,
405
407
  propskit-gradient,
408
+ propskit-image,
409
+ propskit-editable-select,
406
410
  propskit-select,
407
411
  propskit-easing,
408
412
  propskit-text,
@@ -1276,6 +1280,142 @@ propskit-select {
1276
1280
  }
1277
1281
  }
1278
1282
 
1283
+ propskit-editable-select {
1284
+ --propskit-editable-select-height: 2rem;
1285
+ --propskit-editable-select-gap: var(--spacer-1);
1286
+ --propskit-editable-select-control-padding-inline: var(--spacer-1);
1287
+ --_propskit-padding-block: var(
1288
+ --propskit-editable-select-padding-block,
1289
+ var(--propskit-padding-block, var(--spacer-1))
1290
+ );
1291
+ --_propskit-padding-inline: var(
1292
+ --propskit-editable-select-padding-inline,
1293
+ var(--propskit-padding-inline, var(--spacer-3))
1294
+ );
1295
+ --_propskit-background: var(
1296
+ --propskit-editable-select-background,
1297
+ var(--propskit-background, var(--figma-color-bg-secondary))
1298
+ );
1299
+ --_propskit-border: var(
1300
+ --propskit-editable-select-border,
1301
+ var(--propskit-border, 0 solid transparent)
1302
+ );
1303
+ --_propskit-color: var(
1304
+ --propskit-editable-select-color,
1305
+ var(--propskit-color, var(--figma-color-text-secondary))
1306
+ );
1307
+ --_propskit-hover-background: var(
1308
+ --propskit-editable-select-hover-background,
1309
+ var(--propskit-hover-background, var(--_propskit-background))
1310
+ );
1311
+ --_propskit-hover-border: var(
1312
+ --propskit-editable-select-hover-border,
1313
+ var(
1314
+ --propskit-hover-border,
1315
+ 1px solid var(--figma-color-bordertranslucent)
1316
+ )
1317
+ );
1318
+ --_propskit-hover-color: var(
1319
+ --propskit-editable-select-hover-color,
1320
+ var(--propskit-hover-color, var(--_propskit-color))
1321
+ );
1322
+ --figma-focus-outline-offset: 1px;
1323
+
1324
+ display: block;
1325
+ box-sizing: border-box;
1326
+ width: 100%;
1327
+ min-height: calc(
1328
+ var(--propskit-editable-select-height) + var(--_propskit-padding-block) * 2
1329
+ );
1330
+ padding-block: var(--_propskit-padding-block);
1331
+ padding-inline: var(--_propskit-padding-inline);
1332
+
1333
+ .propskit-editable-select-surface {
1334
+ position: relative;
1335
+ display: flex;
1336
+ align-items: center;
1337
+ gap: var(--propskit-editable-select-gap);
1338
+ box-sizing: border-box;
1339
+ width: 100%;
1340
+ min-width: 0;
1341
+ min-height: var(--propskit-editable-select-height);
1342
+ padding-block: var(--spacer-1);
1343
+ padding-inline: 0 var(--spacer-1);
1344
+ padding-inline-start: var(--propskit-editable-select-control-padding-inline);
1345
+ border-radius: var(--radius-medium-large);
1346
+ background: var(--_propskit-background);
1347
+ color: var(--_propskit-color);
1348
+ outline: none;
1349
+
1350
+ &:focus-within {
1351
+ outline: var(--figma-focus-outline);
1352
+ outline-offset: var(--figma-focus-outline-offset);
1353
+ }
1354
+
1355
+ &::after {
1356
+ content: "";
1357
+ position: absolute;
1358
+ inset: 0;
1359
+ border: var(--_propskit-border);
1360
+ border-radius: inherit;
1361
+ pointer-events: none;
1362
+ }
1363
+
1364
+ &:hover {
1365
+ background: var(--_propskit-hover-background);
1366
+ color: var(--_propskit-hover-color);
1367
+
1368
+ &::after {
1369
+ border: var(--_propskit-hover-border);
1370
+ }
1371
+ }
1372
+
1373
+ & > fig-select {
1374
+ flex: 0 1 auto;
1375
+ width: auto;
1376
+ max-width: 100%;
1377
+ min-width: 0;
1378
+ margin-inline-end: auto;
1379
+ background-color: transparent;
1380
+ box-shadow: none;
1381
+ }
1382
+
1383
+ & > fig-input-text {
1384
+ flex: 1 1 0 !important;
1385
+ align-self: center;
1386
+ align-items: center;
1387
+ width: auto !important;
1388
+ min-width: 0;
1389
+ min-height: var(--control-height);
1390
+ margin-inline-end: auto;
1391
+ background-color: transparent;
1392
+ box-shadow: none;
1393
+ outline: none !important;
1394
+
1395
+ & > input[type="text"] {
1396
+ box-sizing: border-box;
1397
+ height: 100%;
1398
+ }
1399
+ }
1400
+ }
1401
+
1402
+ fig-select {
1403
+ --fig-select-trigger-width: 100%;
1404
+
1405
+ &::after {
1406
+ right: calc(0.25rem + var(--spacer-1));
1407
+ }
1408
+
1409
+ &::part(trigger) {
1410
+ outline: none;
1411
+ }
1412
+
1413
+ &::part(label) {
1414
+ text-align: left;
1415
+ }
1416
+ }
1417
+ }
1418
+
1279
1419
  propskit-text {
1280
1420
  --propskit-text-height: 2rem;
1281
1421
  --_propskit-padding-block: var(
@@ -2890,7 +3030,53 @@ propskit-spring {
2890
3030
  );
2891
3031
  }
2892
3032
 
2893
- :is(propskit-origin, propskit-easing, propskit-spring) {
3033
+ propskit-image {
3034
+ --_propskit-padding-block: var(
3035
+ --propskit-image-padding-block,
3036
+ var(--propskit-padding-block, var(--spacer-1))
3037
+ );
3038
+ --_propskit-padding-inline: var(
3039
+ --propskit-image-padding-inline,
3040
+ var(--propskit-padding-inline, var(--spacer-3))
3041
+ );
3042
+ --_propskit-background: var(
3043
+ --propskit-image-background,
3044
+ var(--propskit-background, var(--figma-color-bg-secondary))
3045
+ );
3046
+ --_propskit-border: var(
3047
+ --propskit-image-border,
3048
+ var(--propskit-border, 0 solid transparent)
3049
+ );
3050
+ --_propskit-color: var(
3051
+ --propskit-image-color,
3052
+ var(--propskit-color, var(--figma-color-text-secondary))
3053
+ );
3054
+ --_propskit-hover-background: var(
3055
+ --propskit-image-hover-background,
3056
+ var(--propskit-hover-background, var(--_propskit-background))
3057
+ );
3058
+ --_propskit-hover-border: var(
3059
+ --propskit-image-hover-border,
3060
+ var(
3061
+ --propskit-hover-border,
3062
+ 1px solid var(--figma-color-bordertranslucent)
3063
+ )
3064
+ );
3065
+ --_propskit-hover-color: var(
3066
+ --propskit-image-hover-color,
3067
+ var(--propskit-hover-color, var(--_propskit-color))
3068
+ );
3069
+ --_propskit-label-inline-size: var(
3070
+ --propskit-image-label-inline-size,
3071
+ var(--propskit-label-inline-size, 100%)
3072
+ );
3073
+ --_propskit-input-inline-size: var(
3074
+ --propskit-image-input-inline-size,
3075
+ var(--propskit-input-inline-size, 100%)
3076
+ );
3077
+ }
3078
+
3079
+ :is(propskit-origin, propskit-easing, propskit-spring, propskit-image) {
2894
3080
  display: block;
2895
3081
  box-sizing: border-box;
2896
3082
  width: 100%;
@@ -2900,7 +3086,8 @@ propskit-spring {
2900
3086
  & > :is(
2901
3087
  .propskit-origin-surface,
2902
3088
  .propskit-easing-surface,
2903
- .propskit-spring-surface
3089
+ .propskit-spring-surface,
3090
+ .propskit-image-surface
2904
3091
  ) {
2905
3092
  position: relative;
2906
3093
  display: flex;
@@ -2951,7 +3138,8 @@ propskit-spring {
2951
3138
  &[variant="minimal"] > :is(
2952
3139
  .propskit-origin-surface,
2953
3140
  .propskit-easing-surface,
2954
- .propskit-spring-surface
3141
+ .propskit-spring-surface,
3142
+ .propskit-image-surface
2955
3143
  ) {
2956
3144
  background: transparent;
2957
3145
  }
@@ -2960,7 +3148,8 @@ propskit-spring {
2960
3148
  & > :is(
2961
3149
  .propskit-origin-surface,
2962
3150
  .propskit-easing-surface,
2963
- .propskit-spring-surface
3151
+ .propskit-spring-surface,
3152
+ .propskit-image-surface
2964
3153
  ) {
2965
3154
  color: var(--figma-color-text-disabled);
2966
3155
  }
@@ -2972,6 +3161,117 @@ propskit-spring {
2972
3161
  }
2973
3162
  }
2974
3163
 
3164
+ propskit-image {
3165
+ .propskit-image-header {
3166
+ position: relative;
3167
+ z-index: 1;
3168
+ display: flex;
3169
+ align-items: center;
3170
+ gap: var(--spacer-2);
3171
+ width: 100%;
3172
+ min-width: 0;
3173
+ min-height: var(--control-height);
3174
+
3175
+ & > label {
3176
+ display: block;
3177
+ flex: 1 1 auto;
3178
+ width: var(--_propskit-label-inline-size);
3179
+ min-width: 0;
3180
+ margin: 0;
3181
+ padding: 0;
3182
+ padding-inline-start: calc(var(--spacer-2-5) - var(--spacer-2));
3183
+ transform: translateY(calc(-1 * var(--spacer-1)));
3184
+ overflow: hidden;
3185
+ color: inherit;
3186
+ text-overflow: ellipsis;
3187
+ white-space: nowrap;
3188
+ pointer-events: none;
3189
+ }
3190
+ }
3191
+
3192
+ .propskit-image-upload-tooltip {
3193
+ flex: 0 0 auto;
3194
+ margin-inline-start: auto;
3195
+ }
3196
+
3197
+ .propskit-image-upload {
3198
+ flex: 0 0 auto;
3199
+ }
3200
+
3201
+ .propskit-image-chooser {
3202
+ --fig-chooser-inline-margin: 0px;
3203
+
3204
+ position: relative;
3205
+ z-index: 1;
3206
+ align-self: flex-end;
3207
+ width: var(--_propskit-input-inline-size);
3208
+ max-width: none;
3209
+ max-height: 15rem;
3210
+ margin: calc(-1 * var(--spacer-1)) 0;
3211
+ margin-top: calc(-1 * var(--spacer-2));
3212
+ padding: 0 var(--spacer-1);
3213
+
3214
+ &[hidden] {
3215
+ display: none;
3216
+ }
3217
+
3218
+ & > .fig-overflow::before {
3219
+ background: var(--figma-color-bg-secondary) !important;
3220
+ }
3221
+ }
3222
+
3223
+ fig-choice {
3224
+ --fig-choice-border-radius: var(--radius-medium);
3225
+
3226
+ position: relative;
3227
+ min-width: 0;
3228
+ }
3229
+
3230
+ .propskit-image-remove {
3231
+ display: flex;
3232
+ position: absolute;
3233
+ z-index: 3;
3234
+ top: var(--spacer-1);
3235
+ right: var(--spacer-1);
3236
+ box-sizing: border-box;
3237
+ align-items: center;
3238
+ justify-content: center;
3239
+ width: 1.25rem;
3240
+ min-width: 1.25rem;
3241
+ height: 1.25rem;
3242
+ padding: 0;
3243
+ border-radius: var(--radius-medium);
3244
+ opacity: 0;
3245
+ pointer-events: none;
3246
+ color: var(--figma-color-text);
3247
+ color-scheme: light;
3248
+ background-color: var(--figma-color-bg);
3249
+ box-shadow: 0 0 0 1px var(--figma-color-bordertranslucent);
3250
+
3251
+ &:active {
3252
+ background-color: var(--figma-color-bg-secondary);
3253
+ }
3254
+ }
3255
+
3256
+ fig-choice:hover .propskit-image-remove {
3257
+ opacity: 1;
3258
+ pointer-events: auto;
3259
+ }
3260
+
3261
+ fig-image {
3262
+ width: 100%;
3263
+ max-width: none;
3264
+ min-width: 0;
3265
+ gap: 0;
3266
+ border-radius: var(--radius-medium);
3267
+
3268
+ & > fig-preview {
3269
+ min-height: 0;
3270
+ border-radius: var(--radius-medium);
3271
+ }
3272
+ }
3273
+ }
3274
+
2975
3275
  propskit-origin {
2976
3276
  fig-origin-grid {
2977
3277
  --figma-color-border: var(
@@ -3019,6 +3319,13 @@ propskit-origin {
3019
3319
  var(--figma-color-bordertranslucent)
3020
3320
  );
3021
3321
  }
3322
+
3323
+ fig-handle::after {
3324
+ --fig-handle-inner-bg: light-dark(
3325
+ #ffffff,
3326
+ var(--figma-color-bg-secondary)
3327
+ );
3328
+ }
3022
3329
  }
3023
3330
  }
3024
3331
 
@@ -3038,6 +3345,46 @@ propskit-origin {
3038
3345
  }
3039
3346
  }
3040
3347
 
3348
+ :is(
3349
+ propskit-switch,
3350
+ propskit-color,
3351
+ propskit-fill,
3352
+ propskit-gradient,
3353
+ propskit-palette,
3354
+ propskit-image,
3355
+ propskit-editable-select,
3356
+ propskit-select,
3357
+ propskit-easing,
3358
+ propskit-text,
3359
+ propskit-number,
3360
+ propskit-origin,
3361
+ propskit-position,
3362
+ propskit-joystick,
3363
+ propskit-spring,
3364
+ propskit-color-point,
3365
+ propskit-point-radius,
3366
+ propskit-point-radius-angle,
3367
+ propskit-point-point,
3368
+ propskit-group,
3369
+ propskit-slider,
3370
+ propskit-wheel,
3371
+ propskit-oscillator
3372
+ ) fig-button[variant="secondary"] {
3373
+ background-color: var(
3374
+ --propskit-bg-subfield,
3375
+ rgba(255, 255, 255, 0.05)
3376
+ );
3377
+ box-shadow: none;
3378
+
3379
+ &:hover:not([disabled]):not([disabled="false"]),
3380
+ &[disabled]:not([disabled="false"]) {
3381
+ background-color: var(
3382
+ --propskit-bg-subfield,
3383
+ rgba(255, 255, 255, 0.05)
3384
+ );
3385
+ }
3386
+ }
3387
+
3041
3388
  :is(
3042
3389
  propskit-number,
3043
3390
  propskit-position,
@@ -3047,7 +3394,7 @@ propskit-origin {
3047
3394
  background-color: var(--figma-color-bg);
3048
3395
  }
3049
3396
 
3050
- propskit-text
3397
+ :is(propskit-text, propskit-editable-select)
3051
3398
  fig-input-text:is(
3052
3399
  :focus-within,
3053
3400
  :active,
@@ -3066,6 +3413,7 @@ propskit-text
3066
3413
  :is(
3067
3414
  propskit-palette,
3068
3415
  propskit-select,
3416
+ propskit-editable-select,
3069
3417
  propskit-text,
3070
3418
  propskit-number,
3071
3419
  propskit-slider,
@@ -3074,6 +3422,7 @@ propskit-text
3074
3422
  :is(
3075
3423
  .propskit-palette-surface,
3076
3424
  .propskit-select-surface,
3425
+ .propskit-editable-select-surface,
3077
3426
  .propskit-text-surface,
3078
3427
  .propskit-number-surface,
3079
3428
  .propskit-slider-surface,