@goodfellow-cms/admin 0.8.0 → 0.10.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/styles.css CHANGED
@@ -1093,6 +1093,29 @@ body,
1093
1093
  margin: 0 0 8px;
1094
1094
  }
1095
1095
 
1096
+ /* A value to copy into another site's form, with its own copy button. */
1097
+ .gfa-copy-value {
1098
+ display: flex;
1099
+ flex-wrap: wrap;
1100
+ align-items: center;
1101
+ gap: 8px;
1102
+ margin: 8px 0;
1103
+ }
1104
+
1105
+ .gfa-copy-label {
1106
+ min-width: 10rem;
1107
+ font-weight: 600;
1108
+ }
1109
+
1110
+ .gfa-copy-value code {
1111
+ padding: 2px 6px;
1112
+ border: 1px solid var(--gfa-border);
1113
+ border-radius: 4px;
1114
+ background: var(--gfa-checker);
1115
+ white-space: pre-wrap;
1116
+ overflow-wrap: anywhere;
1117
+ }
1118
+
1096
1119
  .gfa-token-links {
1097
1120
  margin: 0 0 8px;
1098
1121
  padding-left: 18px;
@@ -1502,6 +1525,7 @@ body,
1502
1525
  }
1503
1526
 
1504
1527
  .gfa-media-card {
1528
+ position: relative;
1505
1529
  display: flex;
1506
1530
  flex-direction: column;
1507
1531
  gap: 8px;
@@ -1565,6 +1589,209 @@ body,
1565
1589
  gap: 4px;
1566
1590
  }
1567
1591
 
1592
+ .gfa-media-actions[hidden] {
1593
+ display: none;
1594
+ }
1595
+
1596
+ /* What an image shows, from the media library's descriptions, cut to two lines. */
1597
+ .gfa-media-description {
1598
+ display: -webkit-box;
1599
+ overflow: hidden;
1600
+ font-size: 12px;
1601
+ -webkit-line-clamp: 2;
1602
+ -webkit-box-orient: vertical;
1603
+ }
1604
+
1605
+ .gfa-media-card-selected {
1606
+ border-color: var(--gfa-accent);
1607
+ box-shadow: 0 0 0 1px var(--gfa-accent);
1608
+ }
1609
+
1610
+ /* The box that chooses a file to delete with others, over its picture. */
1611
+ .gfa-media-check {
1612
+ position: absolute;
1613
+ top: 14px;
1614
+ left: 14px;
1615
+ width: 20px;
1616
+ height: 20px;
1617
+ accent-color: var(--gfa-accent);
1618
+ }
1619
+
1620
+ .gfa-media-selection {
1621
+ position: sticky;
1622
+ top: 0;
1623
+ z-index: 1;
1624
+ display: flex;
1625
+ flex-wrap: wrap;
1626
+ align-items: center;
1627
+ gap: 8px;
1628
+ margin-bottom: 12px;
1629
+ padding: 8px 12px;
1630
+ background: var(--gfa-surface);
1631
+ border: 1px solid var(--gfa-border);
1632
+ border-radius: var(--gfa-radius);
1633
+ }
1634
+
1635
+ .gfa-media-selection > span {
1636
+ margin-right: auto;
1637
+ font-weight: 600;
1638
+ }
1639
+
1640
+ .gfa-media-tags {
1641
+ overflow: hidden;
1642
+ font-size: 12px;
1643
+ color: var(--gfa-muted);
1644
+ text-overflow: ellipsis;
1645
+ white-space: nowrap;
1646
+ }
1647
+
1648
+ /* An image's focal point: the picture, clicked where it must stay in view, with a dot there. */
1649
+ .gfa-focus-picker {
1650
+ position: relative;
1651
+ display: block;
1652
+ width: fit-content;
1653
+ max-width: 100%;
1654
+ padding: 0;
1655
+ cursor: crosshair;
1656
+ background: repeating-conic-gradient(var(--gfa-checker) 0 25%, var(--gfa-checker-alt) 0 50%) 50% / 16px 16px;
1657
+ border: 1px solid var(--gfa-border);
1658
+ border-radius: 4px;
1659
+ }
1660
+
1661
+ .gfa-focus-picker img {
1662
+ display: block;
1663
+ /* SVGs that give only their shape would otherwise have no width in a box that takes the picture's. */
1664
+ min-width: 200px;
1665
+ max-width: 100%;
1666
+ max-height: 280px;
1667
+ user-select: none;
1668
+ }
1669
+
1670
+ .gfa-focus-dot {
1671
+ position: absolute;
1672
+ width: 18px;
1673
+ height: 18px;
1674
+ background: var(--gfa-accent);
1675
+ border: 3px solid var(--gfa-surface);
1676
+ border-radius: 50%;
1677
+ box-shadow: 0 0 0 1px var(--gfa-text);
1678
+ transform: translate(-50%, -50%);
1679
+ pointer-events: none;
1680
+ }
1681
+
1682
+ .gfa-focus-actions {
1683
+ align-items: center;
1684
+ justify-content: flex-start;
1685
+ }
1686
+
1687
+ .gfa-tags {
1688
+ display: flex;
1689
+ flex-direction: column;
1690
+ gap: 6px;
1691
+ }
1692
+
1693
+ .gfa-tag-list {
1694
+ display: flex;
1695
+ flex-wrap: wrap;
1696
+ gap: 6px;
1697
+ margin: 0;
1698
+ padding: 0;
1699
+ list-style: none;
1700
+ }
1701
+
1702
+ .gfa-tag {
1703
+ display: inline-flex;
1704
+ align-items: center;
1705
+ gap: 4px;
1706
+ padding: 2px 4px 2px 10px;
1707
+ font-size: 13px;
1708
+ background: var(--gfa-bg);
1709
+ border: 1px solid var(--gfa-border);
1710
+ border-radius: 999px;
1711
+ }
1712
+
1713
+ .gfa-tag-remove {
1714
+ width: 22px;
1715
+ height: 22px;
1716
+ padding: 0;
1717
+ font: inherit;
1718
+ line-height: 1;
1719
+ color: var(--gfa-muted);
1720
+ cursor: pointer;
1721
+ background: none;
1722
+ border: 0;
1723
+ border-radius: 50%;
1724
+ }
1725
+
1726
+ .gfa-tag-remove:hover,
1727
+ .gfa-tag-remove:focus-visible {
1728
+ color: var(--gfa-text);
1729
+ background: var(--gfa-surface);
1730
+ }
1731
+
1732
+ .gfa-tag-filter {
1733
+ display: flex;
1734
+ flex-wrap: wrap;
1735
+ align-items: center;
1736
+ gap: 4px;
1737
+ margin: 0 0 12px;
1738
+ padding: 0;
1739
+ border: 0;
1740
+ }
1741
+
1742
+ .gfa-tag-filter legend {
1743
+ float: left;
1744
+ margin-right: 8px;
1745
+ }
1746
+
1747
+ .gfa-crop-tools {
1748
+ display: flex;
1749
+ flex-wrap: wrap;
1750
+ align-items: center;
1751
+ gap: 8px;
1752
+ }
1753
+
1754
+ /* The picture being cropped, with the box that keeps part of it over it. */
1755
+ .gfa-crop-area {
1756
+ position: relative;
1757
+ overflow: hidden;
1758
+ width: fit-content;
1759
+ max-width: 100%;
1760
+ touch-action: none;
1761
+ background: repeating-conic-gradient(var(--gfa-checker) 0 25%, var(--gfa-checker-alt) 0 50%) 50% / 16px 16px;
1762
+ }
1763
+
1764
+ .gfa-crop-area canvas {
1765
+ display: block;
1766
+ max-width: 100%;
1767
+ }
1768
+
1769
+ .gfa-crop-box {
1770
+ position: absolute;
1771
+ padding: 0;
1772
+ cursor: move;
1773
+ background: transparent;
1774
+ border: 2px solid var(--gfa-accent-text);
1775
+ outline: 1px solid var(--gfa-accent);
1776
+ box-shadow: 0 0 0 9999px rgb(0 0 0 / 0.5);
1777
+ }
1778
+
1779
+ .gfa-crop-box:focus-visible {
1780
+ outline: 3px solid var(--gfa-accent);
1781
+ }
1782
+
1783
+ .gfa-crop-handle {
1784
+ position: absolute;
1785
+ right: -8px;
1786
+ bottom: -8px;
1787
+ width: 16px;
1788
+ height: 16px;
1789
+ cursor: nwse-resize;
1790
+ background: var(--gfa-accent);
1791
+ border: 2px solid var(--gfa-accent-text);
1792
+ border-radius: 3px;
1793
+ }
1794
+
1568
1795
  .gfa-media-chooser {
1569
1796
  display: flex;
1570
1797
  align-items: center;
@@ -1648,6 +1875,46 @@ body,
1648
1875
  min-width: 0;
1649
1876
  }
1650
1877
 
1878
+ .gfa-table-field-rich {
1879
+ min-height: 2.25em;
1880
+ white-space: pre-wrap;
1881
+ overflow-wrap: anywhere;
1882
+ cursor: text;
1883
+ }
1884
+
1885
+ .gfa-table-field-rich a {
1886
+ color: var(--gfa-accent);
1887
+ text-decoration: underline;
1888
+ }
1889
+
1890
+ .gfa-table-field-toolbar {
1891
+ display: flex;
1892
+ flex-wrap: wrap;
1893
+ gap: 4px;
1894
+ margin-bottom: 8px;
1895
+ }
1896
+
1897
+ .gfa-table-field-tool {
1898
+ padding: 2px 8px;
1899
+ border: 1px solid var(--gfa-border);
1900
+ border-radius: var(--gfa-radius);
1901
+ background: var(--gfa-surface);
1902
+ color: var(--gfa-text);
1903
+ cursor: pointer;
1904
+ }
1905
+
1906
+ .gfa-table-field-tool:disabled {
1907
+ cursor: default;
1908
+ opacity: 0.4;
1909
+ }
1910
+
1911
+ .gfa-table-field-link {
1912
+ display: flex;
1913
+ flex-wrap: wrap;
1914
+ gap: 4px;
1915
+ width: 100%;
1916
+ }
1917
+
1651
1918
  .gfa-table-field-remove {
1652
1919
  border: 1px solid var(--gfa-border);
1653
1920
  border-radius: var(--gfa-radius);
@@ -2392,6 +2659,73 @@ body,
2392
2659
  border: 0;
2393
2660
  }
2394
2661
 
2662
+ /* Links to items: the chosen ones, then a search and what it finds. */
2663
+ .gfa-item-picker {
2664
+ display: grid;
2665
+ gap: 6px;
2666
+ }
2667
+
2668
+ .gfa-item-picker-chosen,
2669
+ .gfa-item-picker-matches,
2670
+ .gfa-images-field ul {
2671
+ display: grid;
2672
+ gap: 4px;
2673
+ margin: 0;
2674
+ padding: 0;
2675
+ list-style: none;
2676
+ }
2677
+
2678
+ .gfa-chosen-row {
2679
+ display: flex;
2680
+ align-items: center;
2681
+ gap: 6px;
2682
+ padding: 2px 4px 2px 8px;
2683
+ border: 1px solid var(--gfa-border);
2684
+ border-radius: 6px;
2685
+ }
2686
+
2687
+ .gfa-chosen-row-name {
2688
+ flex: 1;
2689
+ min-width: 0;
2690
+ overflow: hidden;
2691
+ text-overflow: ellipsis;
2692
+ white-space: nowrap;
2693
+ }
2694
+
2695
+ .gfa-item-picker-matches {
2696
+ max-height: 200px;
2697
+ overflow-y: auto;
2698
+ }
2699
+
2700
+ .gfa-item-picker-matches button {
2701
+ width: 100%;
2702
+ padding: 4px 8px;
2703
+ border: 0;
2704
+ border-radius: 4px;
2705
+ background: none;
2706
+ color: inherit;
2707
+ font: inherit;
2708
+ text-align: start;
2709
+ cursor: pointer;
2710
+ }
2711
+
2712
+ .gfa-item-picker-matches button:hover,
2713
+ .gfa-item-picker-matches button:focus-visible {
2714
+ background: var(--gfa-current-bg);
2715
+ }
2716
+
2717
+ .gfa-images-field {
2718
+ display: grid;
2719
+ gap: 8px;
2720
+ }
2721
+
2722
+ .gfa-images-field-thumb {
2723
+ width: 40px;
2724
+ height: 40px;
2725
+ object-fit: cover;
2726
+ border-radius: 4px;
2727
+ }
2728
+
2395
2729
  .gfa-event-days {
2396
2730
  display: flex;
2397
2731
  flex-wrap: wrap;
@@ -2446,6 +2780,19 @@ body,
2446
2780
  background: var(--gfa-checker);
2447
2781
  }
2448
2782
 
2783
+ /* A small picture beside the words, as links with summary cards show. */
2784
+ .gfa-share-card-small {
2785
+ display: grid;
2786
+ grid-template-columns: 96px 1fr;
2787
+ align-items: center;
2788
+ }
2789
+
2790
+ .gfa-share-card-small .gfa-share-image {
2791
+ height: 100%;
2792
+ min-height: 96px;
2793
+ aspect-ratio: 1;
2794
+ }
2795
+
2449
2796
  .gfa-share-no-image {
2450
2797
  display: grid;
2451
2798
  place-items: center;
@@ -2594,3 +2941,212 @@ body,
2594
2941
  margin-bottom: 6px;
2595
2942
  font-weight: 600;
2596
2943
  }
2944
+
2945
+ /* A synced block on the editor's canvas, drawn read-only in place of its Synced block, with a link to edit it. */
2946
+ .gfa-synced-block {
2947
+ outline: 2px dashed var(--gfa-accent);
2948
+ outline-offset: -2px;
2949
+ }
2950
+
2951
+ .gfa-synced-block-bar {
2952
+ display: flex;
2953
+ flex-wrap: wrap;
2954
+ gap: 4px 12px;
2955
+ align-items: center;
2956
+ justify-content: space-between;
2957
+ padding: 4px 10px;
2958
+ background: var(--gfa-accent);
2959
+ color: var(--gfa-accent-text);
2960
+ font:
2961
+ 13px / 1.4 ui-sans-serif,
2962
+ system-ui,
2963
+ sans-serif;
2964
+ }
2965
+
2966
+ .gfa-synced-block-bar a {
2967
+ color: inherit;
2968
+ font-weight: 600;
2969
+ text-decoration: underline;
2970
+ }
2971
+
2972
+ .gfa-synced-block-missing p {
2973
+ margin: 0;
2974
+ padding: 16px;
2975
+ color: var(--gfa-text);
2976
+ background: var(--gfa-surface);
2977
+ font:
2978
+ 14px / 1.5 ui-sans-serif,
2979
+ system-ui,
2980
+ sans-serif;
2981
+ }
2982
+
2983
+ /* InfoBubble: an "i" whose words show while it's pointed at or focused, and which opens the documentation. */
2984
+ .gfa-info {
2985
+ position: relative;
2986
+ display: inline-flex;
2987
+ vertical-align: middle;
2988
+ margin-inline-start: 6px;
2989
+ }
2990
+
2991
+ .gfa-info-button {
2992
+ display: inline-flex;
2993
+ color: var(--gfa-muted);
2994
+ border-radius: 999px;
2995
+ }
2996
+
2997
+ .gfa-info-button:hover,
2998
+ .gfa-info-button:focus-visible {
2999
+ color: var(--gfa-accent);
3000
+ }
3001
+
3002
+ .gfa-info-text {
3003
+ position: absolute;
3004
+ bottom: calc(100% + 8px);
3005
+ left: 50%;
3006
+ z-index: 30;
3007
+ width: max-content;
3008
+ max-width: min(320px, 80vw);
3009
+ padding: 6px 10px;
3010
+ border-radius: var(--gfa-radius);
3011
+ background: var(--gfa-tooltip-bg);
3012
+ color: var(--gfa-tooltip-text);
3013
+ font-size: 13px;
3014
+ font-weight: 400;
3015
+ line-height: 1.4;
3016
+ box-shadow: 0 4px 12px rgb(15 23 42 / 0.18);
3017
+ pointer-events: none;
3018
+ opacity: 0;
3019
+ transform: translate(-50%, 4px);
3020
+ transition:
3021
+ opacity 140ms ease,
3022
+ transform 140ms ease;
3023
+ }
3024
+
3025
+ .gfa-info:hover .gfa-info-text,
3026
+ .gfa-info:focus-within .gfa-info-text {
3027
+ opacity: 1;
3028
+ transform: translate(-50%, 0);
3029
+ }
3030
+
3031
+ @media (prefers-reduced-motion: reduce) {
3032
+ .gfa-info-text {
3033
+ transition: opacity 140ms ease;
3034
+ transform: translate(-50%, 0);
3035
+ }
3036
+ }
3037
+
3038
+ /* The site's own fonts on the Colors & fonts tab. */
3039
+ .gfa-own-fonts {
3040
+ display: grid;
3041
+ gap: 8px;
3042
+ margin: 0 0 12px;
3043
+ padding: 0;
3044
+ list-style: none;
3045
+ }
3046
+
3047
+ .gfa-own-font {
3048
+ display: flex;
3049
+ align-items: center;
3050
+ gap: 12px;
3051
+ padding: 10px 12px;
3052
+ border: 1px solid var(--gfa-border);
3053
+ border-radius: var(--gfa-radius);
3054
+ background: var(--gfa-surface);
3055
+ }
3056
+
3057
+ .gfa-own-font-name {
3058
+ flex: 1;
3059
+ font-size: 18px;
3060
+ }
3061
+
3062
+ .gfa-font-files {
3063
+ width: 100%;
3064
+ border-collapse: collapse;
3065
+ margin: 8px 0 12px;
3066
+ }
3067
+
3068
+ .gfa-font-files th,
3069
+ .gfa-font-files td {
3070
+ padding: 6px 8px 6px 0;
3071
+ text-align: start;
3072
+ vertical-align: middle;
3073
+ }
3074
+
3075
+ .gfa-font-files th {
3076
+ font-weight: 500;
3077
+ color: var(--gfa-muted);
3078
+ font-size: 13px;
3079
+ }
3080
+
3081
+ .gfa-font-group {
3082
+ padding: 6px 10px 2px;
3083
+ color: var(--gfa-muted);
3084
+ font-size: 12px;
3085
+ font-weight: 600;
3086
+ text-transform: uppercase;
3087
+ letter-spacing: 0.04em;
3088
+ }
3089
+
3090
+ /* The Go to box (Ctrl+K) and the list of shortcuts (?). */
3091
+ .gfa-goto {
3092
+ display: grid;
3093
+ gap: 8px;
3094
+ width: min(520px, calc(100vw - 64px));
3095
+ }
3096
+
3097
+ .gfa-goto input {
3098
+ width: 100%;
3099
+ padding: 8px 10px;
3100
+ font: inherit;
3101
+ border: 1px solid var(--gfa-border);
3102
+ border-radius: var(--gfa-radius);
3103
+ background: var(--gfa-surface);
3104
+ color: inherit;
3105
+ }
3106
+
3107
+ .gfa-goto-list {
3108
+ max-height: min(400px, 60vh);
3109
+ overflow-y: auto;
3110
+ }
3111
+
3112
+ .gfa-goto-option {
3113
+ display: flex;
3114
+ align-items: baseline;
3115
+ justify-content: space-between;
3116
+ gap: 12px;
3117
+ padding: 8px 10px;
3118
+ border-radius: 4px;
3119
+ cursor: pointer;
3120
+ }
3121
+
3122
+ .gfa-goto-option[aria-selected="true"] {
3123
+ background: var(--gfa-bg);
3124
+ }
3125
+
3126
+ .gfa-goto-label {
3127
+ overflow: hidden;
3128
+ text-overflow: ellipsis;
3129
+ white-space: nowrap;
3130
+ }
3131
+
3132
+ .gfa-goto-option .gfa-hint {
3133
+ flex-shrink: 0;
3134
+ margin: 0;
3135
+ }
3136
+
3137
+ .gfa-shortcuts td {
3138
+ padding: 6px 12px 6px 0;
3139
+ vertical-align: top;
3140
+ }
3141
+
3142
+ .gfa-shortcuts kbd {
3143
+ display: inline-block;
3144
+ min-width: 1.6em;
3145
+ padding: 1px 6px;
3146
+ font: inherit;
3147
+ font-size: 13px;
3148
+ text-align: center;
3149
+ border: 1px solid var(--gfa-border);
3150
+ border-radius: 4px;
3151
+ background: var(--gfa-bg);
3152
+ }