diff --git a/common/ip-math.js b/common/ip-math.js index da25272dd..aedf2d0fc 100644 --- a/common/ip-math.js +++ b/common/ip-math.js @@ -247,7 +247,8 @@ export const cidrInfo = (str) => { /* ------------------------------------------------------------------ */ export const prefixContains = (network, prefix, family, value) => { - if (!isFamily(family) || !isPrefix(prefix, family) || !isBig(network) || !isBig(value)) return false; + if (!isFamily(family) || !isPrefix(prefix, family) + || !inFamily(network, family) || !inFamily(value, family)) return false; const shift = BigInt(BITS[family] - prefix); return (value >> shift) === (network >> shift); }; @@ -280,7 +281,10 @@ export const compareIps = (a, b) => { // Children of `cidrStr` at `newPrefix`. `total` is exact; `subnets` stops at // `limit` so a /8 → /32 request never materialises 16M strings. -export const splitCidr = (cidrStr, newPrefix, { limit = 1024 } = {}) => { +export const splitCidr = (cidrStr, newPrefix, options = {}) => { + if (!options || typeof options !== 'object' || Array.isArray(options)) return null; + const { limit = 1024 } = options; + if (!Number.isSafeInteger(limit) || limit < 0) return null; const cidr = parseCidr(cidrStr); if (!cidr || !isPrefix(newPrefix, cidr.family) || newPrefix < cidr.prefix) return null; const { family, network } = cidr; diff --git a/frontend/components/ui/slider/Slider.vue b/frontend/components/ui/slider/Slider.vue index da00e4290..4b7ea4ed3 100644 --- a/frontend/components/ui/slider/Slider.vue +++ b/frontend/components/ui/slider/Slider.vue @@ -60,7 +60,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits); v-for="(_, key) in modelValue" :key="key" data-slot="slider-thumb" - class="bg-white border-primary ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50" + class="bg-white border-primary ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 cursor-col-resize" /> diff --git a/frontend/components/widgets/ConnectivityAddDialog.vue b/frontend/components/widgets/ConnectivityAddDialog.vue index d20b5559c..39903e620 100644 --- a/frontend/components/widgets/ConnectivityAddDialog.vue +++ b/frontend/components/widgets/ConnectivityAddDialog.vue @@ -2,7 +2,7 @@ - + @@ -20,7 +20,7 @@ (inert once fully present) or a fresh list named after the curated one. --> -
    +
    • @@ -40,8 +40,7 @@ @@ -116,10 +115,9 @@ in utils/connectivity-lists.js. -->
      - + diff --git a/frontend/components/widgets/InfoBanner.vue b/frontend/components/widgets/InfoBanner.vue index 138f38024..b2569d96f 100644 --- a/frontend/components/widgets/InfoBanner.vue +++ b/frontend/components/widgets/InfoBanner.vue @@ -1,39 +1,44 @@ - +