@neut/ui 0.0.1 → 0.0.3
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/README.md +6 -4
- package/dist/components/accordion/Accordion/Accordion.context.d.ts +9 -10
- package/dist/components/accordion/Accordion/Accordion.context.js +23 -25
- package/dist/components/accordion/Accordion/Accordion.context.js.map +1 -0
- package/dist/components/accordion/Accordion/Accordion.d.ts +1 -1
- package/dist/components/accordion/Accordion/Accordion.js +25 -21
- package/dist/components/accordion/Accordion/Accordion.js.map +1 -0
- package/dist/components/accordion/Accordion/Accordion.types.d.ts +8 -7
- package/dist/components/accordion/Accordion/index.d.ts +2 -0
- package/dist/components/accordion/Accordion/useAccordion.d.ts +3 -0
- package/dist/components/accordion/Accordion/useAccordion.js +34 -0
- package/dist/components/accordion/Accordion/useAccordion.js.map +1 -0
- package/dist/components/accordion/AccordionContent/AccordionContent.js +25 -32
- package/dist/components/accordion/AccordionContent/AccordionContent.js.map +1 -0
- package/dist/components/accordion/AccordionItem/AccordionItem.context.d.ts +5 -7
- package/dist/components/accordion/AccordionItem/AccordionItem.context.js +6 -20
- package/dist/components/accordion/AccordionItem/AccordionItem.context.js.map +1 -0
- package/dist/components/accordion/AccordionItem/AccordionItem.d.ts +1 -1
- package/dist/components/accordion/AccordionItem/AccordionItem.js +20 -19
- package/dist/components/accordion/AccordionItem/AccordionItem.js.map +1 -0
- package/dist/components/accordion/AccordionItem/AccordionItem.types.d.ts +4 -3
- package/dist/components/accordion/AccordionTrigger/AccordionTrigger.js +18 -21
- package/dist/components/accordion/AccordionTrigger/AccordionTrigger.js.map +1 -0
- package/dist/components/accordion/index.js +5 -0
- package/dist/components/aspect-ratio/AspectRatio.js +3 -1
- package/dist/components/aspect-ratio/AspectRatio.js.map +1 -0
- package/dist/components/aspect-ratio/AspectRatio.styles.js +3 -1
- package/dist/components/aspect-ratio/AspectRatio.styles.js.map +1 -0
- package/dist/components/aspect-ratio/index.js +2 -0
- package/dist/components/avatar/Avatar/Avatar.context.js +2 -0
- package/dist/components/avatar/Avatar/Avatar.context.js.map +1 -0
- package/dist/components/avatar/Avatar/Avatar.js +3 -1
- package/dist/components/avatar/Avatar/Avatar.js.map +1 -0
- package/dist/components/avatar/AvatarBadge/AvatarBadge.js +3 -1
- package/dist/components/avatar/AvatarBadge/AvatarBadge.js.map +1 -0
- package/dist/components/avatar/AvatarFallback/AvatarFallback.js +3 -1
- package/dist/components/avatar/AvatarFallback/AvatarFallback.js.map +1 -0
- package/dist/components/avatar/AvatarGroup/AvatarGroup.js +3 -1
- package/dist/components/avatar/AvatarGroup/AvatarGroup.js.map +1 -0
- package/dist/components/avatar/AvatarGroupCount/AvatarGroupCount.js +3 -1
- package/dist/components/avatar/AvatarGroupCount/AvatarGroupCount.js.map +1 -0
- package/dist/components/avatar/AvatarImage/AvatarImage.js +3 -1
- package/dist/components/avatar/AvatarImage/AvatarImage.js.map +1 -0
- package/dist/components/avatar/index.js +7 -0
- package/dist/components/badge/Badge.js +3 -1
- package/dist/components/badge/Badge.js.map +1 -0
- package/dist/components/badge/Badge.styles.js +3 -1
- package/dist/components/badge/Badge.styles.js.map +1 -0
- package/dist/components/badge/index.js +2 -0
- package/dist/components/button/Button.js +28 -25
- package/dist/components/button/Button.js.map +1 -0
- package/dist/components/button/Button.styles.js +3 -1
- package/dist/components/button/Button.styles.js.map +1 -0
- package/dist/components/button/Button.types.d.ts +1 -0
- package/dist/components/button/index.js +2 -0
- package/dist/components/button-group/ButtonGroup/ButtonGroup.js +3 -1
- package/dist/components/button-group/ButtonGroup/ButtonGroup.js.map +1 -0
- package/dist/components/button-group/ButtonGroup/ButtonGroup.styles.js +2 -0
- package/dist/components/button-group/ButtonGroup/ButtonGroup.styles.js.map +1 -0
- package/dist/components/button-group/ButtonGroupSeparator/ButtonGroupSeparator.js +3 -1
- package/dist/components/button-group/ButtonGroupSeparator/ButtonGroupSeparator.js.map +1 -0
- package/dist/components/button-group/ButtonGroupSeparator/ButtonGroupSeparator.styles.js +3 -1
- package/dist/components/button-group/ButtonGroupSeparator/ButtonGroupSeparator.styles.js.map +1 -0
- package/dist/components/button-group/ButtonGroupText/ButtonGroupText.js +3 -1
- package/dist/components/button-group/ButtonGroupText/ButtonGroupText.js.map +1 -0
- package/dist/components/button-group/ButtonGroupText/ButtonGroupText.styles.js +3 -1
- package/dist/components/button-group/ButtonGroupText/ButtonGroupText.styles.js.map +1 -0
- package/dist/components/button-group/index.js +4 -0
- package/dist/components/card/Card/Card.js +3 -1
- package/dist/components/card/Card/Card.js.map +1 -0
- package/dist/components/card/Card/Card.styles.d.ts +1 -1
- package/dist/components/card/Card/Card.styles.js +3 -1
- package/dist/components/card/Card/Card.styles.js.map +1 -0
- package/dist/components/card/CardAction/CardAction.js +3 -1
- package/dist/components/card/CardAction/CardAction.js.map +1 -0
- package/dist/components/card/CardAction/CardAction.styles.js +2 -0
- package/dist/components/card/CardAction/CardAction.styles.js.map +1 -0
- package/dist/components/card/CardContent/CardContent.js +3 -1
- package/dist/components/card/CardContent/CardContent.js.map +1 -0
- package/dist/components/card/CardContent/CardContent.styles.d.ts +1 -1
- package/dist/components/card/CardContent/CardContent.styles.js +3 -1
- package/dist/components/card/CardContent/CardContent.styles.js.map +1 -0
- package/dist/components/card/CardDescription/CardDescription.js +3 -1
- package/dist/components/card/CardDescription/CardDescription.js.map +1 -0
- package/dist/components/card/CardDescription/CardDescription.styles.js +2 -0
- package/dist/components/card/CardDescription/CardDescription.styles.js.map +1 -0
- package/dist/components/card/CardFooter/CardFooter.js +3 -1
- package/dist/components/card/CardFooter/CardFooter.js.map +1 -0
- package/dist/components/card/CardFooter/CardFooter.styles.js +2 -0
- package/dist/components/card/CardFooter/CardFooter.styles.js.map +1 -0
- package/dist/components/card/CardHeader/CardHeader.js +3 -1
- package/dist/components/card/CardHeader/CardHeader.js.map +1 -0
- package/dist/components/card/CardHeader/CardHeader.styles.js +2 -0
- package/dist/components/card/CardHeader/CardHeader.styles.js.map +1 -0
- package/dist/components/card/CardTitle/CardTitle.js +3 -1
- package/dist/components/card/CardTitle/CardTitle.js.map +1 -0
- package/dist/components/card/CardTitle/CardTitle.styles.js +2 -0
- package/dist/components/card/CardTitle/CardTitle.styles.js.map +1 -0
- package/dist/components/card/index.js +8 -0
- package/dist/components/carousel/Carousel/Carousel.context.js +2 -0
- package/dist/components/carousel/Carousel/Carousel.context.js.map +1 -0
- package/dist/components/carousel/Carousel/Carousel.js +3 -1
- package/dist/components/carousel/Carousel/Carousel.js.map +1 -0
- package/dist/components/carousel/Carousel/useAutoPlay.js +2 -0
- package/dist/components/carousel/Carousel/useAutoPlay.js.map +1 -0
- package/dist/components/carousel/Carousel/useCarousel.js +2 -0
- package/dist/components/carousel/Carousel/useCarousel.js.map +1 -0
- package/dist/components/carousel/Carousel/useKeyboardNavigation.js +2 -0
- package/dist/components/carousel/Carousel/useKeyboardNavigation.js.map +1 -0
- package/dist/components/carousel/CarouselContent/CarouselContent.js +3 -1
- package/dist/components/carousel/CarouselContent/CarouselContent.js.map +1 -0
- package/dist/components/carousel/CarouselContent/useItemSizeMeasure.js +2 -0
- package/dist/components/carousel/CarouselContent/useItemSizeMeasure.js.map +1 -0
- package/dist/components/carousel/CarouselDots/CarouselDots.js +2 -0
- package/dist/components/carousel/CarouselDots/CarouselDots.js.map +1 -0
- package/dist/components/carousel/CarouselItem/CarouselItem.js +3 -1
- package/dist/components/carousel/CarouselItem/CarouselItem.js.map +1 -0
- package/dist/components/carousel/CarouselNext/CarouselNext.js +3 -1
- package/dist/components/carousel/CarouselNext/CarouselNext.js.map +1 -0
- package/dist/components/carousel/CarouselPrevious/CarouselPrevious.js +3 -1
- package/dist/components/carousel/CarouselPrevious/CarouselPrevious.js.map +1 -0
- package/dist/components/carousel/index.js +7 -0
- package/dist/components/field/Field/Field.js +3 -1
- package/dist/components/field/Field/Field.js.map +1 -0
- package/dist/components/field/Field/Field.styles.js +2 -0
- package/dist/components/field/Field/Field.styles.js.map +1 -0
- package/dist/components/field/FieldContent/FieldContent.js +3 -1
- package/dist/components/field/FieldContent/FieldContent.js.map +1 -0
- package/dist/components/field/FieldDescription/FieldDescription.js +3 -1
- package/dist/components/field/FieldDescription/FieldDescription.js.map +1 -0
- package/dist/components/field/FieldError/FieldError.js +3 -1
- package/dist/components/field/FieldError/FieldError.js.map +1 -0
- package/dist/components/field/FieldGroup/FieldGroup.js +3 -1
- package/dist/components/field/FieldGroup/FieldGroup.js.map +1 -0
- package/dist/components/field/FieldLabel/FieldLabel.js +3 -1
- package/dist/components/field/FieldLabel/FieldLabel.js.map +1 -0
- package/dist/components/field/FieldLegend/FieldLegend.js +3 -1
- package/dist/components/field/FieldLegend/FieldLegend.js.map +1 -0
- package/dist/components/field/FieldSeparator/FieldSeparator.js +3 -1
- package/dist/components/field/FieldSeparator/FieldSeparator.js.map +1 -0
- package/dist/components/field/FieldSet/FieldSet.js +3 -1
- package/dist/components/field/FieldSet/FieldSet.js.map +1 -0
- package/dist/components/field/FieldTitle/FieldTitle.js +3 -1
- package/dist/components/field/FieldTitle/FieldTitle.js.map +1 -0
- package/dist/components/field/index.js +11 -0
- package/dist/components/image/Image.config.js +2 -0
- package/dist/components/image/Image.config.js.map +1 -0
- package/dist/components/image/Image.js +2 -0
- package/dist/components/image/Image.js.map +1 -0
- package/dist/components/image/Image.utils.js +2 -0
- package/dist/components/image/Image.utils.js.map +1 -0
- package/dist/components/image/ImageElement.js +2 -0
- package/dist/components/image/ImageElement.js.map +1 -0
- package/dist/components/image/ImagePreload.js +2 -0
- package/dist/components/image/ImagePreload.js.map +1 -0
- package/dist/components/image/index.js +2 -0
- package/dist/components/input/Input.js +3 -1
- package/dist/components/input/Input.js.map +1 -0
- package/dist/components/input/index.js +2 -0
- package/dist/components/input-group/InputGroup/InputGroup.js +3 -1
- package/dist/components/input-group/InputGroup/InputGroup.js.map +1 -0
- package/dist/components/input-group/InputGroupAddon/InputGroupAddon.js +3 -1
- package/dist/components/input-group/InputGroupAddon/InputGroupAddon.js.map +1 -0
- package/dist/components/input-group/InputGroupAddon/InputGroupAddon.styles.js +2 -0
- package/dist/components/input-group/InputGroupAddon/InputGroupAddon.styles.js.map +1 -0
- package/dist/components/input-group/InputGroupButton/InputGroupButton.js +3 -1
- package/dist/components/input-group/InputGroupButton/InputGroupButton.js.map +1 -0
- package/dist/components/input-group/InputGroupButton/InputGroupButton.styles.js +2 -0
- package/dist/components/input-group/InputGroupButton/InputGroupButton.styles.js.map +1 -0
- package/dist/components/input-group/InputGroupInput/InputGroupInput.js +3 -1
- package/dist/components/input-group/InputGroupInput/InputGroupInput.js.map +1 -0
- package/dist/components/input-group/InputGroupText/InputGroupText.js +3 -1
- package/dist/components/input-group/InputGroupText/InputGroupText.js.map +1 -0
- package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.js +3 -1
- package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.js.map +1 -0
- package/dist/components/input-group/index.js +7 -0
- package/dist/components/item/Item/Item.js +3 -1
- package/dist/components/item/Item/Item.js.map +1 -0
- package/dist/components/item/Item/Item.styles.js +2 -0
- package/dist/components/item/Item/Item.styles.js.map +1 -0
- package/dist/components/item/ItemActions/ItemActions.js +3 -1
- package/dist/components/item/ItemActions/ItemActions.js.map +1 -0
- package/dist/components/item/ItemContent/ItemContent.js +3 -1
- package/dist/components/item/ItemContent/ItemContent.js.map +1 -0
- package/dist/components/item/ItemDescription/ItemDescription.js +3 -1
- package/dist/components/item/ItemDescription/ItemDescription.js.map +1 -0
- package/dist/components/item/ItemFooter/ItemFooter.js +3 -1
- package/dist/components/item/ItemFooter/ItemFooter.js.map +1 -0
- package/dist/components/item/ItemGroup/ItemGroup.js +3 -1
- package/dist/components/item/ItemGroup/ItemGroup.js.map +1 -0
- package/dist/components/item/ItemHeader/ItemHeader.js +3 -1
- package/dist/components/item/ItemHeader/ItemHeader.js.map +1 -0
- package/dist/components/item/ItemMedia/ItemMedia.js +3 -1
- package/dist/components/item/ItemMedia/ItemMedia.js.map +1 -0
- package/dist/components/item/ItemMedia/ItemMedia.styles.js +2 -0
- package/dist/components/item/ItemMedia/ItemMedia.styles.js.map +1 -0
- package/dist/components/item/ItemSeparator/ItemSeparator.js +3 -1
- package/dist/components/item/ItemSeparator/ItemSeparator.js.map +1 -0
- package/dist/components/item/ItemTitle/ItemTitle.js +3 -1
- package/dist/components/item/ItemTitle/ItemTitle.js.map +1 -0
- package/dist/components/item/index.js +11 -0
- package/dist/components/kbd/Kbd.js +3 -1
- package/dist/components/kbd/Kbd.js.map +1 -0
- package/dist/components/kbd/index.js +2 -0
- package/dist/components/label/Label.js +3 -1
- package/dist/components/label/Label.js.map +1 -0
- package/dist/components/label/index.js +2 -0
- package/dist/components/pagination/Pagination/Pagination.js +3 -1
- package/dist/components/pagination/Pagination/Pagination.js.map +1 -0
- package/dist/components/pagination/PaginationContent/PaginationContent.js +3 -1
- package/dist/components/pagination/PaginationContent/PaginationContent.js.map +1 -0
- package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.js +3 -1
- package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.js.map +1 -0
- package/dist/components/pagination/PaginationItem/PaginationItem.js +2 -0
- package/dist/components/pagination/PaginationItem/PaginationItem.js.map +1 -0
- package/dist/components/pagination/PaginationLink/PaginationLink.js +3 -1
- package/dist/components/pagination/PaginationLink/PaginationLink.js.map +1 -0
- package/dist/components/pagination/PaginationNext/PaginationNext.js +3 -1
- package/dist/components/pagination/PaginationNext/PaginationNext.js.map +1 -0
- package/dist/components/pagination/PaginationPrevious/PaginationPrevious.js +3 -1
- package/dist/components/pagination/PaginationPrevious/PaginationPrevious.js.map +1 -0
- package/dist/components/pagination/index.js +8 -0
- package/dist/components/scroll-area/ScrollArea/ScrollArea.context.d.ts +1 -1
- package/dist/components/scroll-area/ScrollArea/ScrollArea.context.js +2 -0
- package/dist/components/scroll-area/ScrollArea/ScrollArea.context.js.map +1 -0
- package/dist/components/scroll-area/ScrollArea/ScrollArea.js +32 -30
- package/dist/components/scroll-area/ScrollArea/ScrollArea.js.map +1 -0
- package/dist/components/scroll-area/ScrollArea/ScrollArea.utils.js +2 -0
- package/dist/components/scroll-area/ScrollArea/ScrollArea.utils.js.map +1 -0
- package/dist/components/scroll-area/ScrollBar/ScrollBar.js +3 -1
- package/dist/components/scroll-area/ScrollBar/ScrollBar.js.map +1 -0
- package/dist/components/scroll-area/index.js +3 -0
- package/dist/components/separator/Separator.js +3 -1
- package/dist/components/separator/Separator.js.map +1 -0
- package/dist/components/separator/Separator.styles.js +3 -1
- package/dist/components/separator/Separator.styles.js.map +1 -0
- package/dist/components/separator/index.js +2 -0
- package/dist/components/sidebar/Sidebar/Sidebar.js +3 -1
- package/dist/components/sidebar/Sidebar/Sidebar.js.map +1 -0
- package/dist/components/sidebar/SidebarContent/SidebarContent.js +3 -1
- package/dist/components/sidebar/SidebarContent/SidebarContent.js.map +1 -0
- package/dist/components/sidebar/SidebarFooter/SidebarFooter.js +3 -1
- package/dist/components/sidebar/SidebarFooter/SidebarFooter.js.map +1 -0
- package/dist/components/sidebar/SidebarGroup/SidebarGroup.js +3 -1
- package/dist/components/sidebar/SidebarGroup/SidebarGroup.js.map +1 -0
- package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.js +3 -1
- package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.js.map +1 -0
- package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.js +3 -1
- package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.js.map +1 -0
- package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.js +3 -1
- package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.js.map +1 -0
- package/dist/components/sidebar/SidebarHeader/SidebarHeader.js +3 -1
- package/dist/components/sidebar/SidebarHeader/SidebarHeader.js.map +1 -0
- package/dist/components/sidebar/SidebarInput/SidebarInput.js +3 -1
- package/dist/components/sidebar/SidebarInput/SidebarInput.js.map +1 -0
- package/dist/components/sidebar/SidebarInset/SidebarInset.js +3 -1
- package/dist/components/sidebar/SidebarInset/SidebarInset.js.map +1 -0
- package/dist/components/sidebar/SidebarMenu/SidebarMenu.js +3 -1
- package/dist/components/sidebar/SidebarMenu/SidebarMenu.js.map +1 -0
- package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.js +3 -1
- package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.js.map +1 -0
- package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.js +3 -1
- package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.js.map +1 -0
- package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.styles.js +8 -5
- package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.styles.js.map +1 -0
- package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.types.d.ts +1 -1
- package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.js +3 -1
- package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.js.map +1 -0
- package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.js +3 -1
- package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.js.map +1 -0
- package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.js +3 -1
- package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.js.map +1 -0
- package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.js +3 -1
- package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.js.map +1 -0
- package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.js +3 -1
- package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.js.map +1 -0
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.consts.js +2 -0
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.consts.js.map +1 -0
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.context.js +2 -0
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.context.js.map +1 -0
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.js +3 -1
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.js.map +1 -0
- package/dist/components/sidebar/SidebarRail/SidebarRail.js +3 -1
- package/dist/components/sidebar/SidebarRail/SidebarRail.js.map +1 -0
- package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.js +3 -1
- package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.js.map +1 -0
- package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.js +2 -0
- package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.js.map +1 -0
- package/dist/components/sidebar/index.js +23 -0
- package/dist/components/skeleton/Skeleton.js +3 -1
- package/dist/components/skeleton/Skeleton.js.map +1 -0
- package/dist/components/skeleton/index.js +2 -0
- package/dist/components/spinner/Spinner.js +3 -1
- package/dist/components/spinner/Spinner.js.map +1 -0
- package/dist/components/spinner/Spinner.styles.js +3 -1
- package/dist/components/spinner/Spinner.styles.js.map +1 -0
- package/dist/components/spinner/index.js +2 -0
- package/dist/components/switch/Switch.js +3 -1
- package/dist/components/switch/Switch.js.map +1 -0
- package/dist/components/switch/Switch.styles.js +3 -1
- package/dist/components/switch/Switch.styles.js.map +1 -0
- package/dist/components/switch/index.js +2 -0
- package/dist/components/textarea/Textarea.js +3 -1
- package/dist/components/textarea/Textarea.js.map +1 -0
- package/dist/components/textarea/index.js +2 -0
- package/dist/components/toast/components/Assets.js +2 -0
- package/dist/components/toast/components/Assets.js.map +1 -0
- package/dist/components/toast/components/Toast.js +3 -1
- package/dist/components/toast/components/Toast.js.map +1 -0
- package/dist/components/toast/components/ToastActions.js +3 -1
- package/dist/components/toast/components/ToastActions.js.map +1 -0
- package/dist/components/toast/components/ToastContent.js +3 -1
- package/dist/components/toast/components/ToastContent.js.map +1 -0
- package/dist/components/toast/components/ToastIcon.js +3 -1
- package/dist/components/toast/components/ToastIcon.js.map +1 -0
- package/dist/components/toast/components/Toaster.js +2 -0
- package/dist/components/toast/components/Toaster.js.map +1 -0
- package/dist/components/toast/constants.js +2 -0
- package/dist/components/toast/constants.js.map +1 -0
- package/dist/components/toast/hooks/useSwipe.js +2 -0
- package/dist/components/toast/hooks/useSwipe.js.map +1 -0
- package/dist/components/toast/hooks/useTheme.js +2 -0
- package/dist/components/toast/hooks/useTheme.js.map +1 -0
- package/dist/components/toast/hooks/useToastHeight.js +2 -0
- package/dist/components/toast/hooks/useToastHeight.js.map +1 -0
- package/dist/components/toast/hooks/useToastSubscription.js +2 -0
- package/dist/components/toast/hooks/useToastSubscription.js.map +1 -0
- package/dist/components/toast/hooks/useToastTimer.js +2 -0
- package/dist/components/toast/hooks/useToastTimer.js.map +1 -0
- package/dist/components/toast/hooks/useToasterKeyboard.js +2 -0
- package/dist/components/toast/hooks/useToasterKeyboard.js.map +1 -0
- package/dist/components/toast/hooks.js +2 -0
- package/dist/components/toast/hooks.js.map +1 -0
- package/dist/components/toast/index.js +5 -0
- package/dist/components/toast/state.js +2 -0
- package/dist/components/toast/state.js.map +1 -0
- package/dist/components/toast/types.js +2 -0
- package/dist/components/toast/types.js.map +1 -0
- package/dist/components/toast/utils.js +2 -0
- package/dist/components/toast/utils.js.map +1 -0
- package/dist/components/tooltip/Tooltip/Tooltip.context.d.ts +1 -1
- package/dist/components/tooltip/Tooltip/Tooltip.context.js +2 -0
- package/dist/components/tooltip/Tooltip/Tooltip.context.js.map +1 -0
- package/dist/components/tooltip/Tooltip/Tooltip.js +24 -16
- package/dist/components/tooltip/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/tooltip/TooltipArrow/TooltipArrow.js +13 -10
- package/dist/components/tooltip/TooltipArrow/TooltipArrow.js.map +1 -0
- package/dist/components/tooltip/TooltipContent/TooltipContent.context.d.ts +2 -1
- package/dist/components/tooltip/TooltipContent/TooltipContent.context.js +2 -0
- package/dist/components/tooltip/TooltipContent/TooltipContent.context.js.map +1 -0
- package/dist/components/tooltip/TooltipContent/TooltipContent.js +29 -19
- package/dist/components/tooltip/TooltipContent/TooltipContent.js.map +1 -0
- package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js +2 -0
- package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js.map +1 -0
- package/dist/components/tooltip/TooltipContent/useTooltipContent.js +28 -31
- package/dist/components/tooltip/TooltipContent/useTooltipContent.js.map +1 -0
- package/dist/components/tooltip/TooltipTrigger/TooltipTrigger.d.ts +2 -2
- package/dist/components/tooltip/TooltipTrigger/TooltipTrigger.js +7 -5
- package/dist/components/tooltip/TooltipTrigger/TooltipTrigger.js.map +1 -0
- package/dist/components/tooltip/TooltipTrigger/useTooltipTrigger.js +21 -7
- package/dist/components/tooltip/TooltipTrigger/useTooltipTrigger.js.map +1 -0
- package/dist/components/tooltip/index.js +5 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/useFontLoader.d.ts +86 -0
- package/dist/hooks/useFontLoader.js +89 -0
- package/dist/hooks/useFontLoader.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +108 -104
- package/dist/ui.css +3 -0
- package/dist/{lib/utils → utils}/clsx.js +3 -1
- package/dist/utils/clsx.js.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/warn-once.js +6 -0
- package/dist/utils/warn-once.js.map +1 -0
- package/package.json +54 -9
- package/dist/styles/animate.css +0 -250
- package/dist/styles/index.css +0 -100
- package/dist/styles/toast.css +0 -745
- /package/dist/{lib/utils → utils}/clsx.d.ts +0 -0
- /package/dist/{lib/utils → utils}/get-style.d.ts +0 -0
- /package/dist/{lib/utils → utils}/index.d.ts +0 -0
- /package/dist/{lib/utils → utils}/warn-once.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Image.config.js","names":[],"sources":["../../../src/components/image/Image.config.ts"],"sourcesContent":["/**\n * image-config.ts\n * 单一职责:提供图片配置的默认值,以及通过 SolidJS Context 向下传递配置的机制。\n * 不包含任何渲染逻辑。\n */\n\nimport { createContext, useContext } from \"solid-js\";\nimport type { ImageConfigComplete } from \"./Image.types\";\n\n// ─── 默认配置 ─────────────────────────────────────────────────────────────────\n\nexport const imageConfigDefault: ImageConfigComplete = {\n deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],\n imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],\n loader: \"default\",\n path: \"/_next/image\",\n loaderFile: \"\",\n domains: [],\n disableStaticImages: false,\n minimumCacheTTL: 60,\n formats: [\"image/webp\"],\n dangerouslyAllowSVG: false,\n contentSecurityPolicy: `script-src 'none'; frame-src 'none'; sandbox;`,\n contentDispositionType: \"attachment\",\n remotePatterns: [],\n unoptimized: false,\n};\n\n// ─── SolidJS Context ──────────────────────────────────────────────────────────\n\n/**\n * 向子树提供自定义图片配置。\n * 用法:\n * <ImageConfigProvider value={myConfig}>\n * <App />\n * </ImageConfigProvider>\n */\nexport const ImageConfigContext =\n createContext<ImageConfigComplete>(imageConfigDefault);\n\nexport function useImageConfig(): ImageConfigComplete {\n return useContext(ImageConfigContext);\n}\n\n// ─── 配置合并工具 ──────────────────────────────────────────────────────────────\n\n/**\n * 将上下文配置与运行时注入的配置合并,\n * 并预计算派生字段(allSizes、排序后的 deviceSizes / qualities)。\n */\nexport function resolveConfig(\n contextConfig: ImageConfigComplete,\n envConfig?: Partial<ImageConfigComplete>,\n): ImageConfigComplete {\n const c: ImageConfigComplete = { ...contextConfig, ...(envConfig ?? {}) };\n\n const allSizes = [...c.deviceSizes, ...c.imageSizes].sort((a, b) => a - b);\n const deviceSizes = [...c.deviceSizes].sort((a, b) => a - b);\n const qualities = c.qualities\n ? [...c.qualities].sort((a, b) => a - b)\n : undefined;\n\n return { ...c, allSizes, deviceSizes, qualities };\n}\n"],"mappings":";;AAWA,IAAa,IAA0C;CACrD,aAAa;EAAC;EAAK;EAAK;EAAK;EAAM;EAAM;EAAM;EAAM;EAAK;CAC1D,YAAY;EAAC;EAAI;EAAI;EAAI;EAAI;EAAI;EAAK;EAAK;EAAI;CAC/C,QAAQ;CACR,MAAM;CACN,YAAY;CACZ,SAAS,EAAE;CACX,qBAAqB;CACrB,iBAAiB;CACjB,SAAS,CAAC,aAAa;CACvB,qBAAqB;CACrB,uBAAuB;CACvB,wBAAwB;CACxB,gBAAgB,EAAE;CAClB,aAAa;CACd,EAWY,IACX,EAAmC,EAAmB;AAExD,SAAgB,IAAsC;AACpD,QAAO,EAAW,EAAmB;;AASvC,SAAgB,EACd,GACA,GACqB;CACrB,IAAM,IAAyB;EAAE,GAAG;EAAe,GAAI,KAAa,EAAE;EAAG,EAEnE,IAAW,CAAC,GAAG,EAAE,aAAa,GAAG,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE,EACpE,IAAc,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE,EACtD,IAAY,EAAE,YAChB,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE,GACtC,KAAA;AAEJ,QAAO;EAAE,GAAG;EAAG;EAAU;EAAa;EAAW"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Image.js","names":["Component","createMemo","createSignal","Show","resolveConfig","useImageConfig","ImageProps","ImgPropsResult","PlaceholderValue","getImgProps","ImageElement","ImagePreload","Image","props","contextConfig","config","blurComplete","setBlurComplete","showAltText","setShowAltText","result","imgConf","imgAttributes","imgMeta","meta","_$createComponent","_$mergeProps","unoptimized","placeholder","fill","onLoad","onLoadingComplete","sizesInput","sizes","when","preload","children"],"sources":["../../../src/components/image/Image.tsx"],"sourcesContent":["/**\n * Image.tsx\n * 单一职责:组合层——解析 props、管理 blur/showAltText 状态、\n * 合并配置,然后将职责委托给 ImageElement 和 ImagePreload。\n * 不包含任何加载逻辑或 DOM 操作。\n */\n\nimport { type Component, createMemo, createSignal, Show } from \"solid-js\";\nimport { resolveConfig, useImageConfig } from \"./Image.config\";\nimport type {\n ImageProps,\n ImgPropsResult,\n PlaceholderValue,\n} from \"./Image.types\";\nimport { getImgProps } from \"./Image.utils\";\nimport ImageElement from \"./ImageElement\";\nimport ImagePreload from \"./ImagePreload\";\n\n// ─── 组件 ─────────────────────────────────────────────────────────────────────\n\n/**\n * <Image> 组件\n *\n * 与 Next.js Image 功能对等:\n * - 自动 srcSet 生成\n * - blur placeholder 支持\n * - fill 模式\n * - priority preload\n * - 开发环境警告\n */\nexport const Image: Component<ImageProps> = (props) => {\n const contextConfig = useImageConfig();\n\n // 合并并预计算配置(memoized via SolidJS 细粒度响应式)\n const config = resolveConfig(contextConfig);\n\n // ── 本地状态 ──────────────────────────────────────────────────────────────\n const [blurComplete, setBlurComplete] = createSignal(false);\n const [showAltText, setShowAltText] = createSignal(false);\n\n // ── 派生属性 ──────────────────────────────────────────────────────────────\n // getImgProps 将 ImageProps 转换为原生 img 可接受的属性集\n const result = createMemo(\n (): ImgPropsResult =>\n getImgProps(props, {\n imgConf: config,\n blurComplete: blurComplete(),\n showAltText: showAltText(),\n }),\n );\n\n const imgAttributes = () => result().props;\n const imgMeta = () => result().meta;\n\n return (\n <>\n <ImageElement\n {...imgAttributes()}\n unoptimized={imgMeta().unoptimized}\n placeholder={imgMeta().placeholder as PlaceholderValue}\n fill={imgMeta().fill}\n onLoad={props.onLoad}\n onLoadingComplete={props.onLoadingComplete}\n setBlurComplete={setBlurComplete}\n setShowAltText={setShowAltText}\n sizesInput={props.sizes}\n />\n\n <Show when={imgMeta().preload}>\n <ImagePreload imgAttributes={imgAttributes()} />\n </Show>\n </>\n );\n};\n"],"mappings":";;;;;;;AA8BA,IAAaY,KAAgCC,MAAU;CAIrD,IAAME,IAASX,EAHOC,GAAgB,CAGK,EAGrC,CAACW,GAAcC,KAAmBf,EAAa,GAAM,EACrD,CAACgB,GAAaC,KAAkBjB,EAAa,GAAM,EAInDkB,IAASnB,QAEXQ,EAAYI,GAAO;EACjBQ,SAASN;EACTC,cAAcA,GAAc;EAC5BE,aAAaA,GAAY;EAC1B,CACL,CAAC,EAEKI,UAAsBF,GAAQ,CAACP,OAC/BU,UAAgBH,GAAQ,CAACI;AAE/B,QAAA,CAAAC,EAEKf,GAAYgB,EACPJ,GAAa;EAAA,IACjBK,cAAW;AAAA,UAAEJ,GAAS,CAACI;;EAAW,IAClCC,cAAW;AAAA,UAAEL,GAAS,CAACK;;EAA+B,IACtDC,OAAI;AAAA,UAAEN,GAAS,CAACM;;EAAI,IACpBC,SAAM;AAAA,UAAEjB,EAAMiB;;EAAM,IACpBC,oBAAiB;AAAA,UAAElB,EAAMkB;;EACRd;EACDE;EAAc,IAC9Ba,aAAU;AAAA,UAAEnB,EAAMoB;;EAAK,CAAA,CAAA,EAAAR,EAGxBtB,GAAI;EAAA,IAAC+B,OAAI;AAAA,UAAEX,GAAS,CAACY;;EAAO,IAAAC,WAAA;AAAA,UAAAX,EAC1Bd,GAAY,EAAA,IAACW,gBAAa;AAAA,WAAEA,GAAe;MAAA,CAAA;;EAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Image.utils.js","names":[],"sources":["../../../src/components/image/Image.utils.ts"],"sourcesContent":["/**\n * handle-loading.ts\n * 单一职责:封装图片加载完成后的所有副作用——decode、回调触发、开发环境警告。\n * 纯 TypeScript,不包含任何 JSX 或组件代码。\n */\n\nimport { mergeProps, splitProps } from \"solid-js\";\nimport { warnOnce } from \"~/utils\";\nimport { imageConfigDefault } from \"./Image.config\";\nimport type {\n ImageConfig,\n ImageConfigComplete,\n ImageLoaderProps,\n ImageLoaderWithConfig,\n ImageProps,\n ImgProps,\n ImgPropsResult,\n LoadingValue,\n OnLoad,\n OnLoadingComplete,\n PlaceholderStyle,\n PlaceholderValue,\n StaticImageData,\n StaticImport,\n StaticRequire,\n} from \"./Image.types\";\n\n// ─── 类型补充 ─────────────────────────────────────────────────────────────────\n\n/** 用于追踪每个 img 节点已处理的 src,避免重复触发 */\ntype ImgWithDataProp = HTMLImageElement & { \"data-loaded-src\"?: string };\n\n// ─── 主函数 ───────────────────────────────────────────────────────────────────\n\n/**\n * 在图片加载/hydrate 后调用。\n * - 使用 img.decode() 确保像素已解码再触发回调\n * - 清除 blur placeholder\n * - 开发环境下输出 fill / sizes 相关警告\n */\nexport function handleLoading(\n img: ImgWithDataProp,\n placeholder: PlaceholderValue,\n onLoad: OnLoad | undefined,\n onLoadingComplete: OnLoadingComplete | undefined,\n setBlurComplete: (v: boolean) => void,\n unoptimized: boolean,\n sizesInput: string | undefined,\n): void {\n const src = img?.src;\n // 同一张图只处理一次\n if (!img || img[\"data-loaded-src\"] === src) return;\n img[\"data-loaded-src\"] = src;\n\n const p: Promise<void> = \"decode\" in img ? img.decode() : Promise.resolve();\n\n p.catch(() => {}).then(() => {\n // 若组件已卸载则提前退出\n if (!img.parentElement || !img.isConnected) return;\n\n if (placeholder !== \"empty\") {\n setBlurComplete(true);\n }\n\n if (onLoad) {\n const event = new Event(\"load\");\n Object.defineProperty(event, \"target\", { writable: false, value: img });\n onLoad(\n event as Event & { currentTarget: HTMLImageElement; target: Element },\n );\n }\n\n if (onLoadingComplete) {\n onLoadingComplete(img);\n }\n\n if (import.meta.env.DEV) {\n warnFillUsage(img, unoptimized, sizesInput);\n warnAspectRatioMismatch(img);\n }\n });\n}\n\n// ─── 开发警告辅助 ──────────────────────────────────────────────────────────────\n\nfunction warnFillUsage(\n img: HTMLImageElement,\n unoptimized: boolean,\n sizesInput: string | undefined,\n): void {\n if (img.getAttribute(\"data-nimg\") !== \"fill\") return;\n\n const origSrc =\n new URL(img.src, \"http://n\").searchParams.get(\"url\") || img.src;\n\n if (!unoptimized) {\n const widthViewportRatio =\n img.getBoundingClientRect().width / window.innerWidth;\n if (widthViewportRatio < 0.6) {\n if (sizesInput === \"100vw\") {\n console.warn(\n `[Image] src=\"${origSrc}\" 设置了 fill 和 sizes=\"100vw\",但实际渲染宽度不足视口宽度,请调整 sizes 以提升性能。`,\n );\n } else if (!sizesInput) {\n console.warn(\n `[Image] src=\"${origSrc}\" 设置了 fill 但缺少 sizes 属性,请添加以提升性能。`,\n );\n }\n }\n }\n\n if (img.parentElement) {\n const { position } = window.getComputedStyle(img.parentElement);\n const valid = [\"absolute\", \"fixed\", \"relative\"];\n if (!valid.includes(position)) {\n console.warn(\n `[Image] src=\"${origSrc}\" 设置了 fill,但父元素 position=\"${position}\",应为 ${valid.join(\" | \")} 之一。`,\n );\n }\n }\n\n if (img.height === 0) {\n console.warn(\n `[Image] src=\"${origSrc}\" 设置了 fill 且高度为 0,请为父元素设置明确高度。`,\n );\n }\n}\n\nfunction warnAspectRatioMismatch(img: HTMLImageElement): void {\n const heightModified = img.height.toString() !== img.getAttribute(\"height\");\n const widthModified = img.width.toString() !== img.getAttribute(\"width\");\n if (\n (heightModified && !widthModified) ||\n (!heightModified && widthModified)\n ) {\n const origSrc =\n new URL(img.src, \"http://n\").searchParams.get(\"url\") || img.src;\n console.warn(\n `[Image] src=\"${origSrc}\" 仅修改了 width 或 height 其中之一,请同时添加 width: \"auto\" 或 height: \"auto\" 样式以保持宽高比。`,\n );\n }\n}\n\ninterface GetImgPropsOptions {\n imgConf: ImageConfigComplete;\n blurComplete: boolean;\n showAltText: boolean;\n}\n\nexport const VALID_LOADING_VALUES = [\"lazy\", \"eager\", undefined] as const;\n// Object-fit values that are not valid background-size values\nconst INVALID_BACKGROUND_SIZE_VALUES = [\n \"-moz-initial\",\n \"fill\",\n \"none\",\n \"scale-down\",\n undefined,\n];\n\nlet perfObserver: PerformanceObserver | undefined;\nconst allImgs = new Map<\n string,\n { src: string; loading: LoadingValue; placeholder: PlaceholderValue }\n>();\n\nexport function getImgProps(\n props: ImageProps,\n { imgConf, blurComplete, showAltText }: GetImgPropsOptions,\n): ImgPropsResult {\n const merged = mergeProps(\n {\n // loader: defaultLoader,\n fill: false,\n priority: false,\n preload: false,\n placeholder: \"empty\",\n unoptimized: imgConf.unoptimized,\n decoding: \"async\",\n } as const,\n props,\n );\n const [local, others] = splitProps(merged, [\n \"src\",\n \"loader\",\n \"quality\",\n \"width\",\n \"height\",\n \"fill\",\n \"sizes\",\n \"priority\",\n \"placeholder\",\n \"blurDataURL\",\n \"unoptimized\",\n \"overrideSrc\",\n \"onLoad\",\n \"onLoadingComplete\",\n \"layout\",\n \"style\",\n \"preload\",\n \"loading\",\n \"objectFit\",\n \"objectPosition\",\n \"lazyBoundary\",\n \"lazyRoot\",\n \"fetchpriority\",\n \"class\",\n \"decoding\",\n ]);\n\n let config: ImageConfig;\n const c = imgConf || imageConfigDefault;\n\n if (\"allSizes\" in c) {\n config = c as ImageConfig;\n } else {\n const allSizes = [...c.deviceSizes, ...c.imageSizes].sort((a, b) => a - b);\n const deviceSizes = c.deviceSizes.sort((a, b) => a - b);\n const qualities = c.qualities?.sort((a, b) => a - b);\n config = { ...c, allSizes, deviceSizes, qualities };\n }\n\n if (typeof defaultLoader === \"undefined\") {\n throw new Error(\n \"images.loaderFile detected but the file is missing default export.\\nRead more: https://nextjs.org/docs/messages/invalid-images-config\",\n );\n }\n\n let style = local.style;\n let sizes = local.sizes;\n let fill = local.fill;\n\n const loader: ImageLoaderWithConfig = local.loader || defaultLoader;\n\n if (local.layout) {\n if (local.layout === \"fill\") {\n fill = true;\n }\n const layoutToStyle: Record<string, Record<string, string> | undefined> = {\n intrinsic: { maxWidth: \"100%\", height: \"auto\" },\n responsive: { width: \"100%\", height: \"auto\" },\n };\n const layoutToSizes: Record<string, string | undefined> = {\n responsive: \"100vw\",\n fill: \"100vw\",\n };\n const layoutStyle = layoutToStyle[local.layout];\n if (layoutStyle) {\n style = { ...style, ...layoutStyle };\n }\n const layoutSizes = layoutToSizes[local.layout];\n if (layoutSizes && !sizes) {\n sizes = layoutSizes;\n }\n }\n\n let staticSrc = \"\";\n let blurDataURL = local.blurDataURL;\n let widthInt = getInt(local.width);\n let heightInt = getInt(local.height);\n let blurWidth: number | undefined;\n let blurHeight: number | undefined;\n\n if (isStaticImport(local.src)) {\n const staticImageData = isStaticRequire(local.src)\n ? local.src.default\n : local.src;\n\n if (!staticImageData.src) {\n throw new Error(\n `An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(\n staticImageData,\n )}`,\n );\n }\n if (!staticImageData.height || !staticImageData.width) {\n throw new Error(\n `An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(\n staticImageData,\n )}`,\n );\n }\n\n blurWidth = staticImageData.blurWidth;\n blurHeight = staticImageData.blurHeight;\n blurDataURL = blurDataURL || staticImageData.blurDataURL;\n staticSrc = staticImageData.src;\n\n if (!fill) {\n if (!widthInt && !heightInt) {\n widthInt = staticImageData.width;\n heightInt = staticImageData.height;\n } else if (widthInt && !heightInt) {\n const ratio = widthInt / staticImageData.width;\n heightInt = Math.round(staticImageData.height * ratio);\n } else if (!widthInt && heightInt) {\n const ratio = heightInt / staticImageData.height;\n widthInt = Math.round(staticImageData.width * ratio);\n }\n }\n }\n const src = typeof local.src === \"string\" ? local.src : staticSrc;\n\n let unoptimized = local.unoptimized;\n let isLazy =\n !local.priority &&\n !local.preload &&\n (local.loading === \"lazy\" || typeof local.loading === \"undefined\");\n if (!src || src.startsWith(\"data:\") || src.startsWith(\"blob:\")) {\n // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n unoptimized = true;\n isLazy = false;\n }\n if (config.unoptimized) {\n unoptimized = true;\n }\n if (!config.dangerouslyAllowSVG && src.split(\"?\", 1)[0].endsWith(\".svg\")) {\n // Special case to make svg serve as-is to avoid proxying\n // through the built-in Image Optimization API.\n unoptimized = true;\n }\n\n const qualityInt = getInt(local.quality);\n\n if (!import.meta.env.PROD) {\n if (config.output === \"export\" && !unoptimized) {\n throw new Error(\n `Image Optimization using the default loader is not compatible with \\`{ output: 'export' }\\`.\n Possible solutions:\n - Remove \\`{ output: 'export' }\\` and run \"next start\" to run server mode including the Image Optimization API.\n - Configure \\`{ images: { unoptimized: true } }\\` in \\`next.config.js\\` to disable the Image Optimization API.\n Read more: https://nextjs.org/docs/messages/export-image-api`,\n );\n }\n if (!src) {\n // React doesn't show the stack trace and there's\n // no `src` to help identify which image, so we\n // instead console.error(ref) during mount.\n unoptimized = true;\n } else {\n if (fill) {\n if (local.width) {\n throw new Error(\n `Image with src \"${src}\" has both \"width\" and \"fill\" properties. Only one should be used.`,\n );\n }\n if (local.height) {\n throw new Error(\n `Image with src \"${src}\" has both \"height\" and \"fill\" properties. Only one should be used.`,\n );\n }\n if (style?.position && style.position !== \"absolute\") {\n throw new Error(\n `Image with src \"${src}\" has both \"fill\" and \"style.position\" properties. Images with \"fill\" always use position absolute - it cannot be modified.`,\n );\n }\n if (style?.width && style.width !== \"100%\") {\n throw new Error(\n `Image with src \"${src}\" has both \"fill\" and \"style.width\" properties. Images with \"fill\" always use width 100% - it cannot be modified.`,\n );\n }\n if (style?.height && style.height !== \"100%\") {\n throw new Error(\n `Image with src \"${src}\" has both \"fill\" and \"style.height\" properties. Images with \"fill\" always use height 100% - it cannot be modified.`,\n );\n }\n } else {\n if (typeof widthInt === \"undefined\") {\n throw new Error(\n `Image with src \"${src}\" is missing required \"width\" property.`,\n );\n } else if (Number.isNaN(widthInt)) {\n throw new Error(\n `Image with src \"${src}\" has invalid \"width\" property. Expected a numeric value in pixels but received \"${local.width}\".`,\n );\n }\n if (typeof heightInt === \"undefined\") {\n throw new Error(\n `Image with src \"${src}\" is missing required \"height\" property.`,\n );\n } else if (Number.isNaN(heightInt)) {\n throw new Error(\n `Image with src \"${src}\" has invalid \"height\" property. Expected a numeric value in pixels but received \"${local.height}\".`,\n );\n }\n\n // biome-ignore lint/suspicious/noControlCharactersInRegex: no-control-regex\n if (/^[\\x00-\\x20]/.test(src)) {\n throw new Error(\n `Image with src \"${src}\" cannot start with a space or control character. Use src.trimStart() to remove it or encodeURIComponent(src) to keep it.`,\n );\n }\n // biome-ignore lint/suspicious/noControlCharactersInRegex: no-control-regex\n if (/[\\x00-\\x20]$/.test(src)) {\n throw new Error(\n `Image with src \"${src}\" cannot end with a space or control character. Use src.trimEnd() to remove it or encodeURIComponent(src) to keep it.`,\n );\n }\n }\n }\n if (!VALID_LOADING_VALUES.includes(local.loading)) {\n throw new Error(\n `Image with src \"${src}\" has invalid \"loading\" property. Provided \"${local.loading}\" should be one of ${VALID_LOADING_VALUES.map(\n String,\n ).join(\",\")}.`,\n );\n }\n if (local.priority && local.loading === \"lazy\") {\n throw new Error(\n `Image with src \"${src}\" has both \"priority\" and \"loading='lazy'\" properties. Only one should be used.`,\n );\n }\n if (local.preload && local.loading === \"lazy\") {\n throw new Error(\n `Image with src \"${src}\" has both \"preload\" and \"loading='lazy'\" properties. Only one should be used.`,\n );\n }\n if (local.preload && local.priority) {\n throw new Error(\n `Image with src \"${src}\" has both \"preload\" and \"priority\" properties. Only \"preload\" should be used.`,\n );\n }\n if (\n local.placeholder !== \"empty\" &&\n local.placeholder !== \"blur\" &&\n !local.placeholder.startsWith(\"data:image/\")\n ) {\n throw new Error(\n `Image with src \"${src}\" has invalid \"placeholder\" property \"${local.placeholder}\".`,\n );\n }\n if (local.placeholder !== \"empty\") {\n if (widthInt && heightInt && widthInt * heightInt < 1600) {\n warnOnce(\n `Image with src \"${src}\" is smaller than 40x40. Consider removing the \"placeholder\" property to improve performance.`,\n );\n }\n }\n if (\n qualityInt &&\n config.qualities &&\n !config.qualities.includes(qualityInt)\n ) {\n warnOnce(\n `Image with src \"${src}\" is using quality \"${qualityInt}\" which is not configured in images.qualities [${config.qualities.join(\", \")}]. Please update your config to [${[...config.qualities, qualityInt].sort().join(\", \")}].` +\n `\\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-qualities`,\n );\n }\n if (local.placeholder === \"blur\" && !blurDataURL) {\n const VALID_BLUR_EXT = [\"jpeg\", \"png\", \"webp\", \"avif\"]; // should match next-image-loader\n\n throw new Error(\n `Image with src \"${src}\" has \"placeholder='blur'\" property but is missing the \"blurDataURL\" property.\n Possible solutions:\n - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\n - Change the \"src\" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(\n \",\",\n )} (animated images not supported)\n - Remove the \"placeholder\" property, effectively no blur effect\n Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`,\n );\n }\n if (\"ref\" in others) {\n warnOnce(\n `Image with src \"${src}\" is using unsupported \"ref\" property. Consider using the \"onLoad\" property instead.`,\n );\n }\n\n if (!unoptimized) {\n const urlStr = loader({\n config,\n src,\n width: widthInt || 400,\n quality: qualityInt || 75,\n });\n let url: URL | undefined;\n try {\n url = new URL(urlStr);\n } catch (err) {\n console.error(err);\n }\n if (urlStr === src || (url && url.pathname === src && !url.search)) {\n warnOnce(\n `Image with src \"${src}\" has a \"loader\" property that does not implement width. Please implement it or use the \"unoptimized\" property instead.` +\n `\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader-width`,\n );\n }\n }\n\n if (local.onLoadingComplete) {\n warnOnce(\n `Image with src \"${src}\" is using deprecated \"onLoadingComplete\" property. Please use the \"onLoad\" property instead.`,\n );\n }\n\n for (const [legacyKey, legacyValue] of Object.entries({\n layout: local.layout,\n objectFit: local.objectFit,\n objectPosition: local.objectPosition,\n lazyBoundary: local.lazyBoundary,\n lazyRoot: local.lazyRoot,\n })) {\n if (legacyValue) {\n warnOnce(\n `Image with src \"${src}\" has legacy prop \"${legacyKey}\". Did you forget to run the codemod?` +\n `\\nRead more: https://nextjs.org/docs/messages/next-image-upgrade-to-13`,\n );\n }\n }\n\n if (\n typeof window !== \"undefined\" &&\n !perfObserver &&\n window.PerformanceObserver\n ) {\n perfObserver = new PerformanceObserver((entryList) => {\n for (const entry of entryList.getEntries()) {\n // @ts-expect-error - missing \"LargestContentfulPaint\" class with \"element\" prop\n const imgSrc = entry?.element?.src || \"\";\n const lcpImage = allImgs.get(imgSrc);\n if (\n lcpImage &&\n lcpImage.loading === \"lazy\" &&\n lcpImage.placeholder === \"empty\" &&\n !lcpImage.src.startsWith(\"data:\") &&\n !lcpImage.src.startsWith(\"blob:\")\n ) {\n // https://web.dev/lcp/#measure-lcp-in-javascript\n warnOnce(\n `Image with src \"${lcpImage.src}\" was detected as the Largest Contentful Paint (LCP). Please add the \\`loading=\"eager\"\\` property if this image is above the fold.` +\n `\\nRead more: https://nextjs.org/docs/app/api-reference/components/image#loading`,\n );\n }\n }\n });\n try {\n perfObserver.observe({\n type: \"largest-contentful-paint\",\n buffered: true,\n });\n } catch (err) {\n // Log error but don't crash the app\n console.error(err);\n }\n }\n }\n\n const imgStyle = Object.assign(\n fill\n ? {\n position: \"absolute\",\n height: \"100%\",\n width: \"100%\",\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n objectFit: local.objectFit,\n objectPosition: local.objectPosition,\n }\n : {},\n showAltText ? {} : { color: \"transparent\" },\n style,\n );\n\n const backgroundImage =\n !blurComplete && local.placeholder !== \"empty\"\n ? local.placeholder === \"blur\"\n ? `url(\"data:image/svg+xml;charset=utf-8,${getImageBlurSvg({\n widthInt,\n heightInt,\n blurWidth,\n blurHeight,\n blurDataURL: blurDataURL || \"\", // assume not undefined\n objectFit: imgStyle.objectFit,\n })}\")`\n : `url(\"${local.placeholder}\")` // assume `data:image/`\n : null;\n\n const backgroundSize = !INVALID_BACKGROUND_SIZE_VALUES.includes(\n imgStyle.objectFit,\n )\n ? imgStyle.objectFit\n : imgStyle.objectFit === \"fill\"\n ? \"100% 100%\" // the background-size equivalent of `fill`\n : \"cover\";\n\n const placeholderStyle: PlaceholderStyle = backgroundImage\n ? {\n \"background-size\": backgroundSize,\n \"background-position\": imgStyle.objectPosition || \"50% 50%\",\n \"background-repeat\": \"no-repeat\",\n \"background-image\": backgroundImage,\n }\n : {};\n\n if (import.meta.env.DEV) {\n if (\n placeholderStyle[\"background-image\"] &&\n local.placeholder === \"blur\" &&\n blurDataURL?.startsWith(\"/\")\n ) {\n // During `next dev`, we don't want to generate blur placeholders with webpack\n // because it can delay starting the dev server. Instead, `next-image-loader.js`\n // will inline a special url to lazily generate the blur placeholder at request time.\n placeholderStyle[\"background-image\"] = `url(\"${blurDataURL}\")`;\n }\n }\n\n const imgAttributes = generateImgAttrs({\n config,\n src,\n unoptimized,\n width: widthInt,\n quality: qualityInt,\n sizes,\n loader,\n });\n\n const loadingFinal = isLazy ? \"lazy\" : local.loading;\n\n if (!import.meta.env.PROD) {\n if (typeof window !== \"undefined\") {\n let fullUrl: URL;\n try {\n fullUrl = new URL(imgAttributes.src);\n } catch (e) {\n console.error(e);\n fullUrl = new URL(imgAttributes.src, window.location.href);\n }\n allImgs.set(fullUrl.href, {\n src,\n loading: loadingFinal,\n placeholder: local.placeholder,\n });\n }\n }\n\n const newProps: ImgProps = {\n ...others,\n loading: loadingFinal,\n fetchpriority: local.fetchpriority,\n width: widthInt,\n height: heightInt,\n decoding: local.decoding,\n class: local.class,\n style: { ...imgStyle, ...placeholderStyle },\n sizes: imgAttributes.sizes,\n srcSet: imgAttributes.srcSet,\n src: local.overrideSrc || imgAttributes.src,\n };\n const meta = {\n unoptimized,\n preload: local.preload || local.priority,\n placeholder: local.placeholder,\n fill,\n };\n return { props: newProps, meta };\n}\n\nfunction defaultLoader({ src, width, quality }: ImageLoaderProps): string {\n if (import.meta.env.DEV) {\n const missingValues: string[] = [];\n if (!src) missingValues.push(\"src\");\n if (!width) missingValues.push(\"width\");\n if (missingValues.length > 0) {\n throw new Error(\n `[defaultLoader] 缺少必要属性:${missingValues.join(\", \")}。` +\n `请确认调用方式正确,或提供自定义 loader。`,\n );\n }\n }\n\n // 如果 src 本身已是带参数的 URL(外部图片),直接返回\n if (src.startsWith(\"http://\") || src.startsWith(\"https://\")) {\n return src;\n }\n\n // 本地图片:追加 w / q 参数(供自定义服务器处理)\n const params = new URLSearchParams();\n params.set(\"url\", src);\n params.set(\"w\", String(width));\n if (quality) params.set(\"q\", String(quality));\n return `/_image?${params.toString()}`;\n}\n\nfunction getInt(x: unknown): number | undefined {\n if (typeof x === \"undefined\") {\n return x;\n }\n if (typeof x === \"number\") {\n return Number.isFinite(x) ? x : NaN;\n }\n if (typeof x === \"string\" && /^[0-9]+$/.test(x)) {\n return parseInt(x, 10);\n }\n return NaN;\n}\n\nfunction isStaticRequire(\n src: StaticRequire | StaticImageData,\n): src is StaticRequire {\n return (src as StaticRequire).default !== undefined;\n}\n\nfunction isStaticImageData(\n src: StaticRequire | StaticImageData,\n): src is StaticImageData {\n return (src as StaticImageData).src !== undefined;\n}\n\nfunction isStaticImport(src: string | StaticImport): src is StaticImport {\n return (\n !!src &&\n typeof src === \"object\" &&\n (isStaticRequire(src as StaticImport) ||\n isStaticImageData(src as StaticImport))\n );\n}\n\nfunction getImageBlurSvg({\n widthInt,\n heightInt,\n blurWidth,\n blurHeight,\n blurDataURL,\n objectFit,\n}: {\n widthInt?: number;\n heightInt?: number;\n blurWidth?: number;\n blurHeight?: number;\n blurDataURL: string;\n objectFit?: string;\n}): string {\n const std = 20;\n const svgWidth = blurWidth ? blurWidth * 40 : widthInt;\n const svgHeight = blurHeight ? blurHeight * 40 : heightInt;\n\n const viewBox =\n svgWidth && svgHeight ? `viewBox='0 0 ${svgWidth} ${svgHeight}'` : \"\";\n const preserveAspectRatio = viewBox\n ? \"none\"\n : objectFit === \"contain\"\n ? \"xMidYMid\"\n : objectFit === \"cover\"\n ? \"xMidYMid slice\"\n : \"none\";\n\n return `%3Csvg xmlns='http://www.w3.org/2000/svg' ${viewBox}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='${std}'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='${std}'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${preserveAspectRatio}' style='filter: url(%23b);' href='${blurDataURL}'/%3E%3C/svg%3E`;\n}\n\ntype GenImgAttrsData = {\n config: ImageConfig;\n src: string;\n unoptimized: boolean;\n loader: ImageLoaderWithConfig;\n width?: number;\n quality?: number;\n sizes?: string;\n};\n\ntype GenImgAttrsResult = {\n src: string;\n srcSet: string | undefined;\n sizes: string | undefined;\n};\n\nfunction generateImgAttrs({\n config,\n src,\n unoptimized,\n width,\n quality,\n sizes,\n loader,\n}: GenImgAttrsData): GenImgAttrsResult {\n if (unoptimized) {\n return { src, srcSet: undefined, sizes: undefined };\n }\n\n const { widths, kind } = getWidths(config, width, sizes);\n const last = widths.length - 1;\n\n return {\n sizes: !sizes && kind === \"w\" ? \"100vw\" : sizes,\n srcSet: widths\n .map(\n (w, i) =>\n `${loader({ config, src, quality, width: w })} ${\n kind === \"w\" ? w : i + 1\n }${kind}`,\n )\n .join(\", \"),\n\n // It's intended to keep `src` the last attribute because React updates\n // attributes in order. If we keep `src` the first one, Safari will\n // immediately start to fetch `src`, before `sizes` and `srcSet` are even\n // updated by React. That causes multiple unnecessary requests if `srcSet`\n // and `sizes` are defined.\n // This bug cannot be reproduced in Chrome or Firefox.\n src: loader({ config, src, quality, width: widths[last] }),\n };\n}\n\nfunction getWidths(\n { deviceSizes, allSizes }: ImageConfig,\n width: number | undefined,\n sizes: string | undefined,\n): { widths: number[]; kind: \"w\" | \"x\" } {\n if (sizes) {\n // Find all the \"vw\" percent sizes used in the sizes prop\n const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g;\n const percentSizes = [];\n for (\n let match: RegExpExecArray | null;\n // biome-ignore lint/suspicious/noAssignInExpressions: nextjs code\n (match = viewportWidthRe.exec(sizes));\n match\n ) {\n percentSizes.push(Number.parseInt(match[2], 10));\n }\n if (percentSizes.length) {\n const smallestRatio = Math.min(...percentSizes) * 0.01;\n return {\n widths: allSizes.filter((s) => s >= deviceSizes[0] * smallestRatio),\n kind: \"w\",\n };\n }\n return { widths: allSizes, kind: \"w\" };\n }\n if (typeof width !== \"number\") {\n return { widths: deviceSizes, kind: \"w\" };\n }\n\n const widths = [\n ...new Set(\n // > This means that most OLED screens that say they are 3x resolution,\n // > are actually 3x in the green color, but only 1.5x in the red and\n // > blue colors. Showing a 3x resolution image in the app vs a 2x\n // > resolution image will be visually the same, though the 3x image\n // > takes significantly more data. Even true 3x resolution screens are\n // > wasteful as the human eye cannot see that level of detail without\n // > something like a magnifying glass.\n // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n [width, width * 2 /*, width * 3*/].map(\n (w) => allSizes.find((p) => p >= w) || allSizes[allSizes.length - 1],\n ),\n ),\n ];\n return { widths, kind: \"x\" };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageElement.js","names":["Component","mergeProps","splitProps","ImgProps","OnLoad","OnLoadingComplete","PlaceholderValue","handleLoading","ImageElementProps","unoptimized","placeholder","setBlurComplete","v","setShowAltText","sizesInput","onLoad","onLoadingComplete","ref","el","HTMLImageElement","ImageElement","rawProps","props","decoding","const","internal","imgAttrs","handleRef","img","onError","src","import","meta","env","PROD","console","error","getAttribute","alt","undefined","complete","_el$","_tmpl$","_ref$","_$use","_$spread","_$mergeProps","loading","width","height","data-nimg","fill","class","style","sizes","srcset","srcSet","e","currentTarget"],"sources":["../../../src/components/image/ImageElement.tsx"],"sourcesContent":["/**\n * ImageElement.tsx\n * 单一职责:仅负责渲染原生 <img> 元素,并将 ref 回调、onLoad、onError 事件桥接到\n * 上层传入的副作用函数。不包含配置解析、preload 或 blur placeholder 逻辑。\n */\n\nimport { type Component, mergeProps, splitProps } from \"solid-js\";\nimport type {\n ImgProps,\n OnLoad,\n OnLoadingComplete,\n PlaceholderValue,\n} from \"./Image.types\";\nimport { handleLoading } from \"./Image.utils\";\n\n// ─── 额外内部 Props ────────────────────────────────────────────────────────────\n\nexport interface ImageElementProps extends ImgProps {\n unoptimized: boolean;\n placeholder: PlaceholderValue;\n /** 上层通过 signal setter 传入,避免在此组件内管理状态 */\n setBlurComplete: (v: boolean) => void;\n setShowAltText: (v: boolean) => void;\n sizesInput: string | undefined;\n onLoad?: OnLoad;\n onLoadingComplete?: OnLoadingComplete;\n // onError?: (e: Event) => void;\n /** 透传给原生 img 的 ref */\n ref?: (el: HTMLImageElement) => void;\n}\n\n// ─── 组件 ─────────────────────────────────────────────────────────────────────\n\nconst ImageElement: Component<ImageElementProps> = (rawProps) => {\n const props = mergeProps({ decoding: \"async\" as const }, rawProps);\n\n // 分离内部 props 与透传给 <img> 的 props\n const [internal, imgAttrs] = splitProps(props, [\n \"src\",\n \"srcSet\",\n \"sizes\",\n \"height\",\n \"width\",\n \"decoding\",\n \"class\",\n \"classList\",\n \"style\",\n \"fetchpriority\",\n \"placeholder\",\n \"loading\",\n \"unoptimized\",\n \"fill\",\n \"setBlurComplete\",\n \"setShowAltText\",\n \"sizesInput\",\n \"onLoad\",\n \"onError\",\n \"onLoadingComplete\",\n \"ref\",\n \"alt\",\n ]);\n\n /**\n * ref 回调:在元素挂载后立即处理\"图片在 hydrate 前已加载完成\"的情况,\n * 并将 ref 透传给调用方(如需要访问 img 节点)。\n */\n function handleRef(img: HTMLImageElement) {\n if (!img) return;\n\n // 让 Safari 重新触发 onerror(如果图片在 hydrate 前就已失败)\n if (internal.onError) {\n // biome-ignore lint/correctness/noSelfAssign: If the image has an error before react hydrates, then the error is lost. The workaround is to wait until the image is mounted which is after hydration, then we set the src again to trigger the error handler (if there was an error).\n img.src = img.src;\n }\n\n if (!import.meta.env.PROD) {\n if (!internal.src) {\n console.error('[Image] 缺少必填属性 \"src\"', img);\n }\n if (img.getAttribute(\"alt\") === null && internal.alt === undefined) {\n console.error('[Image] 缺少必填属性 \"alt\"...');\n }\n }\n\n // 图片在组件挂载前已完成加载(cached 场景)\n if (img.complete) {\n handleLoading(\n img,\n internal.placeholder,\n internal.onLoad,\n internal.onLoadingComplete,\n internal.setBlurComplete,\n internal.unoptimized,\n internal.sizesInput,\n );\n }\n\n // 透传 ref\n internal.ref?.(img);\n }\n\n return (\n // 注意属性顺序:\n // 1. loading 在 src 之前,修复 Safari/Firefox 懒加载时机问题\n // 2. sizes / srcSet 在 src 之前,避免 Safari 提前请求错误尺寸\n // 3. src 最后设置\n <img\n {...imgAttrs}\n // React 19 使用 camelCase fetchPriority;SolidJS 直接透传 JSX 属性即可\n alt={internal.alt}\n loading={internal.loading}\n width={internal.width}\n height={internal.height}\n decoding={internal.decoding}\n data-nimg={internal.fill ? \"fill\" : \"1\"}\n class={internal.class}\n style={internal.style}\n sizes={internal.sizes}\n srcset={internal.srcSet}\n src={internal.src}\n ref={handleRef}\n onLoad={(e) => {\n const img = e.currentTarget as HTMLImageElement;\n handleLoading(\n img,\n internal.placeholder,\n internal.onLoad,\n internal.onLoadingComplete,\n internal.setBlurComplete,\n internal.unoptimized,\n internal.sizesInput,\n );\n }}\n onError={(e) => {\n // 图片加载失败时显示 alt 文本\n internal.setShowAltText(true);\n if (internal.placeholder !== \"empty\") {\n // 即使真实图片失败,也要移除 blur placeholder\n internal.setBlurComplete(true);\n }\n\n if (!internal.onError) return;\n\n if (typeof internal.onError !== \"function\") return;\n\n internal.onError(e);\n }}\n />\n );\n};\n\nexport default ImageElement;\n"],"mappings":";;;;gDAiCMoB,KAA8CC,MAAa;CAI/D,IAAM,CAACI,GAAUC,KAAYxB,EAHfD,EAAW,EAAEsB,UAAU,SAAkB,EAAEF,EAAS,EAGnB;EAC7C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAMF,SAASM,EAAUC,GAAuB;AACnCA,QAGDH,EAASI,YAEXD,EAAIE,MAAMF,EAAIE,MAaZF,EAAIY,YACNjC,EACEqB,GACAH,EAASf,aACTe,EAASV,QACTU,EAAST,mBACTS,EAASd,iBACTc,EAAShB,aACTgB,EAASX,WACV,EAIHW,EAASR,MAAMW,EAAI;;AAGrB,eAIE;EAAA,IAAAa,IAAAC,GAAA,EAAAC,IAeOhB;AA0BJ,SA1Ba,OAAAgB,KAAA,aAAAC,EAAAD,GAAAF,EAAA,GAATd,IAASc,GAAAI,EAAAJ,GAAAK,EAbVpB,GAAQ;GAAA,IAEZY,MAAG;AAAA,WAAEb,EAASa;;GAAG,IACjBS,UAAO;AAAA,WAAEtB,EAASsB;;GAAO,IACzBC,QAAK;AAAA,WAAEvB,EAASuB;;GAAK,IACrBC,SAAM;AAAA,WAAExB,EAASwB;;GAAM,IACvB1B,WAAQ;AAAA,WAAEE,EAASF;;GAAQ,IAAA,cAAA;AAAA,WAChBE,EAAS0B,OAAO,SAAS;;GAAG,IAAA,QAAA;AAAA,WAChC1B,EAAS2B;;GAAK,IACrBC,QAAK;AAAA,WAAE5B,EAAS4B;;GAAK,IACrBC,QAAK;AAAA,WAAE7B,EAAS6B;;GAAK,IACrBC,SAAM;AAAA,WAAE9B,EAAS+B;;GAAM,IACvB1B,MAAG;AAAA,WAAEL,EAASK;;GAAG,SAER2B,MAAM;IACb,IAAM7B,IAAM6B,EAAEC;AACdnD,MACEqB,GACAH,EAASf,aACTe,EAASV,QACTU,EAAST,mBACTS,EAASd,iBACTc,EAAShB,aACTgB,EAASX,WACV;;GACF,UACS2C,MAAM;AAEdhC,MAASZ,eAAe,GAAK,EACzBY,EAASf,gBAAgB,WAE3Be,EAASd,gBAAgB,GAAK,EAG3Bc,EAASI,WAEV,OAAOJ,EAASI,WAAY,cAEhCJ,EAASI,QAAQ4B,EAAE;;GACpB,CAAA,EAAA,IAAA,GAAA,EAAAhB;KAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImagePreload.js","names":["Component","Portal","ImgProps","ImagePreloadProps","imgAttributes","Pick","ImagePreload","props","a","linkKey","src","srcSet","sizes","document","head","querySelector","_$createComponent","mount","children","_el$","_tmpl$","_$setAttribute","_$effect","_p$","_v$","undefined","_v$2","_v$3","_v$4","crossOrigin","_v$5","referrerPolicy","_v$6","fetchpriority","e","t","o","i","n"],"sources":["../../../src/components/image/ImagePreload.tsx"],"sourcesContent":["/**\n * ImagePreload.tsx\n * 单一职责:仅负责向 <head> 注入 <link rel=\"preload\"> 标签,\n * 以提升 LCP 图片的加载优先级。不包含任何 <img> 渲染逻辑。\n */\n\nimport type { Component } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport type { ImgProps } from \"./Image.types\";\n\n// ─── Props ────────────────────────────────────────────────────────────────────\n\nexport interface ImagePreloadProps {\n imgAttributes: Pick<\n ImgProps,\n | \"src\"\n | \"srcSet\"\n | \"sizes\"\n | \"crossOrigin\"\n | \"referrerPolicy\"\n | \"fetchpriority\"\n >;\n}\n\n// ─── 组件 ─────────────────────────────────────────────────────────────────────\n\n/**\n * 通过 SolidJS <Portal> 将 <link> 插入 document.head。\n *\n * 注意:\n * - 故意省略 href(当 imagesrcset 存在时),以避免不支持 srcset 的浏览器\n * 加载错误尺寸的图片。详见 HTML spec §attr-link-imagesrcset。\n * - SolidJS SSR 环境可将此组件替换为 server-side head injection。\n */\nconst ImagePreload: Component<ImagePreloadProps> = (props) => {\n const { imgAttributes: a } = props;\n\n // 唯一 key 避免重复插入相同的 preload\n const linkKey = `__img-preload-${a.src}-${a.srcSet ?? \"\"}-${a.sizes ?? \"\"}`;\n\n // 若已存在相同 key 的 link,则跳过(SSR hydrate 场景)\n if (typeof document !== \"undefined\") {\n if (document.head.querySelector(`link[data-img-key=\"${linkKey}\"]`)) {\n return null;\n }\n }\n\n return (\n <Portal mount={document.head}>\n <link\n rel=\"preload\"\n as=\"image\"\n data-img-key={linkKey}\n // 当存在 srcset 时不设置 href,遵从 spec\n href={a.srcSet ? undefined : a.src}\n imagesrcset={a.srcSet}\n imagesizes={a.sizes}\n crossorigin={a.crossOrigin}\n referrerpolicy={a.referrerPolicy}\n fetchpriority={a.fetchpriority}\n />\n </Portal>\n );\n};\n\nexport default ImagePreload;\n"],"mappings":";;0DAkCMM,KAA8CC,MAAU;CAC5D,IAAM,EAAEH,eAAeI,MAAMD,GAGvBE,IAAU,iBAAiBD,EAAEE,IAAG,GAAIF,EAAEG,UAAU,GAAE,GAAIH,EAAEI,SAAS;AASvE,QANI,OAAOC,WAAa,OAClBA,SAASC,KAAKC,cAAc,sBAAsBN,EAAO,IAAK,GACzD,OAIXO,EACGf,GAAM;EAAA,IAACgB,QAAK;AAAA,UAAEJ,SAASC;;EAAI,IAAAI,WAAA;GAAA,IAAAC,IAAAC,GAAA;AAWM,UAXNC,EAAAF,GAAA,gBAIVV,EAAO,EAAAa,GAAAC,MAAA;IAAA,IAAAC,IAEfhB,EAAEG,SAASc,KAAAA,IAAYjB,EAAEE,KAAGgB,IACrBlB,EAAEG,QAAMgB,IACTnB,EAAEI,OAAKgB,IACNpB,EAAEqB,aAAWC,IACVtB,EAAEuB,gBAAcC,IACjBxB,EAAEyB;AAAa,WAAAT,MAAAD,EAAAW,KAAAb,EAAAF,GAAA,QAAAI,EAAAW,IAAAV,EAAA,EAAAE,MAAAH,EAAAY,KAAAd,EAAAF,GAAA,eAAAI,EAAAY,IAAAT,EAAA,EAAAC,MAAAJ,EAAAf,KAAAa,EAAAF,GAAA,cAAAI,EAAAf,IAAAmB,EAAA,EAAAC,MAAAL,EAAAa,KAAAf,EAAAF,GAAA,eAAAI,EAAAa,IAAAR,EAAA,EAAAE,MAAAP,EAAAc,KAAAhB,EAAAF,GAAA,kBAAAI,EAAAc,IAAAP,EAAA,EAAAE,MAAAT,EAAAe,KAAAjB,EAAAF,GAAA,iBAAAI,EAAAe,IAAAN,EAAA,EAAAT;MAAA;IAAAW,GAAAT,KAAAA;IAAAU,GAAAV,KAAAA;IAAAjB,GAAAiB,KAAAA;IAAAW,GAAAX,KAAAA;IAAAY,GAAAZ,KAAAA;IAAAa,GAAAb,KAAAA;IAAA,CAAA,EAAAN;;EAAA,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../
|
|
1
|
+
import { clsx as e } from "../../utils/clsx.js";
|
|
2
2
|
import { delegateEvents as t, mergeProps as n, spread as r, template as i } from "solid-js/web";
|
|
3
3
|
import { createUniqueId as a, mergeProps as o, splitProps as s } from "solid-js";
|
|
4
4
|
//#region src/components/input/Input.tsx
|
|
@@ -29,3 +29,5 @@ var c = /* @__PURE__ */ i("<input data-slot=input>"), l = (t) => {
|
|
|
29
29
|
t(["input"]);
|
|
30
30
|
//#endregion
|
|
31
31
|
export { l as Input };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=Input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Input.js","names":["createUniqueId","JSX","mergeProps","splitProps","InputProps","clsx","Input","props","merged","id","type","const","local","others","handleInput","IntrinsicElements","e","value","target","Number","onInput","handleChange","onChange","_el$","_tmpl$","addEventListener","$$input","_$spread","_$mergeProps","class","_$delegateEvents"],"sources":["../../../src/components/input/Input.tsx"],"sourcesContent":["import { createUniqueId, type JSX, mergeProps, splitProps } from \"solid-js\";\nimport type { InputProps } from \"./Input.types\";\nimport { clsx } from \"~/utils\";\n\nexport const Input = (props: InputProps) => {\n const merged = mergeProps(\n { id: createUniqueId(), type: \"text\" } as const,\n props,\n );\n\n const [local, others] = splitProps(merged, [\n \"type\",\n \"onInput\",\n \"onChange\",\n \"class\",\n \"classList\",\n ]);\n\n const handleInput: JSX.IntrinsicElements[\"input\"][\"onInput\"] = (e) => {\n let value: string | number = e.target.value;\n if (local.type === \"number\") {\n value = Number(e.target.value);\n }\n // @ts-expect-error\n local.onInput?.(value);\n };\n\n const handleChange: JSX.IntrinsicElements[\"input\"][\"onChange\"] = (e) => {\n let value: string | number = e.target.value;\n if (local.type === \"number\") {\n value = Number(e.target.value);\n }\n // @ts-expect-error\n local.onChange?.(value);\n };\n\n return (\n <input\n data-slot=\"input\"\n class={clsx(\n \"h-8 w-full min-w-0 rounded-lg border border-neutral-200 dark:border-white/15 bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-neutral-950 dark:file:text-neutral-50 placeholder:text-neutral-500 dark:placeholder:text-neutral-400 focus-visible:border-neutral-400 dark:focus-visible:border-neutral-500 focus-visible:ring-3 focus-visible:ring-neutral-400/50 dark:focus-visible:ring-neutral-500/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:select-none disabled:bg-neutral-200/50 disabled:opacity-50 aria-invalid:border-red-600 aria-invalid:ring-3 aria-invalid:ring-red-600/20 md:text-sm dark:bg-white/4.5 dark:disabled:bg-white/12 dark:aria-invalid:border-red-400/50 dark:aria-invalid:ring-red-400/40\",\n local.class,\n )}\n onInput={handleInput}\n onChange={handleChange}\n {...others}\n />\n );\n};\n"],"mappings":";;;;sDAIaM,KAASC,MAAsB;CAM1C,IAAM,CAACK,GAAOC,KAAUV,EALTD,EACb;EAAEO,IAAIT,GAAgB;EAAEU,MAAM;EAAQ,EACtCH,EACD,EAE0C;EACzC;EACA;EACA;EACA;EACA;EACD,CAAC,EAEIO,KAA0DE,MAAM;EACpE,IAAIC,IAAyBD,EAAEE,OAAOD;AAKtCL,EAJIA,EAAMF,SAAS,aACjBO,IAAQE,OAAOH,EAAEE,OAAOD,MAAM,GAGhCL,EAAMQ,UAAUH,EAAM;IAGlBI,KAA4DL,MAAM;EACtE,IAAIC,IAAyBD,EAAEE,OAAOD;AAKtCL,EAJIA,EAAMF,SAAS,aACjBO,IAAQE,OAAOH,EAAEE,OAAOD,MAAM,GAGhCL,EAAMU,WAAWL,EAAM;;AAGzB,eAAA;EAAA,IAAAM,IAAAC,GAAA;AASc,SATdD,EAAAE,iBAAA,UAQcJ,EAAY,EAAAE,EAAAG,UADbZ,GAAWa,EAAAJ,GAAAK,EAAA,EAAA,IAAA,QAAA;AAAA,UAJbvB,EACL,y0BACAO,EAAMiB,MACP;KAAA,EAGGhB,EAAM,EAAA,IAAA,GAAA,EAAAU;KAAA;;AAGdO,EAAA,CAAA,QAAA,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { mergeProps as t, spread as n, template as r } from "solid-js/web";
|
|
3
3
|
import { splitProps as i } from "solid-js";
|
|
4
4
|
//#region src/components/input-group/InputGroup/InputGroup.tsx
|
|
@@ -13,3 +13,5 @@ var a = /* @__PURE__ */ r("<div data-slot=input-group role=group>"), o = (r) =>
|
|
|
13
13
|
};
|
|
14
14
|
//#endregion
|
|
15
15
|
export { o as InputGroup };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=InputGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputGroup.js","names":["splitProps","InputGroupProps","clsx","InputGroup","props","local","others","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../../src/components/input-group/InputGroup/InputGroup.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport type { InputGroupProps } from \"./InputGroup.types\";\nimport { clsx } from \"~/utils\";\n\nexport const InputGroup = (props: InputGroupProps) => {\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n class={clsx(\n \"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\",\n \"border-neutral-200 has-disabled:bg-neutral-200/50 has-[[data-slot=input-group-control]:focus-visible]:border-neutral-400 has-[[data-slot=input-group-control]:focus-visible]:ring-neutral-400/50 has-[[data-slot][aria-invalid=true]]:border-red-600 has-[[data-slot][aria-invalid=true]]:ring-red-600/20\",\n \"dark:border-white/15 dark:bg-white/4.5 dark:has-disabled:bg-white/12 dark:has-[[data-slot=input-group-control]:focus-visible]:border-neutral-500 dark:has-[[data-slot=input-group-control]:focus-visible]:ring-neutral-500/50 dark:has-[[data-slot][aria-invalid=true]]:border-red-400 dark:has-[[data-slot][aria-invalid=true]]:ring-red-400/40\",\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;qEAIaG,KAAcC,MAA2B;CACpD,IAAM,CAACC,GAAOC,KAAUN,EAAWI,GAAO,CAAC,SAAS,YAAY,CAAC;AACjE,eAAA;EAAA,IAAAG,IAAAC,GAAA;AAUc,SAVdC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;AAAA,UAIWR,EACL,otBACA,6SACA,oVACAG,EAAMM,MACP;KAAA,EACGL,EAAM,EAAA,IAAA,GAAA,EAAAC;KAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { inputGroupAddonVariants as t } from "./InputGroupAddon.styles.js";
|
|
3
3
|
import { delegateEvents as n, mergeProps as r, spread as i, template as a } from "solid-js/web";
|
|
4
4
|
import { mergeProps as o, splitProps as s } from "solid-js";
|
|
@@ -26,3 +26,5 @@ var c = /* @__PURE__ */ a("<div role=group data-slot=input-group-addon>"), l = (
|
|
|
26
26
|
n(["click"]);
|
|
27
27
|
//#endregion
|
|
28
28
|
export { l as InputGroupAddon };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=InputGroupAddon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputGroupAddon.js","names":["InputGroupAddonProps","inputGroupAddonVariants","mergeProps","splitProps","clsx","InputGroupAddon","props","merged","align","const","local","others","_el$","_tmpl$","$$click","e","target","HTMLElement","closest","currentTarget","parentElement","querySelector","focus","_$spread","_$mergeProps","data-align","class","_$delegateEvents"],"sources":["../../../../src/components/input-group/InputGroupAddon/InputGroupAddon.tsx"],"sourcesContent":["import type { InputGroupAddonProps } from \"./InputGroupAddon.types\";\nimport { inputGroupAddonVariants } from \"./InputGroupAddon.styles\";\nimport { mergeProps, splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\n\nexport const InputGroupAddon = (props: InputGroupAddonProps) => {\n const merged = mergeProps({ align: \"inline-start\" } as const, props);\n\n const [local, others] = splitProps(merged, [\"align\", \"class\", \"classList\"]);\n\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={local.align}\n class={clsx(inputGroupAddonVariants({ align: local.align }), local.class)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return;\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }}\n {...others}\n />\n );\n};\n"],"mappings":";;;;;2EAKaK,KAAmBC,MAAgC;CAG9D,IAAM,CAACI,GAAOC,KAAUR,EAFTD,EAAW,EAAEM,OAAO,gBAAgB,EAAWF,EAAM,EAEzB;EAAC;EAAS;EAAS;EAAY,CAAC;AAE3E,eAAA;EAAA,IAAAM,IAAAC,GAAA;AAYc,SAZdD,EAAAE,WAMcC,MAAM;AACTA,KAAEC,OAAuBE,QAAQ,SAAS,IAG/CH,EAAEI,cAAcC,eAAeC,cAAc,QAAQ,EAAEC,OAAO;KAC/DC,EAAAX,GAAAY,EAAA;GAAA,IAAA,eAAA;AAAA,WAPWd,EAAMF;;GAAK,IAAA,QAAA;AAAA,WAChBJ,EAAKH,EAAwB,EAAEO,OAAOE,EAAMF,OAAO,CAAC,EAAEE,EAAMgB,MAAM;;GAAA,EAOrEf,EAAM,EAAA,IAAA,GAAA,EAAAC;KAAA;;AAGde,EAAA,CAAA,QAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputGroupAddon.styles.js","names":[],"sources":["../../../../src/components/input-group/InputGroupAddon/InputGroupAddon.styles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-neutral-500 dark:text-neutral-400 select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\",\n \"inline-end\":\n \"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n \"block-end\":\n \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n },\n);\n"],"mappings":";;AAEA,IAAa,IAA0B,EACrC,4QACA;CACE,UAAU,EACR,OAAO;EACL,gBACE;EACF,cACE;EACF,eACE;EACF,aACE;EACH,EACF;CACD,iBAAiB,EACf,OAAO,gBACR;CACF,CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { Button as t } from "../../button/Button.js";
|
|
3
3
|
import { inputGroupButtonVariants as n } from "./InputGroupButton.styles.js";
|
|
4
4
|
import { createComponent as r, mergeProps as i } from "solid-js/web";
|
|
@@ -32,3 +32,5 @@ var s = (s) => {
|
|
|
32
32
|
};
|
|
33
33
|
//#endregion
|
|
34
34
|
export { s as InputGroupButton };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=InputGroupButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputGroupButton.js","names":["Button","InputGroupButtonProps","mergeProps","splitProps","clsx","inputGroupButtonVariants","InputGroupButton","props","merged","type","variant","size","const","local","others","iconOnly","icon","children","_$createComponent","_$mergeProps","data-size","class","undefined","iconSize"],"sources":["../../../../src/components/input-group/InputGroupButton/InputGroupButton.tsx"],"sourcesContent":["import { Button } from \"~/components/button/Button\";\nimport type { InputGroupButtonProps } from \"./InputGroupButton.types\";\nimport { mergeProps, splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { inputGroupButtonVariants } from \"./InputGroupButton.styles\";\n\nexport const InputGroupButton = (props: InputGroupButtonProps) => {\n const merged = mergeProps(\n { type: \"button\", variant: \"ghost\", size: \"xs\" } as const,\n props,\n );\n const [local, others] = splitProps(merged, [\n \"size\",\n \"variant\",\n \"class\",\n \"classList\",\n ]);\n\n const iconOnly = () => !!others.icon && !others.children;\n\n return (\n <Button\n data-size={local.size}\n variant={local.variant}\n class={clsx(\n inputGroupButtonVariants({\n size: iconOnly() ? undefined : local.size,\n iconSize: iconOnly() ? local.size : undefined,\n }),\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;;;AAMA,IAAaM,KAAoBC,MAAiC;CAKhE,IAAM,CAACM,GAAOC,KAAUX,EAJTD,EACb;EAAEO,MAAM;EAAUC,SAAS;EAASC,MAAM;EAAM,EAChDJ,EACD,EAC0C;EACzC;EACA;EACA;EACA;EACD,CAAC,EAEIQ,UAAiB,CAAC,CAACD,EAAOE,QAAQ,CAACF,EAAOG;AAEhD,QAAAC,EACGlB,GAAMmB,EAAA;EAAA,IAAA,cAAA;AAAA,UACMN,EAAMF;;EAAI,IACrBD,UAAO;AAAA,UAAEG,EAAMH;;EAAO,IAAA,QAAA;AAAA,UACfN,EACLC,EAAyB;IACvBM,MAAMI,GAAU,GAAGO,KAAAA,IAAYT,EAAMF;IACrCY,UAAUR,GAAU,GAAGF,EAAMF,OAAOW,KAAAA;IACrC,CAAC,EACFT,EAAMQ,MACP;;EAAA,EACGP,EAAM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputGroupButton.styles.js","names":[],"sources":["../../../../src/components/input-group/InputGroupButton/InputGroupButton.styles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n },\n iconSize: {\n xs: \"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n sm: \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n },\n);\n"],"mappings":";;AAEA,IAAa,IAA2B,EACtC,+CACA;CACE,UAAU;EACR,MAAM;GACJ,IAAI;GACJ,IAAI;GACL;EACD,UAAU;GACR,IAAI;GACJ,IAAI;GACL;EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { Input as t } from "../../input/Input.js";
|
|
3
3
|
import { createComponent as n, mergeProps as r } from "solid-js/web";
|
|
4
4
|
import { splitProps as i } from "solid-js";
|
|
@@ -14,3 +14,5 @@ var a = (a) => {
|
|
|
14
14
|
};
|
|
15
15
|
//#endregion
|
|
16
16
|
export { a as InputGroupInput };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=InputGroupInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputGroupInput.js","names":["Input","InputGroupInputProps","splitProps","clsx","InputGroupInput","props","local","others","_$createComponent","_$mergeProps","class"],"sources":["../../../../src/components/input-group/InputGroupInput/InputGroupInput.tsx"],"sourcesContent":["import { Input } from \"~/components/input/Input\";\nimport type { InputGroupInputProps } from \"./InputGroupInput.types\";\nimport { splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\n\nexport const InputGroupInput = (props: InputGroupInputProps) => {\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <Input\n data-slot=\"input-group-control\"\n class={clsx(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;;AAKA,IAAaI,KAAmBC,MAAgC;CAC9D,IAAM,CAACC,GAAOC,KAAUL,EAAWG,GAAO,CAAC,SAAS,YAAY,CAAC;AAEjE,QAAAG,EACGR,GAAKS,EAAA;EAAA,aAAA;EAAA,IAAA,QAAA;AAAA,UAEGN,EACL,oLACAG,EAAMI,MACP;;EAAA,EACGH,EAAM,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { mergeProps as t, spread as n, template as r } from "solid-js/web";
|
|
3
3
|
import { splitProps as i } from "solid-js";
|
|
4
4
|
//#region src/components/input-group/InputGroupText/InputGroupText.tsx
|
|
@@ -13,3 +13,5 @@ var a = /* @__PURE__ */ r("<span>"), o = (r) => {
|
|
|
13
13
|
};
|
|
14
14
|
//#endregion
|
|
15
15
|
export { o as InputGroupText };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=InputGroupText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputGroupText.js","names":["splitProps","InputGroupTextProps","clsx","InputGroupText","props","local","others","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../../src/components/input-group/InputGroupText/InputGroupText.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport type { InputGroupTextProps } from \"./InputGroupText.types\";\nimport { clsx } from \"~/utils\";\n\nexport const InputGroupText = (props: InputGroupTextProps) => {\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <span\n class={clsx(\n \"flex items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;qCAIaG,KAAkBC,MAA+B;CAC5D,IAAM,CAACC,GAAOC,KAAUN,EAAWI,GAAO,CAAC,SAAS,YAAY,CAAC;AAEjE,eAAA;EAAA,IAAAG,IAAAC,GAAA;AAMc,SANdC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;AAAA,UAEWR,EACL,2IACAG,EAAMM,MACP;KAAA,EACGL,EAAM,EAAA,IAAA,GAAA,EAAAC;KAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { Textarea as t } from "../../textarea/Textarea.js";
|
|
3
3
|
import { createComponent as n, mergeProps as r } from "solid-js/web";
|
|
4
4
|
import { splitProps as i } from "solid-js";
|
|
@@ -14,3 +14,5 @@ var a = (a) => {
|
|
|
14
14
|
};
|
|
15
15
|
//#endregion
|
|
16
16
|
export { a as InputGroupTextarea };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=InputGroupTextarea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputGroupTextarea.js","names":["splitProps","InputGroupTextareaProps","Textarea","clsx","InputGroupTextarea","props","local","others","_$createComponent","_$mergeProps","class"],"sources":["../../../../src/components/input-group/InputGroupTextarea/InputGroupTextarea.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport type { InputGroupTextareaProps } from \"./InputGroupTextarea.types\";\nimport { Textarea } from \"~/components/textarea\";\nimport { clsx } from \"~/utils\";\n\nexport const InputGroupTextarea = (props: InputGroupTextareaProps) => {\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <Textarea\n data-slot=\"input-group-control\"\n class={clsx(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;;AAKA,IAAaI,KAAsBC,MAAmC;CACpE,IAAM,CAACC,GAAOC,KAAUP,EAAWK,GAAO,CAAC,SAAS,YAAY,CAAC;AAEjE,QAAAG,EACGN,GAAQO,EAAA;EAAA,aAAA;EAAA,IAAA,QAAA;AAAA,UAEAN,EACL,qMACAG,EAAMI,MACP;;EAAA,EACGH,EAAM,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InputGroup as e } from "./InputGroup/InputGroup.js";
|
|
2
|
+
import { InputGroupAddon as t } from "./InputGroupAddon/InputGroupAddon.js";
|
|
3
|
+
import { InputGroupButton as n } from "./InputGroupButton/InputGroupButton.js";
|
|
4
|
+
import { InputGroupText as r } from "./InputGroupText/InputGroupText.js";
|
|
5
|
+
import { InputGroupInput as i } from "./InputGroupInput/InputGroupInput.js";
|
|
6
|
+
import { InputGroupTextarea as a } from "./InputGroupTextarea/InputGroupTextarea.js";
|
|
7
|
+
export { e as InputGroup, t as InputGroupAddon, n as InputGroupButton, i as InputGroupInput, r as InputGroupText, a as InputGroupTextarea };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { itemVariants as t } from "./Item.styles.js";
|
|
3
3
|
import { Dynamic as n, createComponent as r, mergeProps as i } from "solid-js/web";
|
|
4
4
|
import { mergeProps as a, splitProps as o } from "solid-js";
|
|
@@ -30,3 +30,5 @@ var s = (s) => {
|
|
|
30
30
|
};
|
|
31
31
|
//#endregion
|
|
32
32
|
export { s as Item };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=Item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Item.js","names":["mergeProps","splitProps","ValidComponent","clsx","ItemProps","itemVariants","Dynamic","Item","props","T","merged","variant","size","as","const","local","others","_$createComponent","_$mergeProps","component","class"],"sources":["../../../../src/components/item/Item/Item.tsx"],"sourcesContent":["import { mergeProps, splitProps, type ValidComponent } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport type { ItemProps } from \"./Item.types\";\nimport { itemVariants } from \"./Item.styles\";\nimport { Dynamic } from \"solid-js/web\";\n\nexport const Item = <T extends ValidComponent = \"div\">(props: ItemProps<T>) => {\n const merged = mergeProps(\n { variant: \"ghost\", size: \"sm\", as: \"div\" } as const,\n props,\n );\n\n const [local, others] = splitProps(merged, [\n \"as\",\n \"variant\",\n \"size\",\n \"class\",\n \"classList\",\n ]);\n\n return (\n // @ts-expect-error\n <Dynamic\n component={local.as}\n data-slot=\"item\"\n class={clsx(\n itemVariants({ variant: local.variant, size: local.size }),\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;;AAMA,IAAaO,KAA0CC,MAAwB;CAM7E,IAAM,CAACO,GAAOC,KAAUf,EALTD,EACb;EAAEW,SAAS;EAASC,MAAM;EAAMC,IAAI;EAAO,EAC3CL,EACD,EAE0C;EACzC;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,QACES,EACCX,GAAOY,EAAA;EAAA,IACNC,YAAS;AAAA,UAAEJ,EAAMF;;EAAE,aAAA;EAAA,IAAA,QAAA;AAAA,UAEZV,EACLE,EAAa;IAAEM,SAASI,EAAMJ;IAASC,MAAMG,EAAMH;IAAM,CAAC,EAC1DG,EAAMK,MACP;;EAAA,EACGJ,EAAM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Item.styles.js","names":[],"sources":["../../../../src/components/item/Item/Item.styles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const itemVariants = cva(\n \"group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-neutral-400 dark:focus-visible:border-neutral-500 focus-visible:ring-[3px] focus-visible:ring-neutral-400/50 dark:focus-visible:ring-neutral-500/50 [a]:transition-colors [a]:hover:bg-neutral-100 dark:[a]:hover:bg-neutral-800\",\n {\n variants: {\n variant: {\n ghost: \"border-transparent\",\n outline: \"border-neutral-200 dark:border-white/10\",\n muted: \"border-transparent bg-neutral-100/50 dark:bg-neutral-800/50\",\n },\n size: {\n sm: \"gap-2.5 px-3 py-2.5\",\n xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n },\n },\n defaultVariants: {\n variant: \"ghost\",\n size: \"sm\",\n },\n },\n);\n"],"mappings":";;AAEA,IAAa,IAAe,EAC1B,6WACA;CACE,UAAU;EACR,SAAS;GACP,OAAO;GACP,SAAS;GACT,OAAO;GACR;EACD,MAAM;GACJ,IAAI;GACJ,IAAI;GACL;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { mergeProps as t, spread as n, template as r } from "solid-js/web";
|
|
3
3
|
import { splitProps as i } from "solid-js";
|
|
4
4
|
//#region src/components/item/ItemActions/ItemActions.tsx
|
|
@@ -13,3 +13,5 @@ var a = /* @__PURE__ */ r("<p data-slot=item-actions>"), o = (r) => {
|
|
|
13
13
|
};
|
|
14
14
|
//#endregion
|
|
15
15
|
export { o as ItemActions };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=ItemActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemActions.js","names":["splitProps","clsx","ItemActionsProps","ItemActions","props","local","others","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../../src/components/item/ItemActions/ItemActions.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport type { ItemActionsProps } from \"./ItemActions.types\";\n\nexport const ItemActions = (props: ItemActionsProps) => {\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <p\n data-slot=\"item-actions\"\n class={clsx(\"flex items-center gap-2\", local.class)}\n {...others}\n />\n );\n};\n"],"mappings":";;;;yDAIaG,KAAeC,MAA4B;CACtD,IAAM,CAACC,GAAOC,KAAUN,EAAWI,GAAO,CAAC,SAAS,YAAY,CAAC;AAEjE,eAAA;EAAA,IAAAG,IAAAC,GAAA;AAIc,SAJdC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;AAAA,UAGWT,EAAK,2BAA2BI,EAAMM,MAAM;KAAA,EAC/CL,EAAM,EAAA,IAAA,GAAA,EAAAC;KAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { mergeProps as t, spread as n, template as r } from "solid-js/web";
|
|
3
3
|
import { splitProps as i } from "solid-js";
|
|
4
4
|
//#region src/components/item/ItemContent/ItemContent.tsx
|
|
@@ -13,3 +13,5 @@ var a = /* @__PURE__ */ r("<div data-slot=item-content>"), o = (r) => {
|
|
|
13
13
|
};
|
|
14
14
|
//#endregion
|
|
15
15
|
export { o as ItemContent };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=ItemContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemContent.js","names":["splitProps","clsx","ItemContentProps","ItemContent","props","local","others","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../../src/components/item/ItemContent/ItemContent.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport type { ItemContentProps } from \"./ItemContent.types\";\n\nexport const ItemContent = (props: ItemContentProps) => {\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <div\n data-slot=\"item-content\"\n class={clsx(\n \"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\",\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;2DAIaG,KAAeC,MAA4B;CACtD,IAAM,CAACC,GAAOC,KAAUN,EAAWI,GAAO,CAAC,SAAS,YAAY,CAAC;AAEjE,eAAA;EAAA,IAAAG,IAAAC,GAAA;AAOc,SAPdC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;AAAA,UAGWT,EACL,qGACAI,EAAMM,MACP;KAAA,EACGL,EAAM,EAAA,IAAA,GAAA,EAAAC;KAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { mergeProps as t, spread as n, template as r } from "solid-js/web";
|
|
3
3
|
import { splitProps as i } from "solid-js";
|
|
4
4
|
//#region src/components/item/ItemDescription/ItemDescription.tsx
|
|
@@ -13,3 +13,5 @@ var a = /* @__PURE__ */ r("<p data-slot=item-description>"), o = (r) => {
|
|
|
13
13
|
};
|
|
14
14
|
//#endregion
|
|
15
15
|
export { o as ItemDescription };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=ItemDescription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemDescription.js","names":["splitProps","clsx","ItemDescriptionProps","ItemDescription","props","local","others","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../../src/components/item/ItemDescription/ItemDescription.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport type { ItemDescriptionProps } from \"./ItemDescription.types\";\n\nexport const ItemDescription = (props: ItemDescriptionProps) => {\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <p\n data-slot=\"item-description\"\n class={clsx(\n \"line-clamp-2 text-left text-sm leading-normal font-normal text-neutral-500 dark:text-neutral-400 group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-neutral-900 dark:[&>a:hover]:text-neutral-200\",\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;6DAIaG,KAAmBC,MAAgC;CAC9D,IAAM,CAACC,GAAOC,KAAUN,EAAWI,GAAO,CAAC,SAAS,YAAY,CAAC;AAEjE,eAAA;EAAA,IAAAG,IAAAC,GAAA;AAOc,SAPdC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;AAAA,UAGWT,EACL,8OACAI,EAAMM,MACP;KAAA,EACGL,EAAM,EAAA,IAAA,GAAA,EAAAC;KAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { mergeProps as t, spread as n, template as r } from "solid-js/web";
|
|
3
3
|
import { splitProps as i } from "solid-js";
|
|
4
4
|
//#region src/components/item/ItemFooter/ItemFooter.tsx
|
|
@@ -13,3 +13,5 @@ var a = /* @__PURE__ */ r("<div data-slot=item-footer>"), o = (r) => {
|
|
|
13
13
|
};
|
|
14
14
|
//#endregion
|
|
15
15
|
export { o as ItemFooter };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=ItemFooter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemFooter.js","names":["splitProps","clsx","ItemFooterProps","ItemFooter","props","local","others","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../../src/components/item/ItemFooter/ItemFooter.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport type { ItemFooterProps } from \"./ItemFooter.types\";\n\nexport const ItemFooter = (props: ItemFooterProps) => {\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <div\n data-slot=\"item-footer\"\n class={clsx(\n \"flex basis-full items-center justify-between gap-2\",\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;0DAIaG,KAAcC,MAA2B;CACpD,IAAM,CAACC,GAAOC,KAAUN,EAAWI,GAAO,CAAC,SAAS,YAAY,CAAC;AAEjE,eAAA;EAAA,IAAAG,IAAAC,GAAA;AAOc,SAPdC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;AAAA,UAGWT,EACL,sDACAI,EAAMM,MACP;KAAA,EACGL,EAAM,EAAA,IAAA,GAAA,EAAAC;KAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { mergeProps as t, spread as n, template as r } from "solid-js/web";
|
|
3
3
|
import { splitProps as i } from "solid-js";
|
|
4
4
|
//#region src/components/item/ItemGroup/ItemGroup.tsx
|
|
@@ -13,3 +13,5 @@ var a = /* @__PURE__ */ r("<div role=list data-slot=item-group>"), o = (r) => {
|
|
|
13
13
|
};
|
|
14
14
|
//#endregion
|
|
15
15
|
export { o as ItemGroup };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=ItemGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemGroup.js","names":["splitProps","clsx","ItemGroupProps","ItemGroup","props","local","others","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../../src/components/item/ItemGroup/ItemGroup.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport type { ItemGroupProps } from \"./ItemGroup.types\";\n\nexport const ItemGroup = (props: ItemGroupProps) => {\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <div\n role=\"list\"\n data-slot=\"item-group\"\n class={clsx(\n \"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\",\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;mEAIaG,KAAaC,MAA0B;CAClD,IAAM,CAACC,GAAOC,KAAUN,EAAWI,GAAO,CAAC,SAAS,YAAY,CAAC;AAEjE,eAAA;EAAA,IAAAG,IAAAC,GAAA;AAQc,SARdC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;AAAA,UAIWT,EACL,mGACAI,EAAMM,MACP;KAAA,EACGL,EAAM,EAAA,IAAA,GAAA,EAAAC;KAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { mergeProps as t, spread as n, template as r } from "solid-js/web";
|
|
3
3
|
import { splitProps as i } from "solid-js";
|
|
4
4
|
//#region src/components/item/ItemHeader/ItemHeader.tsx
|
|
@@ -13,3 +13,5 @@ var a = /* @__PURE__ */ r("<div data-slot=item-header>"), o = (r) => {
|
|
|
13
13
|
};
|
|
14
14
|
//#endregion
|
|
15
15
|
export { o as ItemHeader };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=ItemHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemHeader.js","names":["splitProps","clsx","ItemHeaderProps","ItemHeader","props","local","others","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../../src/components/item/ItemHeader/ItemHeader.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport type { ItemHeaderProps } from \"./ItemHeader.types\";\n\nexport const ItemHeader = (props: ItemHeaderProps) => {\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <div\n data-slot=\"item-header\"\n class={clsx(\n \"flex basis-full items-center justify-between gap-2\",\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;0DAIaG,KAAcC,MAA2B;CACpD,IAAM,CAACC,GAAOC,KAAUN,EAAWI,GAAO,CAAC,SAAS,YAAY,CAAC;AAEjE,eAAA;EAAA,IAAAG,IAAAC,GAAA;AAOc,SAPdC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;AAAA,UAGWT,EACL,sDACAI,EAAMM,MACP;KAAA,EACGL,EAAM,EAAA,IAAA,GAAA,EAAAC;KAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { itemMediaVariants as t } from "./ItemMedia.styles.js";
|
|
3
3
|
import { mergeProps as n, spread as r, template as i } from "solid-js/web";
|
|
4
4
|
import { mergeProps as a, splitProps as o } from "solid-js";
|
|
@@ -23,3 +23,5 @@ var s = /* @__PURE__ */ i("<div data-slot=item-media>"), c = (i) => {
|
|
|
23
23
|
};
|
|
24
24
|
//#endregion
|
|
25
25
|
export { c as ItemMedia };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=ItemMedia.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemMedia.js","names":["mergeProps","splitProps","clsx","ItemMediaProps","itemMediaVariants","ItemMedia","props","merged","variant","const","local","others","_el$","_tmpl$","_$spread","_$mergeProps","data-variant","class"],"sources":["../../../../src/components/item/ItemMedia/ItemMedia.tsx"],"sourcesContent":["import { mergeProps, splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport type { ItemMediaProps } from \"./ItemMedia.types\";\nimport { itemMediaVariants } from \"./ItemMedia.styles\";\n\nexport const ItemMedia = (props: ItemMediaProps) => {\n const merged = mergeProps({ variant: \"ghost\" } as const, props);\n\n const [local, others] = splitProps(merged, [\"variant\", \"class\", \"classList\"]);\n\n return (\n <div\n data-slot=\"item-media\"\n data-variant={local.variant}\n class={clsx(itemMediaVariants({ variant: local.variant }), local.class)}\n {...others}\n />\n );\n};\n"],"mappings":";;;;;yDAKaK,KAAaC,MAA0B;CAGlD,IAAM,CAACI,GAAOC,KAAUV,EAFTD,EAAW,EAAEQ,SAAS,SAAS,EAAWF,EAAM,EAEpB;EAAC;EAAW;EAAS;EAAY,CAAC;AAE7E,eAAA;EAAA,IAAAM,IAAAC,GAAA;AAKc,SALdC,EAAAF,GAAAG,EAAA;GAAA,IAAA,iBAAA;AAAA,WAGkBL,EAAMF;;GAAO,IAAA,QAAA;AAAA,WACpBN,EAAKE,EAAkB,EAAEI,SAASE,EAAMF,SAAS,CAAC,EAAEE,EAAMO,MAAM;;GAAA,EACnEN,EAAM,EAAA,IAAA,GAAA,EAAAC;KAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemMedia.styles.js","names":[],"sources":["../../../../src/components/item/ItemMedia/ItemMedia.styles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n ghost: \"bg-transparent\",\n icon: \"[&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"ghost\",\n },\n },\n);\n"],"mappings":";;AAEA,IAAa,IAAoB,EAC/B,kMACA;CACE,UAAU,EACR,SAAS;EACP,OAAO;EACP,MAAM;EACN,OACE;EACH,EACF;CACD,iBAAiB,EACf,SAAS,SACV;CACF,CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { Separator as t } from "../../separator/Separator.js";
|
|
3
3
|
import { createComponent as n, mergeProps as r } from "solid-js/web";
|
|
4
4
|
import { splitProps as i } from "solid-js";
|
|
@@ -15,3 +15,5 @@ var a = (a) => {
|
|
|
15
15
|
};
|
|
16
16
|
//#endregion
|
|
17
17
|
export { a as ItemSeparator };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=ItemSeparator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemSeparator.js","names":["splitProps","clsx","ItemSeparatorProps","Separator","ItemSeparator","props","local","others","_$createComponent","_$mergeProps","orientation","class"],"sources":["../../../../src/components/item/ItemSeparator/ItemSeparator.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport type { ItemSeparatorProps } from \"./ItemSeparator.types\";\nimport { Separator } from \"~/components/separator\";\n\nexport const ItemSeparator = (props: ItemSeparatorProps) => {\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n class={clsx(\"my-2\", local.class)}\n {...others}\n />\n );\n};\n"],"mappings":";;;;;AAKA,IAAaI,KAAiBC,MAA8B;CAC1D,IAAM,CAACC,GAAOC,KAAUP,EAAWK,GAAO,CAAC,SAAS,YAAY,CAAC;AAEjE,QAAAG,EACGL,GAASM,EAAA;EAAA,aAAA;EAERC,aAAW;EAAA,IAAA,QAAA;AAAA,UACJT,EAAK,QAAQK,EAAMK,MAAM;;EAAA,EAC5BJ,EAAM,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clsx as e } from "../../../
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { mergeProps as t, spread as n, template as r } from "solid-js/web";
|
|
3
3
|
import { splitProps as i } from "solid-js";
|
|
4
4
|
//#region src/components/item/ItemTitle/ItemTitle.tsx
|
|
@@ -13,3 +13,5 @@ var a = /* @__PURE__ */ r("<div data-slot=item-title>"), o = (r) => {
|
|
|
13
13
|
};
|
|
14
14
|
//#endregion
|
|
15
15
|
export { o as ItemTitle };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=ItemTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemTitle.js","names":["splitProps","clsx","ItemTitleProps","ItemTitle","props","local","others","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../../src/components/item/ItemTitle/ItemTitle.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport type { ItemTitleProps } from \"./ItemTitle.types\";\n\nexport const ItemTitle = (props: ItemTitleProps) => {\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <div\n data-slot=\"item-title\"\n class={clsx(\n \"line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\",\n local.class,\n )}\n {...others}\n />\n );\n};\n"],"mappings":";;;;yDAIaG,KAAaC,MAA0B;CAClD,IAAM,CAACC,GAAOC,KAAUN,EAAWI,GAAO,CAAC,SAAS,YAAY,CAAC;AAEjE,eAAA;EAAA,IAAAG,IAAAC,GAAA;AAOc,SAPdC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;AAAA,UAGWT,EACL,kGACAI,EAAMM,MACP;KAAA,EACGL,EAAM,EAAA,IAAA,GAAA,EAAAC;KAAA"}
|