@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
@@ -1,49 +1,49 @@
1
1
  // Import Third-party Dependencies
2
2
  import { css } from "lit";
3
- export const separatorStyles = css `
4
- :host {
5
- display: block;
6
- font-family: var(--jolly-font-family, ui-monospace, monospace);
7
- font-size: var(--jolly-font-size, 11px);
8
- }
9
-
10
- .rule {
11
- flex: 1 1 auto;
12
- height: 1px;
13
- background: var(--jolly-divider);
14
- }
15
-
16
- .labelled,
17
- .unlabelled {
18
- align-items: center;
19
- min-height: var(--jolly-row-height, 20px);
20
- margin-block-start: calc(var(--jolly-space-1, 4px) / 2);
21
- }
22
-
23
- .labelled {
24
- display: grid;
25
- grid-template-columns:
26
- calc(var(--jolly-gutter-width, 0px) + var(--jolly-space-1, 4px))
27
- auto
28
- minmax(0, 1fr);
29
- gap: var(--jolly-space-1, 4px);
30
- }
31
-
32
- .unlabelled {
33
- display: flex;
34
- }
35
-
36
- .labelled .rule {
37
- background: var(--jolly-separator-rule);
38
- }
39
-
40
- .caption {
41
- flex: 0 0 auto;
42
- color: var(--jolly-separator-label);
43
- font-size: 1em;
44
- text-transform: uppercase;
45
- letter-spacing: 0.06em;
46
- user-select: none;
47
- }
3
+ export const separatorStyles = css `
4
+ :host {
5
+ display: block;
6
+ font-family: var(--jolly-font-family, ui-monospace, monospace);
7
+ font-size: var(--jolly-font-size, 11px);
8
+ }
9
+
10
+ .rule {
11
+ flex: 1 1 auto;
12
+ height: 1px;
13
+ background: var(--jolly-divider);
14
+ }
15
+
16
+ .labelled,
17
+ .unlabelled {
18
+ align-items: center;
19
+ min-height: var(--jolly-row-height, 20px);
20
+ margin-block-start: calc(var(--jolly-space-1, 4px) / 2);
21
+ }
22
+
23
+ .labelled {
24
+ display: grid;
25
+ grid-template-columns:
26
+ calc(var(--jolly-gutter-width, 0px) + var(--jolly-space-1, 4px))
27
+ auto
28
+ minmax(0, 1fr);
29
+ gap: var(--jolly-space-1, 4px);
30
+ }
31
+
32
+ .unlabelled {
33
+ display: flex;
34
+ }
35
+
36
+ .labelled .rule {
37
+ background: var(--jolly-separator-rule);
38
+ }
39
+
40
+ .caption {
41
+ flex: 0 0 auto;
42
+ color: var(--jolly-separator-label);
43
+ font-size: 1em;
44
+ text-transform: uppercase;
45
+ letter-spacing: 0.06em;
46
+ user-select: none;
47
+ }
48
48
  `;
49
49
  //# sourceMappingURL=Separator.styles.js.map
@@ -43,42 +43,42 @@ let Slider = class Slider extends JollyField {
43
43
  }
44
44
  renderValue() {
45
45
  const value = this.concreteValue;
46
- return html `
47
- <div class="lane" style="--jolly-slider-progress:${this.#progress}">
48
- <input
49
- type="range"
50
- min=${this.min}
51
- max=${this.max}
52
- step=${this.step}
53
- .value=${String(value ?? this.min)}
54
- ?disabled=${this.disabled}
55
- aria-label=${this.label === "" ? nothing : this.label}
56
- aria-readonly=${this.readonlyAria}
57
- aria-disabled=${this.lockedAria}
58
- aria-description=${this.lockDescription}
59
- aria-valuetext=${this.mixed ? "Mixed" : nothing}
60
- @input=${this.#onInput}
61
- @change=${this.#onChange}
62
- >
63
- </div>
64
- <input
65
- class="readout"
66
- type="text"
67
- inputmode="decimal"
68
- .value=${this.draft ?? this.#displayed}
69
- placeholder=${this.mixed ? MIXED_PLACEHOLDER : ""}
70
- ?disabled=${this.disabled}
71
- ?readonly=${this.inputReadonly}
72
- ?data-pointer-focus=${this.#pointerFocus.active}
73
- aria-label=${this.label === "" ? "Value" : `${this.label} value`}
74
- aria-readonly=${this.readonlyAria}
75
- aria-disabled=${this.lockedAria}
76
- aria-invalid=${this.displayError === null ? nothing : "true"}
77
- @input=${this.onDraftInput}
78
- @focus=${this.#pointerFocus.onFocus}
79
- @keydown=${this.#onKeyDown}
80
- @blur=${this.#onBlur}
81
- >
46
+ return html `
47
+ <div class="lane" style="--jolly-slider-progress:${this.#progress}">
48
+ <input
49
+ type="range"
50
+ min=${this.min}
51
+ max=${this.max}
52
+ step=${this.step}
53
+ .value=${String(value ?? this.min)}
54
+ ?disabled=${this.disabled}
55
+ aria-label=${this.label === "" ? nothing : this.label}
56
+ aria-readonly=${this.readonlyAria}
57
+ aria-disabled=${this.lockedAria}
58
+ aria-description=${this.lockDescription}
59
+ aria-valuetext=${this.mixed ? "Mixed" : nothing}
60
+ @input=${this.#onInput}
61
+ @change=${this.#onChange}
62
+ >
63
+ </div>
64
+ <input
65
+ class="readout"
66
+ type="text"
67
+ inputmode="decimal"
68
+ .value=${this.draft ?? this.#displayed}
69
+ placeholder=${this.mixed ? MIXED_PLACEHOLDER : ""}
70
+ ?disabled=${this.disabled}
71
+ ?readonly=${this.inputReadonly}
72
+ ?data-pointer-focus=${this.#pointerFocus.active}
73
+ aria-label=${this.label === "" ? "Value" : `${this.label} value`}
74
+ aria-readonly=${this.readonlyAria}
75
+ aria-disabled=${this.lockedAria}
76
+ aria-invalid=${this.displayError === null ? nothing : "true"}
77
+ @input=${this.onDraftInput}
78
+ @focus=${this.#pointerFocus.onFocus}
79
+ @keydown=${this.#onKeyDown}
80
+ @blur=${this.#onBlur}
81
+ >
82
82
  `;
83
83
  }
84
84
  /**
@@ -1,165 +1,165 @@
1
1
  // Import Third-party Dependencies
2
2
  import { css } from "lit";
3
- export const sliderStyles = css `
4
- /*
5
- * The lane paints nothing. It is only the positioning context and the hit
6
- * area, so the slider reads as a measurement on the surface rather than as a
7
- * filled control.
8
- *
9
- * The track, the range input and the stop calculation all share the same
10
- * horizontal inset, so the fill edge lands under the knob centre.
11
- */
12
- .lane {
13
- --jolly-slider-knob: 10px;
14
- --jolly-slider-track-height: 2px;
15
- --jolly-slider-inset: var(--jolly-space-1, 4px);
16
- --jolly-slider-groove: var(--jolly-groove);
17
- --jolly-slider-fill: var(--jolly-field-active-color);
18
- --jolly-slider-thumb-fill: var(--jolly-slider-fill);
19
- --jolly-slider-stop: calc(
20
- var(--jolly-slider-progress, 0) * (100% - var(--jolly-slider-knob)) +
21
- (var(--jolly-slider-knob) / 2)
22
- );
23
-
24
- position: relative;
25
- flex: 1 1 auto;
26
- min-width: 0;
27
- height: var(--jolly-control-height, 20px);
28
- background: none;
29
- }
30
-
31
- /*
32
- * The track. A 2px groove with the filled portion in the accent, which reads
33
- * as a measurement rather than as a second filled control.
34
- */
35
- .lane::before {
36
- content: "";
37
- position: absolute;
38
- top: 50%;
39
- inset-inline: var(--jolly-slider-inset);
40
- height: var(--jolly-slider-track-height);
41
- border-radius: 1px;
42
- background: linear-gradient(
43
- to right,
44
- var(--jolly-slider-fill) 0 var(--jolly-slider-stop),
45
- var(--jolly-slider-groove) var(--jolly-slider-stop) 100%
46
- );
47
- transform: translateY(-50%);
48
- pointer-events: none;
49
- transition: height var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease);
50
- }
51
-
52
- /* Hover changes only the handle color, so the track geometry stays still. */
53
- .lane:hover {
54
- --jolly-slider-thumb-fill: var(--jolly-field-active-color-hover);
55
- }
56
-
57
- /* Focus geometry locates the active slider in a long pane. */
58
- .lane:has(input:focus-visible) {
59
- --jolly-slider-track-height: 4px;
60
- --jolly-slider-knob: 14px;
61
- }
62
-
63
- /* An invalid slider recolours the value itself, not just the groove behind it. */
64
- :host([invalid]) .lane {
65
- --jolly-slider-fill: var(--jolly-danger-border);
66
- --jolly-slider-groove: var(--jolly-invalid-bg-focus);
67
- --jolly-slider-thumb-fill: var(--jolly-danger-border);
68
- }
69
-
70
- :host([readonly]) .lane {
71
- --jolly-slider-groove: var(--jolly-control-bg-muted);
72
- }
73
-
74
- /*
75
- * Override native range track and thumb rendering. The input contributes hit
76
- * area and the knob; the lane draws everything else.
77
- */
78
- .value input[type="range"] {
79
- position: absolute;
80
- inset: 0 var(--jolly-slider-inset);
81
- width: auto;
82
- height: 100%;
83
- margin: 0;
84
- padding: 0;
85
- border: none;
86
- background: none;
87
- appearance: none;
88
- cursor: pointer;
89
- }
90
-
91
- /*
92
- * The shared field rules match "input" generically and outrank a plain
93
- * type selector, so the range would otherwise pick up the control fill on
94
- * hover, focus, invalid and readonly. The range paints nothing in any state.
95
- */
96
- .value input[type="range"]:hover:not(:disabled),
97
- .value input[type="range"]:focus,
98
- .value input[type="range"]:focus-visible,
99
- :host([invalid]) .value input[type="range"],
100
- :host([readonly]) .value input[type="range"] {
101
- background: none;
102
- outline: none;
103
- }
104
-
105
- .value input[type="range"]::-webkit-slider-runnable-track {
106
- height: 100%;
107
- background: none;
108
- }
109
-
110
- .value input[type="range"]::-moz-range-track {
111
- height: 100%;
112
- background: none;
113
- }
114
-
115
- /* The handle keeps equal dimensions when focus grows its square shape. */
116
- .value input[type="range"]::-webkit-slider-thumb {
117
- appearance: none;
118
- width: var(--jolly-slider-knob, 10px);
119
- height: var(--jolly-slider-knob, 10px);
120
- margin-top: calc(
121
- (var(--jolly-control-height, 20px) - var(--jolly-slider-knob, 10px)) / 2
122
- );
123
- border-radius: var(--jolly-radius-sm, 2px);
124
- background: var(--jolly-slider-thumb-fill);
125
- transition:
126
- background-color var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease),
127
- width var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease),
128
- height var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease);
129
- }
130
-
131
- .value input[type="range"]::-moz-range-thumb {
132
- width: var(--jolly-slider-knob, 10px);
133
- height: var(--jolly-slider-knob, 10px);
134
- border: none;
135
- border-radius: var(--jolly-radius-sm, 2px);
136
- background: var(--jolly-slider-thumb-fill);
137
- transition:
138
- background-color var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease),
139
- width var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease),
140
- height var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease);
141
- }
142
-
143
- /*
144
- * Mixed values have no thumb position.
145
- */
146
- :host([mixed]) .lane {
147
- opacity: 0.35;
148
- pointer-events: none;
149
- }
150
-
151
- /*
152
- * A fixed readout column keeps the lane's right edge aligned down the pane.
153
- */
154
- .value input.readout {
155
- flex: 0 0 auto;
156
- width: 6ch;
157
- min-width: 0;
158
- text-align: right;
159
- }
160
-
161
- :host([disabled]) .value input[type="range"] {
162
- cursor: default;
163
- }
3
+ export const sliderStyles = css `
4
+ /*
5
+ * The lane paints nothing. It is only the positioning context and the hit
6
+ * area, so the slider reads as a measurement on the surface rather than as a
7
+ * filled control.
8
+ *
9
+ * The track, the range input and the stop calculation all share the same
10
+ * horizontal inset, so the fill edge lands under the knob centre.
11
+ */
12
+ .lane {
13
+ --jolly-slider-knob: 10px;
14
+ --jolly-slider-track-height: 2px;
15
+ --jolly-slider-inset: var(--jolly-space-1, 4px);
16
+ --jolly-slider-groove: var(--jolly-groove);
17
+ --jolly-slider-fill: var(--jolly-field-active-color);
18
+ --jolly-slider-thumb-fill: var(--jolly-slider-fill);
19
+ --jolly-slider-stop: calc(
20
+ var(--jolly-slider-progress, 0) * (100% - var(--jolly-slider-knob)) +
21
+ (var(--jolly-slider-knob) / 2)
22
+ );
23
+
24
+ position: relative;
25
+ flex: 1 1 auto;
26
+ min-width: 0;
27
+ height: var(--jolly-control-height, 20px);
28
+ background: none;
29
+ }
30
+
31
+ /*
32
+ * The track. A 2px groove with the filled portion in the accent, which reads
33
+ * as a measurement rather than as a second filled control.
34
+ */
35
+ .lane::before {
36
+ content: "";
37
+ position: absolute;
38
+ top: 50%;
39
+ inset-inline: var(--jolly-slider-inset);
40
+ height: var(--jolly-slider-track-height);
41
+ border-radius: 1px;
42
+ background: linear-gradient(
43
+ to right,
44
+ var(--jolly-slider-fill) 0 var(--jolly-slider-stop),
45
+ var(--jolly-slider-groove) var(--jolly-slider-stop) 100%
46
+ );
47
+ transform: translateY(-50%);
48
+ pointer-events: none;
49
+ transition: height var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease);
50
+ }
51
+
52
+ /* Hover changes only the handle color, so the track geometry stays still. */
53
+ .lane:hover {
54
+ --jolly-slider-thumb-fill: var(--jolly-field-active-color-hover);
55
+ }
56
+
57
+ /* Focus geometry locates the active slider in a long pane. */
58
+ .lane:has(input:focus-visible) {
59
+ --jolly-slider-track-height: 4px;
60
+ --jolly-slider-knob: 14px;
61
+ }
62
+
63
+ /* An invalid slider recolours the value itself, not just the groove behind it. */
64
+ :host([invalid]) .lane {
65
+ --jolly-slider-fill: var(--jolly-danger-border);
66
+ --jolly-slider-groove: var(--jolly-invalid-bg-focus);
67
+ --jolly-slider-thumb-fill: var(--jolly-danger-border);
68
+ }
69
+
70
+ :host([readonly]) .lane {
71
+ --jolly-slider-groove: var(--jolly-control-bg-muted);
72
+ }
73
+
74
+ /*
75
+ * Override native range track and thumb rendering. The input contributes hit
76
+ * area and the knob; the lane draws everything else.
77
+ */
78
+ .value input[type="range"] {
79
+ position: absolute;
80
+ inset: 0 var(--jolly-slider-inset);
81
+ width: auto;
82
+ height: 100%;
83
+ margin: 0;
84
+ padding: 0;
85
+ border: none;
86
+ background: none;
87
+ appearance: none;
88
+ cursor: pointer;
89
+ }
90
+
91
+ /*
92
+ * The shared field rules match "input" generically and outrank a plain
93
+ * type selector, so the range would otherwise pick up the control fill on
94
+ * hover, focus, invalid and readonly. The range paints nothing in any state.
95
+ */
96
+ .value input[type="range"]:hover:not(:disabled),
97
+ .value input[type="range"]:focus,
98
+ .value input[type="range"]:focus-visible,
99
+ :host([invalid]) .value input[type="range"],
100
+ :host([readonly]) .value input[type="range"] {
101
+ background: none;
102
+ outline: none;
103
+ }
104
+
105
+ .value input[type="range"]::-webkit-slider-runnable-track {
106
+ height: 100%;
107
+ background: none;
108
+ }
109
+
110
+ .value input[type="range"]::-moz-range-track {
111
+ height: 100%;
112
+ background: none;
113
+ }
114
+
115
+ /* The handle keeps equal dimensions when focus grows its square shape. */
116
+ .value input[type="range"]::-webkit-slider-thumb {
117
+ appearance: none;
118
+ width: var(--jolly-slider-knob, 10px);
119
+ height: var(--jolly-slider-knob, 10px);
120
+ margin-top: calc(
121
+ (var(--jolly-control-height, 20px) - var(--jolly-slider-knob, 10px)) / 2
122
+ );
123
+ border-radius: var(--jolly-radius-sm, 2px);
124
+ background: var(--jolly-slider-thumb-fill);
125
+ transition:
126
+ background-color var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease),
127
+ width var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease),
128
+ height var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease);
129
+ }
130
+
131
+ .value input[type="range"]::-moz-range-thumb {
132
+ width: var(--jolly-slider-knob, 10px);
133
+ height: var(--jolly-slider-knob, 10px);
134
+ border: none;
135
+ border-radius: var(--jolly-radius-sm, 2px);
136
+ background: var(--jolly-slider-thumb-fill);
137
+ transition:
138
+ background-color var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease),
139
+ width var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease),
140
+ height var(--jolly-duration-fast, 100ms) var(--jolly-easing, ease);
141
+ }
142
+
143
+ /*
144
+ * Mixed values have no thumb position.
145
+ */
146
+ :host([mixed]) .lane {
147
+ opacity: 0.35;
148
+ pointer-events: none;
149
+ }
150
+
151
+ /*
152
+ * A fixed readout column keeps the lane's right edge aligned down the pane.
153
+ */
154
+ .value input.readout {
155
+ flex: 0 0 auto;
156
+ width: 6ch;
157
+ min-width: 0;
158
+ text-align: right;
159
+ }
160
+
161
+ :host([disabled]) .value input[type="range"] {
162
+ cursor: default;
163
+ }
164
164
  `;
165
165
  //# sourceMappingURL=Slider.styles.js.map
@@ -26,23 +26,23 @@ let Text = class Text extends JollyField {
26
26
  this.value = "";
27
27
  }
28
28
  renderValue() {
29
- return html `
30
- <input
31
- type="text"
32
- .value=${this.draft ?? this.#displayed}
33
- placeholder=${this.mixed ? MIXED_PLACEHOLDER : this.placeholder}
34
- ?disabled=${this.disabled}
35
- ?readonly=${this.inputReadonly}
36
- ?data-pointer-focus=${this.#pointerFocus.active}
37
- aria-readonly=${this.readonlyAria}
38
- aria-disabled=${this.lockedAria}
39
- aria-description=${this.lockDescription}
40
- aria-invalid=${this.displayError === null ? nothing : "true"}
41
- @input=${this.#onType}
42
- @focus=${this.#pointerFocus.onFocus}
43
- @keydown=${this.#onKeyDown}
44
- @blur=${this.#onBlur}
45
- >
29
+ return html `
30
+ <input
31
+ type="text"
32
+ .value=${this.draft ?? this.#displayed}
33
+ placeholder=${this.mixed ? MIXED_PLACEHOLDER : this.placeholder}
34
+ ?disabled=${this.disabled}
35
+ ?readonly=${this.inputReadonly}
36
+ ?data-pointer-focus=${this.#pointerFocus.active}
37
+ aria-readonly=${this.readonlyAria}
38
+ aria-disabled=${this.lockedAria}
39
+ aria-description=${this.lockDescription}
40
+ aria-invalid=${this.displayError === null ? nothing : "true"}
41
+ @input=${this.#onType}
42
+ @focus=${this.#pointerFocus.onFocus}
43
+ @keydown=${this.#onKeyDown}
44
+ @blur=${this.#onBlur}
45
+ >
46
46
  `;
47
47
  }
48
48
  /**
@@ -1,16 +1,6 @@
1
1
  import { LitElement, type TemplateResult } from "lit";
2
2
  import type { TreeDropAccept, TreeNode } from "./Tree.types.ts";
3
3
  import "../icon/Icon.ts";
4
- /**
5
- * A generic tree of `{ id, label, children }` rows, with drag and drop
6
- * reparenting, keyboard navigation and optional visibility/lock toggles.
7
- * Knows nothing about what a row represents.
8
- *
9
- * Fully controlled: `nodes`, `selected` and `expanded` are consumer owned,
10
- * the same as `value` on a field. A drop, a toggle or a selection change
11
- * emits an intent event; the element repaints only once the consumer writes
12
- * the new value back. See `docs/api/data/tree.md`.
13
- */
14
4
  export declare class Tree<TData = unknown> extends LitElement {
15
5
  #private;
16
6
  static styles: import("lit").CSSResult;
@@ -22,10 +12,6 @@ export declare class Tree<TData = unknown> extends LitElement {
22
12
  rowDrag: boolean;
23
13
  renamable: boolean;
24
14
  indentGuides: boolean;
25
- /**
26
- * Domain veto for a candidate drop. Consulted while dragging as well as on
27
- * commit, so a move this rejects never paints a drop indicator.
28
- */
29
15
  acceptDrop: TreeDropAccept | null;
30
16
  private _renamingId;
31
17
  private _anchorId;
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.d.ts","sourceRoot":"","sources":["../../src/data/Tree.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EAGV,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAwBb,OAAO,KAAK,EACV,cAAc,EAEd,QAAQ,EACT,MAAM,iBAAiB,CAAC;AAGzB,OAAO,iBAAiB,CAAC;AAkBzB;;;;;;;;;GASG;AACH,qBACa,IAAI,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,UAAU;;IACnD,OAAgB,MAAM,0BAAc;IAG5B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IAGzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,QAAQ,EAAE,OAAO,CAAC;IAGlB,WAAW,EAAE,OAAO,CAAC;IAOrB,OAAO,EAAE,OAAO,CAAC;IAGjB,SAAS,EAAE,OAAO,CAAC;IAOnB,YAAY,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IAEK,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAE1C,QACgB,WAAW,CAAgB;IAE3C,QACgB,SAAS,CAAgB;IAEzC,QACgB,YAAY,CAAqB;IAEjD,QACgB,aAAa,CAAkB;IAE/C,QACgB,UAAU,CAAmB;;IAuBpC,MAAM,IAAI,cAAc;cAmJd,OAAO,CACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI;CA0hBR;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,IAAI,CAAC;KACpB;CACF"}
1
+ {"version":3,"file":"Tree.d.ts","sourceRoot":"","sources":["../../src/data/Tree.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EAGV,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAwBb,OAAO,KAAK,EACV,cAAc,EAEd,QAAQ,EACT,MAAM,iBAAiB,CAAC;AAGzB,OAAO,iBAAiB,CAAC;AAkBzB,qBACa,IAAI,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,UAAU;;IACnD,OAAgB,MAAM,0BAAc;IAG5B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IAGzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,QAAQ,EAAE,OAAO,CAAC;IAGlB,WAAW,EAAE,OAAO,CAAC;IAOrB,OAAO,EAAE,OAAO,CAAC;IAGjB,SAAS,EAAE,OAAO,CAAC;IAOnB,YAAY,EAAE,OAAO,CAAC;IAGtB,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAE1C,QACgB,WAAW,CAAgB;IAE3C,QACgB,SAAS,CAAgB;IAEzC,QACgB,YAAY,CAAqB;IAEjD,QACgB,aAAa,CAAkB;IAE/C,QACgB,UAAU,CAAmB;;IAuBpC,MAAM,IAAI,cAAc;cA6Id,OAAO,CACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI;CA4gBR;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,IAAI,CAAC;KACpB;CACF"}