@sylwellsoftware/fray 1.1.1 → 1.3.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.
Files changed (45) hide show
  1. package/README.md +102 -25
  2. package/dist/Components/app/app.d.ts +38 -0
  3. package/dist/Components/app/app.d.ts.map +1 -0
  4. package/dist/Components/component.d.ts +33 -1
  5. package/dist/Components/component.d.ts.map +1 -1
  6. package/dist/Components/data/descriptionList.d.ts.map +1 -1
  7. package/dist/Components/data/treeview/treeview.d.ts.map +1 -1
  8. package/dist/Components/dialog/dialog.d.ts.map +1 -1
  9. package/dist/Components/layout/groupPanel.d.ts.map +1 -1
  10. package/dist/Components/layout/header.d.ts.map +1 -1
  11. package/dist/Components/layout/optionGroup.d.ts +23 -0
  12. package/dist/Components/layout/optionGroup.d.ts.map +1 -0
  13. package/dist/Components/layout/optionsPanel.d.ts +12 -0
  14. package/dist/Components/layout/optionsPanel.d.ts.map +1 -0
  15. package/dist/Components/layout/panel.d.ts.map +1 -1
  16. package/dist/Components/layout/routedSelection.d.ts +10 -0
  17. package/dist/Components/layout/routedSelection.d.ts.map +1 -0
  18. package/dist/Components/layout/sidebar.d.ts.map +1 -1
  19. package/dist/Components/layout/splitView.d.ts.map +1 -1
  20. package/dist/Components/layout/tabpanel/tabpanel.d.ts +5 -3
  21. package/dist/Components/layout/tabpanel/tabpanel.d.ts.map +1 -1
  22. package/dist/Components/lineinputs/CheckableControl.d.ts.map +1 -1
  23. package/dist/Components/lineinputs/dropdown.d.ts.map +1 -1
  24. package/dist/Components/lineinputs/radio.d.ts.map +1 -1
  25. package/dist/Components/lineinputs/toggle.d.ts.map +1 -1
  26. package/dist/Components/navigation/navigationBar.d.ts +30 -0
  27. package/dist/Components/navigation/navigationBar.d.ts.map +1 -0
  28. package/dist/Components/status/progressBar.d.ts.map +1 -1
  29. package/dist/index.d.ts +7 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +1998 -1489
  32. package/dist/index.js.map +1 -1
  33. package/dist/{jsx-dev-runtime-8s_xIag_.js → jsx-dev-runtime-o0oiA-6O.js} +13 -2
  34. package/dist/jsx-dev-runtime-o0oiA-6O.js.map +1 -0
  35. package/dist/jsx-dev-runtime.js +1 -1
  36. package/dist/jsx-runtime.js +1 -1
  37. package/dist/routing/RouteOutlet.d.ts +38 -0
  38. package/dist/routing/RouteOutlet.d.ts.map +1 -0
  39. package/dist/styling/theme.d.ts.map +1 -1
  40. package/package.json +16 -14
  41. package/styles/structural.css +131 -15
  42. package/themes/base.css +31 -4
  43. package/themes/java/theme.css +3 -0
  44. package/themes/shiny/theme.css +26 -3
  45. package/dist/jsx-dev-runtime-8s_xIag_.js.map +0 -1
@@ -4,6 +4,7 @@
4
4
  .fray-fill-vertical {
5
5
  box-sizing: border-box;
6
6
  background: var(--application-background);
7
+ color: var(--ui-color);
7
8
  font-family: var(--font-family);
8
9
  font-size: var(--font-size);
9
10
  line-height: var(--line-height);
@@ -24,8 +25,18 @@
24
25
  }
25
26
 
26
27
  .colored {
27
- background: linear-gradient(15deg, var(--c1) 0%, var(--c2) 65%, var(--c2) 65%, var(--c3) 100%);
28
+ --colored-base-bg:
29
+ linear-gradient(
30
+ 15deg,
31
+ var(--c1) 0%,
32
+ var(--c2) 65%,
33
+ var(--c2) 65%,
34
+ var(--c3) 100%
35
+ );
36
+
37
+ background: var(--colored-base-bg);
28
38
  box-shadow: var(--colored-shadow);
39
+ border-radius: var(--ui-border-radius);
29
40
  }
30
41
 
31
42
  .island {
@@ -99,6 +110,7 @@ fray-quadcheckbox,
99
110
  fray-tricheckbox {
100
111
  display: inline-flex;
101
112
  line-height: 1;
113
+ height: 1.4em;
102
114
  }
103
115
 
104
116
  fray-checkbox > label,
@@ -621,15 +633,24 @@ fray-dialog > dialog {
621
633
  }
622
634
  }
623
635
 
636
+ fray-app {
637
+ box-sizing: border-box;
638
+ display: block;
639
+ background: var(--application-background);
640
+ color: var(--ui-color);
641
+ font-family: var(--font-family);
642
+ font-size: var(--font-size);
643
+ line-height: var(--line-height);
644
+ }
645
+
624
646
  fray-grouppanel {
625
- display: grid;
626
- grid-template-columns: 1.5rem minmax(0, 1fr);
647
+ display: flex;
648
+ flex-flow: row nowrap;
627
649
  align-items: stretch;
628
650
  box-sizing: border-box;
629
651
  min-width: 0;
630
652
  min-height: 0;
631
653
  column-gap: 0.35rem;
632
- row-gap: 0;
633
654
  padding-block: 0.125rem;
634
655
  padding-inline: 0.125rem 0.35rem;
635
656
  border: 1px solid var(--ui-border-color);
@@ -640,29 +661,22 @@ fray-grouppanel {
640
661
  display: grid;
641
662
  place-items: center;
642
663
  box-sizing: border-box;
643
- width: 100%;
664
+ width: 1.7em;
644
665
  min-width: 0;
645
666
  min-height: 0;
646
667
  padding: 0.125em;
647
668
  border-radius: var(--ui-border-radius);
648
- }
649
-
650
- fray-grouppanel > fray-header > h1,
651
- fray-grouppanel > fray-header > h2,
652
- fray-grouppanel > fray-header > h3,
653
- fray-grouppanel > fray-header > h4,
654
- fray-grouppanel > fray-header > h5,
655
- fray-grouppanel > fray-header > h6 {
656
- font-weight: 650;
657
- white-space: nowrap;
658
669
  writing-mode: vertical-rl;
659
670
  transform: rotate(180deg);
671
+ font-weight: normal;
672
+ font-size: var(--ui-font-size);
660
673
  }
661
674
 
662
675
  fray-grouppanel > fray-content {
663
676
  display: block;
664
677
  min-width: 0;
665
678
  min-height: 0;
679
+ margin-left: .25em;
666
680
  }
667
681
 
668
682
  fray-header {
@@ -738,6 +752,86 @@ fray-listview {
738
752
  padding: var(--ui-padding);
739
753
  }
740
754
 
755
+ fray-navigationbar {
756
+ display: block;
757
+ flex: 0 0 auto;
758
+ min-width: 0;
759
+ color: var(--navigation-bar-color);
760
+ background: var(--navigation-bar-background);
761
+ border: var(--navigation-bar-border);
762
+ box-shadow: var(--navigation-bar-shadow);
763
+ }
764
+
765
+ fray-navigationbar > nav,
766
+ fray-navigationbar > nav > ul {
767
+ min-width: 0;
768
+ }
769
+
770
+ fray-navigationbar > nav > ul {
771
+ display: flex;
772
+ flex-flow: row wrap;
773
+ gap: var(--navigation-bar-gap);
774
+
775
+ align-items: center;
776
+ justify-content: center;
777
+ margin: 0;
778
+ padding: var(--navigation-bar-padding);
779
+ list-style: none;
780
+ }
781
+
782
+ fray-navigationbar > nav > ul > li {
783
+ display: flex;
784
+ }
785
+
786
+ fray-navigationbar > nav > ul > li > a,
787
+ fray-navigationbar > nav > ul > li > span[aria-disabled="true"] {
788
+ display: inline-flex;
789
+ align-items: center;
790
+ min-height: var(--control-min-height, 2rem);
791
+ padding: var(--navigation-link-padding);
792
+ box-sizing: border-box;
793
+ color: var(--navigation-link-color);
794
+ background: var(--navigation-link-background);
795
+ border: var(--navigation-link-border);
796
+ border-radius: var(--navigation-link-radius);
797
+ box-shadow: var(--navigation-link-shadow);
798
+ font-family: inherit;
799
+ font-size: 1.1rem;
800
+ line-height: calc(var(--ui-font-size) + var(--ui-padding) + var(--ui-padding));
801
+ text-decoration: none;
802
+ white-space: nowrap;
803
+ }
804
+
805
+ fray-navigationbar > nav > ul > li > a:hover {
806
+ color: var(--navigation-link-color-hover);
807
+ background: var(--navigation-link-background-hover);
808
+ }
809
+
810
+ fray-navigationbar > nav > ul > li > a:active {
811
+ color: var(--navigation-link-color-active);
812
+ background: var(--navigation-link-background-active);
813
+ }
814
+
815
+ fray-navigationbar > nav > ul > li > a[aria-current="page"] {
816
+ color: var(--navigation-link-color-current);
817
+ background: var(--navigation-link-background-current);
818
+ box-shadow: var(--navigation-link-shadow-current);
819
+ font-weight: var(--navigation-link-font-weight-current);
820
+ }
821
+
822
+ fray-navigationbar > nav > ul > li > a:focus-visible {
823
+ outline: 2px solid transparent;
824
+ outline-offset: 1px;
825
+ box-shadow: var(--focus-ring);
826
+ }
827
+
828
+ fray-navigationbar > nav > ul > li > span[aria-disabled="true"] {
829
+ color: var(--navigation-link-color-disabled);
830
+ background: var(--navigation-link-background-disabled);
831
+ border: var(--navigation-link-border);
832
+ cursor: not-allowed;
833
+ }
834
+
741
835
  fray-panel {
742
836
  background: var(--panel-background);
743
837
  border: var(--panel-border);
@@ -880,6 +974,28 @@ fray-progressbar {
880
974
  }
881
975
  }
882
976
 
977
+ fray-routeoutlet {
978
+ display: flex;
979
+ flex: 1 1 auto;
980
+ flex-direction: column;
981
+ min-width: 0;
982
+ min-height: 0;
983
+ overflow: hidden;
984
+ }
985
+
986
+ fray-routeoutlet > div {
987
+ display: flex;
988
+ flex: 1 1 auto;
989
+ flex-direction: column;
990
+ min-width: 0;
991
+ min-height: 0;
992
+ overflow: auto;
993
+ }
994
+
995
+ fray-routeoutlet > div[hidden] {
996
+ display: none;
997
+ }
998
+
883
999
  fray-sidebar {
884
1000
  display: flex;
885
1001
  min-width: 0;
package/themes/base.css CHANGED
@@ -70,8 +70,8 @@
70
70
  @layer theme {
71
71
  :root {
72
72
  /* Foundation */
73
- --font-family: sans-serif;
74
- --font-size: 14px;
73
+ --font-family: Helvetica, sans-serif;
74
+ --font-size: 12px;
75
75
  --line-height: normal;
76
76
  --control-min-height: calc(var(--ui-font-size) + var(--ui-padding) + var(--ui-padding));
77
77
  --space-xs: 0px;
@@ -209,6 +209,29 @@
209
209
  --toggle-inactive-separator-block-inset: 0;
210
210
 
211
211
  /* Navigation components */
212
+ --navigation-bar-background: transparent;
213
+ --navigation-bar-color: var(--ui-color);
214
+ --navigation-bar-border: 0 solid transparent;
215
+ --navigation-bar-shadow: none;
216
+ --navigation-bar-padding: var(--space-sm);
217
+ --navigation-bar-gap: var(--space-md);
218
+ --navigation-link-color: var(--palette-primary-700);
219
+ --navigation-link-color-hover: var(--palette-primary-900);
220
+ --navigation-link-color-active: var(--palette-primary-900);
221
+ --navigation-link-color-current: var(--ui-color);
222
+ --navigation-link-color-disabled: var(--input-color-disabled);
223
+ --navigation-link-background: transparent;
224
+ --navigation-link-background-hover: var(--palette-primary-100);
225
+ --navigation-link-background-active: var(--palette-primary-100);
226
+ --navigation-link-background-current: transparent;
227
+ --navigation-link-background-disabled: transparent;
228
+ --navigation-link-border: 0 solid transparent;
229
+ --navigation-link-border-current: 2px solid var(--palette-primary);
230
+ --navigation-link-shadow: none;
231
+ --navigation-link-shadow-current: none;
232
+ --navigation-link-padding: var(--space-xs) var(--space-sm);
233
+ --navigation-link-radius: var(--radius-sm);
234
+ --navigation-link-font-weight-current: 700;
212
235
  --tabline-background: var(--palette-neutral-100);
213
236
  --tabline-padding-inline-start: 0px;
214
237
  --tab-active-background: var(--palette-neutral-50);
@@ -239,12 +262,16 @@
239
262
  --colored-dark: var(--palette-primary-dark);
240
263
  --colored-contrast: var(--palette-contrast-light);
241
264
  --colored-shadow: none;
265
+ --c1: unset;
266
+ --c2: unset;
267
+ --c3: unset;
268
+ --colored-base-bg: linear-gradient(15deg, var(--c1) 0%, var(--c2) 65%, var(--c2) 65%, var(--c3) 100%);
242
269
  --block-graph-block-radius: 0.25em;
243
270
  --block-graph-block-shadow: var(--colored-shadow);
244
271
 
245
272
  /* Structural compatibility aliases */
246
- --base-font-size: 14px;
247
- --ui-font-size: var(--base-font-size);
273
+ --base-font-size: var(--base-font-size);
274
+ --ui-font-size: var(--font-size);
248
275
  --ui-padding: 6px;
249
276
  --ui-padding-h: 6px;
250
277
  --ui-padding-v: 0px;
@@ -12,6 +12,9 @@
12
12
  --button-border: 2px outset var(--palette-light);
13
13
  --input-shadow: inset 1px 1px 1px color-mix(in oklch, var(--palette-dark) 30%, transparent);
14
14
  --toolbar-border: 2px outset var(--palette-light);
15
+ --navigation-bar-border: 2px outset var(--palette-light);
16
+ --navigation-link-border: 1px outset var(--palette-light);
17
+ --navigation-link-border-current: 1px inset var(--palette-dark);
15
18
  --working-background-image: repeating-linear-gradient(135deg, transparent 0 4px, color-mix(in oklch, var(--palette-dark) 12%, transparent) 4px 8px);
16
19
  --button-border-style-active: inset;
17
20
  }
@@ -2,6 +2,8 @@
2
2
  /* Shiny changes theme tokens only. Components own all consuming selectors. */
3
3
  @layer theme {
4
4
  :root {
5
+ --base-font-size: 14px;
6
+
5
7
  /* Foundation and shared chrome */
6
8
  color-scheme: only light;
7
9
  --box-shadow: -1px 1px 2px 1px rgba(0,0,0,0.3);
@@ -11,6 +13,7 @@
11
13
  --ui-gradient-2: linear-gradient( to bottom, var(--ui-primary-bg-color) 9px, var(--ui-primary-bg-color) 13px, var(--ui-dark-bg-color) 100% );
12
14
  --shiny-ui-gradient: var(--ui-gradient);
13
15
  --shiny-ui-gradient-2: var(--ui-gradient-2);
16
+ --shiny-background: radial-gradient(140% 75% at 30% 10%, #fff2, #fff3 47%, #fff0 55%, #fff0), linear-gradient(to bottom, var(--palette-primary-900) 0%, var(--palette-primary) 65%, var(--palette-primary) 66%, var(--palette-primary-400) 100%);
14
17
  --text-color: var(--palette-primary-900);
15
18
  --ui-color: var(--text-color);
16
19
 
@@ -22,9 +25,7 @@
22
25
  --island-margin: var(--space-sm);
23
26
  --island-border: 1px solid rgb(255 255 255 / 0.45);
24
27
  --island-shadow: 0px 1px 2.5px 0px #666;
25
- --section-header-background:
26
- radial-gradient(100% 50% at 40% 10%, var(--palette-light-clear), var(--palette-light-clear) 30%, var(--palette-light-faint) 110%, var(--palette-light-clear) 120%, var(--palette-light-clear) calc(120% + 1%)),
27
- linear-gradient(1deg, var(--palette-primary-900) 0%, var(--palette-primary) 65%, var(--palette-primary) 65%, var(--palette-primary-200) 100%);
28
+ --section-header-background: var(--shiny-background);
28
29
  --section-header-color: var(--palette-contrast-light);
29
30
  --section-header-shadow:
30
31
  inset -1px 1px 2px 0px #0003,
@@ -32,6 +33,7 @@
32
33
  inset -1px 1px 1px 0px #0006,
33
34
  inset 1px -1px 1px 0px #fff5,
34
35
  0px 1px 2px 0px #000a;
36
+ --mini-shadow: 0px 1px 1px 0px #000a;
35
37
 
36
38
  --sidebar-background:
37
39
  linear-gradient(135deg, rgb(255 255 255 / 0.4), transparent 55%),
@@ -100,6 +102,14 @@
100
102
  --toggle-inactive-separator-block-inset: 0.35rem;
101
103
 
102
104
  /* Navigation components */
105
+ --navigation-bar-background: var(--ui-gradient-2);
106
+ --navigation-bar-color: var(--text-color);
107
+ --navigation-bar-shadow: var(--panel-shadow);
108
+ --navigation-link-color-current: white;
109
+ --navigation-link-background-hover: var(--section-header-background);
110
+ --navigation-link-color-hover: white;
111
+ --navigation-link-background-current: var(--section-header-background);
112
+ --navigation-link-shadow-current: var(--mini-shadow);
103
113
  --tabline-background: var(--shiny-ui-gradient-2);
104
114
  --tabline-padding-inline-start: 5px;
105
115
  --tab-button-background: var(--shiny-ui-gradient);
@@ -119,7 +129,20 @@
119
129
  inset -1px 1px 1px 1px #0006,
120
130
  inset 1px -1px 1px 1px #fff5,
121
131
  -1px 1px 3px 0 #0006;
132
+
122
133
  --colored-shadow: inset -2px 2px 2px 0px #0006, inset 2px -2px 2px 0px #fff5, -3px 3px 4px 0px #0006;
123
134
  --block-graph-block-border: none;
124
135
  }
125
136
  }
137
+
138
+ .colored {
139
+ background: radial-gradient(140% 75% at 30% 10%, #fff0, #fff1 47%, #fff0 55%, #fff0), var(--colored-base-bg);
140
+ }
141
+
142
+ nav > ul > li {
143
+ border-radius: var(--ui-border-radius);
144
+ }
145
+
146
+ fray-navigationbar nav > ul > li > a {
147
+ line-height: 1.7em;
148
+ }