@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,394 @@
|
|
|
1
|
+
import type BottomSheet from '@gorhom/bottom-sheet';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
import type { TextProps } from 'react-native';
|
|
4
|
+
import type { SharedValue, WithTimingConfig } from 'react-native-reanimated';
|
|
5
|
+
import type {
|
|
6
|
+
Animation,
|
|
7
|
+
AnimationRootDisableAll,
|
|
8
|
+
AnimationValue,
|
|
9
|
+
BaseBottomSheetContentProps,
|
|
10
|
+
PopupOverlayAnimation,
|
|
11
|
+
PopupPopoverContentAnimation,
|
|
12
|
+
} from '../../helpers/internal/types';
|
|
13
|
+
import type * as MenuPrimitivesTypes from '../../primitives/menu/menu.types';
|
|
14
|
+
import type { CloseButtonProps } from '../close-button/close-button.types';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Context value for menu animation state
|
|
18
|
+
*/
|
|
19
|
+
export interface MenuAnimationContextValue {
|
|
20
|
+
/** Animation progress shared value (0=idle, 1=open, 2=close) */
|
|
21
|
+
progress: SharedValue<number>;
|
|
22
|
+
/** Dragging state shared value */
|
|
23
|
+
isDragging: SharedValue<boolean>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Ref type for the Menu Trigger component
|
|
28
|
+
*/
|
|
29
|
+
export type MenuTriggerRef = MenuPrimitivesTypes.TriggerRef;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Presentation mode for the menu content
|
|
33
|
+
*/
|
|
34
|
+
export type MenuPresentation = 'popover' | 'bottom-sheet';
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Menu placement options
|
|
38
|
+
*/
|
|
39
|
+
export type MenuPlacement = 'top' | 'bottom' | 'left' | 'right';
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Menu alignment options
|
|
43
|
+
*/
|
|
44
|
+
export type MenuAlign = 'start' | 'center' | 'end';
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Menu context value with presentation and placement
|
|
48
|
+
*/
|
|
49
|
+
export interface MenuContentContextValue {
|
|
50
|
+
/**
|
|
51
|
+
* Current placement of the menu
|
|
52
|
+
*/
|
|
53
|
+
placement?: MenuPlacement;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Menu Root component props
|
|
58
|
+
*/
|
|
59
|
+
export interface MenuRootProps extends MenuPrimitivesTypes.RootProps {
|
|
60
|
+
/**
|
|
61
|
+
* The content of the menu
|
|
62
|
+
*/
|
|
63
|
+
children?: ReactNode;
|
|
64
|
+
/**
|
|
65
|
+
* Animation configuration for menu root
|
|
66
|
+
* - `"disable-all"`: Disable all animations including children
|
|
67
|
+
* - `true` or `undefined`: Use default animations
|
|
68
|
+
*/
|
|
69
|
+
animation?: AnimationRootDisableAll;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Menu Trigger component props
|
|
74
|
+
*/
|
|
75
|
+
export interface MenuTriggerProps extends MenuPrimitivesTypes.TriggerProps {
|
|
76
|
+
/**
|
|
77
|
+
* The trigger element content
|
|
78
|
+
*/
|
|
79
|
+
children?: ReactNode;
|
|
80
|
+
/**
|
|
81
|
+
* Additional CSS class for the trigger
|
|
82
|
+
*/
|
|
83
|
+
className?: string;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Menu Portal component props
|
|
88
|
+
*/
|
|
89
|
+
export interface MenuPortalProps extends MenuPrimitivesTypes.PortalProps {
|
|
90
|
+
/**
|
|
91
|
+
* When true, uses a regular View instead of FullWindowOverlay on iOS.
|
|
92
|
+
* Enables React Native element inspector but overlay won't appear above native modals.
|
|
93
|
+
* @default false
|
|
94
|
+
*/
|
|
95
|
+
disableFullWindowOverlay?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Additional CSS class for the portal container
|
|
98
|
+
*/
|
|
99
|
+
className?: string;
|
|
100
|
+
/**
|
|
101
|
+
* The portal content
|
|
102
|
+
*/
|
|
103
|
+
children: ReactNode;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Menu Overlay component props
|
|
108
|
+
*/
|
|
109
|
+
export interface MenuOverlayProps extends MenuPrimitivesTypes.OverlayProps {
|
|
110
|
+
/**
|
|
111
|
+
* Additional CSS class for the overlay
|
|
112
|
+
*/
|
|
113
|
+
className?: string;
|
|
114
|
+
/**
|
|
115
|
+
* Animation configuration for overlay
|
|
116
|
+
* - `false` or `"disabled"`: Disable all animations
|
|
117
|
+
* - `true` or `undefined`: Use default animations
|
|
118
|
+
* - `object`: Custom animation configuration
|
|
119
|
+
*/
|
|
120
|
+
animation?: PopupOverlayAnimation;
|
|
121
|
+
/**
|
|
122
|
+
* Whether animated styles (react-native-reanimated) are active
|
|
123
|
+
* When `false`, the animated style is removed and you can implement custom logic
|
|
124
|
+
* @default true
|
|
125
|
+
*/
|
|
126
|
+
isAnimatedStyleActive?: boolean;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Menu Content props for 'popover' presentation
|
|
131
|
+
*/
|
|
132
|
+
export interface MenuContentPopoverProps
|
|
133
|
+
extends MenuPrimitivesTypes.ContentProps {
|
|
134
|
+
/**
|
|
135
|
+
* Presentation mode for the menu content
|
|
136
|
+
*/
|
|
137
|
+
presentation: 'popover';
|
|
138
|
+
/**
|
|
139
|
+
* Additional CSS class for the content container
|
|
140
|
+
*/
|
|
141
|
+
className?: string;
|
|
142
|
+
/**
|
|
143
|
+
* The menu content
|
|
144
|
+
*/
|
|
145
|
+
children?: ReactNode;
|
|
146
|
+
/**
|
|
147
|
+
* Animation configuration for content
|
|
148
|
+
* - `false` or `"disabled"`: Disable all animations
|
|
149
|
+
* - `true` or `undefined`: Use default animations
|
|
150
|
+
* - `object`: Custom animation configuration
|
|
151
|
+
*/
|
|
152
|
+
animation?: PopupPopoverContentAnimation;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Menu Content props for 'bottom-sheet' presentation
|
|
157
|
+
*/
|
|
158
|
+
export interface MenuContentBottomSheetProps
|
|
159
|
+
extends Partial<React.ComponentProps<typeof BottomSheet>>,
|
|
160
|
+
BaseBottomSheetContentProps {
|
|
161
|
+
/**
|
|
162
|
+
* Presentation mode for the menu
|
|
163
|
+
*/
|
|
164
|
+
presentation: 'bottom-sheet';
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Menu Content component props
|
|
169
|
+
*/
|
|
170
|
+
export type MenuContentProps =
|
|
171
|
+
| MenuContentPopoverProps
|
|
172
|
+
| MenuContentBottomSheetProps;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Menu Close component props
|
|
176
|
+
*
|
|
177
|
+
* Extends CloseButtonProps, allowing full override of all close button props.
|
|
178
|
+
* Automatically handles menu close functionality when pressed.
|
|
179
|
+
*/
|
|
180
|
+
export type MenuCloseProps = CloseButtonProps;
|
|
181
|
+
|
|
182
|
+
// --------------------------------------------------
|
|
183
|
+
// Group
|
|
184
|
+
// --------------------------------------------------
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Menu Group component props
|
|
188
|
+
*/
|
|
189
|
+
export interface MenuGroupProps
|
|
190
|
+
extends Omit<MenuPrimitivesTypes.GroupProps, 'asChild'> {
|
|
191
|
+
/**
|
|
192
|
+
* Additional CSS class for the group container
|
|
193
|
+
*/
|
|
194
|
+
className?: string;
|
|
195
|
+
/**
|
|
196
|
+
* The group content (Menu.Item elements)
|
|
197
|
+
*/
|
|
198
|
+
children?: ReactNode;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// --------------------------------------------------
|
|
202
|
+
// Label
|
|
203
|
+
// --------------------------------------------------
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Menu Label component props
|
|
207
|
+
*/
|
|
208
|
+
export interface MenuLabelProps extends TextProps {
|
|
209
|
+
/**
|
|
210
|
+
* Additional CSS class for the label
|
|
211
|
+
*/
|
|
212
|
+
className?: string;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// --------------------------------------------------
|
|
216
|
+
// Item
|
|
217
|
+
// --------------------------------------------------
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Animation configuration for a Menu Item.
|
|
221
|
+
* Controls scale and background-color transitions on press.
|
|
222
|
+
*
|
|
223
|
+
* - `true` or `undefined`: Use default animations
|
|
224
|
+
* - `false` or `"disabled"`: Disable all item animations
|
|
225
|
+
* - `object`: Custom animation configuration
|
|
226
|
+
*/
|
|
227
|
+
export type MenuItemAnimation = Animation<{
|
|
228
|
+
/**
|
|
229
|
+
* Scale animation when pressed
|
|
230
|
+
*/
|
|
231
|
+
scale?: AnimationValue<{
|
|
232
|
+
/**
|
|
233
|
+
* Scale value when pressed
|
|
234
|
+
* @default 0.99
|
|
235
|
+
*/
|
|
236
|
+
value?: number;
|
|
237
|
+
/**
|
|
238
|
+
* Animation timing configuration
|
|
239
|
+
* @default { duration: 200, easing: Easing.out(Easing.ease) }
|
|
240
|
+
*/
|
|
241
|
+
timingConfig?: WithTimingConfig;
|
|
242
|
+
}>;
|
|
243
|
+
/**
|
|
244
|
+
* Background-color animation when pressed
|
|
245
|
+
*/
|
|
246
|
+
backgroundColor?: AnimationValue<{
|
|
247
|
+
/**
|
|
248
|
+
* Background color shown while pressed.
|
|
249
|
+
* Resolved from the `default` theme token when omitted.
|
|
250
|
+
* @default useThemeColor('default')
|
|
251
|
+
*/
|
|
252
|
+
value?: string;
|
|
253
|
+
/**
|
|
254
|
+
* Animation timing configuration
|
|
255
|
+
* @default { duration: 150 }
|
|
256
|
+
*/
|
|
257
|
+
timingConfig?: WithTimingConfig;
|
|
258
|
+
}>;
|
|
259
|
+
}>;
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Render function props for MenuItem children
|
|
263
|
+
*/
|
|
264
|
+
export interface MenuItemRenderProps {
|
|
265
|
+
/** Whether this item is currently selected */
|
|
266
|
+
isSelected: boolean;
|
|
267
|
+
/** Whether the item is disabled */
|
|
268
|
+
isDisabled: boolean;
|
|
269
|
+
/** Whether the item is currently pressed */
|
|
270
|
+
isPressed: SharedValue<boolean>;
|
|
271
|
+
/** Visual variant of the item */
|
|
272
|
+
variant: MenuPrimitivesTypes.ItemVariant;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Menu Item component props
|
|
277
|
+
*/
|
|
278
|
+
export interface MenuItemProps
|
|
279
|
+
extends Omit<MenuPrimitivesTypes.ItemProps, 'children'> {
|
|
280
|
+
/**
|
|
281
|
+
* Additional CSS class for the item
|
|
282
|
+
*/
|
|
283
|
+
className?: string;
|
|
284
|
+
/**
|
|
285
|
+
* Animation configuration for press feedback (scale + background color).
|
|
286
|
+
* - `false` or `"disabled"`: Disable all item animations
|
|
287
|
+
* - `true` or `undefined`: Use default animations
|
|
288
|
+
* - `object`: Custom animation configuration
|
|
289
|
+
*/
|
|
290
|
+
animation?: MenuItemAnimation;
|
|
291
|
+
/**
|
|
292
|
+
* Whether animated styles (react-native-reanimated) are active.
|
|
293
|
+
* When `false`, the animated style is removed and you can implement custom logic.
|
|
294
|
+
* @default true
|
|
295
|
+
*/
|
|
296
|
+
isAnimatedStyleActive?: boolean;
|
|
297
|
+
/**
|
|
298
|
+
* Child elements to render inside the item, or a render function
|
|
299
|
+
*/
|
|
300
|
+
children?: ReactNode | ((props: MenuItemRenderProps) => ReactNode);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Menu ItemTitle component props
|
|
305
|
+
*/
|
|
306
|
+
export interface MenuItemTitleProps extends TextProps {
|
|
307
|
+
/**
|
|
308
|
+
* Additional CSS class for the item title
|
|
309
|
+
*/
|
|
310
|
+
className?: string;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Menu ItemDescription component props
|
|
315
|
+
*/
|
|
316
|
+
export interface MenuItemDescriptionProps extends TextProps {
|
|
317
|
+
/**
|
|
318
|
+
* Additional CSS class for the item description
|
|
319
|
+
*/
|
|
320
|
+
className?: string;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Visual variant for the item indicator.
|
|
325
|
+
* - `'checkmark'` – Renders a check icon when selected.
|
|
326
|
+
* - `'dot'` – Renders a small filled circle when selected.
|
|
327
|
+
*/
|
|
328
|
+
export type MenuItemIndicatorVariant = 'checkmark' | 'dot';
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Menu Item Indicator Icon props (applies to the `'checkmark'` variant)
|
|
332
|
+
*/
|
|
333
|
+
export interface MenuItemIndicatorIconProps {
|
|
334
|
+
/**
|
|
335
|
+
* Size of the check icon
|
|
336
|
+
* @default 16
|
|
337
|
+
*/
|
|
338
|
+
size?: number;
|
|
339
|
+
/**
|
|
340
|
+
* Color of the check icon
|
|
341
|
+
*/
|
|
342
|
+
color?: string;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Menu ItemIndicator component props
|
|
347
|
+
*/
|
|
348
|
+
export interface MenuItemIndicatorProps
|
|
349
|
+
extends MenuPrimitivesTypes.ItemIndicatorProps {
|
|
350
|
+
/**
|
|
351
|
+
* Additional CSS class for the item indicator
|
|
352
|
+
*/
|
|
353
|
+
className?: string;
|
|
354
|
+
/**
|
|
355
|
+
* Visual variant of the indicator.
|
|
356
|
+
* - `'checkmark'` renders a check icon
|
|
357
|
+
* - `'dot'` renders a filled circle
|
|
358
|
+
* @default 'checkmark'
|
|
359
|
+
*/
|
|
360
|
+
variant?: MenuItemIndicatorVariant;
|
|
361
|
+
/**
|
|
362
|
+
* Check icon props (only used when `variant` is `'checkmark'`)
|
|
363
|
+
*/
|
|
364
|
+
iconProps?: MenuItemIndicatorIconProps;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
// --------------------------------------------------
|
|
368
|
+
// Hook return types
|
|
369
|
+
// --------------------------------------------------
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Return type for the useMenu hook
|
|
373
|
+
*/
|
|
374
|
+
export type UseMenuReturn = MenuPrimitivesTypes.IRootContext;
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* Return type for the useMenuAnimation hook
|
|
378
|
+
*/
|
|
379
|
+
export interface UseMenuAnimationReturn {
|
|
380
|
+
/** Animation progress shared value (0=idle, 1=open, 2=close) */
|
|
381
|
+
progress: SharedValue<number>;
|
|
382
|
+
/** Dragging state shared value */
|
|
383
|
+
isDragging: SharedValue<boolean>;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
// --------------------------------------------------
|
|
387
|
+
// Re-export primitive types used by consumers
|
|
388
|
+
// --------------------------------------------------
|
|
389
|
+
|
|
390
|
+
export type {
|
|
391
|
+
GroupSelectionMode as MenuGroupSelectionMode,
|
|
392
|
+
ItemVariant as MenuItemVariant,
|
|
393
|
+
MenuKey,
|
|
394
|
+
} from '../../primitives/menu/menu.types';
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import type { ComponentProps } from 'react';
|
|
2
|
+
import type { ViewStyle } from 'react-native';
|
|
3
|
+
import Svg, { Path } from 'react-native-svg';
|
|
4
|
+
|
|
5
|
+
export interface ArrowSvgProps {
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
placement: 'top' | 'bottom' | 'left' | 'right';
|
|
9
|
+
fill: string;
|
|
10
|
+
stroke?: string;
|
|
11
|
+
strokeWidth?: number;
|
|
12
|
+
style?: ViewStyle;
|
|
13
|
+
svgProps?: ComponentProps<typeof Svg>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const ArrowSvg = ({
|
|
17
|
+
width,
|
|
18
|
+
height,
|
|
19
|
+
placement,
|
|
20
|
+
fill,
|
|
21
|
+
stroke,
|
|
22
|
+
strokeWidth = 1,
|
|
23
|
+
style,
|
|
24
|
+
svgProps,
|
|
25
|
+
}: ArrowSvgProps) => {
|
|
26
|
+
const getPaths = () => {
|
|
27
|
+
const strokePadding = strokeWidth / 2;
|
|
28
|
+
const cornerRadius = 2;
|
|
29
|
+
const baselineInset = strokeWidth;
|
|
30
|
+
|
|
31
|
+
switch (placement) {
|
|
32
|
+
case 'top': {
|
|
33
|
+
const tipX = width / 2;
|
|
34
|
+
const tipY = height - strokePadding;
|
|
35
|
+
|
|
36
|
+
const fillLeftX = strokePadding;
|
|
37
|
+
const fillLeftY = strokePadding;
|
|
38
|
+
const fillRightX = width - strokePadding;
|
|
39
|
+
const fillRightY = strokePadding;
|
|
40
|
+
const fillPath = `M ${fillLeftX} ${fillLeftY} L ${tipX} ${tipY} L ${fillRightX} ${fillRightY} Z`;
|
|
41
|
+
|
|
42
|
+
const strokeLeftX = strokePadding;
|
|
43
|
+
const strokeLeftY = strokePadding + baselineInset;
|
|
44
|
+
const strokeRightX = width - strokePadding;
|
|
45
|
+
const strokeRightY = strokePadding + baselineInset;
|
|
46
|
+
const leftTipX = tipX - cornerRadius;
|
|
47
|
+
const leftTipY = tipY - cornerRadius * 0.8;
|
|
48
|
+
const rightTipX = tipX + cornerRadius;
|
|
49
|
+
const rightTipY = tipY - cornerRadius * 0.8;
|
|
50
|
+
const strokePath = `M ${strokeLeftX} ${strokeLeftY} L ${leftTipX} ${leftTipY} Q ${tipX} ${tipY} ${rightTipX} ${rightTipY} L ${strokeRightX} ${strokeRightY}`;
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
fillPath,
|
|
54
|
+
strokePath,
|
|
55
|
+
viewBox: `0 0 ${width} ${height}`,
|
|
56
|
+
svgWidth: width,
|
|
57
|
+
svgHeight: height,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
case 'bottom': {
|
|
62
|
+
const tipX = width / 2;
|
|
63
|
+
const tipY = strokePadding;
|
|
64
|
+
|
|
65
|
+
const fillLeftX = strokePadding;
|
|
66
|
+
const fillLeftY = height - strokePadding;
|
|
67
|
+
const fillRightX = width - strokePadding;
|
|
68
|
+
const fillRightY = height - strokePadding;
|
|
69
|
+
const fillPath = `M ${fillLeftX} ${fillLeftY} L ${tipX} ${tipY} L ${fillRightX} ${fillRightY} Z`;
|
|
70
|
+
|
|
71
|
+
const strokeLeftX = strokePadding;
|
|
72
|
+
const strokeLeftY = height - strokePadding - baselineInset;
|
|
73
|
+
const strokeRightX = width - strokePadding;
|
|
74
|
+
const strokeRightY = height - strokePadding - baselineInset;
|
|
75
|
+
const leftTipX = tipX - cornerRadius;
|
|
76
|
+
const leftTipY = tipY + cornerRadius * 0.8;
|
|
77
|
+
const rightTipX = tipX + cornerRadius;
|
|
78
|
+
const rightTipY = tipY + cornerRadius * 0.8;
|
|
79
|
+
const strokePath = `M ${strokeLeftX} ${strokeLeftY} L ${leftTipX} ${leftTipY} Q ${tipX} ${tipY} ${rightTipX} ${rightTipY} L ${strokeRightX} ${strokeRightY}`;
|
|
80
|
+
|
|
81
|
+
return {
|
|
82
|
+
fillPath,
|
|
83
|
+
strokePath,
|
|
84
|
+
viewBox: `0 0 ${width} ${height}`,
|
|
85
|
+
svgWidth: width,
|
|
86
|
+
svgHeight: height,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
case 'left': {
|
|
91
|
+
const tipX = height - strokePadding;
|
|
92
|
+
const tipY = width / 2;
|
|
93
|
+
|
|
94
|
+
const fillTopX = strokePadding;
|
|
95
|
+
const fillTopY = strokePadding;
|
|
96
|
+
const fillBottomX = strokePadding;
|
|
97
|
+
const fillBottomY = width - strokePadding;
|
|
98
|
+
const fillPath = `M ${fillTopX} ${fillTopY} L ${tipX} ${tipY} L ${fillBottomX} ${fillBottomY} Z`;
|
|
99
|
+
|
|
100
|
+
const strokeTopX = strokePadding + baselineInset;
|
|
101
|
+
const strokeTopY = strokePadding;
|
|
102
|
+
const strokeBottomX = strokePadding + baselineInset;
|
|
103
|
+
const strokeBottomY = width - strokePadding;
|
|
104
|
+
const topTipX = tipX - cornerRadius * 0.8;
|
|
105
|
+
const topTipY = tipY - cornerRadius;
|
|
106
|
+
const bottomTipX = tipX - cornerRadius * 0.8;
|
|
107
|
+
const bottomTipY = tipY + cornerRadius;
|
|
108
|
+
const strokePath = `M ${strokeTopX} ${strokeTopY} L ${topTipX} ${topTipY} Q ${tipX} ${tipY} ${bottomTipX} ${bottomTipY} L ${strokeBottomX} ${strokeBottomY}`;
|
|
109
|
+
|
|
110
|
+
return {
|
|
111
|
+
fillPath,
|
|
112
|
+
strokePath,
|
|
113
|
+
viewBox: `0 0 ${height} ${width}`,
|
|
114
|
+
svgWidth: height,
|
|
115
|
+
svgHeight: width,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
case 'right': {
|
|
120
|
+
const tipX = strokePadding;
|
|
121
|
+
const tipY = width / 2;
|
|
122
|
+
|
|
123
|
+
const fillTopX = height - strokePadding;
|
|
124
|
+
const fillTopY = strokePadding;
|
|
125
|
+
const fillBottomX = height - strokePadding;
|
|
126
|
+
const fillBottomY = width - strokePadding;
|
|
127
|
+
const fillPath = `M ${fillTopX} ${fillTopY} L ${tipX} ${tipY} L ${fillBottomX} ${fillBottomY} Z`;
|
|
128
|
+
|
|
129
|
+
const strokeTopX = height - strokePadding - baselineInset;
|
|
130
|
+
const strokeTopY = strokePadding;
|
|
131
|
+
const strokeBottomX = height - strokePadding - baselineInset;
|
|
132
|
+
const strokeBottomY = width - strokePadding;
|
|
133
|
+
const topTipX = tipX + cornerRadius * 0.8;
|
|
134
|
+
const topTipY = tipY - cornerRadius;
|
|
135
|
+
const bottomTipX = tipX + cornerRadius * 0.8;
|
|
136
|
+
const bottomTipY = tipY + cornerRadius;
|
|
137
|
+
const strokePath = `M ${strokeTopX} ${strokeTopY} L ${topTipX} ${topTipY} Q ${tipX} ${tipY} ${bottomTipX} ${bottomTipY} L ${strokeBottomX} ${strokeBottomY}`;
|
|
138
|
+
|
|
139
|
+
return {
|
|
140
|
+
fillPath,
|
|
141
|
+
strokePath,
|
|
142
|
+
viewBox: `0 0 ${height} ${width}`,
|
|
143
|
+
svgWidth: height,
|
|
144
|
+
svgHeight: width,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
default:
|
|
149
|
+
return {
|
|
150
|
+
fillPath: '',
|
|
151
|
+
strokePath: '',
|
|
152
|
+
viewBox: '0 0 0 0',
|
|
153
|
+
svgWidth: 0,
|
|
154
|
+
svgHeight: 0,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
const { fillPath, strokePath, viewBox, svgWidth, svgHeight } = getPaths();
|
|
160
|
+
|
|
161
|
+
return (
|
|
162
|
+
<Svg
|
|
163
|
+
width={svgWidth}
|
|
164
|
+
height={svgHeight}
|
|
165
|
+
viewBox={viewBox}
|
|
166
|
+
style={style}
|
|
167
|
+
{...svgProps}
|
|
168
|
+
>
|
|
169
|
+
<Path d={fillPath} fill={fill} stroke="none" />
|
|
170
|
+
<Path
|
|
171
|
+
d={strokePath}
|
|
172
|
+
fill="none"
|
|
173
|
+
stroke={stroke}
|
|
174
|
+
strokeWidth={strokeWidth}
|
|
175
|
+
strokeLinecap="round"
|
|
176
|
+
strokeLinejoin="round"
|
|
177
|
+
/>
|
|
178
|
+
</Svg>
|
|
179
|
+
);
|
|
180
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { default as Popover, usePopover, usePopoverAnimation } from './popover';
|
|
2
|
+
export { popoverClassNames } from './popover.styles';
|
|
3
|
+
export type {
|
|
4
|
+
PopoverAlign,
|
|
5
|
+
PopoverArrowProps,
|
|
6
|
+
PopoverCloseProps,
|
|
7
|
+
PopoverContentProps,
|
|
8
|
+
PopoverDescriptionProps,
|
|
9
|
+
PopoverOverlayProps,
|
|
10
|
+
PopoverPlacement,
|
|
11
|
+
PopoverPortalProps,
|
|
12
|
+
PopoverRootProps,
|
|
13
|
+
PopoverTitleProps,
|
|
14
|
+
PopoverTriggerProps,
|
|
15
|
+
PopoverTriggerRef,
|
|
16
|
+
UsePopoverAnimationReturn,
|
|
17
|
+
UsePopoverReturn,
|
|
18
|
+
} from './popover.types';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createContext } from '../../helpers/internal/utils';
|
|
2
|
+
import type { PopoverAnimationContextValue } from './popover.types';
|
|
3
|
+
|
|
4
|
+
const [PopoverAnimationProvider, usePopoverAnimation] =
|
|
5
|
+
createContext<PopoverAnimationContextValue>({
|
|
6
|
+
name: 'PopoverAnimationContext',
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
export { PopoverAnimationProvider, usePopoverAnimation };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Display names for the Popover components
|
|
3
|
+
*/
|
|
4
|
+
export const DISPLAY_NAME = {
|
|
5
|
+
ROOT: 'HeroUINative.Popover.Root',
|
|
6
|
+
TRIGGER: 'HeroUINative.Popover.Trigger',
|
|
7
|
+
PORTAL: 'HeroUINative.Popover.Portal',
|
|
8
|
+
OVERLAY: 'HeroUINative.Popover.Overlay',
|
|
9
|
+
CONTENT: 'HeroUINative.Popover.Content',
|
|
10
|
+
CLOSE: 'HeroUINative.Popover.Close',
|
|
11
|
+
TITLE: 'HeroUINative.Popover.Title',
|
|
12
|
+
DESCRIPTION: 'HeroUINative.Popover.Description',
|
|
13
|
+
ARROW: 'HeroUINative.Popover.Arrow',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Default offset from trigger element
|
|
18
|
+
*/
|
|
19
|
+
export const DEFAULT_OFFSET = 9;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Default alignment offset
|
|
23
|
+
*/
|
|
24
|
+
export const DEFAULT_ALIGN_OFFSET = 0;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Default screen edge insets
|
|
28
|
+
*/
|
|
29
|
+
export const DEFAULT_INSETS = {
|
|
30
|
+
top: 12,
|
|
31
|
+
bottom: 12,
|
|
32
|
+
left: 12,
|
|
33
|
+
right: 12,
|
|
34
|
+
};
|