@leavepulse/ui 0.22.16 → 0.22.18

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.
@@ -5,9 +5,9 @@ import { _ as _sfc_main$2 } from "./LpAutocomplete-DExlIZe_.js";
5
5
  import { _ as _sfc_main$3 } from "./LpButton-5VXXCjwF.js";
6
6
  import { _ as _sfc_main$1 } from "./LpFormField-Bn-ZwC6z.js";
7
7
  import { _ as _sfc_main$4 } from "./LpIcon-CCnX5_2j.js";
8
- import { _ as _sfc_main$5 } from "./LpInput-DYc9O-db.js";
8
+ import { _ as _sfc_main$5 } from "./LpInput-BkomKdqQ.js";
9
9
  import { _ as _sfc_main$7 } from "./LpModal-CNNSf5pv.js";
10
- import { _ as _sfc_main$6 } from "./LpSelect-D5mU4cZO.js";
10
+ import { _ as _sfc_main$6 } from "./LpSelect-C0QqopPi.js";
11
11
  const _hoisted_1 = { class: "flex flex-col gap-3" };
12
12
  const _hoisted_2 = { class: "flex items-stretch gap-2" };
13
13
  const _hoisted_3 = { class: "grid gap-3 sm:grid-cols-[minmax(0,1fr)_10rem]" };
@@ -31,7 +31,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
31
31
  const shell = tv({
32
32
  base: [
33
33
  "flex w-full items-center bg-surface-soft text-ink",
34
- "rounded-control border border-line",
34
+ // `overflow-hidden` because rounding a box does NOT clip what is inside it:
35
+ // the shell carries the radius while the bare <input> is square, so any
36
+ // paint of its own — the background a browser applies to an autofilled
37
+ // field, most visibly — reached into the rounded corners.
38
+ "overflow-hidden rounded-control border border-line",
35
39
  "transition-colors duration-[var(--duration-fast)]",
36
40
  "focus-within:border-brand focus-within:ring-2 focus-within:ring-ring",
37
41
  "has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-55"
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, ref, openBlock, createBlock, createSlots, withCtx, createElementVNode, createVNode, renderSlot } from "vue";
2
2
  import { _ as _sfc_main$2 } from "./LpIcon-CCnX5_2j.js";
3
- import { _ as _sfc_main$1 } from "./LpInput-DYc9O-db.js";
3
+ import { _ as _sfc_main$1 } from "./LpInput-BkomKdqQ.js";
4
4
  const _hoisted_1 = ["aria-label"];
5
5
  const __default__ = { inheritAttrs: false };
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -69,9 +69,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
69
69
  function decode(v) {
70
70
  return v === EMPTY_SENTINEL ? "" : v;
71
71
  }
72
+ const hasEmptyOption = computed(
73
+ () => props.options.some((o) => o.value === "")
74
+ );
72
75
  const comboModel = computed(() => {
73
76
  const v = props.modelValue;
74
77
  if (Array.isArray(v)) return v.map((item) => encode(item));
78
+ if (v === "" && !hasEmptyOption.value) return void 0;
75
79
  return encode(v);
76
80
  });
77
81
  const filtered = computed(() => {
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAddressInput-DoiamNCt.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAddressInput-DYN7a67n.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpInput-DYc9O-db.js";
1
+ import { _ as _sfc_main } from "../chunks/LpInput-BkomKdqQ.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpPasswordInput-BvF2omhn.js";
1
+ import { _ as _sfc_main } from "../chunks/LpPasswordInput-DgUC2Ur7.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSelect-D5mU4cZO.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSelect-C0QqopPi.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { _ } from "./chunks/LayoutCanvas-Dd20boUG.js";
2
- import { _ as _2 } from "./chunks/LpAddressInput-DoiamNCt.js";
2
+ import { _ as _2 } from "./chunks/LpAddressInput-DYN7a67n.js";
3
3
  import { _ as _3 } from "./chunks/LpMapPicker-DFKrd1Ne.js";
4
4
  import { OSM_TILES, createNominatimProvider, emptyAddress, formatAddress, project, tileUrl, unproject } from "./components/address.js";
5
5
  import { _ as _4 } from "./chunks/LpAlert-BAYHDSS1.js";
@@ -27,7 +27,7 @@ import { ancestorIds, checkStateOf, checkedCount, computeStats, fileIcon, format
27
27
  import { _ as _24 } from "./chunks/LpFormField-Bn-ZwC6z.js";
28
28
  import { _ as _25 } from "./chunks/LpIcon-CCnX5_2j.js";
29
29
  import { _ as _26 } from "./chunks/LpInfraNode-qIL3l7IO.js";
30
- import { _ as _27 } from "./chunks/LpInput-DYc9O-db.js";
30
+ import { _ as _27 } from "./chunks/LpInput-BkomKdqQ.js";
31
31
  import { _ as _28 } from "./chunks/LpLightbox-Ci35Y_xP.js";
32
32
  import { fileNameOf } from "./components/lightbox.js";
33
33
  import { _ as _29 } from "./chunks/LpLink-DHwOEp4e.js";
@@ -37,7 +37,7 @@ import { _ as _32 } from "./chunks/LpNotificationBell-DWDEkmdA.js";
37
37
  import { _ as _33 } from "./chunks/LpNumberField-B3JuQFol.js";
38
38
  import { _ as _34 } from "./chunks/LpOtpInput-DqaT0Z75.js";
39
39
  import { _ as _35 } from "./chunks/LpPagination-CeGuNe_q.js";
40
- import { _ as _36 } from "./chunks/LpPasswordInput-BvF2omhn.js";
40
+ import { _ as _36 } from "./chunks/LpPasswordInput-DgUC2Ur7.js";
41
41
  import { _ as _37 } from "./chunks/LpPhoneInput-BxuDyXp3.js";
42
42
  import { flagEmoji, loadCountries, matchCountryByValue } from "./components/countries.js";
43
43
  import { _ as _38 } from "./chunks/LpPopover-8268UmlC.js";
@@ -46,7 +46,7 @@ import { _ as _40 } from "./chunks/LpRadio-CL-pI0_O.js";
46
46
  import { _ as _41 } from "./chunks/LpRadioGroup-B4yDTmi6.js";
47
47
  import { _ as _42 } from "./chunks/LpScrollArea-D8xyKXcF.js";
48
48
  import { _ as _43 } from "./chunks/LpSegmented-BmpanyAo.js";
49
- import { _ as _44 } from "./chunks/LpSelect-D5mU4cZO.js";
49
+ import { _ as _44 } from "./chunks/LpSelect-C0QqopPi.js";
50
50
  import { _ as _45 } from "./chunks/LpServiceNode-D8uJ8sGk.js";
51
51
  import { default as default3 } from "./components/LpShortcutsDialog.vue.js";
52
52
  import { _ as _46 } from "./chunks/LpSidebar-D3GGLSE7.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leavepulse/ui",
3
- "version": "0.22.16",
3
+ "version": "0.22.18",
4
4
  "type": "module",
5
5
  "description": "LeavePulse token-driven Vue component kit.",
6
6
  "repository": {
@@ -14,7 +14,11 @@ import LpIcon from "./LpIcon.vue"
14
14
  const shell = tv({
15
15
  base: [
16
16
  "flex w-full items-center bg-surface-soft text-ink",
17
- "rounded-control border border-line",
17
+ // `overflow-hidden` because rounding a box does NOT clip what is inside it:
18
+ // the shell carries the radius while the bare <input> is square, so any
19
+ // paint of its own — the background a browser applies to an autofilled
20
+ // field, most visibly — reached into the rounded corners.
21
+ "overflow-hidden rounded-control border border-line",
18
22
  "transition-colors duration-[var(--duration-fast)]",
19
23
  "focus-within:border-brand focus-within:ring-2 focus-within:ring-ring",
20
24
  "has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-55",
Binary file
@@ -50,15 +50,15 @@
50
50
  * landed on the bare <input> inside — a band of colour stopping short of the
51
51
  * field's real height. The input now stretches the full inner height.
52
52
  *
53
- * Second, the wrapper is what carries the rounded corners, so an inset shadow
54
- * on a square <input> filled the rounded frame with square corners. The radius
55
- * is inherited here so the tint follows the same shape as the field.
53
+ * Second, the wrapper carries the rounded corners while the <input> is square,
54
+ * so this paint reached into them. Rounding a box does not clip its contents —
55
+ * the shell does that with `overflow-hidden`, which fixes it for anything the
56
+ * field ever contains rather than for this one rule.
56
57
  */
57
58
  .lp-autofill:-webkit-autofill,
58
59
  .lp-autofill:-webkit-autofill:hover,
59
60
  .lp-autofill:-webkit-autofill:focus,
60
61
  .lp-autofill:-webkit-autofill:active {
61
- border-radius: inherit;
62
62
  box-shadow: inset 0 0 0 1000px var(--color-brand-soft);
63
63
  -webkit-text-fill-color: var(--color-ink);
64
64
  caret-color: var(--color-ink);
@@ -74,7 +74,6 @@
74
74
  * nothing on Firefox.
75
75
  */
76
76
  .lp-autofill:autofill {
77
- border-radius: inherit;
78
77
  box-shadow: inset 0 0 0 1000px var(--color-brand-soft);
79
78
  -webkit-text-fill-color: var(--color-ink);
80
79
  caret-color: var(--color-ink);