@dragunio/fe-libs 0.1.5 → 0.1.7

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/styles.css CHANGED
@@ -214,6 +214,36 @@
214
214
  outline-offset: 2px;
215
215
  }
216
216
 
217
+ /* packages/button-bar/src/styles.css */
218
+ .fe-button-bar {
219
+ display: flex;
220
+ align-items: center;
221
+ flex-wrap: wrap;
222
+ gap: 8px;
223
+ }
224
+ .fe-button-bar__more {
225
+ position: relative;
226
+ }
227
+ .fe-button-bar__menu {
228
+ position: absolute;
229
+ z-index: 10;
230
+ top: calc(100% + 8px);
231
+ right: 0;
232
+ width: 256px;
233
+ min-width: 256px;
234
+ padding: 4px 0;
235
+ border: 1px solid #d4d8e0;
236
+ border-radius: 12px;
237
+ background: #fff;
238
+ box-shadow: 0 10px 24px rgb(16 24 40 / 15%);
239
+ }
240
+ .fe-button-bar__menu .fe-button {
241
+ justify-content: flex-start;
242
+ width: 100%;
243
+ border-radius: 0;
244
+ text-align: left;
245
+ }
246
+
217
247
  /* packages/table/src/styles.css */
218
248
  .fe-table {
219
249
  width: 100%;
@@ -327,6 +357,10 @@ table[data-fe-table] tbody tr:hover {
327
357
  font: inherit;
328
358
  line-height: 1.25;
329
359
  }
360
+ .fe-toggle--label-top {
361
+ flex-direction: column;
362
+ align-items: flex-start;
363
+ }
330
364
  .fe-toggle__input {
331
365
  position: absolute;
332
366
  width: 1px;
@@ -347,7 +381,7 @@ table[data-fe-table] tbody tr:hover {
347
381
  border-radius: 999px;
348
382
  background: var(--fe-toggle-off);
349
383
  box-shadow: inset 0 0 0 1px rgb(16 24 40 / 8%);
350
- transition: background-color .18s ease;
384
+ transition: background-color 0.18s ease;
351
385
  }
352
386
  .fe-toggle__control::after {
353
387
  width: 18px;
@@ -356,7 +390,7 @@ table[data-fe-table] tbody tr:hover {
356
390
  background: #fff;
357
391
  box-shadow: 0 1px 2px rgb(16 24 40 / 22%);
358
392
  content: "";
359
- transition: transform .18s ease;
393
+ transition: transform 0.18s ease;
360
394
  }
361
395
  .fe-toggle__input:checked + .fe-toggle__control {
362
396
  background: var(--fe-toggle-color);
@@ -369,7 +403,7 @@ table[data-fe-table] tbody tr:hover {
369
403
  outline-offset: 2px;
370
404
  }
371
405
  .fe-toggle__input:disabled + .fe-toggle__control {
372
- opacity: .52;
406
+ opacity: 0.52;
373
407
  }
374
408
  .fe-toggle:has(.fe-toggle__input:disabled) {
375
409
  cursor: not-allowed;
@@ -826,33 +860,91 @@ table[data-fe-table] tbody tr:hover {
826
860
  font-size: 13px;
827
861
  font-weight: 600;
828
862
  }
829
- .fe-number-input input {
830
- width: 100%;
863
+ .fe-number-input__control {
864
+ position: relative;
865
+ display: flex;
866
+ align-items: center;
831
867
  min-height: 40px;
832
- padding: 0 13px;
833
- padding-right: 13px;
834
868
  border: 1px solid #d4d8e0;
835
869
  border-radius: 12px;
836
- outline: 0;
837
870
  background: #fff;
838
- color: #20242c;
839
- font: inherit;
840
871
  transition:
841
872
  border-color 0.15s,
842
873
  box-shadow 0.15s,
843
874
  background 0.15s;
844
875
  }
845
- .fe-number-input input:focus {
876
+ .fe-number-input__control:hover {
877
+ border-color: #aab0bb;
878
+ background: #fcfdff;
879
+ }
880
+ .fe-number-input input {
881
+ display: block;
882
+ box-sizing: border-box;
883
+ width: 100%;
884
+ min-width: 0;
885
+ min-height: 38px;
886
+ padding: 0 13px;
887
+ border: 0;
888
+ border-radius: 11px;
889
+ outline: 0;
890
+ background: transparent;
891
+ box-shadow: none;
892
+ color: #20242c;
893
+ font: inherit;
894
+ }
895
+ .fe-number-input__input-wrap {
896
+ position: relative;
897
+ display: flex;
898
+ min-width: 0;
899
+ flex: 1 1 auto;
900
+ align-self: stretch;
901
+ }
902
+ .fe-number-input__prefix,
903
+ .fe-number-input__suffix {
904
+ z-index: 1;
905
+ display: inline-flex;
906
+ flex: 0 0 auto;
907
+ align-items: center;
908
+ color: #535b6a;
909
+ font-size: 13px;
910
+ white-space: nowrap;
911
+ }
912
+ .fe-number-input__prefix {
913
+ margin-right: -5px;
914
+ padding-left: 13px;
915
+ }
916
+ .fe-number-input__suffix {
917
+ margin-left: -5px;
918
+ padding-right: 13px;
919
+ }
920
+ .fe-number-input__stepper {
921
+ display: flex;
922
+ width: 28px;
923
+ min-width: 28px;
924
+ flex: 0 0 28px;
925
+ flex-direction: column;
926
+ align-self: stretch;
927
+ justify-content: center;
928
+ margin-right: 4px;
929
+ }
930
+ .fe-number-input__stepper .fe-button {
931
+ width: 28px;
932
+ min-width: 28px;
933
+ min-height: 16px;
934
+ height: 16px;
935
+ padding: 2px 8px;
936
+ border-radius: 6px;
937
+ }
938
+ .fe-number-input__stepper .fe-button:disabled {
939
+ opacity: 0.35;
940
+ }
941
+ .fe-number-input__control:focus-within {
846
942
  border-color: #2878f0;
847
943
  box-shadow: 0 0 0 3px rgba(40, 120, 240, 0.16);
848
944
  }
849
- .fe-number-input--error input {
945
+ .fe-number-input--error .fe-number-input__control {
850
946
  border-color: #d83d55;
851
947
  }
852
- .fe-number-input__control {
853
- position: relative;
854
- display: block;
855
- }
856
948
  .fe-number-input__placeholder {
857
949
  position: absolute;
858
950
  top: 50%;
@@ -871,9 +963,12 @@ table[data-fe-table] tbody tr:hover {
871
963
  overflow: hidden;
872
964
  text-overflow: ellipsis;
873
965
  }
874
- .fe-number-input__control:has(.fe-number-input__placeholder) input::placeholder {
966
+ .fe-number-input__input-wrap:has(.fe-number-input__placeholder) input::placeholder {
875
967
  color: transparent;
876
968
  }
969
+ .fe-number-input input:focus {
970
+ outline: 0;
971
+ }
877
972
  .fe-number-input__helper {
878
973
  color: #687183;
879
974
  font-size: 12px;
@@ -1084,6 +1179,9 @@ table[data-fe-table] tbody tr:hover {
1084
1179
  background: transparent;
1085
1180
  box-shadow: none;
1086
1181
  }
1182
+ .fe-text-area--autosize textarea {
1183
+ resize: none;
1184
+ }
1087
1185
  .fe-text-area__placeholder {
1088
1186
  position: absolute;
1089
1187
  top: 10px;
@@ -1129,30 +1227,22 @@ table[data-fe-table] tbody tr:hover {
1129
1227
  .fe-currency-input {
1130
1228
  position: relative;
1131
1229
  }
1132
- .fe-currency-input .fe-number-input__control input {
1133
- padding-right: 78px;
1134
- }
1135
- .fe-currency-input:has(.fe-currency-input__currency) .fe-number-input__control input {
1136
- padding-right: 110px;
1137
- }
1138
1230
  .fe-currency-input__suffix,
1139
1231
  .fe-currency-input__currency {
1140
- position: absolute;
1141
- right: 11px;
1142
1232
  color: #535b6a;
1143
1233
  font: inherit;
1144
1234
  font-size: 13px;
1145
1235
  font-weight: 700;
1146
1236
  }
1147
1237
  .fe-currency-input__suffix {
1148
- top: 50%;
1149
- transform: translateY(-50%);
1238
+ display: inline-flex;
1239
+ align-items: center;
1240
+ padding: 0 13px 0 8px;
1150
1241
  }
1151
1242
  .fe-currency-input__currency {
1152
- z-index: 2;
1153
- top: 3px;
1154
- right: 4px;
1243
+ align-self: center;
1155
1244
  width: 96px;
1245
+ margin-right: 4px;
1156
1246
  }
1157
1247
  .fe-currency-input__currency .fe-selection__trigger {
1158
1248
  box-sizing: border-box;
@@ -1324,6 +1414,154 @@ table[data-fe-table] tbody tr:hover {
1324
1414
  font: inherit;
1325
1415
  }
1326
1416
 
1417
+ /* packages/form-controls/src/controls/Checkbox/style.css */
1418
+ .fe-checkbox,
1419
+ .fe-radio-button {
1420
+ display: inline-flex;
1421
+ align-items: center;
1422
+ gap: 8px;
1423
+ color: #20242c;
1424
+ cursor: pointer;
1425
+ font: inherit;
1426
+ line-height: 1.25;
1427
+ }
1428
+ .fe-checkbox--label-top,
1429
+ .fe-radio-button--label-top {
1430
+ align-items: flex-start;
1431
+ flex-direction: column;
1432
+ }
1433
+ .fe-checkbox__content,
1434
+ .fe-radio-button__content {
1435
+ display: inline-flex;
1436
+ align-items: center;
1437
+ gap: 8px;
1438
+ }
1439
+ .fe-checkbox__input,
1440
+ .fe-radio-button__input {
1441
+ position: absolute;
1442
+ width: 1px;
1443
+ height: 1px;
1444
+ margin: -1px;
1445
+ overflow: hidden;
1446
+ clip: rect(0 0 0 0);
1447
+ white-space: nowrap;
1448
+ border: 0;
1449
+ }
1450
+ .fe-checkbox__control,
1451
+ .fe-radio-button__control {
1452
+ display: inline-grid;
1453
+ width: 18px;
1454
+ height: 18px;
1455
+ flex: 0 0 auto;
1456
+ place-items: center;
1457
+ border: 1px solid #98a2b3;
1458
+ background: #fff;
1459
+ transition:
1460
+ border-color 0.16s ease,
1461
+ background-color 0.16s ease,
1462
+ box-shadow 0.16s ease;
1463
+ }
1464
+ .fe-checkbox__control {
1465
+ border-radius: 4px;
1466
+ }
1467
+ .fe-checkbox__control::after {
1468
+ width: 8px;
1469
+ height: 4px;
1470
+ border-bottom: 2px solid #fff;
1471
+ border-left: 2px solid #fff;
1472
+ content: "";
1473
+ opacity: 0;
1474
+ transform: rotate(-45deg) translate(1px, -1px);
1475
+ transition: opacity 0.16s ease;
1476
+ }
1477
+ .fe-checkbox__input:checked + .fe-checkbox__control {
1478
+ border-color: #2878f0;
1479
+ background: #2878f0;
1480
+ }
1481
+ .fe-checkbox__input:checked + .fe-checkbox__control::after {
1482
+ opacity: 1;
1483
+ }
1484
+ .fe-checkbox__input:indeterminate + .fe-checkbox__control::after {
1485
+ width: 8px;
1486
+ height: 2px;
1487
+ border: 0;
1488
+ background: #fff;
1489
+ opacity: 1;
1490
+ transform: none;
1491
+ }
1492
+ .fe-checkbox__input:focus-visible + .fe-checkbox__control,
1493
+ .fe-radio-button__input:focus-visible + .fe-radio-button__control {
1494
+ outline: 3px solid rgb(40 120 240 / 22%);
1495
+ outline-offset: 2px;
1496
+ }
1497
+ .fe-checkbox--disabled,
1498
+ .fe-radio-button--disabled {
1499
+ cursor: not-allowed;
1500
+ opacity: 0.52;
1501
+ }
1502
+ .fe-checkbox__label,
1503
+ .fe-radio-button__label {
1504
+ user-select: none;
1505
+ }
1506
+
1507
+ /* packages/form-controls/src/controls/RadioButton/style.css */
1508
+ .fe-radio-button__control {
1509
+ border-radius: 50%;
1510
+ }
1511
+ .fe-radio-button__control::after {
1512
+ width: 8px;
1513
+ height: 8px;
1514
+ border-radius: 50%;
1515
+ background: #2878f0;
1516
+ content: "";
1517
+ opacity: 0;
1518
+ transform: scale(0.6);
1519
+ transition: opacity 0.16s ease, transform 0.16s ease;
1520
+ }
1521
+ .fe-radio-button__input:checked + .fe-radio-button__control {
1522
+ border-color: #2878f0;
1523
+ }
1524
+ .fe-radio-button__input:checked + .fe-radio-button__control::after {
1525
+ opacity: 1;
1526
+ transform: scale(1);
1527
+ }
1528
+
1529
+ /* packages/form-controls/src/controls/RadioGroup/style.css */
1530
+ .fe-radio-group {
1531
+ display: inline-flex;
1532
+ gap: 8px;
1533
+ color: #20242c;
1534
+ font: inherit;
1535
+ }
1536
+ .fe-radio-group--label-top {
1537
+ flex-direction: column;
1538
+ }
1539
+ .fe-radio-group--label-right {
1540
+ align-items: center;
1541
+ }
1542
+ .fe-radio-group__label {
1543
+ display: inline-flex;
1544
+ align-items: center;
1545
+ gap: 4px;
1546
+ font-size: 13px;
1547
+ font-weight: 600;
1548
+ line-height: 1.25;
1549
+ }
1550
+ .fe-radio-group__required {
1551
+ color: #d83d55;
1552
+ }
1553
+ .fe-radio-group__options {
1554
+ display: inline-flex;
1555
+ gap: 12px;
1556
+ }
1557
+ .fe-radio-group--vertical .fe-radio-group__options {
1558
+ flex-direction: column;
1559
+ }
1560
+ .fe-radio-group--horizontal .fe-radio-group__options {
1561
+ align-items: center;
1562
+ flex-wrap: wrap;
1563
+ }
1564
+
1327
1565
  /* packages/form-controls/src/styles.css */
1328
1566
 
1329
1567
  /* packages/tooltip/src/styles.css */
@@ -2048,4 +2286,97 @@ table[data-fe-table] tbody tr:hover {
2048
2286
  }
2049
2287
  }
2050
2288
 
2289
+ /* packages/avatar/src/styles.css */
2290
+ .fe-avatar {
2291
+ --fe-avatar-size: 40px;
2292
+ display: inline-flex;
2293
+ width: var(--fe-avatar-size);
2294
+ height: var(--fe-avatar-size);
2295
+ box-sizing: border-box;
2296
+ flex: 0 0 auto;
2297
+ align-items: center;
2298
+ justify-content: center;
2299
+ overflow: hidden;
2300
+ vertical-align: middle;
2301
+ background: #eef0f3;
2302
+ color: #344054;
2303
+ font: inherit;
2304
+ font-size: var(--fe-avatar-font-size, 15px);
2305
+ font-weight: 700;
2306
+ line-height: 1;
2307
+ letter-spacing: 0.02em;
2308
+ }
2309
+ .fe-avatar--circle {
2310
+ border-radius: 50%;
2311
+ }
2312
+ .fe-avatar--rounded {
2313
+ border-radius: 26%;
2314
+ }
2315
+ .fe-avatar__image,
2316
+ .fe-avatar__fallback-icon {
2317
+ display: block;
2318
+ width: 100%;
2319
+ height: 100%;
2320
+ }
2321
+ .fe-avatar__image {
2322
+ object-fit: cover;
2323
+ }
2324
+ .fe-avatar__initials {
2325
+ display: grid;
2326
+ width: 100%;
2327
+ height: 100%;
2328
+ place-items: center;
2329
+ -webkit-user-select: none;
2330
+ user-select: none;
2331
+ }
2332
+ .fe-avatar-group {
2333
+ --fe-avatar-group-overlap: 10px;
2334
+ --fe-avatar-group-border: #fff;
2335
+ display: inline-flex;
2336
+ align-items: center;
2337
+ gap: 10px;
2338
+ color: #344054;
2339
+ font: inherit;
2340
+ }
2341
+ .fe-avatar-group__items {
2342
+ display: flex;
2343
+ align-items: center;
2344
+ isolation: isolate;
2345
+ }
2346
+ .fe-avatar-group__item {
2347
+ position: relative;
2348
+ display: inline-flex;
2349
+ }
2350
+ .fe-avatar-group__item + .fe-avatar-group__item,
2351
+ .fe-avatar-group__more {
2352
+ margin-inline-start: calc(var(--fe-avatar-group-overlap) * -1);
2353
+ }
2354
+ .fe-avatar-group__item > .fe-avatar {
2355
+ box-shadow: 0 0 0 2px var(--fe-avatar-group-border);
2356
+ }
2357
+ .fe-avatar-group__more {
2358
+ display: inline-grid;
2359
+ width: var(--fe-avatar-size);
2360
+ height: var(--fe-avatar-size);
2361
+ box-sizing: border-box;
2362
+ flex: 0 0 auto;
2363
+ place-items: center;
2364
+ border: 2px solid var(--fe-avatar-group-border);
2365
+ border-radius: 50%;
2366
+ background: #eef0f3;
2367
+ color: #475467;
2368
+ font-size: var(--fe-avatar-font-size, 15px);
2369
+ font-weight: 700;
2370
+ line-height: 1;
2371
+ }
2372
+ .fe-avatar-group__content {
2373
+ min-width: 0;
2374
+ overflow: hidden;
2375
+ font-size: 14px;
2376
+ font-weight: 500;
2377
+ line-height: 1.4;
2378
+ text-overflow: ellipsis;
2379
+ white-space: nowrap;
2380
+ }
2381
+
2051
2382
  /* src/styles.css */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dragunio/fe-libs",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "Reusable React components, icons, and table primitives.",
5
5
  "license": "MIT",
6
6
  "repository": {