@dorsk/tsumikit 0.60.0 → 0.60.2

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/README.md CHANGED
@@ -524,7 +524,8 @@ clipped to the space between the adornments). Once a `Textarea` needs more
524
524
  than one row (content, `rows`, or a dragged floor) the adornments move into a
525
525
  bar under the text: every line then runs the full width with the normal
526
526
  padding, the textarea's box (and its scrollbar) ends above the controls, and
527
- the bar continues the field's border. The textarea measures that in the
527
+ the bar continues the field's border, the controls still flush against its
528
+ bottom and side edges. The textarea measures that in the
528
529
  single-line layout, so the switch cannot flip back and forth; the single-line
529
530
  look is untouched. Tab order is leading → field → trailing; the group shows
530
531
  the focus ring around the whole unit.
@@ -134,82 +134,85 @@
134
134
  width: 100%;
135
135
  min-width: 0;
136
136
  }
137
+ /* The adornments fill the field inside its 1px border, their outer corners
138
+ following the field's; inner corners go square. In the bar they hug the
139
+ bottom and side borders, so only the bottom-outer corner is rounded. */
137
140
  .ig-adorn {
141
+ --ig-fuse-r: calc(var(--ig-radius) - 1px);
138
142
  position: absolute;
139
- bottom: 0;
143
+ top: 1px;
144
+ bottom: 1px;
140
145
  z-index: 1;
141
146
  display: flex;
142
147
  align-items: center;
143
148
  gap: var(--ig-inset);
144
- height: var(--ig-h);
145
- padding-inline: var(--ig-inset);
146
149
  pointer-events: none;
147
150
  }
148
- .ig-adorn > :global(*) {
149
- pointer-events: auto;
150
- }
151
151
  .ig-leading {
152
- inset-inline-start: 0;
153
- }
154
- .ig-trailing {
155
- inset-inline-end: 0;
156
- }
157
- .ig-center .ig-adorn {
158
- top: 0;
159
- height: auto;
160
- }
161
- /* Until the field grows into a bar, the adornments fill it inside its 1px
162
- border, their outer corners following the field's; inner corners go square. */
163
- .ig:not(.ig-bar) .ig-adorn {
164
- --ig-fuse-r: calc(var(--ig-radius) - 1px);
165
- top: 1px;
166
- bottom: 1px;
167
- height: auto;
168
- padding-inline: 0;
169
- }
170
- .ig:not(.ig-bar) .ig-leading {
171
152
  inset-inline-start: 1px;
172
153
  }
173
- .ig:not(.ig-bar) .ig-trailing {
154
+ .ig-trailing {
174
155
  inset-inline-end: 1px;
175
156
  }
176
- .ig:not(.ig-bar) .ig-adorn > :global(*) {
157
+ .ig-adorn > :global(*) {
158
+ pointer-events: auto;
177
159
  align-self: stretch;
178
- height: auto;
179
- min-height: 0;
180
160
  --btn-size: 100%;
181
161
  --btn-radius: 0;
182
162
  --pop-trigger-radius: 0;
183
163
  border-radius: 0;
184
164
  }
185
- .ig:not(.ig-bar) .ig-adorn > :global(:is(.btn-box, .btn-square, .btn-icon, .icon-only)) {
165
+ /* `.ig` outranks an adornment's own fixed box (e.g. FileButton `box`). */
166
+ .ig .ig-adorn > :global(*) {
167
+ height: auto;
168
+ min-height: 0;
169
+ }
170
+ .ig .ig-adorn > :global(:is(.btn-box, .btn-square, .btn-icon, .icon-only)) {
186
171
  width: auto;
187
172
  min-width: 0;
188
173
  aspect-ratio: 1;
189
174
  }
190
- .ig:not(.ig-bar) .ig-leading > :global(:first-child) {
175
+ .ig-leading > :global(:first-child) {
191
176
  --btn-radius: var(--ig-fuse-r) 0 0 var(--ig-fuse-r);
192
177
  border-radius: var(--ig-fuse-r) 0 0 var(--ig-fuse-r);
193
178
  }
194
- .ig:not(.ig-bar) .ig-trailing > :global(:last-child) {
179
+ .ig-trailing > :global(:last-child) {
195
180
  --btn-radius: 0 var(--ig-fuse-r) var(--ig-fuse-r) 0;
196
181
  border-radius: 0 var(--ig-fuse-r) var(--ig-fuse-r) 0;
197
182
  }
198
- .ig:not(.ig-bar) .ig-adorn :global(.split-main) {
183
+ .ig-adorn :global(.split-main) {
199
184
  --btn-radius: 0;
200
185
  }
201
- .ig:not(.ig-bar) .ig-adorn :global(.split-caret) {
186
+ .ig-adorn :global(.split-caret) {
202
187
  --pop-trigger-radius: 0;
203
188
  }
204
- .ig:not(.ig-bar) .ig-adorn :global(.split-caret .pop-trigger) {
189
+ .ig-adorn :global(.split-caret .pop-trigger) {
205
190
  height: 100%;
206
191
  }
207
- .ig:not(.ig-bar) .ig-leading > :global(:first-child .split-main) {
192
+ .ig-leading > :global(:first-child .split-main) {
208
193
  --btn-radius: var(--ig-fuse-r) 0 0 var(--ig-fuse-r);
209
194
  }
210
- .ig:not(.ig-bar) .ig-trailing > :global(:last-child .split-caret) {
195
+ .ig-trailing > :global(:last-child .split-caret) {
211
196
  --pop-trigger-radius: 0 var(--ig-fuse-r) var(--ig-fuse-r) 0;
212
197
  }
198
+ .ig-bar .ig-adorn {
199
+ top: auto;
200
+ height: calc(var(--ig-h) - 1px);
201
+ }
202
+ .ig-bar .ig-leading > :global(:first-child) {
203
+ --btn-radius: 0 0 0 var(--ig-fuse-r);
204
+ border-radius: 0 0 0 var(--ig-fuse-r);
205
+ }
206
+ .ig-bar .ig-trailing > :global(:last-child) {
207
+ --btn-radius: 0 0 var(--ig-fuse-r) 0;
208
+ border-radius: 0 0 var(--ig-fuse-r) 0;
209
+ }
210
+ .ig-bar .ig-leading > :global(:first-child .split-main) {
211
+ --btn-radius: 0 0 0 var(--ig-fuse-r);
212
+ }
213
+ .ig-bar .ig-trailing > :global(:last-child .split-caret) {
214
+ --pop-trigger-radius: 0 0 var(--ig-fuse-r) 0;
215
+ }
213
216
  .ig-bar .ig-field {
214
217
  padding-bottom: var(--ig-h);
215
218
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dorsk/tsumikit",
3
- "version": "0.60.0",
3
+ "version": "0.60.2",
4
4
  "description": "Minimal, dependency-free Svelte 5 + pure-CSS UI kit. Token-driven atoms, molecules & layouts with theming out of the box.",
5
5
  "type": "module",
6
6
  "license": "MIT",