aport-tools 4.1.23 → 4.1.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.
@@ -3,7 +3,8 @@ interface FormContextProps {
3
3
  formValues: Record<string, any>;
4
4
  setFormValue: (name: string, value: any) => void;
5
5
  errors: Record<string, string[]>;
6
- handleSubmit: (event: React.FormEvent<HTMLFormElement>) => Promise<void>;
6
+ setErrors: (errors: Record<string, string[]>) => void;
7
+ handleSubmit: () => void;
7
8
  }
8
9
  export declare const useFormContext: () => FormContextProps;
9
10
  interface FormProps {
package/dist/index.esm.js CHANGED
@@ -1,6 +1,6 @@
1
- /*! aport-tools v4.1.23 | ISC */
1
+ /*! aport-tools v4.1.25 | ISC */
2
2
  import React, { createContext, useState, useEffect, useContext, useMemo } from 'react';
3
- import { Appearance, StyleSheet, View, Text as Text$1, Switch, TouchableOpacity, ActivityIndicator, Platform, TextInput } from 'react-native';
3
+ import { Appearance, StyleSheet, View, Text as Text$1, Switch, TextInput, TouchableOpacity, ActivityIndicator, Platform } from 'react-native';
4
4
  import { useAsyncStorage } from '@react-native-async-storage/async-storage';
5
5
 
6
6
  /******************************************************************************
@@ -363,173 +363,60 @@ var styles$6 = StyleSheet.create({
363
363
  }
364
364
  });
365
365
 
366
- // src/components/Button.tsx
367
- /**
368
- * Determines the styles based on the button type and whether it is disabled.
369
- *
370
- * @param type - The type of the button ('submit', 'button', 'cancel').
371
- * @param disabled - Whether the button is disabled.
372
- * @param themeColors - The theme colors.
373
- * @returns The computed style for the button.
374
- */
375
- function typeStyles(type, disabled, themeColors) {
376
- switch (type) {
377
- case 'submit':
378
- return {
379
- backgroundColor: "rgba(".concat(themeColors === null || themeColors === void 0 ? void 0 : themeColors.primary.rgb.r, ", ").concat(themeColors === null || themeColors === void 0 ? void 0 : themeColors.primary.rgb.g, ", ").concat(themeColors === null || themeColors === void 0 ? void 0 : themeColors.primary.rgb.b, ", ").concat(disabled ? 0.5 : 1, ")"),
380
- borderWidth: 2,
381
- borderColor: themeColors === null || themeColors === void 0 ? void 0 : themeColors.primary.hex
382
- };
383
- case 'button':
384
- return {
385
- backgroundColor: themeColors === null || themeColors === void 0 ? void 0 : themeColors.primary.hex,
386
- borderColor: themeColors === null || themeColors === void 0 ? void 0 : themeColors.secondary.hex,
387
- opacity: disabled ? 0.5 : 1,
388
- borderWidth: 2
389
- };
390
- case 'cancel':
391
- return {
392
- backgroundColor: themeColors === null || themeColors === void 0 ? void 0 : themeColors.background.hex,
393
- borderWidth: 0
394
- };
395
- default:
396
- return {};
366
+ // src/forms/FormContext.tsx
367
+ var FormContext = /*#__PURE__*/createContext(undefined);
368
+ var useFormContext = function useFormContext() {
369
+ var context = useContext(FormContext);
370
+ if (!context) {
371
+ throw new Error("useFormContext must be used within a Form");
397
372
  }
398
- }
399
- /**
400
- * Button component that adapts its styles based on the current theme.
401
- * Supports dynamic styling, full-width option, rounded corners, and different types.
402
- *
403
- * @param disabled - If true, the button is disabled and not pressable.
404
- * @param isFullWidth - If true, the button expands to full width of its container.
405
- * @param children - Text content of the button.
406
- * @param onPress - Function to call when the button is pressed.
407
- * @param rounded - If true, the button has rounded corners.
408
- * @param borderRadius - Custom border radius value. Overrides the `rounded` prop if provided.
409
- * @param type - Specifies the button type for styling ('submit', 'button', 'cancel').
410
- */
411
- var Button = function Button(_a) {
412
- var children = _a.children,
413
- _b = _a.disabled,
414
- disabled = _b === void 0 ? false : _b,
415
- _c = _a.type,
416
- type = _c === void 0 ? 'button' : _c,
417
- _d = _a.rounded,
418
- rounded = _d === void 0 ? true : _d,
419
- _e = _a.borderRadius,
420
- borderRadius = _e === void 0 ? 30 : _e,
421
- _f = _a.isFullWidth,
422
- isFullWidth = _f === void 0 ? false : _f,
423
- _g = _a.loading,
424
- loading = _g === void 0 ? false : _g,
425
- onPress = _a.onPress;
426
- var theme = useContext(ThemeContext).theme;
427
- var colors = theme.colors;
428
- var computedStyles = useMemo(function () {
429
- return StyleSheet.flatten([styles$5.button, typeStyles(type, disabled, colors), rounded && {
430
- borderRadius: borderRadius
431
- }, isFullWidth && {
432
- width: '100%'
433
- }, (disabled || loading) && styles$5.disabled]);
434
- }, [type, disabled, loading, rounded, borderRadius, isFullWidth, colors]);
435
- var textColor = useMemo(function () {
436
- return {
437
- color: colors.textButton.hex
438
- };
439
- }, [type, colors]);
440
- return /*#__PURE__*/React.createElement(TouchableOpacity, {
441
- style: computedStyles,
442
- disabled: disabled || loading,
443
- onPress: onPress,
444
- activeOpacity: 0.7
445
- }, loading ? (
446
- /*#__PURE__*/
447
- // Show loading spinner if loading
448
- React.createElement(ActivityIndicator, {
449
- size: "small",
450
- color: colors.textButton.hex
451
- })) : (/*#__PURE__*/React.createElement(Text$1, {
452
- style: textColor
453
- }, Array.isArray(children) ? children.join('').toUpperCase() : children === null || children === void 0 ? void 0 : children.toUpperCase())));
373
+ return context;
454
374
  };
455
- var styles$5 = StyleSheet.create({
456
- button: {
457
- justifyContent: 'center',
458
- alignItems: 'center',
459
- paddingVertical: 10,
460
- paddingHorizontal: 20
461
- },
462
- disabled: {
463
- opacity: 0.6
464
- }
465
- });
466
-
467
- // src/cards/Card.tsx
468
- /**
469
- * Card component that adapts its styles based on the current theme.
470
- * Supports dynamic styling, shadows, and press animations.
471
- *
472
- * @param children - The content to be displayed inside the Card.
473
- * @param style - Additional styles to apply to the Card.
474
- * @param onPress - Function to execute when the Card is pressed.
475
- * @param pressable - Determines if the Card is pressable. Defaults to false.
476
- * @param borderRadius - Border radius of the Card. Defaults to 12.
477
- * @param elevation - Elevation for Android shadow. Overrides default.
478
- * @param shadowProps - Custom shadow properties for iOS. Overrides defaults.
479
- */
480
- var Card = function Card(_a) {
375
+ var Form = function Form(_a) {
481
376
  var children = _a.children,
482
- style = _a.style,
483
- onPress = _a.onPress,
484
- _b = _a.pressable,
485
- pressable = _b === void 0 ? false : _b,
486
- _c = _a.borderRadius,
487
- borderRadius = _c === void 0 ? 12 : _c,
488
- _d = _a.elevation,
489
- elevation = _d === void 0 ? 4 : _d,
490
- _e = _a.shadowProps,
491
- shadowProps = _e === void 0 ? {} : _e;
492
- var theme = useContext(ThemeContext).theme;
493
- var colors = theme.colors;
494
- // Animation state for pressable effect
495
- // Default shadow styles (improved platform-specific handling)
496
- var defaultShadow = Platform.select({
497
- ios: {
498
- shadowColor: (shadowProps === null || shadowProps === void 0 ? void 0 : shadowProps.shadowColor) || colors.text.hex,
499
- // Defaulting to theme text color
500
- shadowOffset: (shadowProps === null || shadowProps === void 0 ? void 0 : shadowProps.shadowOffset) || {
501
- width: 0,
502
- height: 2
503
- },
504
- shadowOpacity: (shadowProps === null || shadowProps === void 0 ? void 0 : shadowProps.shadowOpacity) || 0.1,
505
- shadowRadius: (shadowProps === null || shadowProps === void 0 ? void 0 : shadowProps.shadowRadius) || 4
506
- },
507
- android: {
508
- elevation: elevation // Only applies to Android
377
+ onSubmit = _a.onSubmit;
378
+ var _b = useState({}),
379
+ formValues = _b[0],
380
+ setFormValues = _b[1];
381
+ var _c = useState({}),
382
+ errors = _c[0],
383
+ setErrors = _c[1];
384
+ var setFormValue = function setFormValue(name, value) {
385
+ setFormValues(function (prev) {
386
+ var _a;
387
+ return __assign(__assign({}, prev), (_a = {}, _a[name] = value, _a));
388
+ });
389
+ };
390
+ var handleSubmit = function handleSubmit() {
391
+ return __awaiter(void 0, void 0, void 0, function () {
392
+ var validationErrors;
393
+ return __generator(this, function (_a) {
394
+ switch (_a.label) {
395
+ case 0:
396
+ return [4 /*yield*/, onSubmit(formValues)];
397
+ case 1:
398
+ validationErrors = _a.sent();
399
+ // Set the validation errors in state
400
+ setErrors(validationErrors);
401
+ // Prevent submission if there are any errors
402
+ if (Object.keys(validationErrors).length > 0) {
403
+ return [2 /*return*/]; // Prevent submission
404
+ }
405
+ return [2 /*return*/];
406
+ }
407
+ });
408
+ });
409
+ };
410
+ return /*#__PURE__*/React.createElement(FormContext.Provider, {
411
+ value: {
412
+ formValues: formValues,
413
+ setFormValue: setFormValue,
414
+ errors: errors,
415
+ setErrors: setErrors,
416
+ handleSubmit: handleSubmit
509
417
  }
510
- });
511
- var cardStyles = [styles$4.container, {
512
- borderRadius: borderRadius,
513
- backgroundColor: colors.body.hex
514
- }, defaultShadow,
515
- // Dynamic shadows based on platform
516
- style // External styles
517
- ];
518
- return pressable ? (/*#__PURE__*/React.createElement(TouchableOpacity, {
519
- activeOpacity: 0.8,
520
- onPress: onPress,
521
- style: cardStyles
522
- }, children)) : (/*#__PURE__*/React.createElement(View, {
523
- style: cardStyles
524
- }, children));
418
+ }, children);
525
419
  };
526
- var styles$4 = StyleSheet.create({
527
- container: {
528
- padding: 16,
529
- borderRadius: 12
530
- // Shadows handled dynamically with platform logic
531
- }
532
- });
533
420
 
534
421
  // src/fonts/Text.tsx
535
422
  /**
@@ -595,83 +482,29 @@ StyleSheet.create({
595
482
  // Define any default styles if needed
596
483
  });
597
484
 
598
- var FormContext = /*#__PURE__*/createContext(undefined);
599
- var useFormContext = function useFormContext() {
600
- var context = useContext(FormContext);
601
- if (!context) {
602
- throw new Error("useFormContext must be used within a Form");
603
- }
604
- return context;
605
- };
606
- var Form = function Form(_a) {
607
- var children = _a.children,
608
- onSubmit = _a.onSubmit;
609
- var _b = useState({}),
610
- formValues = _b[0],
611
- setFormValues = _b[1];
612
- var _c = useState({}),
613
- errors = _c[0],
614
- setErrors = _c[1];
615
- var setFormValue = function setFormValue(name, value) {
616
- setFormValues(function (prev) {
617
- var _a;
618
- return __assign(__assign({}, prev), (_a = {}, _a[name] = value, _a));
619
- });
620
- };
621
- var handleSubmit = function handleSubmit(event) {
622
- return __awaiter(void 0, void 0, void 0, function () {
623
- var validationErrors;
624
- return __generator(this, function (_a) {
625
- switch (_a.label) {
626
- case 0:
627
- event.preventDefault(); // Prevent native submission
628
- return [4 /*yield*/, onSubmit(formValues)];
629
- case 1:
630
- validationErrors = _a.sent();
631
- setErrors(validationErrors);
632
- if (Object.keys(validationErrors).length > 0) {
633
- return [2 /*return*/]; // Do not proceed if there are validation errors
634
- }
635
- return [2 /*return*/];
636
- }
637
- });
638
- });
639
- };
640
- return /*#__PURE__*/React.createElement(FormContext.Provider, {
641
- value: {
642
- formValues: formValues,
643
- setFormValue: setFormValue,
644
- errors: errors,
645
- handleSubmit: handleSubmit
646
- }
647
- }, /*#__PURE__*/React.createElement("form", {
648
- onSubmit: handleSubmit
649
- }, children));
650
- };
651
-
652
485
  // src/forms/ErrorList.tsx
653
486
  var ErrorList = function ErrorList(_a) {
654
487
  var errors = _a.errors;
655
488
  var theme = useContext(ThemeContext).theme;
656
489
  var colors = theme.colors;
657
490
  return /*#__PURE__*/React.createElement(View, {
658
- style: styles$3.container
491
+ style: styles$5.container
659
492
  }, errors.map(function (error, index) {
660
493
  return /*#__PURE__*/React.createElement(View, {
661
494
  key: index,
662
- style: styles$3.errorItem
495
+ style: styles$5.errorItem
663
496
  }, /*#__PURE__*/React.createElement(Text, {
664
- style: [styles$3.bullet, {
497
+ style: [styles$5.bullet, {
665
498
  color: colors.error.hex
666
499
  }]
667
500
  }, "\u2022"), /*#__PURE__*/React.createElement(Text, {
668
- style: [styles$3.errorText, {
501
+ style: [styles$5.errorText, {
669
502
  color: colors.error.hex
670
503
  }]
671
504
  }, error));
672
505
  }));
673
506
  };
674
- var styles$3 = StyleSheet.create({
507
+ var styles$5 = StyleSheet.create({
675
508
  container: {
676
509
  marginTop: 4
677
510
  },
@@ -706,13 +539,13 @@ var Input = function Input(_a) {
706
539
  setFormValue(name, text);
707
540
  };
708
541
  return /*#__PURE__*/React.createElement(View, {
709
- style: styles$2.container
542
+ style: styles$4.container
710
543
  }, /*#__PURE__*/React.createElement(Text, {
711
- style: [styles$2.label, {
544
+ style: [styles$4.label, {
712
545
  color: colors.text.hex
713
546
  }]
714
547
  }, label), /*#__PURE__*/React.createElement(TextInput, __assign({
715
- style: [styles$2.input, {
548
+ style: [styles$4.input, {
716
549
  backgroundColor: colors.body.hex,
717
550
  borderColor: formErrors[name] ? colors.error.hex : '#CCC',
718
551
  color: colors.text.hex
@@ -725,7 +558,7 @@ var Input = function Input(_a) {
725
558
  errors: formErrors[name]
726
559
  })));
727
560
  };
728
- var styles$2 = StyleSheet.create({
561
+ var styles$4 = StyleSheet.create({
729
562
  container: {
730
563
  marginBottom: 16
731
564
  },
@@ -756,11 +589,11 @@ var TextArea = function TextArea(_a) {
756
589
  setFormValue(name, text);
757
590
  };
758
591
  return /*#__PURE__*/React.createElement(View, {
759
- style: styles$1.container
592
+ style: styles$3.container
760
593
  }, /*#__PURE__*/React.createElement(Text, {
761
- style: styles$1.label
594
+ style: styles$3.label
762
595
  }, label), /*#__PURE__*/React.createElement(TextInput, __assign({
763
- style: [styles$1.textArea, style],
596
+ style: [styles$3.textArea, style],
764
597
  value: formValues[name] || '',
765
598
  onChangeText: handleChange,
766
599
  placeholder: label,
@@ -773,7 +606,7 @@ var TextArea = function TextArea(_a) {
773
606
  errors: formErrors[name]
774
607
  })));
775
608
  };
776
- var styles$1 = StyleSheet.create({
609
+ var styles$3 = StyleSheet.create({
777
610
  container: {
778
611
  marginBottom: 16
779
612
  },
@@ -802,17 +635,193 @@ var Label = function Label(_a) {
802
635
  var theme = useContext(ThemeContext).theme;
803
636
  var colors = theme.colors;
804
637
  return /*#__PURE__*/React.createElement(Text, {
805
- style: [styles.label, style, {
638
+ style: [styles$2.label, style, {
806
639
  color: colors.text.hex
807
640
  }]
808
641
  }, text);
809
642
  };
810
- var styles = StyleSheet.create({
643
+ var styles$2 = StyleSheet.create({
811
644
  label: {
812
645
  marginBottom: 4,
813
646
  fontWeight: '500'
814
647
  }
815
648
  });
816
649
 
650
+ // src/components/Button.tsx
651
+ /**
652
+ * Determines the styles based on the button type and whether it is disabled.
653
+ *
654
+ * @param type - The type of the button ('submit', 'button', 'cancel').
655
+ * @param disabled - Whether the button is disabled.
656
+ * @param themeColors - The theme colors.
657
+ * @returns The computed style for the button.
658
+ */
659
+ function typeStyles(type, disabled, themeColors) {
660
+ switch (type) {
661
+ case 'submit':
662
+ return {
663
+ backgroundColor: "rgba(".concat(themeColors === null || themeColors === void 0 ? void 0 : themeColors.primary.rgb.r, ", ").concat(themeColors === null || themeColors === void 0 ? void 0 : themeColors.primary.rgb.g, ", ").concat(themeColors === null || themeColors === void 0 ? void 0 : themeColors.primary.rgb.b, ", ").concat(disabled ? 0.5 : 1, ")"),
664
+ borderWidth: 2,
665
+ borderColor: themeColors === null || themeColors === void 0 ? void 0 : themeColors.primary.hex
666
+ };
667
+ case 'button':
668
+ return {
669
+ backgroundColor: themeColors === null || themeColors === void 0 ? void 0 : themeColors.primary.hex,
670
+ borderColor: themeColors === null || themeColors === void 0 ? void 0 : themeColors.secondary.hex,
671
+ opacity: disabled ? 0.5 : 1,
672
+ borderWidth: 2
673
+ };
674
+ case 'cancel':
675
+ return {
676
+ backgroundColor: themeColors === null || themeColors === void 0 ? void 0 : themeColors.background.hex,
677
+ borderWidth: 0
678
+ };
679
+ default:
680
+ return {};
681
+ }
682
+ }
683
+ /**
684
+ * Button component that adapts its styles based on the current theme.
685
+ * Supports dynamic styling, full-width option, rounded corners, and different types.
686
+ *
687
+ * @param disabled - If true, the button is disabled and not pressable.
688
+ * @param isFullWidth - If true, the button expands to full width of its container.
689
+ * @param children - Text content of the button.
690
+ * @param onPress - Function to call when the button is pressed.
691
+ * @param rounded - If true, the button has rounded corners.
692
+ * @param borderRadius - Custom border radius value. Overrides the `rounded` prop if provided.
693
+ * @param type - Specifies the button type for styling ('submit', 'button', 'cancel').
694
+ */
695
+ var Button = function Button(_a) {
696
+ var children = _a.children,
697
+ _b = _a.disabled,
698
+ disabled = _b === void 0 ? false : _b,
699
+ _c = _a.type,
700
+ type = _c === void 0 ? 'button' : _c,
701
+ _d = _a.rounded,
702
+ rounded = _d === void 0 ? true : _d,
703
+ _e = _a.borderRadius,
704
+ borderRadius = _e === void 0 ? 30 : _e,
705
+ _f = _a.isFullWidth,
706
+ isFullWidth = _f === void 0 ? false : _f,
707
+ _g = _a.loading,
708
+ loading = _g === void 0 ? false : _g,
709
+ onPress = _a.onPress;
710
+ var theme = useContext(ThemeContext).theme;
711
+ var colors = theme.colors;
712
+ var handleSubmit = useFormContext().handleSubmit;
713
+ var computedStyles = useMemo(function () {
714
+ return StyleSheet.flatten([styles$1.button, typeStyles(type, disabled, colors), rounded && {
715
+ borderRadius: borderRadius
716
+ }, isFullWidth && {
717
+ width: '100%'
718
+ }, (disabled || loading) && styles$1.disabled]);
719
+ }, [type, disabled, loading, rounded, borderRadius, isFullWidth, colors]);
720
+ var textColor = useMemo(function () {
721
+ return {
722
+ color: colors.textButton.hex
723
+ };
724
+ }, [type, colors]);
725
+ var handlePress = function handlePress() {
726
+ if (type === 'submit') {
727
+ handleSubmit(); // Call the form's submit handler
728
+ } else if (onPress) {
729
+ onPress(); // Call a custom handler if needed
730
+ }
731
+ };
732
+ return /*#__PURE__*/React.createElement(TouchableOpacity, {
733
+ style: computedStyles,
734
+ disabled: disabled || loading,
735
+ onPress: handlePress,
736
+ activeOpacity: 0.7
737
+ }, loading ? (
738
+ /*#__PURE__*/
739
+ // Show loading spinner if loading
740
+ React.createElement(ActivityIndicator, {
741
+ size: "small",
742
+ color: colors.textButton.hex
743
+ })) : (/*#__PURE__*/React.createElement(Text$1, {
744
+ style: textColor
745
+ }, Array.isArray(children) ? children.join('').toUpperCase() : children === null || children === void 0 ? void 0 : children.toUpperCase())));
746
+ };
747
+ var styles$1 = StyleSheet.create({
748
+ button: {
749
+ justifyContent: 'center',
750
+ alignItems: 'center',
751
+ paddingVertical: 10,
752
+ paddingHorizontal: 20
753
+ },
754
+ disabled: {
755
+ opacity: 0.6
756
+ }
757
+ });
758
+
759
+ // src/cards/Card.tsx
760
+ /**
761
+ * Card component that adapts its styles based on the current theme.
762
+ * Supports dynamic styling, shadows, and press animations.
763
+ *
764
+ * @param children - The content to be displayed inside the Card.
765
+ * @param style - Additional styles to apply to the Card.
766
+ * @param onPress - Function to execute when the Card is pressed.
767
+ * @param pressable - Determines if the Card is pressable. Defaults to false.
768
+ * @param borderRadius - Border radius of the Card. Defaults to 12.
769
+ * @param elevation - Elevation for Android shadow. Overrides default.
770
+ * @param shadowProps - Custom shadow properties for iOS. Overrides defaults.
771
+ */
772
+ var Card = function Card(_a) {
773
+ var children = _a.children,
774
+ style = _a.style,
775
+ onPress = _a.onPress,
776
+ _b = _a.pressable,
777
+ pressable = _b === void 0 ? false : _b,
778
+ _c = _a.borderRadius,
779
+ borderRadius = _c === void 0 ? 12 : _c,
780
+ _d = _a.elevation,
781
+ elevation = _d === void 0 ? 4 : _d,
782
+ _e = _a.shadowProps,
783
+ shadowProps = _e === void 0 ? {} : _e;
784
+ var theme = useContext(ThemeContext).theme;
785
+ var colors = theme.colors;
786
+ // Animation state for pressable effect
787
+ // Default shadow styles (improved platform-specific handling)
788
+ var defaultShadow = Platform.select({
789
+ ios: {
790
+ shadowColor: (shadowProps === null || shadowProps === void 0 ? void 0 : shadowProps.shadowColor) || colors.text.hex,
791
+ // Defaulting to theme text color
792
+ shadowOffset: (shadowProps === null || shadowProps === void 0 ? void 0 : shadowProps.shadowOffset) || {
793
+ width: 0,
794
+ height: 2
795
+ },
796
+ shadowOpacity: (shadowProps === null || shadowProps === void 0 ? void 0 : shadowProps.shadowOpacity) || 0.1,
797
+ shadowRadius: (shadowProps === null || shadowProps === void 0 ? void 0 : shadowProps.shadowRadius) || 4
798
+ },
799
+ android: {
800
+ elevation: elevation // Only applies to Android
801
+ }
802
+ });
803
+ var cardStyles = [styles.container, {
804
+ borderRadius: borderRadius,
805
+ backgroundColor: colors.body.hex
806
+ }, defaultShadow,
807
+ // Dynamic shadows based on platform
808
+ style // External styles
809
+ ];
810
+ return pressable ? (/*#__PURE__*/React.createElement(TouchableOpacity, {
811
+ activeOpacity: 0.8,
812
+ onPress: onPress,
813
+ style: cardStyles
814
+ }, children)) : (/*#__PURE__*/React.createElement(View, {
815
+ style: cardStyles
816
+ }, children));
817
+ };
818
+ var styles = StyleSheet.create({
819
+ container: {
820
+ padding: 16,
821
+ borderRadius: 12
822
+ // Shadows handled dynamically with platform logic
823
+ }
824
+ });
825
+
817
826
  export { Button, Card, ErrorList, Form, Input, Label, Text, TextArea, ThemeContext, ThemeProvider, ThemeToggle, useFormContext };
818
827
  //# sourceMappingURL=index.esm.js.map