@brett_lamy/docstream 1.11.0 → 1.12.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/dist/strudel/StrudelRack.d.ts.map +1 -1
- package/dist/strudel/StrudelRack.js +2 -2
- package/dist/strudel/StrudelRack.js.map +1 -1
- package/dist/strudel/controls.d.ts +2 -0
- package/dist/strudel/controls.d.ts.map +1 -1
- package/dist/strudel/controls.js +27 -21
- package/dist/strudel/controls.js.map +1 -1
- package/dist/styles.css +346 -118
- package/package.json +1 -1
- package/src/strudel/StrudelRack.tsx +13 -3
- package/src/strudel/controls.tsx +65 -28
- package/src/styles.css +346 -118
package/src/styles.css
CHANGED
|
@@ -661,65 +661,157 @@
|
|
|
661
661
|
cursor: pointer;
|
|
662
662
|
}
|
|
663
663
|
|
|
664
|
+
/* The rack is hardware, so it is dark in both themes: a brushed-steel 19" frame with screwed rack ears,
|
|
665
|
+
anodized modules with silkscreened labels, rubber knobs with LED rings, channel faders, backlit pads,
|
|
666
|
+
TR-style step keys and green LCDs. */
|
|
664
667
|
.strudel-rack {
|
|
665
|
-
--strudel-accent:
|
|
668
|
+
--strudel-accent: #36d6ff;
|
|
669
|
+
--strudel-amber: #ff9d1c;
|
|
670
|
+
--strudel-red: #ff4433;
|
|
671
|
+
--strudel-lcd: #9dff9a;
|
|
672
|
+
--strudel-silk: #d9dde4;
|
|
673
|
+
--strudel-ear: 22px;
|
|
674
|
+
position: relative;
|
|
666
675
|
display: flex;
|
|
667
676
|
flex-direction: column;
|
|
668
|
-
gap:
|
|
669
|
-
padding: 10px;
|
|
670
|
-
border:
|
|
671
|
-
|
|
672
|
-
background: var(--gb-muted, #f4f4f5);
|
|
677
|
+
gap: 10px;
|
|
678
|
+
padding: 12px calc(var(--strudel-ear) + 10px);
|
|
679
|
+
border-radius: 8px;
|
|
680
|
+
color: var(--strudel-silk);
|
|
673
681
|
font-size: 12px;
|
|
682
|
+
font-family: "Helvetica Neue", Arial, system-ui, sans-serif;
|
|
683
|
+
background:
|
|
684
|
+
/* rack ears: four screws */
|
|
685
|
+
radial-gradient(circle at calc(var(--strudel-ear) / 2) 18px, #e7e9ee 0 2px, #6b7079 2.5px 4px, transparent 4.5px),
|
|
686
|
+
radial-gradient(circle at calc(var(--strudel-ear) / 2) calc(100% - 18px), #e7e9ee 0 2px, #6b7079 2.5px 4px, transparent 4.5px),
|
|
687
|
+
radial-gradient(circle at calc(100% - var(--strudel-ear) / 2) 18px, #e7e9ee 0 2px, #6b7079 2.5px 4px, transparent 4.5px),
|
|
688
|
+
radial-gradient(circle at calc(100% - var(--strudel-ear) / 2) calc(100% - 18px), #e7e9ee 0 2px, #6b7079 2.5px 4px, transparent 4.5px),
|
|
689
|
+
/* ear plates */
|
|
690
|
+
linear-gradient(90deg, #9da2ab 0, #c9ccd2 9px, #8e939c var(--strudel-ear), rgb(0 0 0 / 0.5) var(--strudel-ear), transparent calc(var(--strudel-ear) + 2px)) left / calc(var(--strudel-ear) + 2px) 100% no-repeat,
|
|
691
|
+
linear-gradient(270deg, #9da2ab 0, #c9ccd2 9px, #8e939c var(--strudel-ear), rgb(0 0 0 / 0.5) var(--strudel-ear), transparent calc(var(--strudel-ear) + 2px)) right / calc(var(--strudel-ear) + 2px) 100% no-repeat,
|
|
692
|
+
/* brushed steel */
|
|
693
|
+
repeating-linear-gradient(0deg, rgb(255 255 255 / 0.025) 0 1px, transparent 1px 3px),
|
|
694
|
+
linear-gradient(180deg, #3a3d44, #24262b 30%, #1b1c20);
|
|
695
|
+
box-shadow:
|
|
696
|
+
inset 0 1px 0 rgb(255 255 255 / 0.18),
|
|
697
|
+
inset 0 -1px 0 rgb(0 0 0 / 0.6),
|
|
698
|
+
0 1px 0 rgb(255 255 255 / 0.4),
|
|
699
|
+
0 10px 24px -8px rgb(0 0 0 / 0.55);
|
|
674
700
|
}
|
|
675
701
|
|
|
676
702
|
.strudel-rack__master {
|
|
677
703
|
display: flex;
|
|
678
704
|
align-items: center;
|
|
679
705
|
gap: 14px;
|
|
680
|
-
padding:
|
|
706
|
+
padding: 10px 14px;
|
|
707
|
+
border-radius: 6px;
|
|
708
|
+
background: linear-gradient(180deg, #2c2f35, #17181c);
|
|
709
|
+
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.1), inset 0 0 0 1px rgb(0 0 0 / 0.7), 0 2px 3px rgb(0 0 0 / 0.5);
|
|
681
710
|
}
|
|
682
711
|
|
|
683
712
|
.strudel-rack__title {
|
|
684
|
-
|
|
713
|
+
display: flex;
|
|
714
|
+
flex-direction: column;
|
|
715
|
+
font-weight: 800;
|
|
685
716
|
font-size: 13px;
|
|
717
|
+
letter-spacing: 0.14em;
|
|
718
|
+
text-transform: uppercase;
|
|
719
|
+
color: #fff;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
.strudel-rack__title small {
|
|
723
|
+
font-weight: 500;
|
|
724
|
+
font-size: 9px;
|
|
725
|
+
letter-spacing: 0.3em;
|
|
726
|
+
color: var(--strudel-accent);
|
|
727
|
+
text-shadow: 0 0 6px color-mix(in srgb, var(--strudel-accent) 60%, transparent);
|
|
686
728
|
}
|
|
687
729
|
|
|
688
730
|
.strudel-rack__summary {
|
|
689
731
|
margin-left: auto;
|
|
690
|
-
|
|
732
|
+
font-size: 9px;
|
|
733
|
+
letter-spacing: 0.18em;
|
|
734
|
+
text-transform: uppercase;
|
|
735
|
+
color: #8b9099;
|
|
691
736
|
}
|
|
692
737
|
|
|
693
738
|
.strudel-rack__error,
|
|
694
739
|
.strudel-device__error {
|
|
695
740
|
margin: 0;
|
|
696
|
-
color: var(--
|
|
741
|
+
color: var(--strudel-red);
|
|
697
742
|
font-size: 12px;
|
|
698
743
|
}
|
|
699
744
|
|
|
700
|
-
.
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
745
|
+
/* LCD: recessed green glass with a faint pixel grid. */
|
|
746
|
+
.strudel-lcd {
|
|
747
|
+
padding: 6px 10px;
|
|
748
|
+
border-radius: 4px;
|
|
749
|
+
background:
|
|
750
|
+
repeating-linear-gradient(0deg, rgb(0 0 0 / 0.18) 0 1px, transparent 1px 2px),
|
|
751
|
+
linear-gradient(180deg, #0c1a10, #10261a);
|
|
752
|
+
box-shadow: inset 0 2px 4px rgb(0 0 0 / 0.8), inset 0 0 0 1px rgb(0 0 0 / 0.9), 0 1px 0 rgb(255 255 255 / 0.12);
|
|
753
|
+
color: var(--strudel-lcd);
|
|
754
|
+
font-family: "SF Mono", ui-monospace, Menlo, monospace;
|
|
755
|
+
text-shadow: 0 0 6px color-mix(in srgb, var(--strudel-lcd) 55%, transparent);
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
.strudel-lcd--bpm {
|
|
759
|
+
display: inline-flex;
|
|
760
|
+
align-items: baseline;
|
|
761
|
+
gap: 4px;
|
|
762
|
+
min-width: 92px;
|
|
763
|
+
justify-content: flex-end;
|
|
764
|
+
font-size: 24px;
|
|
765
|
+
font-weight: 600;
|
|
766
|
+
font-variant-numeric: tabular-nums;
|
|
767
|
+
letter-spacing: 0.04em;
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
.strudel-lcd--bpm small {
|
|
771
|
+
font-size: 9px;
|
|
772
|
+
letter-spacing: 0.15em;
|
|
706
773
|
}
|
|
707
774
|
|
|
708
|
-
|
|
709
|
-
|
|
775
|
+
/* Modules: anodized faceplates with a top bevel and corner screws. */
|
|
776
|
+
.strudel-device {
|
|
777
|
+
position: relative;
|
|
778
|
+
border-radius: 6px;
|
|
779
|
+
background:
|
|
780
|
+
radial-gradient(circle at 8px 8px, #c4c8cf 0 1.5px, #555a62 2px 3px, transparent 3.5px),
|
|
781
|
+
radial-gradient(circle at calc(100% - 8px) 8px, #c4c8cf 0 1.5px, #555a62 2px 3px, transparent 3.5px),
|
|
782
|
+
radial-gradient(circle at 8px calc(100% - 8px), #c4c8cf 0 1.5px, #555a62 2px 3px, transparent 3.5px),
|
|
783
|
+
radial-gradient(circle at calc(100% - 8px) calc(100% - 8px), #c4c8cf 0 1.5px, #555a62 2px 3px, transparent 3.5px),
|
|
784
|
+
repeating-linear-gradient(90deg, rgb(255 255 255 / 0.018) 0 1px, transparent 1px 2px),
|
|
785
|
+
linear-gradient(180deg, #33363d, #212328);
|
|
786
|
+
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.14), inset 0 0 0 1px rgb(0 0 0 / 0.75), 0 3px 5px rgb(0 0 0 / 0.5);
|
|
710
787
|
}
|
|
711
788
|
|
|
789
|
+
.strudel-device[data-kind="drums"] { --strudel-key: var(--strudel-amber); }
|
|
790
|
+
.strudel-device[data-kind="melodic"],
|
|
791
|
+
.strudel-device[data-kind="other"] { --strudel-key: var(--strudel-accent); }
|
|
792
|
+
|
|
712
793
|
.strudel-device__head {
|
|
713
794
|
display: flex;
|
|
714
795
|
align-items: center;
|
|
715
796
|
gap: 8px;
|
|
716
|
-
padding:
|
|
717
|
-
border-bottom: 1px solid
|
|
718
|
-
|
|
797
|
+
padding: 7px 16px 7px 18px;
|
|
798
|
+
border-bottom: 1px solid rgb(0 0 0 / 0.6);
|
|
799
|
+
box-shadow: 0 1px 0 rgb(255 255 255 / 0.06);
|
|
800
|
+
color: var(--strudel-key);
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
.strudel-device__led {
|
|
804
|
+
width: 7px;
|
|
805
|
+
height: 7px;
|
|
806
|
+
border-radius: 999px;
|
|
807
|
+
background: radial-gradient(circle at 35% 35%, #d8ffd6, #2fe05a 45%, #0d6a26);
|
|
808
|
+
box-shadow: 0 0 6px #2fe05a, 0 0 0 1px rgb(0 0 0 / 0.7);
|
|
719
809
|
}
|
|
720
810
|
|
|
721
|
-
.strudel-device[data-
|
|
722
|
-
|
|
811
|
+
.strudel-device[data-audible="false"] .strudel-device__led {
|
|
812
|
+
background: radial-gradient(circle at 35% 35%, #4b524c, #1f2420);
|
|
813
|
+
box-shadow: 0 0 0 1px rgb(0 0 0 / 0.7);
|
|
814
|
+
}
|
|
723
815
|
|
|
724
816
|
.strudel-device__name {
|
|
725
817
|
flex: 1;
|
|
@@ -727,30 +819,54 @@
|
|
|
727
819
|
overflow: hidden;
|
|
728
820
|
text-overflow: ellipsis;
|
|
729
821
|
white-space: nowrap;
|
|
730
|
-
font-weight:
|
|
731
|
-
|
|
822
|
+
font-weight: 700;
|
|
823
|
+
font-size: 11px;
|
|
824
|
+
letter-spacing: 0.14em;
|
|
825
|
+
text-transform: uppercase;
|
|
826
|
+
color: var(--strudel-silk);
|
|
732
827
|
}
|
|
733
828
|
|
|
829
|
+
/* Backlit rubber pads. */
|
|
734
830
|
.strudel-device__toggle {
|
|
735
|
-
width:
|
|
736
|
-
height:
|
|
737
|
-
border:
|
|
738
|
-
border-radius:
|
|
739
|
-
background:
|
|
740
|
-
|
|
831
|
+
width: 26px;
|
|
832
|
+
height: 20px;
|
|
833
|
+
border: 0;
|
|
834
|
+
border-radius: 4px;
|
|
835
|
+
background: linear-gradient(180deg, #4a4e56, #2b2e34);
|
|
836
|
+
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.18), 0 2px 0 #0d0e10, 0 3px 4px rgb(0 0 0 / 0.5);
|
|
837
|
+
color: #9aa0a9;
|
|
741
838
|
font: inherit;
|
|
742
|
-
font-size:
|
|
743
|
-
font-weight:
|
|
839
|
+
font-size: 10px;
|
|
840
|
+
font-weight: 800;
|
|
744
841
|
cursor: pointer;
|
|
842
|
+
transition: transform 60ms, box-shadow 60ms;
|
|
745
843
|
}
|
|
746
844
|
|
|
747
|
-
.strudel-device__toggle
|
|
748
|
-
|
|
845
|
+
.strudel-device__toggle:active {
|
|
846
|
+
transform: translateY(2px);
|
|
847
|
+
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.12), 0 0 0 #0d0e10, 0 1px 2px rgb(0 0 0 / 0.5);
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
.strudel-device__toggle[data-kind="mute"][aria-pressed="true"] {
|
|
851
|
+
background: linear-gradient(180deg, #ffc266, var(--strudel-amber));
|
|
852
|
+
color: #3a1d00;
|
|
853
|
+
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.5), 0 2px 0 #7a4300, 0 0 12px color-mix(in srgb, var(--strudel-amber) 70%, transparent);
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
.strudel-device__toggle[data-kind="solo"][aria-pressed="true"] {
|
|
857
|
+
background: linear-gradient(180deg, #a6f0ff, var(--strudel-accent));
|
|
858
|
+
color: #002a36;
|
|
859
|
+
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.5), 0 2px 0 #00657d, 0 0 12px color-mix(in srgb, var(--strudel-accent) 70%, transparent);
|
|
860
|
+
}
|
|
749
861
|
|
|
750
862
|
.strudel-device__body {
|
|
751
863
|
display: flex;
|
|
752
|
-
gap:
|
|
753
|
-
padding:
|
|
864
|
+
gap: 14px;
|
|
865
|
+
padding: 12px 18px 16px;
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
.strudel-device[data-audible="false"] .strudel-device__main {
|
|
869
|
+
filter: saturate(0.2) brightness(0.7);
|
|
754
870
|
}
|
|
755
871
|
|
|
756
872
|
.strudel-device__main {
|
|
@@ -758,38 +874,57 @@
|
|
|
758
874
|
min-width: 0;
|
|
759
875
|
display: flex;
|
|
760
876
|
flex-direction: column;
|
|
761
|
-
gap:
|
|
877
|
+
gap: 10px;
|
|
762
878
|
}
|
|
763
879
|
|
|
764
880
|
.strudel-device__selects {
|
|
765
881
|
display: flex;
|
|
766
882
|
flex-wrap: wrap;
|
|
767
|
-
|
|
883
|
+
align-items: center;
|
|
884
|
+
gap: 4px 16px;
|
|
885
|
+
align-self: flex-start;
|
|
768
886
|
}
|
|
769
887
|
|
|
770
888
|
.strudel-device__selects label {
|
|
771
889
|
display: inline-flex;
|
|
772
890
|
align-items: center;
|
|
773
891
|
gap: 6px;
|
|
774
|
-
|
|
892
|
+
font-size: 9px;
|
|
893
|
+
letter-spacing: 0.18em;
|
|
894
|
+
text-transform: uppercase;
|
|
895
|
+
opacity: 0.85;
|
|
775
896
|
}
|
|
776
897
|
|
|
777
|
-
.strudel-device__selects select
|
|
778
|
-
|
|
898
|
+
.strudel-device__selects select {
|
|
899
|
+
appearance: none;
|
|
900
|
+
padding: 0 2px;
|
|
901
|
+
border: 0;
|
|
902
|
+
background: transparent;
|
|
903
|
+
color: var(--strudel-lcd);
|
|
779
904
|
font: inherit;
|
|
780
|
-
font-size:
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
905
|
+
font-size: 13px;
|
|
906
|
+
letter-spacing: 0.04em;
|
|
907
|
+
text-transform: none;
|
|
908
|
+
text-shadow: inherit;
|
|
909
|
+
cursor: pointer;
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
.strudel-device__selects select:focus-visible {
|
|
913
|
+
outline: 1px solid var(--strudel-lcd);
|
|
914
|
+
border-radius: 2px;
|
|
915
|
+
}
|
|
916
|
+
|
|
917
|
+
.strudel-device__selects option,
|
|
918
|
+
.strudel-device__add option {
|
|
919
|
+
background: #111;
|
|
920
|
+
color: #eee;
|
|
786
921
|
}
|
|
787
922
|
|
|
788
923
|
.strudel-device__knobs {
|
|
789
924
|
display: flex;
|
|
790
925
|
flex-wrap: wrap;
|
|
791
926
|
align-items: flex-start;
|
|
792
|
-
gap:
|
|
927
|
+
gap: 6px 10px;
|
|
793
928
|
}
|
|
794
929
|
|
|
795
930
|
.strudel-device__knob {
|
|
@@ -798,8 +933,8 @@
|
|
|
798
933
|
|
|
799
934
|
.strudel-device__remove {
|
|
800
935
|
position: absolute;
|
|
801
|
-
top:
|
|
802
|
-
right:
|
|
936
|
+
top: 0;
|
|
937
|
+
right: 0;
|
|
803
938
|
display: none;
|
|
804
939
|
place-items: center;
|
|
805
940
|
width: 14px;
|
|
@@ -807,8 +942,8 @@
|
|
|
807
942
|
padding: 0;
|
|
808
943
|
border: 0;
|
|
809
944
|
border-radius: 999px;
|
|
810
|
-
background: var(--
|
|
811
|
-
color:
|
|
945
|
+
background: var(--strudel-red);
|
|
946
|
+
color: #fff;
|
|
812
947
|
cursor: pointer;
|
|
813
948
|
}
|
|
814
949
|
|
|
@@ -818,126 +953,186 @@
|
|
|
818
953
|
}
|
|
819
954
|
|
|
820
955
|
.strudel-device__add {
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
align-self:
|
|
825
|
-
|
|
956
|
+
position: relative;
|
|
957
|
+
display: inline-grid;
|
|
958
|
+
place-items: center;
|
|
959
|
+
align-self: flex-start;
|
|
960
|
+
width: 40px;
|
|
961
|
+
height: 40px;
|
|
962
|
+
margin-top: 6px;
|
|
963
|
+
border-radius: 999px;
|
|
964
|
+
border: 1px dashed #5d626b;
|
|
965
|
+
color: #8b9099;
|
|
826
966
|
}
|
|
827
967
|
|
|
968
|
+
.strudel-device__add select {
|
|
969
|
+
position: absolute;
|
|
970
|
+
inset: 0;
|
|
971
|
+
opacity: 0;
|
|
972
|
+
cursor: pointer;
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
.strudel-device__add:focus-within {
|
|
976
|
+
outline: 2px solid var(--strudel-accent);
|
|
977
|
+
outline-offset: 2px;
|
|
978
|
+
}
|
|
979
|
+
|
|
980
|
+
/* Knob: LED ring, rubber skirt, machined cap. */
|
|
828
981
|
.strudel-knob {
|
|
829
982
|
display: flex;
|
|
830
983
|
flex-direction: column;
|
|
831
984
|
align-items: center;
|
|
832
|
-
width:
|
|
985
|
+
width: 58px;
|
|
833
986
|
user-select: none;
|
|
834
987
|
}
|
|
835
988
|
|
|
836
989
|
.strudel-knob__dial {
|
|
837
|
-
width:
|
|
838
|
-
height:
|
|
990
|
+
width: 52px;
|
|
991
|
+
height: 52px;
|
|
839
992
|
border-radius: 999px;
|
|
840
993
|
cursor: ns-resize;
|
|
841
994
|
touch-action: none;
|
|
842
995
|
}
|
|
843
996
|
|
|
997
|
+
.strudel-knob[data-size="lg"] {
|
|
998
|
+
width: 70px;
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
.strudel-knob[data-size="lg"] .strudel-knob__dial {
|
|
1002
|
+
width: 64px;
|
|
1003
|
+
height: 64px;
|
|
1004
|
+
}
|
|
1005
|
+
|
|
844
1006
|
.strudel-knob__dial:focus-visible,
|
|
845
1007
|
.strudel-fader__track:focus-visible {
|
|
846
|
-
outline: 2px solid var(--strudel-accent
|
|
1008
|
+
outline: 2px solid var(--strudel-accent);
|
|
847
1009
|
outline-offset: 2px;
|
|
848
1010
|
}
|
|
849
1011
|
|
|
850
|
-
.strudel-knob__dial svg { width: 100%; height: 100%; display: block; }
|
|
851
|
-
.strudel-
|
|
852
|
-
.strudel-
|
|
853
|
-
.strudel-
|
|
854
|
-
.strudel-
|
|
1012
|
+
.strudel-knob__dial svg { width: 100%; height: 100%; display: block; overflow: visible; }
|
|
1013
|
+
.strudel-knob__led { fill: #2a2d33; stroke: rgb(0 0 0 / 0.6); stroke-width: 0.5; }
|
|
1014
|
+
.strudel-knob__led[data-on] { fill: var(--strudel-key, var(--strudel-accent)); filter: drop-shadow(0 0 1.6px var(--strudel-key, var(--strudel-accent))); }
|
|
1015
|
+
.strudel-knob__shadow { fill: rgb(0 0 0 / 0.55); filter: blur(1.4px); }
|
|
1016
|
+
.strudel-knob__skirt { stroke: #050506; stroke-width: 0.8; }
|
|
1017
|
+
.strudel-knob__ridge { stroke: rgb(255 255 255 / 0.12); stroke-width: 1.2; stroke-linecap: round; }
|
|
1018
|
+
.strudel-knob__cap { stroke: rgb(0 0 0 / 0.5); stroke-width: 0.6; }
|
|
1019
|
+
.strudel-knob__brush { fill: none; stroke: rgb(255 255 255 / 0.35); stroke-width: 0.5; stroke-dasharray: 0.6 1.4; }
|
|
1020
|
+
.strudel-knob__pointer { stroke: #111; stroke-width: 2.4; stroke-linecap: round; }
|
|
855
1021
|
|
|
856
1022
|
.strudel-knob__value,
|
|
857
1023
|
.strudel-fader__value {
|
|
1024
|
+
font-family: "SF Mono", ui-monospace, Menlo, monospace;
|
|
858
1025
|
font-variant-numeric: tabular-nums;
|
|
859
|
-
font-size:
|
|
860
|
-
line-height: 1.
|
|
1026
|
+
font-size: 10px;
|
|
1027
|
+
line-height: 1.5;
|
|
1028
|
+
color: #fff;
|
|
861
1029
|
}
|
|
862
1030
|
|
|
863
1031
|
.strudel-knob__label,
|
|
864
1032
|
.strudel-fader__label {
|
|
865
|
-
font-size:
|
|
866
|
-
|
|
1033
|
+
font-size: 8.5px;
|
|
1034
|
+
font-weight: 700;
|
|
1035
|
+
color: var(--strudel-silk);
|
|
867
1036
|
text-transform: uppercase;
|
|
868
|
-
letter-spacing: 0.
|
|
1037
|
+
letter-spacing: 0.16em;
|
|
869
1038
|
white-space: nowrap;
|
|
870
1039
|
}
|
|
871
1040
|
|
|
872
1041
|
.strudel-knob[data-disabled] .strudel-knob__dial,
|
|
873
1042
|
.strudel-fader[data-disabled] .strudel-fader__track {
|
|
874
1043
|
cursor: not-allowed;
|
|
875
|
-
opacity: 0.6;
|
|
876
1044
|
}
|
|
877
1045
|
|
|
1046
|
+
.strudel-knob[data-disabled] .strudel-knob__value {
|
|
1047
|
+
color: var(--strudel-accent);
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
/* Channel fader: tick scale, slotted track, chunky ribbed cap. */
|
|
878
1051
|
.strudel-fader {
|
|
879
1052
|
display: flex;
|
|
880
1053
|
flex-direction: column;
|
|
881
1054
|
align-items: center;
|
|
882
1055
|
gap: 4px;
|
|
883
|
-
width: 36px;
|
|
884
1056
|
user-select: none;
|
|
885
1057
|
}
|
|
886
1058
|
|
|
1059
|
+
.strudel-fader__body {
|
|
1060
|
+
display: flex;
|
|
1061
|
+
gap: 4px;
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
.strudel-fader__scale {
|
|
1065
|
+
display: flex;
|
|
1066
|
+
flex-direction: column;
|
|
1067
|
+
justify-content: space-between;
|
|
1068
|
+
padding: 8px 0;
|
|
1069
|
+
font-size: 7px;
|
|
1070
|
+
line-height: 1;
|
|
1071
|
+
color: #8b9099;
|
|
1072
|
+
text-align: right;
|
|
1073
|
+
}
|
|
1074
|
+
|
|
887
1075
|
.strudel-fader__track {
|
|
888
1076
|
position: relative;
|
|
889
|
-
width:
|
|
890
|
-
height:
|
|
891
|
-
border-radius: 999px;
|
|
892
|
-
background: var(--gb-border);
|
|
1077
|
+
width: 26px;
|
|
1078
|
+
height: 118px;
|
|
893
1079
|
cursor: ns-resize;
|
|
894
1080
|
touch-action: none;
|
|
1081
|
+
border-radius: 4px;
|
|
1082
|
+
background: repeating-linear-gradient(180deg, transparent 0 9px, rgb(255 255 255 / 0.12) 9px 10px) 0 6px / 5px calc(100% - 12px) no-repeat,
|
|
1083
|
+
repeating-linear-gradient(180deg, transparent 0 9px, rgb(255 255 255 / 0.12) 9px 10px) 100% 6px / 5px calc(100% - 12px) no-repeat;
|
|
895
1084
|
}
|
|
896
1085
|
|
|
897
|
-
.strudel-
|
|
1086
|
+
.strudel-fader__slot {
|
|
898
1087
|
position: absolute;
|
|
899
|
-
inset:
|
|
900
|
-
border-radius:
|
|
901
|
-
background:
|
|
1088
|
+
inset: 4px calc(50% - 2.5px);
|
|
1089
|
+
border-radius: 3px;
|
|
1090
|
+
background: #050506;
|
|
1091
|
+
box-shadow: inset 0 1px 2px rgb(0 0 0 / 0.9), 0 1px 0 rgb(255 255 255 / 0.1);
|
|
902
1092
|
}
|
|
903
1093
|
|
|
904
|
-
.strudel-
|
|
1094
|
+
.strudel-fader__cap {
|
|
905
1095
|
position: absolute;
|
|
906
|
-
left:
|
|
907
|
-
|
|
908
|
-
height:
|
|
1096
|
+
left: 1px;
|
|
1097
|
+
right: 1px;
|
|
1098
|
+
height: 22px;
|
|
909
1099
|
border-radius: 3px;
|
|
910
|
-
background:
|
|
911
|
-
|
|
912
|
-
|
|
1100
|
+
background:
|
|
1101
|
+
linear-gradient(180deg, transparent 10px, #fff 10px 12px, transparent 12px),
|
|
1102
|
+
repeating-linear-gradient(180deg, rgb(0 0 0 / 0.25) 0 1px, transparent 1px 3px),
|
|
1103
|
+
linear-gradient(180deg, #a3a8b1, #5b6069 48%, #3e4249 52%, #7c818a);
|
|
1104
|
+
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.5), 0 3px 5px rgb(0 0 0 / 0.7), 0 0 0 1px rgb(0 0 0 / 0.6);
|
|
913
1105
|
}
|
|
914
1106
|
|
|
915
|
-
/*
|
|
1107
|
+
/* Steps: TR-style keys that light up. */
|
|
916
1108
|
.strudel-steps {
|
|
917
1109
|
display: flex;
|
|
918
1110
|
flex-direction: column;
|
|
919
1111
|
gap: 4px;
|
|
920
|
-
padding
|
|
1112
|
+
padding: 8px;
|
|
1113
|
+
border-radius: 5px;
|
|
1114
|
+
background: rgb(0 0 0 / 0.35);
|
|
1115
|
+
box-shadow: inset 0 1px 3px rgb(0 0 0 / 0.8), 0 1px 0 rgb(255 255 255 / 0.06);
|
|
921
1116
|
overflow-x: auto;
|
|
922
1117
|
}
|
|
923
1118
|
|
|
924
1119
|
.strudel-step__layers {
|
|
925
1120
|
display: flex;
|
|
926
1121
|
flex-direction: column;
|
|
927
|
-
gap:
|
|
1122
|
+
gap: 4px;
|
|
928
1123
|
flex: 1;
|
|
929
1124
|
}
|
|
930
1125
|
|
|
931
1126
|
.strudel-step__row {
|
|
932
1127
|
display: flex;
|
|
933
|
-
gap:
|
|
1128
|
+
gap: 4px;
|
|
934
1129
|
min-width: 0;
|
|
935
1130
|
}
|
|
936
1131
|
|
|
937
1132
|
.strudel-step {
|
|
938
1133
|
position: relative;
|
|
939
1134
|
flex: 1 1 0;
|
|
940
|
-
min-width:
|
|
1135
|
+
min-width: 20px;
|
|
941
1136
|
display: flex;
|
|
942
1137
|
}
|
|
943
1138
|
|
|
@@ -945,48 +1140,75 @@
|
|
|
945
1140
|
.strudel-step__input {
|
|
946
1141
|
flex: 1;
|
|
947
1142
|
min-width: 0;
|
|
948
|
-
height:
|
|
1143
|
+
height: 30px;
|
|
949
1144
|
padding: 0 3px;
|
|
950
|
-
border:
|
|
951
|
-
border-radius:
|
|
952
|
-
font:
|
|
953
|
-
font-size:
|
|
954
|
-
font-
|
|
1145
|
+
border: 0;
|
|
1146
|
+
border-radius: 3px;
|
|
1147
|
+
font-family: "SF Mono", ui-monospace, Menlo, monospace;
|
|
1148
|
+
font-size: 10px;
|
|
1149
|
+
font-weight: 600;
|
|
955
1150
|
overflow: hidden;
|
|
956
1151
|
text-overflow: ellipsis;
|
|
957
1152
|
white-space: nowrap;
|
|
958
1153
|
}
|
|
959
1154
|
|
|
960
1155
|
.strudel-step__cell {
|
|
961
|
-
|
|
962
|
-
|
|
1156
|
+
position: relative;
|
|
1157
|
+
padding-top: 7px;
|
|
1158
|
+
color: #1a0d00;
|
|
963
1159
|
cursor: pointer;
|
|
1160
|
+
background: linear-gradient(180deg, color-mix(in srgb, var(--strudel-key) 70%, #fff), var(--strudel-key) 55%, color-mix(in srgb, var(--strudel-key) 75%, #000));
|
|
1161
|
+
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.55), 0 2px 0 rgb(0 0 0 / 0.75), 0 0 10px color-mix(in srgb, var(--strudel-key) 45%, transparent);
|
|
1162
|
+
transition: transform 50ms, box-shadow 50ms;
|
|
964
1163
|
}
|
|
965
1164
|
|
|
966
|
-
|
|
967
|
-
|
|
1165
|
+
/* The key's LED. */
|
|
1166
|
+
.strudel-step__cell::before {
|
|
1167
|
+
content: "";
|
|
1168
|
+
position: absolute;
|
|
1169
|
+
top: 4px;
|
|
1170
|
+
left: 50%;
|
|
1171
|
+
width: 10px;
|
|
1172
|
+
height: 3px;
|
|
1173
|
+
margin-left: -5px;
|
|
1174
|
+
border-radius: 2px;
|
|
1175
|
+
background: #fff;
|
|
1176
|
+
box-shadow: 0 0 5px #fff;
|
|
968
1177
|
}
|
|
969
1178
|
|
|
970
1179
|
.strudel-step__cell[data-rest] {
|
|
971
|
-
|
|
972
|
-
|
|
1180
|
+
color: transparent;
|
|
1181
|
+
background: linear-gradient(180deg, #4b4f57, #34373d 55%, #26282d);
|
|
1182
|
+
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.16), 0 2px 0 rgb(0 0 0 / 0.75);
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
.strudel-step__cell[data-rest]::before {
|
|
1186
|
+
background: #1a1b1e;
|
|
1187
|
+
box-shadow: inset 0 0 1px #000;
|
|
973
1188
|
}
|
|
974
1189
|
|
|
975
|
-
.strudel-step__cell:
|
|
976
|
-
|
|
1190
|
+
.strudel-step__cell:active {
|
|
1191
|
+
transform: translateY(2px);
|
|
1192
|
+
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.3), 0 0 0 rgb(0 0 0 / 0.75);
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1195
|
+
.strudel-step__cell:focus-visible,
|
|
1196
|
+
.strudel-step__input:focus-visible {
|
|
1197
|
+
outline: 2px solid #fff;
|
|
1198
|
+
outline-offset: 1px;
|
|
977
1199
|
}
|
|
978
1200
|
|
|
979
1201
|
.strudel-step__input {
|
|
980
|
-
background:
|
|
981
|
-
color:
|
|
1202
|
+
background: #0c1a10;
|
|
1203
|
+
color: var(--strudel-lcd);
|
|
982
1204
|
}
|
|
983
1205
|
|
|
984
1206
|
.strudel-step__nest {
|
|
985
1207
|
flex: 1;
|
|
986
1208
|
display: flex;
|
|
987
|
-
padding:
|
|
988
|
-
border:
|
|
989
|
-
|
|
1209
|
+
padding: 3px;
|
|
1210
|
+
border-radius: 4px;
|
|
1211
|
+
box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.12);
|
|
990
1212
|
}
|
|
991
1213
|
|
|
992
1214
|
.strudel-step__nest > .strudel-step__row {
|
|
@@ -994,7 +1216,7 @@
|
|
|
994
1216
|
}
|
|
995
1217
|
|
|
996
1218
|
.strudel-step__nest[data-kind="alternation"] {
|
|
997
|
-
|
|
1219
|
+
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--strudel-key) 45%, transparent);
|
|
998
1220
|
}
|
|
999
1221
|
|
|
1000
1222
|
.strudel-step__nest[data-kind="alternation"] > .strudel-step__layers > .strudel-step__row {
|
|
@@ -1006,14 +1228,20 @@
|
|
|
1006
1228
|
top: -6px;
|
|
1007
1229
|
right: 2px;
|
|
1008
1230
|
padding: 0 3px;
|
|
1009
|
-
border-radius:
|
|
1010
|
-
background:
|
|
1011
|
-
|
|
1012
|
-
|
|
1231
|
+
border-radius: 3px;
|
|
1232
|
+
background: #000;
|
|
1233
|
+
box-shadow: 0 0 0 1px rgb(255 255 255 / 0.2);
|
|
1234
|
+
color: var(--strudel-lcd);
|
|
1235
|
+
font-family: "SF Mono", ui-monospace, Menlo, monospace;
|
|
1236
|
+
font-size: 8px;
|
|
1013
1237
|
line-height: 12px;
|
|
1014
1238
|
pointer-events: none;
|
|
1015
1239
|
}
|
|
1016
1240
|
|
|
1241
|
+
.strudel-steps {
|
|
1242
|
+
padding-top: 10px;
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1017
1245
|
.docs-content-ref {
|
|
1018
1246
|
display: flex !important;
|
|
1019
1247
|
align-items: center;
|