@kbach/react-native 1.0.0-beta.24 → 1.0.0-beta.25

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.
@@ -1,10 +1,10 @@
1
- import "./chunk-TS2EEVOE.mjs";
1
+ import "./chunk-JENWPIJT.mjs";
2
2
  import {
3
3
  Fragment,
4
4
  jsx,
5
5
  jsxs
6
- } from "./chunk-OS7EPBH5.mjs";
7
- import "./chunk-AG7ZQ2K4.mjs";
6
+ } from "./chunk-EBLZ3CJG.mjs";
7
+ import "./chunk-TBDAJIR3.mjs";
8
8
 
9
9
  // src/jsxRuntimeCore.ts
10
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -720,6 +720,27 @@ function resolveNegatableLength(theme, parsed) {
720
720
  if (px === 0) return "0px";
721
721
  return `-${px}px`;
722
722
  }
723
+ function fractionPercent(value) {
724
+ const slashIdx = value.indexOf("/");
725
+ if (slashIdx === -1) return null;
726
+ const numStr = value.slice(0, slashIdx);
727
+ const denStr = value.slice(slashIdx + 1);
728
+ const num = Number(numStr);
729
+ const den = Number(denStr);
730
+ if (!Number.isFinite(num) || !Number.isFinite(den) || numStr.trim() === "" || denStr.trim() === "") return null;
731
+ if (den === 0) return null;
732
+ const pct = num / den * 100;
733
+ const formatted = pct.toFixed(6);
734
+ const trimmed = formatted.replace(/0+$/, "").replace(/\.$/, "");
735
+ return `${trimmed}%`;
736
+ }
737
+ function resolveNegatableSize(theme, parsed) {
738
+ if (!parsed.isArbitrary && parsed.value !== null) {
739
+ const pct = fractionPercent(parsed.value);
740
+ if (pct !== null) return parsed.negative ? `-${pct}` : pct;
741
+ }
742
+ return resolveNegatableLength(theme, parsed);
743
+ }
723
744
  function resolvePercent(parsed) {
724
745
  if (parsed.negative) return null;
725
746
  const value = parsed.value;
@@ -873,43 +894,44 @@ function resolve(parsed, theme) {
873
894
  case "shrink":
874
895
  return [decl("flex-shrink", parsed.value ?? "1")];
875
896
  // top/right/bottom/left/inset support real Tailwind's negative-value
876
- // convention ("-top-4") — see resolveNegatableLength's own doc comment.
897
+ // convention ("-top-4") AND its percentage-fraction scale ("top-1/2",
898
+ // "-inset-1/3") — see resolveNegatableSize's own doc comment.
877
899
  case "top": {
878
- const v = resolveNegatableLength(theme, parsed);
900
+ const v = resolveNegatableSize(theme, parsed);
879
901
  return v === null ? null : [decl("top", v)];
880
902
  }
881
903
  case "right": {
882
- const v = resolveNegatableLength(theme, parsed);
904
+ const v = resolveNegatableSize(theme, parsed);
883
905
  return v === null ? null : [decl("right", v)];
884
906
  }
885
907
  case "bottom": {
886
- const v = resolveNegatableLength(theme, parsed);
908
+ const v = resolveNegatableSize(theme, parsed);
887
909
  return v === null ? null : [decl("bottom", v)];
888
910
  }
889
911
  case "left": {
890
- const v = resolveNegatableLength(theme, parsed);
912
+ const v = resolveNegatableSize(theme, parsed);
891
913
  return v === null ? null : [decl("left", v)];
892
914
  }
893
915
  case "inset": {
894
- const v = resolveNegatableLength(theme, parsed);
916
+ const v = resolveNegatableSize(theme, parsed);
895
917
  return v === null ? null : [decl("inset", v)];
896
918
  }
897
919
  case "inset-x": {
898
- const v = resolveNegatableLength(theme, parsed);
920
+ const v = resolveNegatableSize(theme, parsed);
899
921
  return v === null ? null : [decl("left", v), decl("right", v)];
900
922
  }
901
923
  case "inset-y": {
902
- const v = resolveNegatableLength(theme, parsed);
924
+ const v = resolveNegatableSize(theme, parsed);
903
925
  return v === null ? null : [decl("top", v), decl("bottom", v)];
904
926
  }
905
927
  // Logical inset — just a different CSS property name, same reasoning
906
928
  // as Rust's layout.rs (no direction-tracking logic needed here).
907
929
  case "start": {
908
- const v = resolveNegatableLength(theme, parsed);
930
+ const v = resolveNegatableSize(theme, parsed);
909
931
  return v === null ? null : [decl("inset-inline-start", v)];
910
932
  }
911
933
  case "end": {
912
- const v = resolveNegatableLength(theme, parsed);
934
+ const v = resolveNegatableSize(theme, parsed);
913
935
  return v === null ? null : [decl("inset-inline-end", v)];
914
936
  }
915
937
  // "aspect-" is a registered VALUE_PREFIXES entry (parser.ts), so
@@ -1007,20 +1029,6 @@ function namedSize(key) {
1007
1029
  return null;
1008
1030
  }
1009
1031
  }
1010
- function fractionPercent(value) {
1011
- const slashIdx = value.indexOf("/");
1012
- if (slashIdx === -1) return null;
1013
- const numStr = value.slice(0, slashIdx);
1014
- const denStr = value.slice(slashIdx + 1);
1015
- const num = Number(numStr);
1016
- const den = Number(denStr);
1017
- if (!Number.isFinite(num) || !Number.isFinite(den) || numStr.trim() === "" || denStr.trim() === "") return null;
1018
- if (den === 0) return null;
1019
- const pct = num / den * 100;
1020
- const formatted = pct.toFixed(6);
1021
- const trimmed = formatted.replace(/0+$/, "").replace(/\.$/, "");
1022
- return `${trimmed}%`;
1023
- }
1024
1032
  function cssSizeKeyword(key) {
1025
1033
  switch (key) {
1026
1034
  case "min":