01
Con vitrina
8 subpaths tienen ruta propia: se entra y cada pieza está montada y funcionando, con sus variantes al lado. Están agrupados por lo que hacen y no por su nombre técnico, que es como conviene buscar cuando todavía no se sabe cómo se llama la pieza. Las listas son de valores —componentes, hooks, funciones y constantes— y los tipos se filtran, pero sólo cuando el paquete los marca como tales: en los subpaths que tsup arma a partir de chunks no los marca, y ahí se cuelan mezclados. Un nombre que termina en Props, Options o Return es un tipo, no una pieza.
Lo que se ve
Piezas que muestran algo: no capturan datos, los presentan.
se importa de@solu30/ui-kit/display
se importa de@solu30/ui-kit/data-display
Tabla con filtros por columna, encabezados ordenables y búsqueda con debounce. Una tabla es el componente que más deuda acumula cuando cada producto escribe la suya.
- ColumnHeader
- DateRangeColumnFilter
- DebouncedSearchInput
- debouncedSearchInputVariants
- FilterableHeader
- filterableHeaderVariants
- FilterDropdown
- NumberRangeColumnFilter
- SearchInput
- searchInputVariants
- SelectColumnFilter
- Table
- TableBody
- tableBodyVariants
- TableCaption
- tableCaptionVariants
- TableCell
- tableCellVariants
- TableFooter
- tableFooterVariants
- TableHead
- TableHeader
- tableHeaderVariants
- tableHeadVariants
- TableRow
- tableRowVariants
- TableSkeleton
- tableSkeletonVariants
- tableVariants
- TextColumnFilter
Lo que se toca
Lo que el usuario acciona directo: para dar un dato o para moverse.
se importa de@solu30/ui-kit/input
se importa de@solu30/ui-kit/navigation
Pestañas, barras, sidebars, navegación móvil y el layout de aplicación completo. Los layouts son componentes del kit, no Tailwind artesanal repetido en cada vertical.
- AppLayout
- appLayoutVariants
- BreadcrumbsFromPath
- CarouselNavButtons
- ContextualSidebar
- ContextualSidebarContent
- DetailSheetTabs
- HeaderBar
- LanguageSwitcher
- LanguageSwitcherDropdown
- MobileBottomNav
- MobileTabNavigation
- SegmentedControl
- segmentedControlVariants
- SidebarNavGroups
- SidebarNavigation
- sidebarNavigationVariants
- SidebarUserMenu
- StepIndicator
- stepIndicatorVariants
- TabbedPanel
- Tabs
- TabsContent
- TabsList
- TabsRoot
- TabsTrigger
- ThemeToggle
- themeToggleVariants
- Toolbar
- ViewModeToggle
- viewModeToggleVariants
Lo que responde
La reacción del sistema: interrupciones, confirmaciones y el movimiento que las acompaña.
se importa de@solu30/ui-kit/feedback
Diálogos, hojas, tooltips, menús y la paleta de comandos. Todo lo que interrumpe al usuario está acá, y todo lo que interrumpe devuelve el foco al cerrarse.
- AlertDialog
- AlertDialogAction
- AlertDialogCancel
- AlertDialogContent
- AlertDialogDescription
- AlertDialogFooter
- AlertDialogHeader
- AlertDialogTitle
- AlertDialogTrigger
- Command
- CommandDialog
- CommandEmpty
- CommandGroup
- CommandInput
- CommandItem
- CommandList
- CommandPalette
- commandPaletteVariants
- CommandSeparator
- CommandShortcut
- ConfirmDialog
- Dialog
- DialogClose
- DialogContent
- DialogDescription
- DialogFooter
- DialogHeader
- DialogTitle
- DialogTrigger
- DropdownMenu
- DropdownMenuCheckboxItem
- DropdownMenuContent
- DropdownMenuGroup
- DropdownMenuItem
- DropdownMenuLabel
- DropdownMenuSeparator
- DropdownMenuTrigger
- FilePreviewModal
- InfoTooltip
- MicroToast
- Modal
- Popover
- PopoverContent
- PopoverTrigger
- Sheet
- SheetClose
- SheetCloseProps
- SheetContent
- SheetContentProps
- SheetDescription
- SheetDescriptionProps
- SheetFooter
- SheetFooterProps
- SheetHeader
- SheetHeaderProps
- SheetProps
- SheetRoot
- SheetRootProps
- SheetSize
- SheetTitle
- SheetTitleProps
- SheetTrigger
- SheetTriggerProps
- SideSheet
- toast
- ToastProvider
- toastVariants
- Tooltip
- TooltipContent
- TooltipProvider
- TooltipRoot
- TooltipTrigger
- useToast
se importa de@solu30/ui-kit/animation
Once primitivas portadas de motion-primitives, cada una con al menos un defecto del original corregido. Ninguna entró como copia — el desvío va escrito en el JSDoc con su motivo, para que el próximo "sincronizá con upstream" no reintroduzca el bug.
- AnimatedSection
- animatedSectionVariants
- BorderTrail
- Collapse
- GRADIENT_ANGLES
- InfiniteSlider
- MorphingDialog
- MorphingDialogClose
- MorphingDialogContainer
- MorphingDialogContent
- MorphingDialogImage
- MorphingDialogSubtitle
- MorphingDialogTitle
- MorphingDialogTrigger
- ProgressiveBlur
- ScrollProgress
- SlidingNumber
- Spotlight
- TextEffect
- TextLoop
- TextShimmer
- TransitionPanel
Lo que no se ve
Infraestructura sin markup propio: lógica y formateo que otras piezas consumen.
se importa de@solu30/ui-kit/hooks
se importa de@solu30/ui-kit/utils
Formateo, fechas, moneda y helpers de clases. Aburrido y crítico: la mitad de los bugs de presentación son una fecha o un número formateado de dos maneras distintas.
- calculateFuelConsumption
- calculateFullRoute
- calculateLeg
- calculateRouteTotals
- CloudflareImageResult
- CloudflareImagesClient
- CloudflareImagesConfig
- cn
- ColoredRange
- compareDatedMonthDay
- comparePhones
- Corner
- CornerOffsets
- createCloudflareClient
- darkenHex
- dayOfYear
- decomposeSeasonRange
- deleteImage
- DirectUploadResult
- extractCountryCode
- filterByBounds
- FOCUS_RING
- formatCurrency
- formatCurrencyCompact
- formatDate
- formatDateCompact
- formatDateShort
- formatDateTime
- formatDateTimeShort
- formatDayCount
- formatDuration
- formatDurationMinutes
- formatDurationMs
- formatMonthDay
- formatPhoneDisplay
- formatRelativeTime
- formatShortDate
- formatTimeAgo
- formatTokens
- getColoredRangeForDate
- getColoredRangeForMonth
- getContrastColors
- getCornerStyle
- getDirectUploadUrl
- getImageDetails
- getImageUrl
- getMonthCoverageForDoyRange
- getMonthDoySpan
- getNextSeasonColor
- getPhoneVariations
- haversineDistance
- inputCls
- isConsistentYearing
- isDoyInRange
- isLightColor
- isValidPhone
- isWithinRadius
- kmToNauticalMiles
- labelCls
- lastDayOfMonth
- MonthDay
- nauticalMilesToKm
- normalizePhone
- normalizeSeasonDates
- parseMonthDay
- safeZodResolver
- SEASON_COLORS
- selectCls
- SIZE_SCALE
- SM2_RATING_META
- sm2ProjectedIntervals
- snapToCorner
- timeAgo
- toDateInputValue
- TRANSITION_BASE
- TRANSITION_TRANSFORM
- truncate
- tryParseMonthDay
- tv
- TV_RADIUS
- TV_STATUS_COLORS
- uploadBuffer
- uploadFromUrl
- UploadOptions
- VariantProps