@nori-ui/core 1.3.0 → 1.5.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 (43) hide show
  1. package/dist/{chunk-V2AWSDDZ.js → chunk-76FZF4GM.js} +3 -3
  2. package/dist/{chunk-V2AWSDDZ.js.map → chunk-76FZF4GM.js.map} +1 -1
  3. package/dist/chunk-BNDUQNG7.js +443 -0
  4. package/dist/chunk-BNDUQNG7.js.map +1 -0
  5. package/dist/{chunk-XXBN6CIK.js → chunk-F7G6R373.js} +3 -3
  6. package/dist/{chunk-XXBN6CIK.js.map → chunk-F7G6R373.js.map} +1 -1
  7. package/dist/{chunk-HZKXPN6B.js → chunk-ND7MRYW7.js} +3 -3
  8. package/dist/{chunk-HZKXPN6B.js.map → chunk-ND7MRYW7.js.map} +1 -1
  9. package/dist/chunk-O4NMS3KB.js +11 -0
  10. package/dist/chunk-O4NMS3KB.js.map +1 -0
  11. package/dist/{chunk-SJZTETUT.js → chunk-VMAGFYHG.js} +3 -3
  12. package/dist/{chunk-SJZTETUT.js.map → chunk-VMAGFYHG.js.map} +1 -1
  13. package/dist/{chunk-OCHEPOOO.js → chunk-Y4ZRSW35.js} +3 -3
  14. package/dist/{chunk-OCHEPOOO.js.map → chunk-Y4ZRSW35.js.map} +1 -1
  15. package/dist/client.cjs +447 -3
  16. package/dist/client.cjs.map +1 -1
  17. package/dist/client.d.cts +2 -0
  18. package/dist/client.d.ts +2 -0
  19. package/dist/client.js +14 -12
  20. package/dist/client.js.map +1 -1
  21. package/dist/components/Accordion/index.js +2 -2
  22. package/dist/components/Calendar/index.js +2 -2
  23. package/dist/components/Combobox/index.cjs +1374 -0
  24. package/dist/components/Combobox/index.cjs.map +1 -0
  25. package/dist/components/Combobox/index.d.cts +17 -0
  26. package/dist/components/Combobox/index.d.ts +17 -0
  27. package/dist/components/Combobox/index.js +9 -0
  28. package/dist/components/Combobox/index.js.map +1 -0
  29. package/dist/components/DatePicker/index.js +3 -3
  30. package/dist/components/Pagination/index.js +2 -2
  31. package/dist/components/Sheet/index.cjs +855 -0
  32. package/dist/components/Sheet/index.cjs.map +1 -0
  33. package/dist/components/Sheet/index.d.cts +104 -0
  34. package/dist/components/Sheet/index.d.ts +104 -0
  35. package/dist/components/Sheet/index.js +8 -0
  36. package/dist/components/Sheet/index.js.map +1 -0
  37. package/dist/components/Switch/index.js +2 -2
  38. package/dist/index.cjs +447 -3
  39. package/dist/index.cjs.map +1 -1
  40. package/dist/index.d.cts +2 -0
  41. package/dist/index.d.ts +2 -0
  42. package/dist/index.js +13 -11
  43. package/package.json +1 -1
package/dist/client.cjs CHANGED
@@ -6611,6 +6611,9 @@ var Checkbox = /* @__PURE__ */ __name(({
6611
6611
  }
6612
6612
  );
6613
6613
  }, "Checkbox");
6614
+ var Combobox = /* @__PURE__ */ __name((props) => {
6615
+ return /* @__PURE__ */ jsxRuntime.jsx(Select, { searchable: true, ...props });
6616
+ }, "Combobox");
6614
6617
  var MenuContext = React.createContext(null);
6615
6618
  var MenuContextProvider = /* @__PURE__ */ __name(({
6616
6619
  open,
@@ -10665,6 +10668,436 @@ var Separator = /* @__PURE__ */ __name(({
10665
10668
  }
10666
10669
  );
10667
10670
  }, "Separator");
10671
+ var SIZE_PERCENT = {
10672
+ sm: "25%",
10673
+ md: "50%",
10674
+ lg: "75%",
10675
+ full: "100%"
10676
+ };
10677
+ var SheetContext = React.createContext(null);
10678
+ var useSheetContext = /* @__PURE__ */ __name((label) => {
10679
+ const ctx = React.useContext(SheetContext);
10680
+ if (!ctx) {
10681
+ throw new Error(`<${label}> must be rendered inside a <Sheet>.`);
10682
+ }
10683
+ return ctx;
10684
+ }, "useSheetContext");
10685
+ var SheetRoot = /* @__PURE__ */ __name(({
10686
+ open,
10687
+ defaultOpen = false,
10688
+ onOpenChange,
10689
+ side = "bottom",
10690
+ size = "md",
10691
+ dismissible = true,
10692
+ children
10693
+ }) => {
10694
+ const [inner, setInner] = React.useState(defaultOpen);
10695
+ const isControlled = open !== void 0;
10696
+ const current = isControlled ? open : inner;
10697
+ const setOpen = React.useCallback(
10698
+ (next) => {
10699
+ if (!isControlled) {
10700
+ setInner(next);
10701
+ }
10702
+ onOpenChange?.(next);
10703
+ },
10704
+ [isControlled, onOpenChange]
10705
+ );
10706
+ const baseId = React.useId();
10707
+ const triggerRef = React.useRef(null);
10708
+ const ctxValue = {
10709
+ open: current,
10710
+ setOpen,
10711
+ titleId: `${baseId}-title`,
10712
+ descriptionId: `${baseId}-description`,
10713
+ triggerRef,
10714
+ side,
10715
+ size,
10716
+ dismissible
10717
+ };
10718
+ return /* @__PURE__ */ jsxRuntime.jsx(SheetContext.Provider, { value: ctxValue, children });
10719
+ }, "SheetRoot");
10720
+ var SheetTrigger = /* @__PURE__ */ __name(({ asChild = true, children, className, testID }) => {
10721
+ const ctx = useSheetContext("SheetTrigger");
10722
+ const onPress = React.useCallback(() => ctx.setOpen(true), [ctx]);
10723
+ if (asChild && React.isValidElement(children)) {
10724
+ const child = children;
10725
+ const fire = /* @__PURE__ */ __name((existing) => (event) => {
10726
+ existing?.(event);
10727
+ ctx.setOpen(true);
10728
+ }, "fire");
10729
+ return /* @__PURE__ */ jsxRuntime.jsx(
10730
+ Slot,
10731
+ {
10732
+ ref: (node) => {
10733
+ ctx.triggerRef.current = node;
10734
+ },
10735
+ onClick: fire(child.props.onClick),
10736
+ onPress: fire(child.props.onPress),
10737
+ ...testID !== void 0 ? { "data-testid": testID } : {},
10738
+ ...className !== void 0 ? { className } : {},
10739
+ children: child
10740
+ }
10741
+ );
10742
+ }
10743
+ return /* @__PURE__ */ jsxRuntime.jsx(
10744
+ reactNative.Pressable,
10745
+ {
10746
+ ref: (node) => {
10747
+ ctx.triggerRef.current = node;
10748
+ },
10749
+ onPress,
10750
+ ...testID !== void 0 ? { testID } : {},
10751
+ ...className !== void 0 ? { className } : {},
10752
+ children: wrapStringChildren5(children)
10753
+ }
10754
+ );
10755
+ }, "SheetTrigger");
10756
+ var SheetHeader = /* @__PURE__ */ __name(({ children, className }) => {
10757
+ const colors = useThemeColors();
10758
+ return /* @__PURE__ */ jsxRuntime.jsx(
10759
+ reactNative.View,
10760
+ {
10761
+ className: cn("flex-col gap-1", className),
10762
+ style: {
10763
+ flexDirection: "column",
10764
+ gap: px(colors.spacing["1"]),
10765
+ paddingHorizontal: px(colors.spacing["6"]),
10766
+ paddingTop: px(colors.spacing["6"]),
10767
+ paddingBottom: px(colors.spacing["2"])
10768
+ },
10769
+ children
10770
+ }
10771
+ );
10772
+ }, "SheetHeader");
10773
+ var SheetTitle = /* @__PURE__ */ __name(({ children, className }) => {
10774
+ const ctx = useSheetContext("SheetTitle");
10775
+ const colors = useThemeColors();
10776
+ return /* @__PURE__ */ jsxRuntime.jsx(
10777
+ reactNative.Text,
10778
+ {
10779
+ nativeID: ctx.titleId,
10780
+ id: ctx.titleId,
10781
+ role: "heading",
10782
+ "aria-level": 2,
10783
+ className: cn("text-lg font-semibold text-semantic-text-default", className),
10784
+ style: {
10785
+ color: colors.semantic.text.default,
10786
+ fontFamily: colors.fontFamily.display,
10787
+ fontSize: px(colors.fontSize.lg),
10788
+ fontWeight: colors.fontWeight.semibold
10789
+ },
10790
+ children
10791
+ }
10792
+ );
10793
+ }, "SheetTitle");
10794
+ var SheetDescription = /* @__PURE__ */ __name(({ children, className }) => {
10795
+ const ctx = useSheetContext("SheetDescription");
10796
+ const colors = useThemeColors();
10797
+ return /* @__PURE__ */ jsxRuntime.jsx(
10798
+ reactNative.Text,
10799
+ {
10800
+ nativeID: ctx.descriptionId,
10801
+ id: ctx.descriptionId,
10802
+ className: cn("text-sm text-semantic-text-muted", className),
10803
+ style: {
10804
+ color: colors.semantic.text.muted,
10805
+ fontFamily: colors.fontFamily.body,
10806
+ fontSize: px(colors.fontSize.sm),
10807
+ lineHeight: px(colors.fontSize.sm) * Number(colors.lineHeight.normal)
10808
+ },
10809
+ children
10810
+ }
10811
+ );
10812
+ }, "SheetDescription");
10813
+ var SheetBody = /* @__PURE__ */ __name(({ children, className }) => {
10814
+ const colors = useThemeColors();
10815
+ return /* @__PURE__ */ jsxRuntime.jsx(
10816
+ reactNative.View,
10817
+ {
10818
+ className: cn("flex-1", className),
10819
+ style: {
10820
+ flex: 1,
10821
+ paddingHorizontal: px(colors.spacing["6"]),
10822
+ paddingVertical: px(colors.spacing["4"])
10823
+ },
10824
+ children
10825
+ }
10826
+ );
10827
+ }, "SheetBody");
10828
+ var SheetFooter = /* @__PURE__ */ __name(({ children, className }) => {
10829
+ const colors = useThemeColors();
10830
+ return /* @__PURE__ */ jsxRuntime.jsx(
10831
+ reactNative.View,
10832
+ {
10833
+ className: cn("flex-row items-center justify-end gap-2", className),
10834
+ style: {
10835
+ flexDirection: "row",
10836
+ alignItems: "center",
10837
+ justifyContent: "flex-end",
10838
+ gap: px(colors.spacing["2"]),
10839
+ paddingHorizontal: px(colors.spacing["6"]),
10840
+ paddingBottom: px(colors.spacing["6"]),
10841
+ paddingTop: px(colors.spacing["2"])
10842
+ },
10843
+ children
10844
+ }
10845
+ );
10846
+ }, "SheetFooter");
10847
+ var SheetClose = /* @__PURE__ */ __name(({
10848
+ asChild = true,
10849
+ children,
10850
+ className,
10851
+ testID,
10852
+ accessibilityLabel = "Close"
10853
+ }) => {
10854
+ const ctx = useSheetContext("SheetClose");
10855
+ const onPress = React.useCallback(() => ctx.setOpen(false), [ctx]);
10856
+ if (asChild && React.isValidElement(children)) {
10857
+ const child = children;
10858
+ const fire = /* @__PURE__ */ __name((existing) => (event) => {
10859
+ existing?.(event);
10860
+ ctx.setOpen(false);
10861
+ }, "fire");
10862
+ return /* @__PURE__ */ jsxRuntime.jsx(
10863
+ Slot,
10864
+ {
10865
+ onClick: fire(child.props.onClick),
10866
+ onPress: fire(child.props.onPress),
10867
+ ...testID !== void 0 ? { "data-testid": testID } : {},
10868
+ ...className !== void 0 ? { className } : {},
10869
+ children: child
10870
+ }
10871
+ );
10872
+ }
10873
+ return /* @__PURE__ */ jsxRuntime.jsx(
10874
+ reactNative.Pressable,
10875
+ {
10876
+ onPress,
10877
+ role: "button",
10878
+ accessibilityRole: "button",
10879
+ accessibilityLabel,
10880
+ "aria-label": accessibilityLabel,
10881
+ ...testID !== void 0 ? { testID } : {},
10882
+ ...className !== void 0 ? { className } : {},
10883
+ children: wrapStringChildren5(children)
10884
+ }
10885
+ );
10886
+ }, "SheetClose");
10887
+ function wrapStringChildren5(children) {
10888
+ if (typeof children === "string" || typeof children === "number") {
10889
+ return /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { children });
10890
+ }
10891
+ return children;
10892
+ }
10893
+ __name(wrapStringChildren5, "wrapStringChildren");
10894
+ var SCRIM_COLOR3 = "rgba(0, 0, 0, 0.40)";
10895
+ var FOCUSABLE_SELECTOR3 = 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]):not([type="hidden"]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';
10896
+ var SheetPanel = /* @__PURE__ */ __name(({ children, className, testID }) => {
10897
+ const ctx = useSheetContext("SheetPanel");
10898
+ const colors = useThemeColors();
10899
+ const panelRef = React.useRef(null);
10900
+ const overlayDomRef = React.useRef(null);
10901
+ const [entered, setEntered] = React.useState(false);
10902
+ React.useEffect(() => {
10903
+ if (reactNative.Platform.OS !== "web") {
10904
+ setEntered(true);
10905
+ return;
10906
+ }
10907
+ if (!ctx.open) {
10908
+ setEntered(false);
10909
+ return;
10910
+ }
10911
+ const id = requestAnimationFrame(() => setEntered(true));
10912
+ return () => cancelAnimationFrame(id);
10913
+ }, [ctx.open]);
10914
+ React.useEffect(() => {
10915
+ if (reactNative.Platform.OS !== "web") {
10916
+ return;
10917
+ }
10918
+ const node = overlayDomRef.current;
10919
+ if (!node) {
10920
+ return;
10921
+ }
10922
+ node.style.transitionProperty = "background-color";
10923
+ node.style.transitionDuration = "200ms";
10924
+ node.style.transitionTimingFunction = "ease-out";
10925
+ node.style.backgroundColor = entered ? SCRIM_COLOR3 : "rgba(0,0,0,0)";
10926
+ }, [entered]);
10927
+ React.useEffect(() => {
10928
+ if (!ctx.open || reactNative.Platform.OS !== "web" || typeof document === "undefined") {
10929
+ return;
10930
+ }
10931
+ const previouslyFocused = document.activeElement;
10932
+ const prevBodyOverflow = document.body.style.overflow;
10933
+ document.body.style.overflow = "hidden";
10934
+ const focusFirst = /* @__PURE__ */ __name(() => {
10935
+ const node = panelRef.current;
10936
+ if (!node) {
10937
+ return;
10938
+ }
10939
+ const focusable = node.querySelectorAll(FOCUSABLE_SELECTOR3);
10940
+ const first = focusable[0];
10941
+ if (first) {
10942
+ first.focus();
10943
+ } else {
10944
+ node.setAttribute("tabindex", "-1");
10945
+ node.focus();
10946
+ }
10947
+ }, "focusFirst");
10948
+ focusFirst();
10949
+ const onKeyDown = /* @__PURE__ */ __name((event) => {
10950
+ if (event.key === "Escape") {
10951
+ event.preventDefault();
10952
+ ctx.setOpen(false);
10953
+ return;
10954
+ }
10955
+ if (event.key !== "Tab") {
10956
+ return;
10957
+ }
10958
+ const node = panelRef.current;
10959
+ if (!node) {
10960
+ return;
10961
+ }
10962
+ const focusable = Array.from(node.querySelectorAll(FOCUSABLE_SELECTOR3)).filter(
10963
+ (el) => el.offsetParent !== null || el === document.activeElement
10964
+ );
10965
+ if (focusable.length === 0) {
10966
+ event.preventDefault();
10967
+ return;
10968
+ }
10969
+ const first = focusable[0];
10970
+ const last = focusable[focusable.length - 1];
10971
+ if (!first || !last) {
10972
+ return;
10973
+ }
10974
+ if (event.shiftKey) {
10975
+ if (document.activeElement === first || !node.contains(document.activeElement)) {
10976
+ event.preventDefault();
10977
+ last.focus();
10978
+ }
10979
+ } else if (document.activeElement === last) {
10980
+ event.preventDefault();
10981
+ first.focus();
10982
+ }
10983
+ }, "onKeyDown");
10984
+ document.addEventListener("keydown", onKeyDown);
10985
+ return () => {
10986
+ document.removeEventListener("keydown", onKeyDown);
10987
+ document.body.style.overflow = prevBodyOverflow;
10988
+ const restoreTo = ctx.triggerRef.current ?? previouslyFocused;
10989
+ restoreTo?.focus?.();
10990
+ };
10991
+ }, [ctx.open, ctx.setOpen, ctx.triggerRef]);
10992
+ const onBackdropPress = React.useCallback(() => {
10993
+ if (ctx.dismissible) {
10994
+ ctx.setOpen(false);
10995
+ }
10996
+ }, [ctx]);
10997
+ const isHorizontal = ctx.side === "left" || ctx.side === "right";
10998
+ const dim = typeof ctx.size === "number" ? ctx.size : SIZE_PERCENT[ctx.size];
10999
+ const panelStyle = {
11000
+ position: "absolute",
11001
+ backgroundColor: colors.semantic.background.elevated,
11002
+ ...isHorizontal ? { top: 0, bottom: 0 } : { left: 0, right: 0 },
11003
+ ...ctx.side === "bottom" && { bottom: 0 },
11004
+ ...ctx.side === "top" && { top: 0 },
11005
+ ...ctx.side === "left" && { left: 0 },
11006
+ ...ctx.side === "right" && { right: 0 }
11007
+ };
11008
+ const translateStyle = reactNative.Platform.OS === "web" ? {
11009
+ transform: entered ? "translateX(0) translateY(0)" : translateOffscreen(ctx.side),
11010
+ transitionProperty: "transform",
11011
+ transitionDuration: "280ms",
11012
+ transitionTimingFunction: "cubic-bezier(0.16, 1, 0.3, 1)"
11013
+ } : {};
11014
+ const overlayStyle = {
11015
+ position: reactNative.Platform.OS === "web" ? "fixed" : "absolute",
11016
+ top: 0,
11017
+ left: 0,
11018
+ right: 0,
11019
+ bottom: 0,
11020
+ ...reactNative.Platform.OS === "web" ? { zIndex: 50 } : { backgroundColor: SCRIM_COLOR3 }
11021
+ };
11022
+ const sizeStyle = isHorizontal ? { width: dim, height: "100%" } : { height: dim, width: "100%" };
11023
+ return /* @__PURE__ */ jsxRuntime.jsx(
11024
+ reactNative.Modal,
11025
+ {
11026
+ visible: ctx.open,
11027
+ transparent: true,
11028
+ animationType: reactNative.Platform.OS === "web" ? "none" : ctx.side === "bottom" || ctx.side === "top" ? "slide" : "fade",
11029
+ onRequestClose: () => ctx.setOpen(false),
11030
+ children: /* @__PURE__ */ jsxRuntime.jsx(
11031
+ reactNative.Pressable,
11032
+ {
11033
+ accessibilityRole: "none",
11034
+ "aria-hidden": true,
11035
+ ref: (node) => {
11036
+ overlayDomRef.current = node;
11037
+ },
11038
+ style: overlayStyle,
11039
+ onPress: onBackdropPress,
11040
+ children: /* @__PURE__ */ jsxRuntime.jsx(
11041
+ reactNative.Pressable,
11042
+ {
11043
+ onPress: (event) => event.stopPropagation?.(),
11044
+ ref: (node) => {
11045
+ panelRef.current = node;
11046
+ },
11047
+ role: "dialog",
11048
+ accessibilityRole: "none",
11049
+ "aria-modal": true,
11050
+ "aria-labelledby": ctx.titleId,
11051
+ "aria-describedby": ctx.descriptionId,
11052
+ "data-side": ctx.side,
11053
+ ...testID !== void 0 ? { testID } : {},
11054
+ className: cn("bg-semantic-background-elevated", className),
11055
+ style: [
11056
+ panelStyle,
11057
+ sizeStyle,
11058
+ translateStyle,
11059
+ {
11060
+ shadowColor: "#000",
11061
+ shadowOffset: { width: 0, height: -2 },
11062
+ shadowOpacity: 0.15,
11063
+ shadowRadius: 20,
11064
+ elevation: 24,
11065
+ ...ctx.side === "bottom" ? { borderTopLeftRadius: 16, borderTopRightRadius: 16 } : {},
11066
+ ...ctx.side === "top" ? { borderBottomLeftRadius: 16, borderBottomRightRadius: 16 } : {}
11067
+ }
11068
+ ],
11069
+ children
11070
+ }
11071
+ )
11072
+ }
11073
+ )
11074
+ }
11075
+ );
11076
+ }, "SheetPanel");
11077
+ var Sheet = Object.assign(SheetRoot, {
11078
+ Trigger: SheetTrigger,
11079
+ Panel: SheetPanel,
11080
+ Header: SheetHeader,
11081
+ Title: SheetTitle,
11082
+ Description: SheetDescription,
11083
+ Body: SheetBody,
11084
+ Footer: SheetFooter,
11085
+ Close: SheetClose
11086
+ });
11087
+ var Drawer = Sheet;
11088
+ function translateOffscreen(side) {
11089
+ switch (side) {
11090
+ case "bottom":
11091
+ return "translateY(100%)";
11092
+ case "top":
11093
+ return "translateY(-100%)";
11094
+ case "left":
11095
+ return "translateX(-100%)";
11096
+ case "right":
11097
+ return "translateX(100%)";
11098
+ }
11099
+ }
11100
+ __name(translateOffscreen, "translateOffscreen");
10668
11101
  var PULSE_DURATION_MS = 900;
10669
11102
  var PULSE_MIN = 0.55;
10670
11103
  var PULSE_MAX = 1;
@@ -12578,17 +13011,17 @@ var TooltipTrigger = /* @__PURE__ */ __name(({ asChild = true, children, classNa
12578
13011
  },
12579
13012
  ...testID !== void 0 ? { testID } : {},
12580
13013
  ...className !== void 0 ? { className } : {},
12581
- children: wrapStringChildren5(children)
13014
+ children: wrapStringChildren6(children)
12582
13015
  }
12583
13016
  );
12584
13017
  }, "TooltipTrigger");
12585
- function wrapStringChildren5(children) {
13018
+ function wrapStringChildren6(children) {
12586
13019
  if (typeof children === "string" || typeof children === "number") {
12587
13020
  return /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { children });
12588
13021
  }
12589
13022
  return children;
12590
13023
  }
12591
- __name(wrapStringChildren5, "wrapStringChildren");
13024
+ __name(wrapStringChildren6, "wrapStringChildren");
12592
13025
  var GAP2 = 4;
12593
13026
  var MIN_WIDTH2 = 0;
12594
13027
  function computePosition2(rect, side, align, contentSize) {
@@ -13030,9 +13463,11 @@ exports.Button = Button;
13030
13463
  exports.Calendar = Calendar;
13031
13464
  exports.Card = Card;
13032
13465
  exports.Checkbox = Checkbox;
13466
+ exports.Combobox = Combobox;
13033
13467
  exports.ContextMenu = ContextMenu;
13034
13468
  exports.DatePicker = DatePicker;
13035
13469
  exports.Dialog = Dialog;
13470
+ exports.Drawer = Drawer;
13036
13471
  exports.DropdownMenu = DropdownMenu;
13037
13472
  exports.Field = Field;
13038
13473
  exports.FloatButton = FloatButton;
@@ -13056,6 +13491,15 @@ exports.SegmentedControl = SegmentedControl;
13056
13491
  exports.Select = Select;
13057
13492
  exports.SemanticIconsProvider = SemanticIconsProvider;
13058
13493
  exports.Separator = Separator;
13494
+ exports.Sheet = Sheet;
13495
+ exports.SheetBody = SheetBody;
13496
+ exports.SheetClose = SheetClose;
13497
+ exports.SheetDescription = SheetDescription;
13498
+ exports.SheetFooter = SheetFooter;
13499
+ exports.SheetHeader = SheetHeader;
13500
+ exports.SheetPanel = SheetPanel;
13501
+ exports.SheetTitle = SheetTitle;
13502
+ exports.SheetTrigger = SheetTrigger;
13059
13503
  exports.Skeleton = Skeleton;
13060
13504
  exports.Slider = Slider;
13061
13505
  exports.SliderGestureProvider = SliderGestureProvider;