@skillcdn/console 0.4.4 → 0.4.5
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/README.md +3 -3
- package/dist/api.d.ts +3 -3
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +3 -3
- package/dist/api.js.map +1 -1
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +162 -15
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/format.d.ts +16 -3
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +68 -19
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +26 -5
- package/dist/cli/help.js.map +1 -1
- package/dist/client.d.ts +28 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +12 -2
- package/dist/client.js.map +1 -1
- package/dist/compat.js +1 -1
- package/dist/components/board.d.ts.map +1 -1
- package/dist/components/board.js +46 -15
- package/dist/components/board.js.map +1 -1
- package/dist/components/decision-form.d.ts +0 -3
- package/dist/components/decision-form.d.ts.map +1 -1
- package/dist/components/decision-form.js +3 -15
- package/dist/components/decision-form.js.map +1 -1
- package/dist/components/event-feed.d.ts.map +1 -1
- package/dist/components/event-feed.js +30 -10
- package/dist/components/event-feed.js.map +1 -1
- package/dist/components/my-decisions.d.ts +20 -3
- package/dist/components/my-decisions.d.ts.map +1 -1
- package/dist/components/my-decisions.js +14 -1
- package/dist/components/my-decisions.js.map +1 -1
- package/dist/components/people.d.ts +43 -1
- package/dist/components/people.d.ts.map +1 -1
- package/dist/components/people.js +117 -9
- package/dist/components/people.js.map +1 -1
- package/dist/components/picker.d.ts +8 -0
- package/dist/components/picker.d.ts.map +1 -1
- package/dist/components/picker.js +2 -2
- package/dist/components/picker.js.map +1 -1
- package/dist/components/plugin-frame.d.ts +0 -1
- package/dist/components/plugin-frame.d.ts.map +1 -1
- package/dist/components/plugin-frame.js +22 -1
- package/dist/components/plugin-frame.js.map +1 -1
- package/dist/components/plugin-settings.d.ts +5 -1
- package/dist/components/plugin-settings.d.ts.map +1 -1
- package/dist/components/plugin-settings.js +143 -30
- package/dist/components/plugin-settings.js.map +1 -1
- package/dist/components/projects.d.ts.map +1 -1
- package/dist/components/projects.js +3 -1
- package/dist/components/projects.js.map +1 -1
- package/dist/components/searches.d.ts +11 -0
- package/dist/components/searches.d.ts.map +1 -0
- package/dist/components/searches.js +30 -0
- package/dist/components/searches.js.map +1 -0
- package/dist/components/task-form.d.ts.map +1 -1
- package/dist/components/task-form.js +6 -5
- package/dist/components/task-form.js.map +1 -1
- package/dist/components/ui.d.ts +16 -0
- package/dist/components/ui.d.ts.map +1 -1
- package/dist/components/ui.js +10 -0
- package/dist/components/ui.js.map +1 -1
- package/dist/console.css +362 -67
- package/dist/console.d.ts +2 -1
- package/dist/console.d.ts.map +1 -1
- package/dist/console.js +90 -14
- package/dist/console.js.map +1 -1
- package/dist/data.d.ts +14 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +36 -1
- package/dist/data.js.map +1 -1
- package/dist/i18n/en.d.ts +89 -0
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +87 -2
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/ko.d.ts.map +1 -1
- package/dist/i18n/ko.js +87 -3
- package/dist/i18n/ko.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/limits.d.ts +6 -0
- package/dist/limits.d.ts.map +1 -1
- package/dist/limits.js +6 -0
- package/dist/limits.js.map +1 -1
- package/dist/plugin/args.d.ts +6 -1
- package/dist/plugin/args.d.ts.map +1 -1
- package/dist/plugin/args.js +16 -11
- package/dist/plugin/args.js.map +1 -1
- package/dist/plugin/bridge.d.ts +20 -1
- package/dist/plugin/bridge.d.ts.map +1 -1
- package/dist/plugin/bridge.js +28 -0
- package/dist/plugin/bridge.js.map +1 -1
- package/dist/plugin/capabilities.d.ts +1 -1
- package/dist/plugin/capabilities.d.ts.map +1 -1
- package/dist/plugin/capabilities.js +10 -0
- package/dist/plugin/capabilities.js.map +1 -1
- package/dist/plugin/context.d.ts +158 -13
- package/dist/plugin/context.d.ts.map +1 -1
- package/dist/plugin/define.d.ts +13 -1
- package/dist/plugin/define.d.ts.map +1 -1
- package/dist/plugin/define.js +17 -1
- package/dist/plugin/define.js.map +1 -1
- package/dist/plugin/limits.d.ts +4 -0
- package/dist/plugin/limits.d.ts.map +1 -1
- package/dist/plugin/limits.js +4 -0
- package/dist/plugin/limits.js.map +1 -1
- package/dist/plugin/manifest.d.ts +15 -0
- package/dist/plugin/manifest.d.ts.map +1 -1
- package/dist/plugin/manifest.js +61 -4
- package/dist/plugin/manifest.js.map +1 -1
- package/dist/plugin/rest-schemas.d.ts +44 -0
- package/dist/plugin/rest-schemas.d.ts.map +1 -1
- package/dist/plugin/rest-schemas.js +55 -3
- package/dist/plugin/rest-schemas.js.map +1 -1
- package/dist/plugin/testing.d.ts +15 -1
- package/dist/plugin/testing.d.ts.map +1 -1
- package/dist/plugin/testing.js +40 -4
- package/dist/plugin/testing.js.map +1 -1
- package/dist/plugin/web.d.ts +6 -0
- package/dist/plugin/web.d.ts.map +1 -1
- package/dist/plugin/web.js +10 -1
- package/dist/plugin/web.js.map +1 -1
- package/dist/plugin.d.ts +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +1 -1
- package/dist/plugin.js.map +1 -1
- package/dist/router.d.ts +19 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +18 -0
- package/dist/router.js.map +1 -1
- package/dist/routes.d.ts +11 -2
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +14 -1
- package/dist/routes.js.map +1 -1
- package/dist/schemas.d.ts +367 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +62 -2
- package/dist/schemas.js.map +1 -1
- package/dist/vocabulary.d.ts +1 -1
- package/dist/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary.js +6 -0
- package/dist/vocabulary.js.map +1 -1
- package/docs/specs/cli.md +7 -4
- package/docs/specs/plugins.md +47 -39
- package/docs/specs/rest.md +22 -5
- package/package.json +1 -1
- package/skills/building-a-plugin/SKILL.md +8 -6
- package/skills/working-the-board/SKILL.md +1 -1
- package/src/api.ts +17 -0
- package/src/cli/cli.ts +200 -12
- package/src/cli/format.ts +82 -19
- package/src/cli/help.ts +30 -5
- package/src/client.ts +70 -0
- package/src/compat.ts +1 -1
- package/src/components/board.tsx +83 -42
- package/src/components/decision-form.tsx +13 -32
- package/src/components/event-feed.tsx +36 -9
- package/src/components/my-decisions.tsx +50 -5
- package/src/components/people.tsx +394 -37
- package/src/components/picker.tsx +11 -2
- package/src/components/plugin-frame.tsx +23 -0
- package/src/components/plugin-settings.tsx +346 -137
- package/src/components/projects.tsx +14 -14
- package/src/components/searches.ts +47 -0
- package/src/components/task-form.tsx +23 -28
- package/src/components/ui.tsx +36 -0
- package/src/console.tsx +229 -40
- package/src/data.ts +53 -1
- package/src/i18n/en.ts +98 -2
- package/src/i18n/ko.ts +95 -3
- package/src/index.ts +11 -0
- package/src/limits.ts +6 -0
- package/src/plugin/args.ts +16 -11
- package/src/plugin/bridge.ts +45 -0
- package/src/plugin/capabilities.ts +11 -0
- package/src/plugin/context.ts +170 -10
- package/src/plugin/define.ts +34 -0
- package/src/plugin/limits.ts +4 -0
- package/src/plugin/manifest.ts +74 -3
- package/src/plugin/rest-schemas.ts +62 -5
- package/src/plugin/testing.ts +61 -5
- package/src/plugin/web.ts +17 -0
- package/src/plugin.ts +1 -0
- package/src/router.ts +25 -0
- package/src/routes.ts +17 -2
- package/src/schemas.ts +81 -2
- package/src/styles/console.css +362 -67
- package/src/vocabulary.ts +6 -0
package/src/styles/console.css
CHANGED
|
@@ -890,6 +890,7 @@ html[data-console] body {
|
|
|
890
890
|
.sc-tile-pane,
|
|
891
891
|
.sc-home-bar,
|
|
892
892
|
.sc-person-card,
|
|
893
|
+
.sc-team-card,
|
|
893
894
|
.sc-decision,
|
|
894
895
|
.sc-run,
|
|
895
896
|
.sc-comment,
|
|
@@ -1396,24 +1397,72 @@ select.sc-input {
|
|
|
1396
1397
|
justify-self: start;
|
|
1397
1398
|
}
|
|
1398
1399
|
|
|
1399
|
-
/*
|
|
1400
|
+
/* Chips: things named among others in a row, a person, a team, an item of a list, a holder of
|
|
1401
|
+
a role, each as low as a line of text and round at its ends, so that a row of them stays light
|
|
1402
|
+
beside the fields of a form; the way to take one out in its end where it can be, a person's
|
|
1403
|
+
face in its start. `Chip` writes one, and every row of things a person adds to and takes from
|
|
1404
|
+
is made of them; the way to add one more stands at the end of the row as one more chip, a
|
|
1405
|
+
picker with `sc-picker-add`. */
|
|
1400
1406
|
.sc-chips {
|
|
1401
1407
|
display: flex;
|
|
1402
1408
|
flex-wrap: wrap;
|
|
1403
1409
|
align-items: center;
|
|
1404
1410
|
gap: var(--sc-space-2);
|
|
1411
|
+
min-width: 0;
|
|
1405
1412
|
}
|
|
1406
1413
|
|
|
1407
1414
|
.sc-chip {
|
|
1408
1415
|
display: inline-flex;
|
|
1409
1416
|
align-items: center;
|
|
1410
1417
|
gap: var(--sc-space-1);
|
|
1411
|
-
|
|
1412
|
-
|
|
1418
|
+
max-width: 100%;
|
|
1419
|
+
min-height: 1.75rem;
|
|
1420
|
+
padding: 0 var(--sc-space-3);
|
|
1413
1421
|
border: var(--sc-border);
|
|
1414
|
-
border-radius: var(--sc-radius-
|
|
1415
|
-
background: var(--sc-color-
|
|
1422
|
+
border-radius: var(--sc-radius-full);
|
|
1423
|
+
background: var(--sc-color-sheet);
|
|
1424
|
+
color: var(--sc-color-text);
|
|
1416
1425
|
font-size: var(--sc-text-sm);
|
|
1426
|
+
line-height: var(--sc-leading-snug);
|
|
1427
|
+
white-space: nowrap;
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1430
|
+
/* What a chip names, cut short where the row has no room for it whole. */
|
|
1431
|
+
.sc-chip-label {
|
|
1432
|
+
min-width: 0;
|
|
1433
|
+
overflow: hidden;
|
|
1434
|
+
text-overflow: ellipsis;
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1437
|
+
.sc-chip-label:has(> .sc-person) {
|
|
1438
|
+
display: flex;
|
|
1439
|
+
align-items: center;
|
|
1440
|
+
gap: var(--sc-space-1);
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
.sc-chip-label > .sc-person {
|
|
1444
|
+
min-width: 0;
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
.sc-chip-label .sc-person-login {
|
|
1448
|
+
min-width: 0;
|
|
1449
|
+
overflow: hidden;
|
|
1450
|
+
font-weight: var(--sc-weight-normal);
|
|
1451
|
+
text-overflow: ellipsis;
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
/* A person's face in the chip's rounded start, and the way out in its end, a hair inside. */
|
|
1455
|
+
.sc-chip:has(.sc-avatar) {
|
|
1456
|
+
padding-inline-start: 0.1875rem;
|
|
1457
|
+
}
|
|
1458
|
+
|
|
1459
|
+
.sc-chip:has(> .sc-chip-remove) {
|
|
1460
|
+
padding-inline-end: 0.1875rem;
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
.sc-chip .sc-avatar-sm {
|
|
1464
|
+
width: 1.375rem;
|
|
1465
|
+
height: 1.375rem;
|
|
1417
1466
|
}
|
|
1418
1467
|
|
|
1419
1468
|
.sc-chip-remove,
|
|
@@ -1421,20 +1470,25 @@ select.sc-input {
|
|
|
1421
1470
|
display: inline-grid;
|
|
1422
1471
|
flex: none;
|
|
1423
1472
|
place-items: center;
|
|
1424
|
-
width: 1.
|
|
1425
|
-
height: 1.
|
|
1473
|
+
width: 1.375rem;
|
|
1474
|
+
height: 1.375rem;
|
|
1475
|
+
padding: 0;
|
|
1426
1476
|
border: 0;
|
|
1427
|
-
border-radius: var(--sc-radius-
|
|
1477
|
+
border-radius: var(--sc-radius-full);
|
|
1428
1478
|
background: transparent;
|
|
1429
|
-
color: var(--sc-color-text-
|
|
1479
|
+
color: var(--sc-color-text-faint);
|
|
1430
1480
|
font-size: var(--sc-text-md);
|
|
1431
1481
|
line-height: 1;
|
|
1432
1482
|
cursor: pointer;
|
|
1483
|
+
transition:
|
|
1484
|
+
background var(--sc-transition),
|
|
1485
|
+
color var(--sc-transition),
|
|
1486
|
+
opacity var(--sc-transition);
|
|
1433
1487
|
}
|
|
1434
1488
|
|
|
1435
1489
|
.sc-chip-remove:hover:not(:disabled),
|
|
1436
1490
|
.sc-picker-clear:hover:not(:disabled) {
|
|
1437
|
-
background: var(--sc-color-bg-
|
|
1491
|
+
background: var(--sc-color-bg-inset);
|
|
1438
1492
|
color: var(--sc-color-text);
|
|
1439
1493
|
}
|
|
1440
1494
|
|
|
@@ -1443,9 +1497,10 @@ select.sc-input {
|
|
|
1443
1497
|
outline: var(--sc-focus-ring);
|
|
1444
1498
|
}
|
|
1445
1499
|
|
|
1446
|
-
.sc-
|
|
1447
|
-
|
|
1448
|
-
|
|
1500
|
+
.sc-chip-remove:disabled,
|
|
1501
|
+
.sc-picker-clear:disabled {
|
|
1502
|
+
opacity: 0.55;
|
|
1503
|
+
cursor: not-allowed;
|
|
1449
1504
|
}
|
|
1450
1505
|
|
|
1451
1506
|
/* A picker: the field that searches a listing, its page of results under it, and the choice in its place. */
|
|
@@ -1515,6 +1570,107 @@ select.sc-input {
|
|
|
1515
1570
|
padding: var(--sc-space-2);
|
|
1516
1571
|
}
|
|
1517
1572
|
|
|
1573
|
+
/* A picker in the board's filters, in the form that adds a member, or among chips without being
|
|
1574
|
+
the way to add to them: wide enough for a name, never the whole row. */
|
|
1575
|
+
.sc-chips .sc-picker:not(.sc-picker-add),
|
|
1576
|
+
.sc-filters .sc-picker,
|
|
1577
|
+
.sc-member-form .sc-picker {
|
|
1578
|
+
flex: 0 1 14rem;
|
|
1579
|
+
min-width: 11rem;
|
|
1580
|
+
}
|
|
1581
|
+
|
|
1582
|
+
/* A picker that reads as what it holds, until the pointer or the focus is on it: a fact changed
|
|
1583
|
+
in place, as low as a line of the facts, as a quiet field is. Its way out stands while the
|
|
1584
|
+
pointer or the focus is on it, where there is a pointer to hover. */
|
|
1585
|
+
.sc-picker-quiet > .sc-input,
|
|
1586
|
+
.sc-picker-quiet.sc-picker-chosen {
|
|
1587
|
+
min-height: 2rem;
|
|
1588
|
+
padding-block: 0;
|
|
1589
|
+
border-color: transparent;
|
|
1590
|
+
background-color: transparent;
|
|
1591
|
+
}
|
|
1592
|
+
|
|
1593
|
+
.sc-picker-quiet > .sc-input {
|
|
1594
|
+
padding-inline: var(--sc-space-2);
|
|
1595
|
+
}
|
|
1596
|
+
|
|
1597
|
+
.sc-picker-quiet.sc-picker-chosen {
|
|
1598
|
+
padding-inline: var(--sc-space-2) 0.1875rem;
|
|
1599
|
+
transition:
|
|
1600
|
+
border-color var(--sc-transition),
|
|
1601
|
+
background var(--sc-transition);
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1604
|
+
.sc-picker-quiet > .sc-input:hover:not(:disabled),
|
|
1605
|
+
.sc-picker-quiet > .sc-input:focus,
|
|
1606
|
+
.sc-picker-quiet.sc-picker-chosen:hover,
|
|
1607
|
+
.sc-picker-quiet.sc-picker-chosen:focus-within {
|
|
1608
|
+
border-color: var(--sc-color-border);
|
|
1609
|
+
background-color: var(--sc-color-sheet);
|
|
1610
|
+
}
|
|
1611
|
+
|
|
1612
|
+
.sc-picker-quiet > .sc-input:focus {
|
|
1613
|
+
border-color: var(--sc-color-accent);
|
|
1614
|
+
}
|
|
1615
|
+
|
|
1616
|
+
@media (hover: hover) {
|
|
1617
|
+
.sc-picker-quiet.sc-picker-chosen:not(:hover):not(:focus-within) .sc-picker-clear {
|
|
1618
|
+
opacity: 0;
|
|
1619
|
+
}
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1622
|
+
/* A picker that adds one more to a row of chips: a chip itself, its line dashed, as wide as its
|
|
1623
|
+
words until it is typed in, and its list as wide as a name needs. */
|
|
1624
|
+
.sc-picker-add {
|
|
1625
|
+
flex: none;
|
|
1626
|
+
}
|
|
1627
|
+
|
|
1628
|
+
.sc-picker.sc-picker-add > .sc-input {
|
|
1629
|
+
width: 8.5rem;
|
|
1630
|
+
min-height: 1.75rem;
|
|
1631
|
+
padding-block: 0;
|
|
1632
|
+
padding-inline: var(--sc-space-3);
|
|
1633
|
+
border-style: dashed;
|
|
1634
|
+
border-radius: var(--sc-radius-full);
|
|
1635
|
+
background: transparent;
|
|
1636
|
+
line-height: var(--sc-leading-snug);
|
|
1637
|
+
transition:
|
|
1638
|
+
width var(--sc-transition),
|
|
1639
|
+
border-color var(--sc-transition),
|
|
1640
|
+
background var(--sc-transition);
|
|
1641
|
+
}
|
|
1642
|
+
|
|
1643
|
+
.sc-picker.sc-picker-add > .sc-input::placeholder {
|
|
1644
|
+
color: var(--sc-color-text-muted);
|
|
1645
|
+
}
|
|
1646
|
+
|
|
1647
|
+
.sc-picker.sc-picker-add > .sc-input:hover:not(:disabled) {
|
|
1648
|
+
background: var(--sc-color-sheet);
|
|
1649
|
+
}
|
|
1650
|
+
|
|
1651
|
+
.sc-picker.sc-picker-add > .sc-input:focus {
|
|
1652
|
+
border-style: solid;
|
|
1653
|
+
background: var(--sc-color-sheet);
|
|
1654
|
+
}
|
|
1655
|
+
|
|
1656
|
+
/* Where the browser sizes a field by what it holds, the way to add is as wide as its words, and
|
|
1657
|
+
grows as a name is typed into it. */
|
|
1658
|
+
@supports (field-sizing: content) {
|
|
1659
|
+
.sc-picker.sc-picker-add > .sc-input {
|
|
1660
|
+
width: auto;
|
|
1661
|
+
min-width: 6rem;
|
|
1662
|
+
max-width: 100%;
|
|
1663
|
+
field-sizing: content;
|
|
1664
|
+
}
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1667
|
+
.sc-picker-add > .sc-picker-list {
|
|
1668
|
+
right: auto;
|
|
1669
|
+
width: max-content;
|
|
1670
|
+
min-width: 100%;
|
|
1671
|
+
max-width: min(22rem, calc(100vw - 2rem));
|
|
1672
|
+
}
|
|
1673
|
+
|
|
1518
1674
|
/* The workers of a task on a card or a row: pictures side by side, and how many more. */
|
|
1519
1675
|
.sc-workers {
|
|
1520
1676
|
display: inline-flex;
|
|
@@ -2594,36 +2750,68 @@ select.sc-input {
|
|
|
2594
2750
|
overflow-wrap: anywhere;
|
|
2595
2751
|
}
|
|
2596
2752
|
|
|
2753
|
+
/* A person's facts: a column of names and a column of values, every value starting on one line
|
|
2754
|
+
down the card, so that the cards read alike. A fact changed in place is a quiet field whose
|
|
2755
|
+
words stand where a value's words stand, its box drawn out into the gap while the pointer or
|
|
2756
|
+
the focus is on it. */
|
|
2597
2757
|
.sc-person-facts {
|
|
2598
2758
|
display: grid;
|
|
2599
|
-
|
|
2759
|
+
grid-template-columns: max-content minmax(0, 1fr);
|
|
2760
|
+
gap: var(--sc-space-1) var(--sc-space-4);
|
|
2600
2761
|
margin: 0;
|
|
2601
2762
|
padding-top: var(--sc-space-3);
|
|
2602
2763
|
border-top: var(--sc-hairline);
|
|
2603
2764
|
}
|
|
2604
2765
|
|
|
2605
2766
|
.sc-person-fact {
|
|
2767
|
+
display: grid;
|
|
2768
|
+
grid-column: 1 / -1;
|
|
2769
|
+
grid-template-columns: subgrid;
|
|
2770
|
+
align-items: start;
|
|
2771
|
+
}
|
|
2772
|
+
|
|
2773
|
+
/* A fact's name stands on the first line of its value, however many lines the value takes. */
|
|
2774
|
+
.sc-person-fact dt,
|
|
2775
|
+
.sc-person-fact dd {
|
|
2606
2776
|
display: flex;
|
|
2607
2777
|
align-items: center;
|
|
2608
|
-
justify-content: space-between;
|
|
2609
|
-
gap: var(--sc-space-3);
|
|
2610
2778
|
min-height: 2rem;
|
|
2611
2779
|
}
|
|
2612
2780
|
|
|
2613
2781
|
.sc-person-fact dt {
|
|
2614
|
-
flex: none;
|
|
2615
2782
|
color: var(--sc-color-text-muted);
|
|
2616
2783
|
font-size: var(--sc-text-sm);
|
|
2617
2784
|
}
|
|
2618
2785
|
|
|
2619
2786
|
.sc-person-fact dd {
|
|
2620
|
-
display: flex;
|
|
2621
|
-
justify-content: flex-end;
|
|
2622
2787
|
min-width: 0;
|
|
2623
2788
|
margin: 0;
|
|
2624
2789
|
font-size: var(--sc-text-sm);
|
|
2625
2790
|
}
|
|
2626
2791
|
|
|
2792
|
+
/* Whom a person manages: their faces side by side, and how many. */
|
|
2793
|
+
.sc-person-reports {
|
|
2794
|
+
display: inline-flex;
|
|
2795
|
+
align-items: center;
|
|
2796
|
+
gap: var(--sc-space-2);
|
|
2797
|
+
}
|
|
2798
|
+
|
|
2799
|
+
.sc-person-fact dd > .sc-input-quiet,
|
|
2800
|
+
.sc-person-fact dd > .sc-picker-quiet {
|
|
2801
|
+
width: calc(100% + var(--sc-space-2));
|
|
2802
|
+
max-width: none;
|
|
2803
|
+
margin-inline-start: calc(var(--sc-space-2) * -1);
|
|
2804
|
+
}
|
|
2805
|
+
|
|
2806
|
+
.sc-person-fact dd > .sc-chips {
|
|
2807
|
+
padding-block: 0.125rem;
|
|
2808
|
+
}
|
|
2809
|
+
|
|
2810
|
+
.sc-person-email {
|
|
2811
|
+
min-width: 0;
|
|
2812
|
+
overflow-wrap: anywhere;
|
|
2813
|
+
}
|
|
2814
|
+
|
|
2627
2815
|
/* The ways to a person's work at the foot of the card, the way out across from them. */
|
|
2628
2816
|
.sc-person-card-ways {
|
|
2629
2817
|
display: flex;
|
|
@@ -2638,25 +2826,40 @@ select.sc-input {
|
|
|
2638
2826
|
margin-inline-start: auto;
|
|
2639
2827
|
}
|
|
2640
2828
|
|
|
2641
|
-
/* A
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
max-width: 100%;
|
|
2829
|
+
/* A field that reads as the value it holds, until the pointer or the focus is on it: a fact
|
|
2830
|
+
changed in place, as low as a line of the facts, its box drawn only then. A select keeps the
|
|
2831
|
+
room for its chevron, drawn only then too where there is a pointer to hover. */
|
|
2832
|
+
.sc-input-quiet {
|
|
2646
2833
|
min-height: 2rem;
|
|
2647
2834
|
padding-block: 0;
|
|
2648
|
-
padding-inline
|
|
2835
|
+
padding-inline: var(--sc-space-2);
|
|
2649
2836
|
border-color: transparent;
|
|
2650
2837
|
background-color: transparent;
|
|
2651
2838
|
text-overflow: ellipsis;
|
|
2652
2839
|
}
|
|
2653
2840
|
|
|
2654
|
-
select.sc-input-quiet
|
|
2655
|
-
|
|
2656
|
-
|
|
2841
|
+
select.sc-input-quiet {
|
|
2842
|
+
width: auto;
|
|
2843
|
+
min-width: 0;
|
|
2844
|
+
max-width: 100%;
|
|
2845
|
+
padding-inline-end: calc(var(--sc-space-3) * 2 + 0.625rem);
|
|
2846
|
+
}
|
|
2847
|
+
|
|
2848
|
+
.sc-input-quiet:hover:not(:disabled),
|
|
2849
|
+
.sc-input-quiet:focus {
|
|
2657
2850
|
background-color: var(--sc-color-sheet);
|
|
2658
2851
|
}
|
|
2659
2852
|
|
|
2853
|
+
.sc-input-quiet:hover:not(:disabled):not(:focus) {
|
|
2854
|
+
border-color: var(--sc-color-border);
|
|
2855
|
+
}
|
|
2856
|
+
|
|
2857
|
+
@media (hover: hover) {
|
|
2858
|
+
select.sc-input-quiet:not(:hover):not(:focus) {
|
|
2859
|
+
background-image: none;
|
|
2860
|
+
}
|
|
2861
|
+
}
|
|
2862
|
+
|
|
2660
2863
|
.sc-person-row {
|
|
2661
2864
|
display: flex;
|
|
2662
2865
|
flex-wrap: wrap;
|
|
@@ -2705,17 +2908,96 @@ select.sc-input-quiet:focus-visible {
|
|
|
2705
2908
|
opacity: 0.55;
|
|
2706
2909
|
}
|
|
2707
2910
|
|
|
2708
|
-
.sc-listing-form .sc-field-row
|
|
2911
|
+
.sc-listing-form .sc-field-row,
|
|
2912
|
+
.sc-team-form .sc-field-row {
|
|
2709
2913
|
align-items: end;
|
|
2710
2914
|
}
|
|
2711
2915
|
|
|
2916
|
+
/* The two views of the people's page, the people and the teams: the page's view switch, with how
|
|
2917
|
+
many each holds beside its name. */
|
|
2918
|
+
.sc-people-views {
|
|
2919
|
+
margin-bottom: var(--sc-space-5);
|
|
2920
|
+
}
|
|
2921
|
+
|
|
2922
|
+
.sc-people-views .sc-tab {
|
|
2923
|
+
align-items: baseline;
|
|
2924
|
+
}
|
|
2925
|
+
|
|
2926
|
+
.sc-tab-count {
|
|
2927
|
+
color: var(--sc-color-text-faint);
|
|
2928
|
+
font-size: var(--sc-text-xs);
|
|
2929
|
+
font-variant-numeric: tabular-nums;
|
|
2930
|
+
}
|
|
2931
|
+
|
|
2932
|
+
.sc-tab-current .sc-tab-count {
|
|
2933
|
+
color: var(--sc-color-text-muted);
|
|
2934
|
+
}
|
|
2935
|
+
|
|
2936
|
+
/* The teams (ADR-0073): a card each in a grid, as the people are; the name and how many at the
|
|
2937
|
+
head, who is in it as chips with the way to add one at the end, the way to delete it at the
|
|
2938
|
+
foot. The name, for an administrator, is a quiet field in the name's own words. */
|
|
2939
|
+
.sc-teams {
|
|
2940
|
+
display: grid;
|
|
2941
|
+
grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr));
|
|
2942
|
+
gap: var(--sc-space-4);
|
|
2943
|
+
}
|
|
2944
|
+
|
|
2945
|
+
.sc-team-card {
|
|
2946
|
+
display: flex;
|
|
2947
|
+
flex-direction: column;
|
|
2948
|
+
gap: var(--sc-space-3);
|
|
2949
|
+
min-width: 0;
|
|
2950
|
+
padding: var(--sc-space-4) var(--sc-space-5);
|
|
2951
|
+
border-radius: var(--sc-radius-xl);
|
|
2952
|
+
}
|
|
2953
|
+
|
|
2954
|
+
.sc-team-head {
|
|
2955
|
+
display: flex;
|
|
2956
|
+
align-items: center;
|
|
2957
|
+
gap: var(--sc-space-2);
|
|
2958
|
+
min-width: 0;
|
|
2959
|
+
}
|
|
2960
|
+
|
|
2961
|
+
/* The team's name, and under it its key, what it is called by (ADR-0074). */
|
|
2962
|
+
.sc-team-title {
|
|
2963
|
+
display: grid;
|
|
2964
|
+
flex: 1;
|
|
2965
|
+
min-width: 0;
|
|
2966
|
+
}
|
|
2967
|
+
|
|
2968
|
+
.sc-team-name {
|
|
2969
|
+
min-width: 0;
|
|
2970
|
+
font-size: var(--sc-text-md);
|
|
2971
|
+
font-weight: var(--sc-weight-bold);
|
|
2972
|
+
line-height: var(--sc-leading-snug);
|
|
2973
|
+
overflow-wrap: anywhere;
|
|
2974
|
+
}
|
|
2975
|
+
|
|
2976
|
+
.sc-team-name.sc-input-quiet {
|
|
2977
|
+
margin-inline-start: calc(var(--sc-space-2) * -1);
|
|
2978
|
+
color: var(--sc-color-text);
|
|
2979
|
+
}
|
|
2980
|
+
|
|
2981
|
+
.sc-team-members {
|
|
2982
|
+
padding-top: var(--sc-space-3);
|
|
2983
|
+
border-top: var(--sc-hairline);
|
|
2984
|
+
}
|
|
2985
|
+
|
|
2986
|
+
.sc-team-ways {
|
|
2987
|
+
display: flex;
|
|
2988
|
+
justify-content: flex-end;
|
|
2989
|
+
margin-top: auto;
|
|
2990
|
+
margin-inline: calc(var(--sc-space-2) * -1);
|
|
2991
|
+
}
|
|
2992
|
+
|
|
2712
2993
|
.sc-field-hint {
|
|
2713
2994
|
margin-top: var(--sc-space-2);
|
|
2714
2995
|
color: var(--sc-color-text-muted);
|
|
2715
2996
|
font-size: var(--sc-text-sm);
|
|
2716
2997
|
}
|
|
2717
2998
|
|
|
2718
|
-
.sc-project-key
|
|
2999
|
+
.sc-project-key,
|
|
3000
|
+
.sc-team-key {
|
|
2719
3001
|
color: var(--sc-color-text-faint);
|
|
2720
3002
|
font-size: var(--sc-text-xs);
|
|
2721
3003
|
}
|
|
@@ -5348,6 +5630,11 @@ select.sc-input-quiet:focus-visible {
|
|
|
5348
5630
|
width: 100%;
|
|
5349
5631
|
}
|
|
5350
5632
|
|
|
5633
|
+
/* A person or a project chosen in a setting: a field as wide as the others. */
|
|
5634
|
+
.sc-settings-control > .sc-picker:not(.sc-picker-add) {
|
|
5635
|
+
justify-self: stretch;
|
|
5636
|
+
}
|
|
5637
|
+
|
|
5351
5638
|
.sc-settings-form .sc-form-actions {
|
|
5352
5639
|
padding-top: var(--sc-space-4);
|
|
5353
5640
|
border-top: var(--sc-border);
|
|
@@ -5974,27 +6261,66 @@ select.sc-input-quiet:focus-visible {
|
|
|
5974
6261
|
border: 0;
|
|
5975
6262
|
}
|
|
5976
6263
|
|
|
6264
|
+
/* A choice is a chip that is its own box: the browser's square kept for the keyboard and a
|
|
6265
|
+
screen reader, out of sight; a choice made is lit in the accent, a tick drawn before its word. */
|
|
5977
6266
|
.sc-toggle-chip {
|
|
6267
|
+
position: relative;
|
|
5978
6268
|
display: inline-flex;
|
|
5979
6269
|
align-items: center;
|
|
5980
|
-
gap: var(--sc-space-
|
|
5981
|
-
min-height:
|
|
6270
|
+
gap: var(--sc-space-2);
|
|
6271
|
+
min-height: 2rem;
|
|
5982
6272
|
padding: 0 var(--sc-space-3);
|
|
5983
6273
|
border: var(--sc-border);
|
|
5984
6274
|
border-radius: var(--sc-radius-full);
|
|
5985
|
-
background: var(--sc-color-
|
|
6275
|
+
background: var(--sc-color-sheet);
|
|
6276
|
+
color: var(--sc-color-text-muted);
|
|
5986
6277
|
font-size: var(--sc-text-sm);
|
|
5987
6278
|
cursor: pointer;
|
|
6279
|
+
user-select: none;
|
|
6280
|
+
transition:
|
|
6281
|
+
background var(--sc-transition),
|
|
6282
|
+
border-color var(--sc-transition),
|
|
6283
|
+
color var(--sc-transition);
|
|
6284
|
+
}
|
|
6285
|
+
|
|
6286
|
+
.sc-toggle-chip:hover {
|
|
6287
|
+
border-color: var(--sc-color-border-strong);
|
|
6288
|
+
color: var(--sc-color-text);
|
|
5988
6289
|
}
|
|
5989
6290
|
|
|
5990
6291
|
.sc-toggle-chip input {
|
|
6292
|
+
position: absolute;
|
|
6293
|
+
width: 1px;
|
|
6294
|
+
height: 1px;
|
|
5991
6295
|
margin: 0;
|
|
6296
|
+
opacity: 0;
|
|
6297
|
+
pointer-events: none;
|
|
6298
|
+
}
|
|
6299
|
+
|
|
6300
|
+
.sc-toggle-chip:has(input:focus-visible) {
|
|
6301
|
+
outline: var(--sc-focus-ring);
|
|
6302
|
+
outline-offset: 2px;
|
|
5992
6303
|
}
|
|
5993
6304
|
|
|
5994
6305
|
.sc-toggle-chip:has(input:checked) {
|
|
5995
|
-
border-color: var(--sc-color-
|
|
5996
|
-
background: var(--sc-color-
|
|
5997
|
-
color: var(--sc-color-
|
|
6306
|
+
border-color: color-mix(in srgb, var(--sc-color-accent) 40%, transparent);
|
|
6307
|
+
background: var(--sc-color-accent-subtle);
|
|
6308
|
+
color: var(--sc-color-accent);
|
|
6309
|
+
}
|
|
6310
|
+
|
|
6311
|
+
.sc-toggle-chip:has(input:checked)::before {
|
|
6312
|
+
content: "";
|
|
6313
|
+
width: 0.3125rem;
|
|
6314
|
+
height: 0.5625rem;
|
|
6315
|
+
margin-inline: 0.125rem 0.0625rem;
|
|
6316
|
+
border: solid currentColor;
|
|
6317
|
+
border-width: 0 1.5px 1.5px 0;
|
|
6318
|
+
transform: translateY(-0.0625rem) rotate(45deg);
|
|
6319
|
+
}
|
|
6320
|
+
|
|
6321
|
+
.sc-toggle-chip:has(input:disabled) {
|
|
6322
|
+
opacity: 0.55;
|
|
6323
|
+
cursor: not-allowed;
|
|
5998
6324
|
}
|
|
5999
6325
|
|
|
6000
6326
|
/* A list of several choices too long for pills: a column of boxes. */
|
|
@@ -6099,37 +6425,6 @@ select.sc-input-quiet:focus-visible {
|
|
|
6099
6425
|
font-weight: normal;
|
|
6100
6426
|
}
|
|
6101
6427
|
|
|
6102
|
-
.sc-plugin-holders {
|
|
6103
|
-
display: flex;
|
|
6104
|
-
flex-wrap: wrap;
|
|
6105
|
-
align-items: center;
|
|
6106
|
-
gap: var(--sc-space-2);
|
|
6107
|
-
}
|
|
6108
|
-
|
|
6109
|
-
/* Who holds a role, a chip each, with the way to revoke a grant in it. */
|
|
6110
|
-
.sc-plugin-holder {
|
|
6111
|
-
display: inline-flex;
|
|
6112
|
-
align-items: center;
|
|
6113
|
-
gap: var(--sc-space-1);
|
|
6114
|
-
min-height: 2rem;
|
|
6115
|
-
padding-inline: var(--sc-space-3) var(--sc-space-1);
|
|
6116
|
-
border: var(--sc-border);
|
|
6117
|
-
border-radius: var(--sc-radius-full);
|
|
6118
|
-
background: var(--sc-color-sheet);
|
|
6119
|
-
font-size: var(--sc-text-sm);
|
|
6120
|
-
}
|
|
6121
|
-
|
|
6122
|
-
.sc-plugin-holder-fixed {
|
|
6123
|
-
padding-inline-end: var(--sc-space-3);
|
|
6124
|
-
}
|
|
6125
|
-
|
|
6126
|
-
.sc-plugin-holder .sc-button {
|
|
6127
|
-
min-height: 1.5rem;
|
|
6128
|
-
padding-inline: var(--sc-space-2);
|
|
6129
|
-
font-size: var(--sc-text-md);
|
|
6130
|
-
line-height: 1;
|
|
6131
|
-
}
|
|
6132
|
-
|
|
6133
6428
|
.sc-plugin-grant {
|
|
6134
6429
|
display: flex;
|
|
6135
6430
|
flex-wrap: wrap;
|
package/src/vocabulary.ts
CHANGED
|
@@ -184,6 +184,12 @@ export const EVENT_KINDS = [
|
|
|
184
184
|
"person.deactivated",
|
|
185
185
|
"person.reactivated",
|
|
186
186
|
"person.manager_changed",
|
|
187
|
+
"person.email_changed",
|
|
188
|
+
"team.created",
|
|
189
|
+
"team.renamed",
|
|
190
|
+
"team.removed",
|
|
191
|
+
"team.member_added",
|
|
192
|
+
"team.member_removed",
|
|
187
193
|
"workspace.updated",
|
|
188
194
|
"category.created",
|
|
189
195
|
"category.updated",
|