@rogieking/figui3 8.10.0 → 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(
@@ -2540,7 +2680,7 @@ propskit-position {
2540
2680
  min-width: 0;
2541
2681
  height: var(--propskit-position-height);
2542
2682
  min-height: var(--propskit-position-height);
2543
- padding-inline-start: var(--spacer-2-5);
2683
+ padding-inline: var(--spacer-2-5) var(--spacer-1);
2544
2684
  border-radius: var(--radius-medium-large);
2545
2685
  background: var(--_propskit-background);
2546
2686
  color: var(--_propskit-color);
@@ -2605,9 +2745,6 @@ propskit-position {
2605
2745
  }
2606
2746
  }
2607
2747
 
2608
- fig-input-number[data-propskit-position-axis="y"] {
2609
- margin-left: calc(-1 * var(--spacer-2));
2610
- }
2611
2748
  }
2612
2749
 
2613
2750
  propskit-joystick {
@@ -2893,7 +3030,53 @@ propskit-spring {
2893
3030
  );
2894
3031
  }
2895
3032
 
2896
- :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) {
2897
3080
  display: block;
2898
3081
  box-sizing: border-box;
2899
3082
  width: 100%;
@@ -2903,7 +3086,8 @@ propskit-spring {
2903
3086
  & > :is(
2904
3087
  .propskit-origin-surface,
2905
3088
  .propskit-easing-surface,
2906
- .propskit-spring-surface
3089
+ .propskit-spring-surface,
3090
+ .propskit-image-surface
2907
3091
  ) {
2908
3092
  position: relative;
2909
3093
  display: flex;
@@ -2954,7 +3138,8 @@ propskit-spring {
2954
3138
  &[variant="minimal"] > :is(
2955
3139
  .propskit-origin-surface,
2956
3140
  .propskit-easing-surface,
2957
- .propskit-spring-surface
3141
+ .propskit-spring-surface,
3142
+ .propskit-image-surface
2958
3143
  ) {
2959
3144
  background: transparent;
2960
3145
  }
@@ -2963,7 +3148,8 @@ propskit-spring {
2963
3148
  & > :is(
2964
3149
  .propskit-origin-surface,
2965
3150
  .propskit-easing-surface,
2966
- .propskit-spring-surface
3151
+ .propskit-spring-surface,
3152
+ .propskit-image-surface
2967
3153
  ) {
2968
3154
  color: var(--figma-color-text-disabled);
2969
3155
  }
@@ -2975,6 +3161,117 @@ propskit-spring {
2975
3161
  }
2976
3162
  }
2977
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
+
2978
3275
  propskit-origin {
2979
3276
  fig-origin-grid {
2980
3277
  --figma-color-border: var(
@@ -3022,6 +3319,13 @@ propskit-origin {
3022
3319
  var(--figma-color-bordertranslucent)
3023
3320
  );
3024
3321
  }
3322
+
3323
+ fig-handle::after {
3324
+ --fig-handle-inner-bg: light-dark(
3325
+ #ffffff,
3326
+ var(--figma-color-bg-secondary)
3327
+ );
3328
+ }
3025
3329
  }
3026
3330
  }
3027
3331
 
@@ -3041,6 +3345,46 @@ propskit-origin {
3041
3345
  }
3042
3346
  }
3043
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
+
3044
3388
  :is(
3045
3389
  propskit-number,
3046
3390
  propskit-position,
@@ -3050,7 +3394,7 @@ propskit-origin {
3050
3394
  background-color: var(--figma-color-bg);
3051
3395
  }
3052
3396
 
3053
- propskit-text
3397
+ :is(propskit-text, propskit-editable-select)
3054
3398
  fig-input-text:is(
3055
3399
  :focus-within,
3056
3400
  :active,
@@ -3069,6 +3413,7 @@ propskit-text
3069
3413
  :is(
3070
3414
  propskit-palette,
3071
3415
  propskit-select,
3416
+ propskit-editable-select,
3072
3417
  propskit-text,
3073
3418
  propskit-number,
3074
3419
  propskit-slider,
@@ -3077,6 +3422,7 @@ propskit-text
3077
3422
  :is(
3078
3423
  .propskit-palette-surface,
3079
3424
  .propskit-select-surface,
3425
+ .propskit-editable-select-surface,
3080
3426
  .propskit-text-surface,
3081
3427
  .propskit-number-surface,
3082
3428
  .propskit-slider-surface,