@jolly-pixel/ui 1.0.1 → 2.0.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 (117) hide show
  1. package/LICENSE +44 -44
  2. package/NOTICE +9 -0
  3. package/README.md +194 -194
  4. package/dist/containers/Dialog.js +11 -11
  5. package/dist/containers/Dialog.styles.js +48 -48
  6. package/dist/containers/Dock.js +11 -11
  7. package/dist/containers/Dock.styles.js +351 -351
  8. package/dist/containers/DockLayout.js +4 -4
  9. package/dist/containers/Floating.js +23 -23
  10. package/dist/containers/Floating.styles.js +116 -116
  11. package/dist/containers/Folder.js +28 -28
  12. package/dist/containers/Folder.styles.js +221 -221
  13. package/dist/containers/Pane.js +50 -50
  14. package/dist/containers/Pane.styles.js +186 -186
  15. package/dist/containers/Rail.js +18 -18
  16. package/dist/containers/Tab.js +10 -10
  17. package/dist/containers/Tabs.js +26 -26
  18. package/dist/containers/Tabs.styles.js +93 -93
  19. package/dist/containers/Toolbar.js +25 -25
  20. package/dist/containers/resize.js +5 -5
  21. package/dist/controls/Button.js +9 -9
  22. package/dist/controls/Button.styles.js +79 -79
  23. package/dist/controls/ButtonGroup.js +28 -28
  24. package/dist/controls/ButtonGroup.styles.js +98 -98
  25. package/dist/controls/Checkbox.js +14 -14
  26. package/dist/controls/Checkbox.styles.js +111 -111
  27. package/dist/controls/Color.js +51 -51
  28. package/dist/controls/Color.styles.js +83 -83
  29. package/dist/controls/ColorPicker.js +104 -104
  30. package/dist/controls/ColorPicker.styles.js +296 -296
  31. package/dist/controls/Control.js +33 -33
  32. package/dist/controls/Control.styles.js +102 -102
  33. package/dist/controls/Controls.js +11 -11
  34. package/dist/controls/Controls.styles.js +98 -98
  35. package/dist/controls/Flags.js +18 -18
  36. package/dist/controls/Flags.styles.js +59 -59
  37. package/dist/controls/Number.js +21 -21
  38. package/dist/controls/Number.styles.js +44 -44
  39. package/dist/controls/PropertyRow.js +13 -13
  40. package/dist/controls/PropertyRow.styles.js +105 -105
  41. package/dist/controls/Range.js +24 -24
  42. package/dist/controls/Range.styles.js +25 -25
  43. package/dist/controls/Select.js +23 -23
  44. package/dist/controls/Select.styles.js +47 -47
  45. package/dist/controls/Separator.js +11 -11
  46. package/dist/controls/Separator.styles.js +45 -45
  47. package/dist/controls/Slider.js +36 -36
  48. package/dist/controls/Slider.styles.js +161 -161
  49. package/dist/controls/Text.js +17 -17
  50. package/dist/data/Tree.d.ts +0 -14
  51. package/dist/data/Tree.d.ts.map +1 -1
  52. package/dist/data/Tree.js +90 -120
  53. package/dist/data/Tree.js.map +1 -1
  54. package/dist/data/Tree.styles.d.ts.map +1 -1
  55. package/dist/data/Tree.styles.js +220 -237
  56. package/dist/data/Tree.styles.js.map +1 -1
  57. package/dist/data/dropZone.d.ts +0 -10
  58. package/dist/data/dropZone.d.ts.map +1 -1
  59. package/dist/data/dropZone.js +0 -10
  60. package/dist/data/dropZone.js.map +1 -1
  61. package/dist/data/resolveRename.d.ts +0 -3
  62. package/dist/data/resolveRename.d.ts.map +1 -1
  63. package/dist/data/resolveRename.js +0 -3
  64. package/dist/data/resolveRename.js.map +1 -1
  65. package/dist/data/resolveReparent.d.ts +0 -7
  66. package/dist/data/resolveReparent.d.ts.map +1 -1
  67. package/dist/data/resolveReparent.js +0 -6
  68. package/dist/data/resolveReparent.js.map +1 -1
  69. package/dist/data/rowDragSession.d.ts +0 -8
  70. package/dist/data/rowDragSession.d.ts.map +1 -1
  71. package/dist/data/rowDragSession.js +0 -6
  72. package/dist/data/rowDragSession.js.map +1 -1
  73. package/dist/data/treeNodes.d.ts +0 -6
  74. package/dist/data/treeNodes.d.ts.map +1 -1
  75. package/dist/data/treeNodes.js +2 -7
  76. package/dist/data/treeNodes.js.map +1 -1
  77. package/dist/feedback/JollyPixelLogo.js +84 -84
  78. package/dist/feedback/Loading.js +29 -29
  79. package/dist/feedback/Loading.styles.js +230 -230
  80. package/dist/feedback/Log.js +8 -8
  81. package/dist/feedback/Log.styles.js +61 -61
  82. package/dist/feedback/Progress.js +17 -17
  83. package/dist/feedback/Progress.styles.js +146 -146
  84. package/dist/field/JollyField.js +51 -51
  85. package/dist/field/JollyField.styles.js +429 -429
  86. package/dist/icon/Icon.js +24 -24
  87. package/dist/icon/builtins.js +126 -126
  88. package/dist/interaction/drag/DragSession.js +6 -6
  89. package/dist/interaction/scrub/ScrubController.js +6 -6
  90. package/dist/math/AxisController.js +22 -22
  91. package/dist/math/Point2d.js +12 -12
  92. package/dist/math/Point2d.styles.js +49 -49
  93. package/dist/math/Quaternion.js +4 -4
  94. package/dist/math/Transform.js +40 -40
  95. package/dist/math/Transform.styles.js +17 -17
  96. package/dist/math/VectorField.js +4 -4
  97. package/dist/math/VectorField.styles.js +102 -102
  98. package/dist/monitors/Graph.js +8 -8
  99. package/dist/monitors/Graph.styles.js +42 -42
  100. package/dist/monitors/Monitor.js +5 -5
  101. package/dist/monitors/Monitor.styles.js +31 -31
  102. package/dist/peer/Presence.js +33 -33
  103. package/dist/peer/Presence.styles.js +82 -82
  104. package/dist/stats/Stats.js +6 -6
  105. package/dist/stats/Stats.styles.js +54 -54
  106. package/dist/theme/components/DensityControl.js +16 -16
  107. package/dist/theme/components/ThemeControl.js +16 -16
  108. package/dist/theme/components/ThemePreferences.js +18 -18
  109. package/dist/theme/font.js +9 -9
  110. package/dist/theme/styles/hiddenStyles.js +4 -4
  111. package/dist/theme/styles/mixins.js +16 -16
  112. package/dist/theme/styles/themeStyles.js +4 -4
  113. package/dist/theme/tokens/density.js +19 -19
  114. package/dist/theme/tokens/ramps.js +40 -40
  115. package/dist/theme/tokens/scales.js +56 -56
  116. package/dist/theme/tokens/semantic.js +184 -184
  117. package/package.json +6 -5
@@ -3,191 +3,191 @@ import { css } from "lit";
3
3
  // Import Internal Dependencies
4
4
  import { kFallback } from "../theme/styles/fallbacks.js";
5
5
  import { focusRing, truncate, visuallyHidden } from "../theme/styles/mixins.js";
6
- export const paneStyles = css `
7
- /*
8
- * A pane paints a plane only when it is not already inside one. A dock or a
9
- * floating window nulls this out through "slotted", so a docked pane adds no
10
- * second surface and, unlike before, no shadow: only detached things cast one.
11
- */
12
- :host {
13
- display: flex;
14
- box-sizing: border-box;
15
- flex-direction: column;
16
- min-width: 0;
17
- min-height: 0;
18
- overflow: hidden;
19
- border: 0;
20
- border-radius: var(--jolly-radius-md, 6px);
21
- background: var(--jolly-surface, ${kFallback.controlBg});
22
- color: var(--jolly-text, ${kFallback.text});
23
- font-family: var(--jolly-font-family, ui-monospace, monospace);
24
- font-size: var(--jolly-font-size, 11px);
25
- }
26
-
27
- .header {
28
- position: relative;
29
- display: flex;
30
- align-items: center;
31
- flex: 0 0 auto;
32
- gap: var(--jolly-space-2, 8px);
33
- min-height: var(--jolly-row-height, 20px);
34
- overflow: hidden;
35
- padding: var(--jolly-space-1, 4px) var(--jolly-space-2, 8px);
36
- border: 0;
37
- background: var(
38
- --jolly-pane-header-bg,
39
- ${kFallback.paneHeaderBg}
40
- );
41
- color: var(--jolly-text-on-fill, white);
42
- user-select: none;
43
- }
44
-
45
- /* A larger left-origin checker distinguishes pane chrome from folders. */
46
- .header::before {
47
- position: absolute;
48
- z-index: 0;
49
- inset-block: 0;
50
- inset-inline-start: 0;
51
- width: 52%;
52
- background: conic-gradient(
53
- from 90deg,
54
- transparent 25%,
55
- currentColor 0 50%,
56
- transparent 0 75%,
57
- currentColor 0
58
- )
59
- 0 / 12px 12px;
60
- color: var(--jolly-text-on-fill, white);
61
- content: "";
62
- opacity: 0.07;
63
- pointer-events: none;
64
- -webkit-mask-image: linear-gradient(to right, black, transparent);
65
- mask-image: linear-gradient(to right, black, transparent);
66
- }
67
-
68
- /* Weight and tracking keep the title legible over the pixel pattern. */
69
- .title {
70
- position: relative;
71
- z-index: 1;
72
- flex: 1 1 auto;
73
- font-weight: 600;
74
- letter-spacing: 0.08em;
75
- ${truncate}
76
- }
77
-
78
- :host([movable]) .header {
79
- cursor: move;
80
- touch-action: none;
81
- }
82
-
83
- /* The source keeps its slot while a drag previews where it would land. */
84
- :host([dragging]) {
85
- opacity: 0.4;
86
- }
87
-
88
- :host([collapsed]) .content {
89
- display: none;
90
- }
91
-
92
- .actions {
93
- position: relative;
94
- z-index: 1;
95
- display: flex;
96
- align-items: center;
97
- gap: var(--jolly-space-1, 4px);
98
- }
99
-
100
- .fold,
101
- .grip {
102
- position: relative;
103
- z-index: 1;
104
- display: inline-flex;
105
- align-items: center;
106
- justify-content: center;
107
- flex: 0 0 auto;
108
- width: 16px;
109
- height: 16px;
110
- padding: 0;
111
- border: 0;
112
- border-radius: var(--jolly-radius-sm, 3px);
113
- background: none;
114
- color: inherit;
115
- opacity: 0.75;
116
- }
117
-
118
- .fold:hover,
119
- .grip:hover {
120
- background: rgb(255 255 255 / 0.15);
121
- opacity: 1;
122
- }
123
-
124
- .fold:focus-visible,
125
- .grip:focus-visible {
126
- ${focusRing}
127
- outline-offset: 1px;
128
- }
129
-
130
- .grip {
131
- cursor: grab;
132
- touch-action: none;
133
- }
134
-
135
- .grip[aria-pressed="true"] {
136
- background: rgb(255 255 255 / 0.25);
137
- opacity: 1;
138
- }
139
-
140
- .chevron {
141
- transition: transform var(--jolly-duration-base, 160ms)
142
- var(--jolly-easing, ease);
143
- }
144
-
145
- /*
146
- * Down when open and right when shut, which is how a folder turns. The two
147
- * fold the same way, so their chevrons have to point the same way too.
148
- */
149
- :host(:not([collapsed])) .chevron {
150
- transform: rotate(90deg);
151
- }
152
-
153
- @media (prefers-reduced-motion: reduce) {
154
- .chevron {
155
- transition: none;
156
- }
157
- }
158
-
159
- .content {
160
- display: flex;
161
- overflow: auto;
162
- flex: 1 1 auto;
163
- flex-direction: column;
164
- gap: var(--jolly-row-gap, 4px);
165
- min-height: 0;
166
- padding: var(--jolly-space-1, 4px);
167
- scrollbar-color: var(--jolly-groove) transparent;
168
- scrollbar-width: thin;
169
- }
170
-
171
- .content::-webkit-scrollbar {
172
- width: 8px;
173
- height: 8px;
174
- }
175
-
176
- .content::-webkit-scrollbar-thumb {
177
- border: 2px solid transparent;
178
- border-radius: 4px;
179
- background: var(--jolly-groove);
180
- background-clip: padding-box;
181
- }
182
-
183
- .live-region {
184
- ${visuallyHidden}
185
- }
186
-
187
- @media (forced-colors: active) {
188
- .header::before {
189
- display: none;
190
- }
191
- }
6
+ export const paneStyles = css `
7
+ /*
8
+ * A pane paints a plane only when it is not already inside one. A dock or a
9
+ * floating window nulls this out through "slotted", so a docked pane adds no
10
+ * second surface and, unlike before, no shadow: only detached things cast one.
11
+ */
12
+ :host {
13
+ display: flex;
14
+ box-sizing: border-box;
15
+ flex-direction: column;
16
+ min-width: 0;
17
+ min-height: 0;
18
+ overflow: hidden;
19
+ border: 0;
20
+ border-radius: var(--jolly-radius-md, 6px);
21
+ background: var(--jolly-surface, ${kFallback.controlBg});
22
+ color: var(--jolly-text, ${kFallback.text});
23
+ font-family: var(--jolly-font-family, ui-monospace, monospace);
24
+ font-size: var(--jolly-font-size, 11px);
25
+ }
26
+
27
+ .header {
28
+ position: relative;
29
+ display: flex;
30
+ align-items: center;
31
+ flex: 0 0 auto;
32
+ gap: var(--jolly-space-2, 8px);
33
+ min-height: var(--jolly-row-height, 20px);
34
+ overflow: hidden;
35
+ padding: var(--jolly-space-1, 4px) var(--jolly-space-2, 8px);
36
+ border: 0;
37
+ background: var(
38
+ --jolly-pane-header-bg,
39
+ ${kFallback.paneHeaderBg}
40
+ );
41
+ color: var(--jolly-text-on-fill, white);
42
+ user-select: none;
43
+ }
44
+
45
+ /* A larger left-origin checker distinguishes pane chrome from folders. */
46
+ .header::before {
47
+ position: absolute;
48
+ z-index: 0;
49
+ inset-block: 0;
50
+ inset-inline-start: 0;
51
+ width: 52%;
52
+ background: conic-gradient(
53
+ from 90deg,
54
+ transparent 25%,
55
+ currentColor 0 50%,
56
+ transparent 0 75%,
57
+ currentColor 0
58
+ )
59
+ 0 / 12px 12px;
60
+ color: var(--jolly-text-on-fill, white);
61
+ content: "";
62
+ opacity: 0.07;
63
+ pointer-events: none;
64
+ -webkit-mask-image: linear-gradient(to right, black, transparent);
65
+ mask-image: linear-gradient(to right, black, transparent);
66
+ }
67
+
68
+ /* Weight and tracking keep the title legible over the pixel pattern. */
69
+ .title {
70
+ position: relative;
71
+ z-index: 1;
72
+ flex: 1 1 auto;
73
+ font-weight: 600;
74
+ letter-spacing: 0.08em;
75
+ ${truncate}
76
+ }
77
+
78
+ :host([movable]) .header {
79
+ cursor: move;
80
+ touch-action: none;
81
+ }
82
+
83
+ /* The source keeps its slot while a drag previews where it would land. */
84
+ :host([dragging]) {
85
+ opacity: 0.4;
86
+ }
87
+
88
+ :host([collapsed]) .content {
89
+ display: none;
90
+ }
91
+
92
+ .actions {
93
+ position: relative;
94
+ z-index: 1;
95
+ display: flex;
96
+ align-items: center;
97
+ gap: var(--jolly-space-1, 4px);
98
+ }
99
+
100
+ .fold,
101
+ .grip {
102
+ position: relative;
103
+ z-index: 1;
104
+ display: inline-flex;
105
+ align-items: center;
106
+ justify-content: center;
107
+ flex: 0 0 auto;
108
+ width: 16px;
109
+ height: 16px;
110
+ padding: 0;
111
+ border: 0;
112
+ border-radius: var(--jolly-radius-sm, 3px);
113
+ background: none;
114
+ color: inherit;
115
+ opacity: 0.75;
116
+ }
117
+
118
+ .fold:hover,
119
+ .grip:hover {
120
+ background: rgb(255 255 255 / 0.15);
121
+ opacity: 1;
122
+ }
123
+
124
+ .fold:focus-visible,
125
+ .grip:focus-visible {
126
+ ${focusRing}
127
+ outline-offset: 1px;
128
+ }
129
+
130
+ .grip {
131
+ cursor: grab;
132
+ touch-action: none;
133
+ }
134
+
135
+ .grip[aria-pressed="true"] {
136
+ background: rgb(255 255 255 / 0.25);
137
+ opacity: 1;
138
+ }
139
+
140
+ .chevron {
141
+ transition: transform var(--jolly-duration-base, 160ms)
142
+ var(--jolly-easing, ease);
143
+ }
144
+
145
+ /*
146
+ * Down when open and right when shut, which is how a folder turns. The two
147
+ * fold the same way, so their chevrons have to point the same way too.
148
+ */
149
+ :host(:not([collapsed])) .chevron {
150
+ transform: rotate(90deg);
151
+ }
152
+
153
+ @media (prefers-reduced-motion: reduce) {
154
+ .chevron {
155
+ transition: none;
156
+ }
157
+ }
158
+
159
+ .content {
160
+ display: flex;
161
+ overflow: auto;
162
+ flex: 1 1 auto;
163
+ flex-direction: column;
164
+ gap: var(--jolly-row-gap, 4px);
165
+ min-height: 0;
166
+ padding: var(--jolly-space-1, 4px);
167
+ scrollbar-color: var(--jolly-groove) transparent;
168
+ scrollbar-width: thin;
169
+ }
170
+
171
+ .content::-webkit-scrollbar {
172
+ width: 8px;
173
+ height: 8px;
174
+ }
175
+
176
+ .content::-webkit-scrollbar-thumb {
177
+ border: 2px solid transparent;
178
+ border-radius: 4px;
179
+ background: var(--jolly-groove);
180
+ background-clip: padding-box;
181
+ }
182
+
183
+ .live-region {
184
+ ${visuallyHidden}
185
+ }
186
+
187
+ @media (forced-colors: active) {
188
+ .header::before {
189
+ display: none;
190
+ }
191
+ }
192
192
  `;
193
193
  //# sourceMappingURL=Pane.styles.js.map
@@ -13,24 +13,24 @@ import { customElement, property } from "lit/decorators.js";
13
13
  // Import Internal Dependencies
14
14
  import { kFallback } from "../theme/styles/fallbacks.js";
15
15
  let Rail = class Rail extends LitElement {
16
- static styles = css `
17
- :host {
18
- display: flex;
19
- box-sizing: border-box;
20
- align-items: center;
21
- flex-direction: column;
22
- gap: var(--jolly-space-1, 4px);
23
- width: calc(var(--jolly-icon-button-size, 32px) + (var(--jolly-space-1, 4px) * 2));
24
- padding: var(--jolly-space-1, 4px);
25
- border: 0;
26
- background: var(--jolly-surface-sunken, ${kFallback.controlBg});
27
- }
28
-
29
- :host([orientation="horizontal"]) {
30
- flex-direction: row;
31
- width: auto;
32
- height: calc(var(--jolly-icon-button-size, 32px) + (var(--jolly-space-1, 4px) * 2));
33
- }
16
+ static styles = css `
17
+ :host {
18
+ display: flex;
19
+ box-sizing: border-box;
20
+ align-items: center;
21
+ flex-direction: column;
22
+ gap: var(--jolly-space-1, 4px);
23
+ width: calc(var(--jolly-icon-button-size, 32px) + (var(--jolly-space-1, 4px) * 2));
24
+ padding: var(--jolly-space-1, 4px);
25
+ border: 0;
26
+ background: var(--jolly-surface-sunken, ${kFallback.controlBg});
27
+ }
28
+
29
+ :host([orientation="horizontal"]) {
30
+ flex-direction: row;
31
+ width: auto;
32
+ height: calc(var(--jolly-icon-button-size, 32px) + (var(--jolly-space-1, 4px) * 2));
33
+ }
34
34
  `;
35
35
  constructor() {
36
36
  super();
@@ -11,16 +11,16 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  import { LitElement, css, html } from "lit";
12
12
  import { customElement, property } from "lit/decorators.js";
13
13
  let Tab = class Tab extends LitElement {
14
- static styles = css `
15
- :host {
16
- display: none;
17
- box-sizing: border-box;
18
- height: 100%;
19
- }
20
-
21
- :host([active]) {
22
- display: block;
23
- }
14
+ static styles = css `
15
+ :host {
16
+ display: none;
17
+ box-sizing: border-box;
18
+ height: 100%;
19
+ }
20
+
21
+ :host([active]) {
22
+ display: block;
23
+ }
24
24
  `;
25
25
  constructor() {
26
26
  super();
@@ -29,32 +29,32 @@ let Tabs = class Tabs extends LitElement {
29
29
  this._tabs = [];
30
30
  }
31
31
  render() {
32
- return html `
33
- <div
34
- class="list"
35
- part="list"
36
- role="tablist"
37
- aria-orientation=${this.orientation}
38
- @keydown=${this.#onKeyDown}
39
- >
40
- ${this._tabs.map((tab, index) => html `
41
- <button
42
- id=${this.#buttonId(index)}
43
- part=${tab.value === this.value ? "tab tab-selected" : "tab"}
44
- type="button"
45
- role="tab"
46
- aria-controls=${this.#panelId(index)}
47
- aria-selected=${String(tab.value === this.value)}
48
- tabindex=${tab.value === this.value ? "0" : "-1"}
49
- ?disabled=${tab.disabled}
50
- data-index=${index}
51
- @click=${this.#onSelect}
52
- >${tab.label}</button>
53
- `)}
54
- </div>
55
- <div class="panels">
56
- <slot @slotchange=${this.#onSlotChange}></slot>
57
- </div>
32
+ return html `
33
+ <div
34
+ class="list"
35
+ part="list"
36
+ role="tablist"
37
+ aria-orientation=${this.orientation}
38
+ @keydown=${this.#onKeyDown}
39
+ >
40
+ ${this._tabs.map((tab, index) => html `
41
+ <button
42
+ id=${this.#buttonId(index)}
43
+ part=${tab.value === this.value ? "tab tab-selected" : "tab"}
44
+ type="button"
45
+ role="tab"
46
+ aria-controls=${this.#panelId(index)}
47
+ aria-selected=${String(tab.value === this.value)}
48
+ tabindex=${tab.value === this.value ? "0" : "-1"}
49
+ ?disabled=${tab.disabled}
50
+ data-index=${index}
51
+ @click=${this.#onSelect}
52
+ >${tab.label}</button>
53
+ `)}
54
+ </div>
55
+ <div class="panels">
56
+ <slot @slotchange=${this.#onSlotChange}></slot>
57
+ </div>
58
58
  `;
59
59
  }
60
60
  willUpdate(changed) {