@coze-arch/cli 0.0.10 → 0.0.11
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.
- package/lib/__templates__/expo/AGENTS.md +3 -3
- package/lib/__templates__/expo/README.md +3 -3
- package/lib/__templates__/expo/client/components/Provider.tsx +4 -1
- package/lib/__templates__/expo/client/components/Screen.tsx +4 -1
- package/lib/__templates__/expo/client/eslint.config.mjs +2 -0
- package/lib/__templates__/expo/client/global.css +1 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/accordion.animation.ts +178 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/accordion.constants.ts +62 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/accordion.md +437 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/accordion.styles.ts +95 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/accordion.tsx +340 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/accordion.types.ts +267 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/index.ts +17 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.constants.ts +13 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.hooks.ts +28 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.md +263 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.styles.ts +65 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.tsx +181 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.types.ts +99 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.utils.tsx +25 -0
- package/lib/__templates__/expo/client/heroui/components/alert/default-icon.tsx +28 -0
- package/lib/__templates__/expo/client/heroui/components/alert/index.ts +15 -0
- package/lib/__templates__/expo/client/heroui/components/alert/success-icon.tsx +28 -0
- package/lib/__templates__/expo/client/heroui/components/alert/warning-icon.tsx +28 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.animation.ts +123 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.constants.ts +19 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.context.ts +11 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.md +386 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.styles.ts +145 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.tsx +307 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.types.ts +239 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/index.ts +13 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/person-icon.tsx +23 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.animation.ts +42 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.constants.ts +13 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.md +349 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.styles.ts +66 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.tsx +351 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.types.ts +150 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/index.ts +16 -0
- package/lib/__templates__/expo/client/heroui/components/button/button.constants.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/button/button.md +381 -0
- package/lib/__templates__/expo/client/heroui/components/button/button.styles.ts +89 -0
- package/lib/__templates__/expo/client/heroui/components/button/button.tsx +284 -0
- package/lib/__templates__/expo/client/heroui/components/button/button.types.ts +175 -0
- package/lib/__templates__/expo/client/heroui/components/button/button.utils.ts +34 -0
- package/lib/__templates__/expo/client/heroui/components/button/index.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/card/card.constants.ts +11 -0
- package/lib/__templates__/expo/client/heroui/components/card/card.md +186 -0
- package/lib/__templates__/expo/client/heroui/components/card/card.styles.ts +35 -0
- package/lib/__templates__/expo/client/heroui/components/card/card.tsx +153 -0
- package/lib/__templates__/expo/client/heroui/components/card/card.types.ts +77 -0
- package/lib/__templates__/expo/client/heroui/components/card/index.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.animation.ts +202 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.md +311 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.styles.ts +105 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.tsx +251 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.types.ts +216 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/chip/chip.animation.ts +18 -0
- package/lib/__templates__/expo/client/heroui/components/chip/chip.constants.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/chip/chip.md +190 -0
- package/lib/__templates__/expo/client/heroui/components/chip/chip.styles.ts +234 -0
- package/lib/__templates__/expo/client/heroui/components/chip/chip.tsx +125 -0
- package/lib/__templates__/expo/client/heroui/components/chip/chip.types.ts +69 -0
- package/lib/__templates__/expo/client/heroui/components/chip/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/close-button/close-button.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/close-button/close-button.md +109 -0
- package/lib/__templates__/expo/client/heroui/components/close-button/close-button.styles.ts +13 -0
- package/lib/__templates__/expo/client/heroui/components/close-button/close-button.tsx +57 -0
- package/lib/__templates__/expo/client/heroui/components/close-button/close-button.types.ts +30 -0
- package/lib/__templates__/expo/client/heroui/components/close-button/index.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.animation.ts +18 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.constants.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.context.ts +14 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.md +241 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.styles.ts +15 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.tsx +245 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.types.ts +67 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/index.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/description/description.animation.ts +53 -0
- package/lib/__templates__/expo/client/heroui/components/description/description.constants.ts +30 -0
- package/lib/__templates__/expo/client/heroui/components/description/description.md +129 -0
- package/lib/__templates__/expo/client/heroui/components/description/description.styles.ts +25 -0
- package/lib/__templates__/expo/client/heroui/components/description/description.tsx +81 -0
- package/lib/__templates__/expo/client/heroui/components/description/description.types.ts +77 -0
- package/lib/__templates__/expo/client/heroui/components/description/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/dialog.animation.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/dialog.constants.ts +13 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/dialog.md +288 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/dialog.styles.ts +77 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/dialog.tsx +379 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/dialog.types.ts +199 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/index.ts +12 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/field-error.animation.ts +50 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/field-error.constants.ts +31 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/field-error.md +204 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/field-error.styles.ts +23 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/field-error.tsx +91 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/field-error.types.ts +79 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/input/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/input/input.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/input/input.md +193 -0
- package/lib/__templates__/expo/client/heroui/components/input/input.styles.ts +51 -0
- package/lib/__templates__/expo/client/heroui/components/input/input.tsx +96 -0
- package/lib/__templates__/expo/client/heroui/components/input/input.types.ts +44 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/index.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/input-group.animation.ts +14 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/input-group.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/input-group.md +197 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/input-group.styles.ts +31 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/input-group.tsx +239 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/input-group.types.ts +98 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/index.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.animation.ts +199 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.constants.ts +12 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.md +376 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.styles.ts +68 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.tsx +414 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.types.ts +275 -0
- package/lib/__templates__/expo/client/heroui/components/label/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/label/label.animation.ts +18 -0
- package/lib/__templates__/expo/client/heroui/components/label/label.constants.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/label/label.md +187 -0
- package/lib/__templates__/expo/client/heroui/components/label/label.styles.ts +44 -0
- package/lib/__templates__/expo/client/heroui/components/label/label.tsx +172 -0
- package/lib/__templates__/expo/client/heroui/components/label/label.types.ts +86 -0
- package/lib/__templates__/expo/client/heroui/components/list-group/index.ts +17 -0
- package/lib/__templates__/expo/client/heroui/components/list-group/list-group.constants.ts +17 -0
- package/lib/__templates__/expo/client/heroui/components/list-group/list-group.md +387 -0
- package/lib/__templates__/expo/client/heroui/components/list-group/list-group.styles.ts +40 -0
- package/lib/__templates__/expo/client/heroui/components/list-group/list-group.tsx +206 -0
- package/lib/__templates__/expo/client/heroui/components/list-group/list-group.types.ts +132 -0
- package/lib/__templates__/expo/client/heroui/components/menu/index.ts +38 -0
- package/lib/__templates__/expo/client/heroui/components/menu/menu.animation.ts +121 -0
- package/lib/__templates__/expo/client/heroui/components/menu/menu.constants.ts +37 -0
- package/lib/__templates__/expo/client/heroui/components/menu/menu.md +620 -0
- package/lib/__templates__/expo/client/heroui/components/menu/menu.styles.ts +107 -0
- package/lib/__templates__/expo/client/heroui/components/menu/menu.tsx +664 -0
- package/lib/__templates__/expo/client/heroui/components/menu/menu.types.ts +394 -0
- package/lib/__templates__/expo/client/heroui/components/popover/arrow-svg.tsx +180 -0
- package/lib/__templates__/expo/client/heroui/components/popover/index.ts +18 -0
- package/lib/__templates__/expo/client/heroui/components/popover/popover.animation.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/popover/popover.constants.ts +34 -0
- package/lib/__templates__/expo/client/heroui/components/popover/popover.md +508 -0
- package/lib/__templates__/expo/client/heroui/components/popover/popover.styles.ts +98 -0
- package/lib/__templates__/expo/client/heroui/components/popover/popover.tsx +624 -0
- package/lib/__templates__/expo/client/heroui/components/popover/popover.types.ts +290 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.animation.ts +450 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.constants.ts +12 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.md +328 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.styles.ts +84 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.tsx +330 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.types.ts +386 -0
- package/lib/__templates__/expo/client/heroui/components/radio/index.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/radio/radio.animation.ts +92 -0
- package/lib/__templates__/expo/client/heroui/components/radio/radio.constants.ts +11 -0
- package/lib/__templates__/expo/client/heroui/components/radio/radio.md +339 -0
- package/lib/__templates__/expo/client/heroui/components/radio/radio.styles.ts +80 -0
- package/lib/__templates__/expo/client/heroui/components/radio/radio.tsx +217 -0
- package/lib/__templates__/expo/client/heroui/components/radio/radio.types.ts +106 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/index.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.animation.ts +20 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.constants.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.context.ts +14 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.md +273 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.styles.ts +15 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.tsx +220 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.types.ts +64 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/index.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.animation.ts +132 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.constants.ts +21 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.md +206 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.styles.ts +52 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.tsx +262 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.types.ts +121 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/index.ts +17 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-field.animation.ts +18 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-field.constants.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-field.md +231 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-field.styles.ts +35 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-field.tsx +253 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-field.types.ts +160 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-icon.tsx +37 -0
- package/lib/__templates__/expo/client/heroui/components/select/index.ts +28 -0
- package/lib/__templates__/expo/client/heroui/components/select/select.animation.ts +92 -0
- package/lib/__templates__/expo/client/heroui/components/select/select.constants.ts +53 -0
- package/lib/__templates__/expo/client/heroui/components/select/select.md +796 -0
- package/lib/__templates__/expo/client/heroui/components/select/select.styles.ts +149 -0
- package/lib/__templates__/expo/client/heroui/components/select/select.tsx +828 -0
- package/lib/__templates__/expo/client/heroui/components/select/select.types.ts +438 -0
- package/lib/__templates__/expo/client/heroui/components/separator/index.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/separator/separator.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/separator/separator.md +106 -0
- package/lib/__templates__/expo/client/heroui/components/separator/separator.styles.ts +50 -0
- package/lib/__templates__/expo/client/heroui/components/separator/separator.tsx +62 -0
- package/lib/__templates__/expo/client/heroui/components/separator/separator.types.ts +40 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/index.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/linear-gradient.tsx +45 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.animation.ts +351 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.constants.ts +39 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.md +208 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.styles.ts +49 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.tsx +183 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.types.ts +191 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton-group/index.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.constants.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.md +247 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.styles.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.tsx +94 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.types.ts +28 -0
- package/lib/__templates__/expo/client/heroui/components/slider/index.ts +23 -0
- package/lib/__templates__/expo/client/heroui/components/slider/slider.animation.ts +87 -0
- package/lib/__templates__/expo/client/heroui/components/slider/slider.constants.ts +24 -0
- package/lib/__templates__/expo/client/heroui/components/slider/slider.md +348 -0
- package/lib/__templates__/expo/client/heroui/components/slider/slider.styles.ts +85 -0
- package/lib/__templates__/expo/client/heroui/components/slider/slider.tsx +413 -0
- package/lib/__templates__/expo/client/heroui/components/slider/slider.types.ts +120 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/index.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner-icon.tsx +49 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner.animation.ts +150 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner.constants.ts +36 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner.md +199 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner.styles.ts +44 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner.tsx +198 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner.types.ts +158 -0
- package/lib/__templates__/expo/client/heroui/components/surface/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/surface/surface.animation.ts +18 -0
- package/lib/__templates__/expo/client/heroui/components/surface/surface.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/surface/surface.md +136 -0
- package/lib/__templates__/expo/client/heroui/components/surface/surface.styles.ts +28 -0
- package/lib/__templates__/expo/client/heroui/components/surface/surface.tsx +66 -0
- package/lib/__templates__/expo/client/heroui/components/surface/surface.types.ts +46 -0
- package/lib/__templates__/expo/client/heroui/components/switch/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/switch/switch.animation.ts +243 -0
- package/lib/__templates__/expo/client/heroui/components/switch/switch.constants.ts +26 -0
- package/lib/__templates__/expo/client/heroui/components/switch/switch.md +334 -0
- package/lib/__templates__/expo/client/heroui/components/switch/switch.styles.ts +83 -0
- package/lib/__templates__/expo/client/heroui/components/switch/switch.tsx +280 -0
- package/lib/__templates__/expo/client/heroui/components/switch/switch.types.ts +208 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/index.ts +8 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.animation.ts +246 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.constants.ts +17 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.context.ts +28 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.md +565 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.styles.ts +168 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.tsx +445 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.types.ts +341 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/index.ts +15 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.animation.ts +17 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.constants.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.md +404 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.styles.ts +74 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.tsx +325 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.types.ts +125 -0
- package/lib/__templates__/expo/client/heroui/components/text-area/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/text-area/text-area.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/text-area/text-area.md +133 -0
- package/lib/__templates__/expo/client/heroui/components/text-area/text-area.styles.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/text-area/text-area.tsx +44 -0
- package/lib/__templates__/expo/client/heroui/components/text-area/text-area.types.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/text-field.animation.ts +20 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/text-field.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/text-field.md +256 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/text-field.styles.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/text-field.tsx +82 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/text-field.types.ts +56 -0
- package/lib/__templates__/expo/client/heroui/components/toast/index.ts +4 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.animation.ts +381 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.constants.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.hooks.ts +73 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.md +420 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.styles.ts +89 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.tsx +472 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.types.ts +320 -0
- package/lib/__templates__/expo/client/heroui/docs.md +47 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/hooks/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/hooks/use-is-on-surface.ts +8 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/hooks/use-theme-color.ts +137 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/utils/cn.ts +12 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/utils/color-kit/index.ts +2395 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/utils/color-kit/types.ts +212 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/utils/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/animated-check-icon.tsx +78 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/bottom-sheet-content-container.tsx +97 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/bottom-sheet-content.tsx +158 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/check-icon.tsx +28 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/chevron-down-icon.tsx +28 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/chevron-right-icon.tsx +29 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/close-icon.tsx +29 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/full-window-overlay.tsx +48 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/hero-text.tsx +71 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/index.ts +9 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/animation-settings-context.ts +19 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/bottom-sheet-is-dragging-context.ts +11 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/form-field-context.ts +36 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/index.ts +14 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-augmented-ref.ts +32 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-bottom-sheet-aware-handlers.ts +94 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-bottom-sheet-gesture-handlers.ts +52 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-combined-animation-disabled-state.ts +49 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-controllable-state.ts +124 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-dev-info.ts +38 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-keyboard-status.ts +22 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-bottom-sheet-content-animation.ts +67 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-dialog-content-animation.ts +296 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-overlay-animation.ts +91 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-popover-content-animation.ts +199 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-root-animation.ts +26 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-relative-position.ts +353 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-resolved-style-property.ts +118 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/types/animation.ts +131 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/types/bottom-sheet.ts +99 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/types/index.ts +5 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/types/misc.ts +10 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/types/primitives.ts +146 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/types/theme.ts +18 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/animation.ts +266 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/children-to-string.ts +117 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/combine-styles.ts +17 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/create-context.ts +60 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/ease-gradient/create-interpolation.ts +35 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/ease-gradient/index.ts +97 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/get-element-by-display-name.ts +15 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/get-element-with-default.ts +17 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/has-prop.ts +18 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/index.ts +8 -0
- package/lib/__templates__/expo/client/heroui/index.tsx +51 -0
- package/lib/__templates__/expo/client/heroui/primitives/README.md +27 -0
- package/lib/__templates__/expo/client/heroui/primitives/accordion/accordion.tsx +270 -0
- package/lib/__templates__/expo/client/heroui/primitives/accordion/accordion.types.ts +117 -0
- package/lib/__templates__/expo/client/heroui/primitives/accordion/accordion.utils.ts +12 -0
- package/lib/__templates__/expo/client/heroui/primitives/accordion/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/activity-indicator/activity-indicator.tsx +50 -0
- package/lib/__templates__/expo/client/heroui/primitives/activity-indicator/activity-indicator.types.ts +24 -0
- package/lib/__templates__/expo/client/heroui/primitives/activity-indicator/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/alert/alert.tsx +124 -0
- package/lib/__templates__/expo/client/heroui/primitives/alert/alert.types.ts +87 -0
- package/lib/__templates__/expo/client/heroui/primitives/alert/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/avatar/avatar.tsx +171 -0
- package/lib/__templates__/expo/client/heroui/primitives/avatar/avatar.types.ts +62 -0
- package/lib/__templates__/expo/client/heroui/primitives/avatar/avatar.utils.ts +102 -0
- package/lib/__templates__/expo/client/heroui/primitives/avatar/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/bottom-sheet/bottom-sheet.tsx +235 -0
- package/lib/__templates__/expo/client/heroui/primitives/bottom-sheet/bottom-sheet.types.ts +127 -0
- package/lib/__templates__/expo/client/heroui/primitives/bottom-sheet/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/checkbox/checkbox.tsx +119 -0
- package/lib/__templates__/expo/client/heroui/primitives/checkbox/checkbox.types.ts +37 -0
- package/lib/__templates__/expo/client/heroui/primitives/checkbox/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/dialog/dialog.tsx +274 -0
- package/lib/__templates__/expo/client/heroui/primitives/dialog/dialog.types.ts +129 -0
- package/lib/__templates__/expo/client/heroui/primitives/dialog/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/input-otp/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/primitives/input-otp/input-otp.tsx +431 -0
- package/lib/__templates__/expo/client/heroui/primitives/input-otp/input-otp.types.ts +169 -0
- package/lib/__templates__/expo/client/heroui/primitives/input-otp/input-otp.utils.ts +31 -0
- package/lib/__templates__/expo/client/heroui/primitives/label/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/label/label.tsx +24 -0
- package/lib/__templates__/expo/client/heroui/primitives/label/label.types.ts +39 -0
- package/lib/__templates__/expo/client/heroui/primitives/menu/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/menu/menu.tsx +765 -0
- package/lib/__templates__/expo/client/heroui/primitives/menu/menu.types.ts +401 -0
- package/lib/__templates__/expo/client/heroui/primitives/popover/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/popover/popover.tsx +382 -0
- package/lib/__templates__/expo/client/heroui/primitives/popover/popover.types.ts +201 -0
- package/lib/__templates__/expo/client/heroui/primitives/portal/index.ts +1 -0
- package/lib/__templates__/expo/client/heroui/primitives/portal/portal.tsx +126 -0
- package/lib/__templates__/expo/client/heroui/primitives/radio/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/radio/radio.tsx +133 -0
- package/lib/__templates__/expo/client/heroui/primitives/radio/radio.types.ts +47 -0
- package/lib/__templates__/expo/client/heroui/primitives/radio-group/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/radio-group/radio-group.tsx +114 -0
- package/lib/__templates__/expo/client/heroui/primitives/radio-group/radio-group.types.ts +65 -0
- package/lib/__templates__/expo/client/heroui/primitives/select/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/select/select.tsx +705 -0
- package/lib/__templates__/expo/client/heroui/primitives/select/select.types.ts +409 -0
- package/lib/__templates__/expo/client/heroui/primitives/select/select.utils.ts +35 -0
- package/lib/__templates__/expo/client/heroui/primitives/slider/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/primitives/slider/slider.tsx +464 -0
- package/lib/__templates__/expo/client/heroui/primitives/slider/slider.types.ts +208 -0
- package/lib/__templates__/expo/client/heroui/primitives/slider/slider.utils.ts +93 -0
- package/lib/__templates__/expo/client/heroui/primitives/slot/index.ts +1 -0
- package/lib/__templates__/expo/client/heroui/primitives/slot/slot.tsx +122 -0
- package/lib/__templates__/expo/client/heroui/primitives/slot/types.ts +19 -0
- package/lib/__templates__/expo/client/heroui/primitives/slot/utils.ts +96 -0
- package/lib/__templates__/expo/client/heroui/primitives/switch/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/switch/switch.tsx +61 -0
- package/lib/__templates__/expo/client/heroui/primitives/switch/switch.types.ts +55 -0
- package/lib/__templates__/expo/client/heroui/primitives/tabs/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/tabs/tabs.tsx +202 -0
- package/lib/__templates__/expo/client/heroui/primitives/tabs/tabs.types.ts +77 -0
- package/lib/__templates__/expo/client/heroui/primitives/tag-group/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/tag-group/tag-group.tsx +324 -0
- package/lib/__templates__/expo/client/heroui/primitives/tag-group/tag-group.types.ts +119 -0
- package/lib/__templates__/expo/client/heroui/primitives/toast/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/toast/toast.tsx +138 -0
- package/lib/__templates__/expo/client/heroui/primitives/toast/toast.types.ts +86 -0
- package/lib/__templates__/expo/client/heroui/providers/animation-settings/index.ts +8 -0
- package/lib/__templates__/expo/client/heroui/providers/animation-settings/provider.tsx +47 -0
- package/lib/__templates__/expo/client/heroui/providers/animation-settings/types.ts +27 -0
- package/lib/__templates__/expo/client/heroui/providers/hero-ui-native/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/providers/hero-ui-native/provider.tsx +67 -0
- package/lib/__templates__/expo/client/heroui/providers/hero-ui-native/types.ts +114 -0
- package/lib/__templates__/expo/client/heroui/providers/hero-ui-native-raw/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/providers/hero-ui-native-raw/provider.tsx +50 -0
- package/lib/__templates__/expo/client/heroui/providers/hero-ui-native-raw/types.ts +39 -0
- package/lib/__templates__/expo/client/heroui/providers/text-component/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/providers/text-component/provider.tsx +9 -0
- package/lib/__templates__/expo/client/heroui/providers/text-component/types.ts +52 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/insets-container.tsx +87 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/provider.tsx +431 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/reducer.ts +34 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/toast-config.context.ts +27 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/toast-item-renderer.tsx +45 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/types.ts +373 -0
- package/lib/__templates__/expo/client/heroui/styles/index.css +3 -0
- package/lib/__templates__/expo/client/heroui/styles/theme.css +112 -0
- package/lib/__templates__/expo/client/heroui/styles/utilities.css +8 -0
- package/lib/__templates__/expo/client/heroui/styles/variables.css +146 -0
- package/lib/__templates__/expo/client/package.json +4 -1
- package/lib/__templates__/expo/package.json +1 -1
- package/lib/__templates__/expo/pnpm-lock.yaml +68 -0
- package/lib/__templates__/nextjs/AGENTS.md +6 -4
- package/lib/__templates__/nextjs/eslint.config.mjs +9 -0
- package/lib/__templates__/taro/.coze +2 -0
- package/lib/__templates__/taro/.cozeproj/scripts/pack.sh +1 -2
- package/lib/__templates__/taro/config/index.ts +1 -1
- package/lib/__templates__/taro/package.json +1 -0
- package/lib/__templates__/taro/project.config.json +1 -1
- package/lib/cli.js +246 -252
- package/package.json +3 -2
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# SearchField
|
|
2
|
+
|
|
3
|
+
A compound search input for filtering and querying content.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { SearchField } from '@/heroui';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Anatomy
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<SearchField value={value} onChange={onChange}>
|
|
15
|
+
<SearchField.Group>
|
|
16
|
+
<SearchField.SearchIcon />
|
|
17
|
+
<SearchField.Input />
|
|
18
|
+
<SearchField.ClearButton />
|
|
19
|
+
</SearchField.Group>
|
|
20
|
+
</SearchField>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
- **SearchField**: Root container that accepts `value` and `onChange`, providing them to children via context. Also provides form field state (isDisabled, isInvalid, isRequired) and animation settings.
|
|
24
|
+
- **SearchField.Group**: Flex-row container that positions the search icon, input, and clear button horizontally.
|
|
25
|
+
- **SearchField.SearchIcon**: Magnifying glass icon positioned absolutely on the left side of the input. Supports custom children to replace the default icon.
|
|
26
|
+
- **SearchField.Input**: Wraps the Input component with search-specific defaults. Reads `value` and `onChangeText` from the SearchField context automatically.
|
|
27
|
+
- **SearchField.ClearButton**: Small icon-only button to clear the search input. Automatically hidden when value is empty. Calls `onChange("")` from context on press.
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
### Basic Usage
|
|
32
|
+
|
|
33
|
+
The SearchField component uses compound parts to create a search input. Pass `value` and `onChange` to the root; the Input and ClearButton consume them via context.
|
|
34
|
+
|
|
35
|
+
```tsx
|
|
36
|
+
<SearchField value={searchValue} onChange={setSearchValue}>
|
|
37
|
+
<SearchField.Group>
|
|
38
|
+
<SearchField.SearchIcon />
|
|
39
|
+
<SearchField.Input />
|
|
40
|
+
<SearchField.ClearButton />
|
|
41
|
+
</SearchField.Group>
|
|
42
|
+
</SearchField>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### With Label and Description
|
|
46
|
+
|
|
47
|
+
Add a Label and Description outside the Group to provide context for the search field.
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
<SearchField value={searchValue} onChange={setSearchValue}>
|
|
51
|
+
<Label>Find products</Label>
|
|
52
|
+
<SearchField.Group>
|
|
53
|
+
<SearchField.SearchIcon />
|
|
54
|
+
<SearchField.Input />
|
|
55
|
+
<SearchField.ClearButton />
|
|
56
|
+
</SearchField.Group>
|
|
57
|
+
<Description>Search by name, category, or SKU</Description>
|
|
58
|
+
</SearchField>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### With Validation
|
|
62
|
+
|
|
63
|
+
Use `isInvalid` and `isRequired` on the root to control validation state. Pair with FieldError to display error messages.
|
|
64
|
+
|
|
65
|
+
```tsx
|
|
66
|
+
<SearchField
|
|
67
|
+
value={searchValue}
|
|
68
|
+
onChange={setSearchValue}
|
|
69
|
+
isRequired
|
|
70
|
+
isInvalid={isInvalid}
|
|
71
|
+
>
|
|
72
|
+
<Label>Search users</Label>
|
|
73
|
+
<SearchField.Group>
|
|
74
|
+
<SearchField.SearchIcon />
|
|
75
|
+
<SearchField.Input />
|
|
76
|
+
<SearchField.ClearButton />
|
|
77
|
+
</SearchField.Group>
|
|
78
|
+
<Description hideOnInvalid>Enter at least 3 characters to search</Description>
|
|
79
|
+
<FieldError>No results found. Please try a different search term.</FieldError>
|
|
80
|
+
</SearchField>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Custom Search Icon
|
|
84
|
+
|
|
85
|
+
Replace the default magnifying glass icon by passing children to `SearchField.SearchIcon`.
|
|
86
|
+
|
|
87
|
+
```tsx
|
|
88
|
+
<SearchField value={searchValue} onChange={setSearchValue}>
|
|
89
|
+
<SearchField.Group>
|
|
90
|
+
<SearchField.SearchIcon>
|
|
91
|
+
<Text className="text-base">🔍</Text>
|
|
92
|
+
</SearchField.SearchIcon>
|
|
93
|
+
<SearchField.Input className="pl-10" />
|
|
94
|
+
<SearchField.ClearButton />
|
|
95
|
+
</SearchField.Group>
|
|
96
|
+
</SearchField>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Disabled
|
|
100
|
+
|
|
101
|
+
Set `isDisabled` on the root to disable all child components via context.
|
|
102
|
+
|
|
103
|
+
```tsx
|
|
104
|
+
<SearchField value="Previous query" isDisabled>
|
|
105
|
+
<Label>Disabled search</Label>
|
|
106
|
+
<SearchField.Group>
|
|
107
|
+
<SearchField.SearchIcon />
|
|
108
|
+
<SearchField.Input />
|
|
109
|
+
</SearchField.Group>
|
|
110
|
+
<Description>Search is temporarily unavailable</Description>
|
|
111
|
+
</SearchField>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Example
|
|
115
|
+
|
|
116
|
+
```tsx
|
|
117
|
+
import { Description, Label, SearchField } from '@/heroui';
|
|
118
|
+
import { useState } from 'react';
|
|
119
|
+
import { View } from 'react-native';
|
|
120
|
+
|
|
121
|
+
export default function SearchFieldExample() {
|
|
122
|
+
const [searchValue, setSearchValue] = useState('');
|
|
123
|
+
|
|
124
|
+
return (
|
|
125
|
+
<View className="px-5">
|
|
126
|
+
<SearchField value={searchValue} onChange={setSearchValue}>
|
|
127
|
+
<Label>Find products</Label>
|
|
128
|
+
<SearchField.Group>
|
|
129
|
+
<SearchField.SearchIcon />
|
|
130
|
+
<SearchField.Input />
|
|
131
|
+
<SearchField.ClearButton />
|
|
132
|
+
</SearchField.Group>
|
|
133
|
+
<Description>Search by name, category, or SKU</Description>
|
|
134
|
+
</SearchField>
|
|
135
|
+
</View>
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
You can find more examples in the [GitHub repository](<https://github.com/heroui-inc/heroui-native/blob/rc/example/src/app/(home)/components/search-field.tsx>).
|
|
141
|
+
|
|
142
|
+
## API Reference
|
|
143
|
+
|
|
144
|
+
### SearchField
|
|
145
|
+
|
|
146
|
+
| prop | type | default | description |
|
|
147
|
+
| -------------- | ------------------------- | ------- | -------------------------------------------------------- |
|
|
148
|
+
| `children` | `React.ReactNode` | - | Children elements to be rendered inside the search field |
|
|
149
|
+
| `value` | `string` | - | Controlled search text value |
|
|
150
|
+
| `onChange` | `(value: string) => void` | - | Callback fired when the search text changes |
|
|
151
|
+
| `isDisabled` | `boolean` | `false` | Whether the search field is disabled |
|
|
152
|
+
| `isInvalid` | `boolean` | `false` | Whether the search field is in an invalid state |
|
|
153
|
+
| `isRequired` | `boolean` | `false` | Whether the search field is required |
|
|
154
|
+
| `className` | `string` | - | Additional CSS classes |
|
|
155
|
+
| `animation` | `AnimationRootDisableAll` | - | Animation configuration for the search field |
|
|
156
|
+
| `...ViewProps` | `ViewProps` | - | All standard React Native View props are supported |
|
|
157
|
+
|
|
158
|
+
#### AnimationRootDisableAll
|
|
159
|
+
|
|
160
|
+
Animation configuration for the SearchField root component. Can be:
|
|
161
|
+
|
|
162
|
+
- `"disable-all"`: Disable all animations including children (cascades down)
|
|
163
|
+
- `undefined`: Use default animations
|
|
164
|
+
|
|
165
|
+
### SearchField.Group
|
|
166
|
+
|
|
167
|
+
| prop | type | default | description |
|
|
168
|
+
| -------------- | ----------------- | ------- | -------------------------------------------------- |
|
|
169
|
+
| `children` | `React.ReactNode` | - | Children elements to be rendered inside the group |
|
|
170
|
+
| `className` | `string` | - | Additional CSS classes |
|
|
171
|
+
| `...ViewProps` | `ViewProps` | - | All standard React Native View props are supported |
|
|
172
|
+
|
|
173
|
+
### SearchField.SearchIcon
|
|
174
|
+
|
|
175
|
+
| prop | type | default | description |
|
|
176
|
+
| -------------- | -------------------------------- | ------- | ---------------------------------------------------------------------------------- |
|
|
177
|
+
| `children` | `React.ReactNode` | - | Custom content to replace the default search icon |
|
|
178
|
+
| `className` | `string` | - | Additional CSS classes |
|
|
179
|
+
| `iconProps` | `SearchFieldSearchIconIconProps` | - | Props for customizing the default search icon (ignored when children are provided) |
|
|
180
|
+
| `...ViewProps` | `ViewProps` | - | All standard React Native View props are supported |
|
|
181
|
+
|
|
182
|
+
#### SearchFieldSearchIconIconProps
|
|
183
|
+
|
|
184
|
+
| prop | type | default | description |
|
|
185
|
+
| ------- | -------- | ------------------- | ----------------- |
|
|
186
|
+
| `size` | `number` | `16` | Size of the icon |
|
|
187
|
+
| `color` | `string` | Theme `muted` color | Color of the icon |
|
|
188
|
+
|
|
189
|
+
### SearchField.Input
|
|
190
|
+
|
|
191
|
+
Extends [Input](../input/input.md) props with search-specific defaults (`placeholder="Search..."`, `returnKeyType="search"`, `accessibilityRole="search"`). Omits `value` and `onChangeText` because they are provided by the SearchField context.
|
|
192
|
+
|
|
193
|
+
### SearchField.ClearButton
|
|
194
|
+
|
|
195
|
+
Automatically hidden when the controlled `value` is an empty string. Calls `onChange("")` from context on press. Additional `onPress` handlers passed via props are called after clearing.
|
|
196
|
+
|
|
197
|
+
| prop | type | default | description |
|
|
198
|
+
| ---------------- | --------------------------------- | ------- | ------------------------------------------------ |
|
|
199
|
+
| `children` | `React.ReactNode` | - | Custom content to replace the default close icon |
|
|
200
|
+
| `iconProps` | `SearchFieldClearButtonIconProps` | - | Props for customizing the clear button icon |
|
|
201
|
+
| `className` | `string` | - | Additional CSS classes |
|
|
202
|
+
| `...ButtonProps` | `ButtonRootProps` | - | All Button root props are supported |
|
|
203
|
+
|
|
204
|
+
#### SearchFieldClearButtonIconProps
|
|
205
|
+
|
|
206
|
+
| prop | type | default | description |
|
|
207
|
+
| ------- | -------- | ------------------- | ----------------- |
|
|
208
|
+
| `size` | `number` | `14` | Size of the icon |
|
|
209
|
+
| `color` | `string` | Theme `muted` color | Color of the icon |
|
|
210
|
+
|
|
211
|
+
## Hooks
|
|
212
|
+
|
|
213
|
+
### useSearchField
|
|
214
|
+
|
|
215
|
+
Hook to access the search field state from context. Must be used within a `SearchField` component.
|
|
216
|
+
|
|
217
|
+
```tsx
|
|
218
|
+
import { useSearchField } from '@/heroui';
|
|
219
|
+
|
|
220
|
+
const { value, onChange, isDisabled, isInvalid, isRequired } = useSearchField();
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
#### Returns
|
|
224
|
+
|
|
225
|
+
| property | type | description |
|
|
226
|
+
| ------------ | ---------------------------------------- | ----------------------------------------------- |
|
|
227
|
+
| `value` | `string \| undefined` | Current controlled search text value |
|
|
228
|
+
| `onChange` | `((value: string) => void) \| undefined` | Callback to update the search text |
|
|
229
|
+
| `isDisabled` | `boolean` | Whether the search field is disabled |
|
|
230
|
+
| `isInvalid` | `boolean` | Whether the search field is in an invalid state |
|
|
231
|
+
| `isRequired` | `boolean` | Whether the search field is required |
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { tv } from 'tailwind-variants';
|
|
2
|
+
import { combineStyles } from '../../helpers/internal/utils';
|
|
3
|
+
|
|
4
|
+
const root = tv({
|
|
5
|
+
base: 'gap-1.5',
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
const group = tv({
|
|
9
|
+
base: 'flex-row items-center',
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
const searchIcon = tv({
|
|
13
|
+
base: 'absolute left-3 z-10',
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @note This only applies SearchField-specific overrides (flex-1, pl-9).
|
|
18
|
+
* Base input styling (bg, border, focus, variants, etc.) comes from the Input component.
|
|
19
|
+
* @see {@link ../input/input.styles.ts} for the base Input styles.
|
|
20
|
+
*/
|
|
21
|
+
const input = tv({
|
|
22
|
+
base: 'flex-1 pl-9 pr-12',
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const clearButton = tv({
|
|
26
|
+
base: 'absolute right-3 size-6',
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
export const searchFieldClassNames = combineStyles({
|
|
30
|
+
root,
|
|
31
|
+
group,
|
|
32
|
+
searchIcon,
|
|
33
|
+
input,
|
|
34
|
+
clearButton,
|
|
35
|
+
});
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { forwardRef, useMemo } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
type GestureResponderEvent,
|
|
4
|
+
type TextInput as TextInputType,
|
|
5
|
+
View,
|
|
6
|
+
} from 'react-native';
|
|
7
|
+
import { useThemeColor } from '../../helpers/external/hooks';
|
|
8
|
+
import { CloseIcon } from '../../helpers/internal/components';
|
|
9
|
+
import {
|
|
10
|
+
AnimationSettingsProvider,
|
|
11
|
+
FormFieldProvider,
|
|
12
|
+
} from '../../helpers/internal/contexts';
|
|
13
|
+
import type { ViewRef } from '../../helpers/internal/types';
|
|
14
|
+
import { createContext } from '../../helpers/internal/utils';
|
|
15
|
+
import { Button } from '../button';
|
|
16
|
+
import { Input } from '../input';
|
|
17
|
+
import { useSearchFieldRootAnimation } from './search-field.animation';
|
|
18
|
+
import { DISPLAY_NAME } from './search-field.constants';
|
|
19
|
+
import { searchFieldClassNames } from './search-field.styles';
|
|
20
|
+
import type {
|
|
21
|
+
SearchFieldClearButtonProps,
|
|
22
|
+
SearchFieldContextType,
|
|
23
|
+
SearchFieldGroupProps,
|
|
24
|
+
SearchFieldInputProps,
|
|
25
|
+
SearchFieldProps,
|
|
26
|
+
SearchFieldSearchIconProps,
|
|
27
|
+
} from './search-field.types';
|
|
28
|
+
import { SearchIcon } from './search-icon';
|
|
29
|
+
|
|
30
|
+
const [SearchFieldProvider, useSearchField] =
|
|
31
|
+
createContext<SearchFieldContextType>({
|
|
32
|
+
name: 'SearchFieldContext',
|
|
33
|
+
strict: false,
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// --------------------------------------------------
|
|
37
|
+
|
|
38
|
+
const SearchFieldRoot = forwardRef<ViewRef, SearchFieldProps>((props, ref) => {
|
|
39
|
+
const {
|
|
40
|
+
children,
|
|
41
|
+
className,
|
|
42
|
+
value,
|
|
43
|
+
onChange,
|
|
44
|
+
isDisabled = false,
|
|
45
|
+
isInvalid = false,
|
|
46
|
+
isRequired = false,
|
|
47
|
+
animation,
|
|
48
|
+
...restProps
|
|
49
|
+
} = props;
|
|
50
|
+
|
|
51
|
+
const rootClassName = searchFieldClassNames.root({ className });
|
|
52
|
+
|
|
53
|
+
const { isAllAnimationsDisabled } = useSearchFieldRootAnimation({
|
|
54
|
+
animation,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const searchFieldContextValue = useMemo<SearchFieldContextType>(
|
|
58
|
+
() => ({ value, onChange, isDisabled, isInvalid, isRequired }),
|
|
59
|
+
[value, onChange, isDisabled, isInvalid, isRequired]
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
const formFieldContextValue = useMemo(
|
|
63
|
+
() => ({ isDisabled, isInvalid, isRequired, hasFieldPadding: true }),
|
|
64
|
+
[isDisabled, isInvalid, isRequired]
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
const animationSettingsContextValue = useMemo(
|
|
68
|
+
() => ({
|
|
69
|
+
isAllAnimationsDisabled,
|
|
70
|
+
}),
|
|
71
|
+
[isAllAnimationsDisabled]
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
return (
|
|
75
|
+
<SearchFieldProvider value={searchFieldContextValue}>
|
|
76
|
+
<AnimationSettingsProvider value={animationSettingsContextValue}>
|
|
77
|
+
<FormFieldProvider value={formFieldContextValue}>
|
|
78
|
+
<View ref={ref} className={rootClassName} {...restProps}>
|
|
79
|
+
{children}
|
|
80
|
+
</View>
|
|
81
|
+
</FormFieldProvider>
|
|
82
|
+
</AnimationSettingsProvider>
|
|
83
|
+
</SearchFieldProvider>
|
|
84
|
+
);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
// --------------------------------------------------
|
|
88
|
+
|
|
89
|
+
const SearchFieldGroup = forwardRef<ViewRef, SearchFieldGroupProps>(
|
|
90
|
+
(props, ref) => {
|
|
91
|
+
const { children, className, ...restProps } = props;
|
|
92
|
+
|
|
93
|
+
const groupClassName = searchFieldClassNames.group({ className });
|
|
94
|
+
|
|
95
|
+
return (
|
|
96
|
+
<View ref={ref} className={groupClassName} {...restProps}>
|
|
97
|
+
{children}
|
|
98
|
+
</View>
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
// --------------------------------------------------
|
|
104
|
+
|
|
105
|
+
const SearchFieldSearchIcon = forwardRef<View, SearchFieldSearchIconProps>(
|
|
106
|
+
(props, ref) => {
|
|
107
|
+
const { children, className, iconProps, ...restProps } = props;
|
|
108
|
+
|
|
109
|
+
const searchIconClassName = searchFieldClassNames.searchIcon({ className });
|
|
110
|
+
|
|
111
|
+
return (
|
|
112
|
+
<View
|
|
113
|
+
ref={ref}
|
|
114
|
+
className={searchIconClassName}
|
|
115
|
+
pointerEvents="none"
|
|
116
|
+
accessibilityElementsHidden
|
|
117
|
+
importantForAccessibility="no-hide-descendants"
|
|
118
|
+
{...restProps}
|
|
119
|
+
>
|
|
120
|
+
{children ?? (
|
|
121
|
+
<SearchIcon size={iconProps?.size} color={iconProps?.color} />
|
|
122
|
+
)}
|
|
123
|
+
</View>
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
// --------------------------------------------------
|
|
129
|
+
|
|
130
|
+
const SearchFieldInput = forwardRef<TextInputType, SearchFieldInputProps>(
|
|
131
|
+
(props, ref) => {
|
|
132
|
+
const {
|
|
133
|
+
className,
|
|
134
|
+
placeholder = 'Search...',
|
|
135
|
+
returnKeyType = 'search',
|
|
136
|
+
accessibilityRole = 'search',
|
|
137
|
+
accessibilityLabel = 'Search',
|
|
138
|
+
...restProps
|
|
139
|
+
} = props;
|
|
140
|
+
|
|
141
|
+
const searchField = useSearchField();
|
|
142
|
+
|
|
143
|
+
const inputClassName = searchFieldClassNames.input({ className });
|
|
144
|
+
|
|
145
|
+
return (
|
|
146
|
+
<Input
|
|
147
|
+
ref={ref}
|
|
148
|
+
className={inputClassName}
|
|
149
|
+
value={searchField?.value}
|
|
150
|
+
onChangeText={searchField?.onChange}
|
|
151
|
+
placeholder={placeholder}
|
|
152
|
+
returnKeyType={returnKeyType}
|
|
153
|
+
accessibilityRole={accessibilityRole}
|
|
154
|
+
accessibilityLabel={accessibilityLabel}
|
|
155
|
+
{...restProps}
|
|
156
|
+
/>
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
// --------------------------------------------------
|
|
162
|
+
|
|
163
|
+
const SearchFieldClearButton = forwardRef<View, SearchFieldClearButtonProps>(
|
|
164
|
+
(props, ref) => {
|
|
165
|
+
const { iconProps, className, children, onPress, ...restProps } = props;
|
|
166
|
+
|
|
167
|
+
const searchField = useSearchField();
|
|
168
|
+
const themeColorMuted = useThemeColor('muted');
|
|
169
|
+
|
|
170
|
+
if (searchField?.value !== undefined && searchField.value.length === 0) {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const handlePress = (event: GestureResponderEvent) => {
|
|
175
|
+
searchField?.onChange?.('');
|
|
176
|
+
|
|
177
|
+
if (typeof onPress === 'function') {
|
|
178
|
+
onPress(event);
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
const clearButtonClassName = searchFieldClassNames.clearButton({
|
|
183
|
+
className,
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
return (
|
|
187
|
+
<Button
|
|
188
|
+
ref={ref}
|
|
189
|
+
variant="tertiary"
|
|
190
|
+
size="sm"
|
|
191
|
+
isIconOnly
|
|
192
|
+
className={clearButtonClassName}
|
|
193
|
+
hitSlop={8}
|
|
194
|
+
accessibilityRole="button"
|
|
195
|
+
accessibilityLabel="Clear search"
|
|
196
|
+
onPress={handlePress}
|
|
197
|
+
{...restProps}
|
|
198
|
+
>
|
|
199
|
+
{children ?? (
|
|
200
|
+
<CloseIcon
|
|
201
|
+
size={iconProps?.size ?? 14}
|
|
202
|
+
color={iconProps?.color ?? themeColorMuted}
|
|
203
|
+
/>
|
|
204
|
+
)}
|
|
205
|
+
</Button>
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
);
|
|
209
|
+
|
|
210
|
+
// --------------------------------------------------
|
|
211
|
+
|
|
212
|
+
SearchFieldRoot.displayName = DISPLAY_NAME.SEARCH_FIELD;
|
|
213
|
+
SearchFieldGroup.displayName = DISPLAY_NAME.SEARCH_FIELD_GROUP;
|
|
214
|
+
SearchFieldSearchIcon.displayName = DISPLAY_NAME.SEARCH_FIELD_SEARCH_ICON;
|
|
215
|
+
SearchFieldInput.displayName = DISPLAY_NAME.SEARCH_FIELD_INPUT;
|
|
216
|
+
SearchFieldClearButton.displayName = DISPLAY_NAME.SEARCH_FIELD_CLEAR_BUTTON;
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Compound SearchField component with sub-components.
|
|
220
|
+
*
|
|
221
|
+
* @component SearchField - Root container that accepts `value`, `onChange`,
|
|
222
|
+
* `isDisabled`, `isInvalid`, and `isRequired`, providing them to children via
|
|
223
|
+
* SearchFieldContext. Also provides FormFieldProvider and animation settings.
|
|
224
|
+
*
|
|
225
|
+
* @component SearchField.Group - Flex-row container for the search icon, input,
|
|
226
|
+
* and clear button.
|
|
227
|
+
*
|
|
228
|
+
* @component SearchField.SearchIcon - Magnifying glass icon positioned
|
|
229
|
+
* absolutely on the left.
|
|
230
|
+
*
|
|
231
|
+
* @component SearchField.Input - Wraps the Input component with search-specific
|
|
232
|
+
* defaults: "Search..." placeholder, left padding for the search icon, and
|
|
233
|
+
* search a11y role. Reads `value` / `onChangeText` from SearchFieldContext.
|
|
234
|
+
*
|
|
235
|
+
* @component SearchField.ClearButton - Small button that clears the search
|
|
236
|
+
* input. Automatically hidden when value is empty. Calls `onChange("")` from
|
|
237
|
+
* context on press.
|
|
238
|
+
*
|
|
239
|
+
* @see Full documentation: https://v3.heroui.com/docs/native/components/search-field
|
|
240
|
+
*/
|
|
241
|
+
const CompoundSearchField = Object.assign(SearchFieldRoot, {
|
|
242
|
+
/** Flex-row container for search icon, input, and clear button */
|
|
243
|
+
Group: SearchFieldGroup,
|
|
244
|
+
/** Magnifying glass search icon */
|
|
245
|
+
SearchIcon: SearchFieldSearchIcon,
|
|
246
|
+
/** Text input with search-specific defaults */
|
|
247
|
+
Input: SearchFieldInput,
|
|
248
|
+
/** Small clear button to dismiss search text */
|
|
249
|
+
ClearButton: SearchFieldClearButton,
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
export { useSearchField };
|
|
253
|
+
export default CompoundSearchField;
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import type { ViewProps } from 'react-native';
|
|
2
|
+
import type { AnimationRootDisableAll } from '../../helpers/internal/types';
|
|
3
|
+
import type { ButtonRootProps } from '../button/button.types';
|
|
4
|
+
import type { InputProps } from '../input/input.types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Context value provided by SearchField root to child components.
|
|
8
|
+
* Carries the controlled value, onChange callback, and form-field
|
|
9
|
+
* state so that Input and ClearButton can consume them.
|
|
10
|
+
*/
|
|
11
|
+
export interface SearchFieldContextType {
|
|
12
|
+
/** Current search text (undefined when uncontrolled) */
|
|
13
|
+
value: string | undefined;
|
|
14
|
+
/** Callback invoked when the search text changes */
|
|
15
|
+
onChange: ((value: string) => void) | undefined;
|
|
16
|
+
/** Whether the search field is disabled */
|
|
17
|
+
isDisabled: boolean;
|
|
18
|
+
/** Whether the search field is in an invalid state */
|
|
19
|
+
isInvalid: boolean;
|
|
20
|
+
/** Whether the search field is required */
|
|
21
|
+
isRequired: boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Props for the SearchField root component
|
|
26
|
+
*/
|
|
27
|
+
export interface SearchFieldProps extends ViewProps {
|
|
28
|
+
/**
|
|
29
|
+
* Children elements to be rendered inside the search field
|
|
30
|
+
*/
|
|
31
|
+
children?: React.ReactNode;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Controlled search text value
|
|
35
|
+
*/
|
|
36
|
+
value?: string;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Callback fired when the search text changes
|
|
40
|
+
*/
|
|
41
|
+
onChange?: (value: string) => void;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Whether the search field is disabled
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
47
|
+
isDisabled?: boolean;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Whether the search field is in an invalid state
|
|
51
|
+
* @default false
|
|
52
|
+
*/
|
|
53
|
+
isInvalid?: boolean;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Whether the search field is required
|
|
57
|
+
* @default false
|
|
58
|
+
*/
|
|
59
|
+
isRequired?: boolean;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Additional CSS classes
|
|
63
|
+
*/
|
|
64
|
+
className?: string;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Animation configuration for search field
|
|
68
|
+
* - `"disable-all"`: Disable all animations including children (cascades down)
|
|
69
|
+
* - `undefined`: Use default animations
|
|
70
|
+
*/
|
|
71
|
+
animation?: AnimationRootDisableAll;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Props for the SearchField.Group component
|
|
76
|
+
*/
|
|
77
|
+
export interface SearchFieldGroupProps extends ViewProps {
|
|
78
|
+
/**
|
|
79
|
+
* Children elements to be rendered inside the group
|
|
80
|
+
*/
|
|
81
|
+
children?: React.ReactNode;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Additional CSS classes
|
|
85
|
+
*/
|
|
86
|
+
className?: string;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Props for customizing the default search icon
|
|
91
|
+
*/
|
|
92
|
+
export interface SearchFieldSearchIconIconProps {
|
|
93
|
+
/**
|
|
94
|
+
* Size of the search icon
|
|
95
|
+
* @default 16
|
|
96
|
+
*/
|
|
97
|
+
size?: number;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Color of the search icon
|
|
101
|
+
* @default Uses theme muted color
|
|
102
|
+
*/
|
|
103
|
+
color?: string;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Props for the SearchField.SearchIcon component
|
|
108
|
+
*/
|
|
109
|
+
export interface SearchFieldSearchIconProps extends ViewProps {
|
|
110
|
+
/**
|
|
111
|
+
* Custom content to replace the default search icon
|
|
112
|
+
*/
|
|
113
|
+
children?: React.ReactNode;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Additional CSS classes
|
|
117
|
+
*/
|
|
118
|
+
className?: string;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Props for customizing the default search icon (ignored when children are provided)
|
|
122
|
+
*/
|
|
123
|
+
iconProps?: SearchFieldSearchIconIconProps;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Props for the SearchField.Input component.
|
|
128
|
+
* Extends InputProps with search-specific defaults (placeholder, a11y role).
|
|
129
|
+
* Omits `value` and `onChangeText` because they are provided by SearchField
|
|
130
|
+
* root through SearchFieldValueContext.
|
|
131
|
+
*/
|
|
132
|
+
export interface SearchFieldInputProps
|
|
133
|
+
extends Omit<InputProps, 'value' | 'onChangeText'> {}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Props for customizing the clear button icon
|
|
137
|
+
*/
|
|
138
|
+
export interface SearchFieldClearButtonIconProps {
|
|
139
|
+
/**
|
|
140
|
+
* Size of the icon
|
|
141
|
+
* @default 14
|
|
142
|
+
*/
|
|
143
|
+
size?: number;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Color of the icon
|
|
147
|
+
* @default Uses theme muted color
|
|
148
|
+
*/
|
|
149
|
+
color?: string;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Props for the SearchField.ClearButton component
|
|
154
|
+
*/
|
|
155
|
+
export type SearchFieldClearButtonProps = ButtonRootProps & {
|
|
156
|
+
/**
|
|
157
|
+
* Props for customizing the clear button icon
|
|
158
|
+
*/
|
|
159
|
+
iconProps?: SearchFieldClearButtonIconProps;
|
|
160
|
+
};
|