@hanzo/ui 8.0.26 → 8.0.28
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 +1 -1
- package/dist/backends/gui/aspect-ratio.cjs +15 -0
- package/dist/backends/gui/aspect-ratio.d.ts +15 -0
- package/dist/backends/gui/aspect-ratio.d.ts.map +1 -0
- package/dist/backends/gui/aspect-ratio.js +13 -0
- package/dist/backends/gui/aspect-ratio.js.map +1 -0
- package/dist/backends/gui/avatar.cjs +20 -0
- package/dist/backends/gui/avatar.d.ts +17 -0
- package/dist/backends/gui/avatar.d.ts.map +1 -0
- package/dist/backends/gui/avatar.js +16 -0
- package/dist/backends/gui/avatar.js.map +1 -0
- package/dist/backends/gui/badge.cjs +80 -0
- package/dist/backends/gui/badge.d.ts +20 -0
- package/dist/backends/gui/badge.d.ts.map +1 -0
- package/dist/backends/gui/badge.js +76 -0
- package/dist/backends/gui/badge.js.map +1 -0
- package/dist/backends/gui/button.cjs +114 -0
- package/dist/backends/gui/button.d.ts +30 -0
- package/dist/backends/gui/button.d.ts.map +1 -0
- package/dist/backends/gui/button.js +111 -0
- package/dist/backends/gui/button.js.map +1 -0
- package/dist/backends/gui/card.cjs +49 -0
- package/dist/backends/gui/card.d.ts +45 -0
- package/dist/backends/gui/card.d.ts.map +1 -0
- package/dist/backends/gui/card.js +41 -0
- package/dist/backends/gui/card.js.map +1 -0
- package/dist/backends/gui/checkbox.cjs +16 -0
- package/dist/backends/gui/checkbox.d.ts +10 -0
- package/dist/backends/gui/checkbox.d.ts.map +1 -0
- package/dist/backends/gui/checkbox.js +14 -0
- package/dist/backends/gui/checkbox.js.map +1 -0
- package/dist/backends/gui/collapsible.cjs +15 -0
- package/dist/backends/gui/collapsible.d.ts +11 -0
- package/dist/backends/gui/collapsible.d.ts.map +1 -0
- package/dist/backends/gui/collapsible.js +11 -0
- package/dist/backends/gui/collapsible.js.map +1 -0
- package/dist/backends/gui/command.cjs +198 -0
- package/dist/backends/gui/command.d.ts +87 -0
- package/dist/backends/gui/command.d.ts.map +1 -0
- package/dist/backends/gui/command.js +188 -0
- package/dist/backends/gui/command.js.map +1 -0
- package/dist/backends/gui/command.logic.cjs +49 -0
- package/dist/backends/gui/command.logic.d.ts +21 -0
- package/dist/backends/gui/command.logic.d.ts.map +1 -0
- package/dist/backends/gui/command.logic.js +45 -0
- package/dist/backends/gui/command.logic.js.map +1 -0
- package/dist/backends/gui/dialog.cjs +41 -0
- package/dist/backends/gui/dialog.d.ts +28 -0
- package/dist/backends/gui/dialog.d.ts.map +1 -0
- package/dist/backends/gui/dialog.js +30 -0
- package/dist/backends/gui/dialog.js.map +1 -0
- package/dist/backends/gui/dropdown-menu.cjs +168 -0
- package/dist/backends/gui/dropdown-menu.d.ts +99 -0
- package/dist/backends/gui/dropdown-menu.d.ts.map +1 -0
- package/dist/backends/gui/dropdown-menu.js +119 -0
- package/dist/backends/gui/dropdown-menu.js.map +1 -0
- package/dist/backends/gui/gesture.cjs +74 -0
- package/dist/backends/gui/gesture.d.ts +68 -0
- package/dist/backends/gui/gesture.d.ts.map +1 -0
- package/dist/backends/gui/gesture.js +69 -0
- package/dist/backends/gui/gesture.js.map +1 -0
- package/dist/backends/gui/index.cjs +134 -0
- package/dist/backends/gui/index.d.ts +25 -2
- package/dist/backends/gui/index.d.ts.map +1 -0
- package/dist/backends/gui/index.js +41 -0
- package/dist/backends/gui/index.js.map +1 -0
- package/dist/backends/gui/ink.cjs +14 -0
- package/dist/backends/gui/ink.d.ts +8 -0
- package/dist/backends/gui/ink.d.ts.map +1 -0
- package/dist/backends/gui/ink.js +11 -0
- package/dist/backends/gui/ink.js.map +1 -0
- package/dist/backends/gui/input.cjs +39 -0
- package/dist/backends/gui/input.d.ts +20 -0
- package/dist/backends/gui/input.d.ts.map +1 -0
- package/dist/backends/gui/input.js +37 -0
- package/dist/backends/gui/input.js.map +1 -0
- package/dist/backends/gui/label.cjs +10 -0
- package/dist/backends/gui/label.d.ts +7 -0
- package/dist/backends/gui/label.d.ts.map +1 -0
- package/dist/backends/gui/label.js +8 -0
- package/dist/backends/gui/label.js.map +1 -0
- package/dist/backends/gui/popover.cjs +39 -0
- package/dist/backends/gui/popover.d.ts +23 -0
- package/dist/backends/gui/popover.d.ts.map +1 -0
- package/dist/backends/gui/popover.js +33 -0
- package/dist/backends/gui/popover.js.map +1 -0
- package/dist/backends/gui/progress.cjs +10 -0
- package/dist/backends/gui/progress.d.ts +7 -0
- package/dist/backends/gui/progress.d.ts.map +1 -0
- package/dist/backends/gui/progress.js +8 -0
- package/dist/backends/gui/progress.js.map +1 -0
- package/dist/backends/gui/resizable.cjs +174 -0
- package/dist/backends/gui/resizable.d.ts +54 -0
- package/dist/backends/gui/resizable.d.ts.map +1 -0
- package/dist/backends/gui/resizable.js +168 -0
- package/dist/backends/gui/resizable.js.map +1 -0
- package/dist/backends/gui/resizable.logic.cjs +46 -0
- package/dist/backends/gui/resizable.logic.d.ts +24 -0
- package/dist/backends/gui/resizable.logic.d.ts.map +1 -0
- package/dist/backends/gui/resizable.logic.js +43 -0
- package/dist/backends/gui/resizable.logic.js.map +1 -0
- package/dist/backends/gui/scroll-area.cjs +126 -0
- package/dist/backends/gui/scroll-area.d.ts +46 -0
- package/dist/backends/gui/scroll-area.d.ts.map +1 -0
- package/dist/backends/gui/scroll-area.js +123 -0
- package/dist/backends/gui/scroll-area.js.map +1 -0
- package/dist/backends/gui/select.cjs +54 -0
- package/dist/backends/gui/select.d.ts +31 -0
- package/dist/backends/gui/select.d.ts.map +1 -0
- package/dist/backends/gui/select.js +43 -0
- package/dist/backends/gui/select.js.map +1 -0
- package/dist/backends/gui/separator.cjs +10 -0
- package/dist/backends/gui/separator.d.ts +11 -0
- package/dist/backends/gui/separator.d.ts.map +1 -0
- package/dist/backends/gui/separator.js +8 -0
- package/dist/backends/gui/separator.js.map +1 -0
- package/dist/backends/gui/slider.cjs +13 -0
- package/dist/backends/gui/slider.d.ts +7 -0
- package/dist/backends/gui/slider.d.ts.map +1 -0
- package/dist/backends/gui/slider.js +11 -0
- package/dist/backends/gui/slider.js.map +1 -0
- package/dist/backends/gui/slot.cjs +10 -0
- package/dist/backends/gui/slot.d.ts +7 -0
- package/dist/backends/gui/slot.d.ts.map +1 -0
- package/dist/backends/gui/slot.js +7 -0
- package/dist/backends/gui/slot.js.map +1 -0
- package/dist/backends/gui/switch.cjs +13 -0
- package/dist/backends/gui/switch.d.ts +7 -0
- package/dist/backends/gui/switch.d.ts.map +1 -0
- package/dist/backends/gui/switch.js +11 -0
- package/dist/backends/gui/switch.js.map +1 -0
- package/dist/backends/gui/tabs.cjs +19 -0
- package/dist/backends/gui/tabs.d.ts +13 -0
- package/dist/backends/gui/tabs.d.ts.map +1 -0
- package/dist/backends/gui/tabs.js +14 -0
- package/dist/backends/gui/tabs.js.map +1 -0
- package/dist/backends/gui/textarea.cjs +58 -0
- package/dist/backends/gui/textarea.d.ts +12 -0
- package/dist/backends/gui/textarea.d.ts.map +1 -0
- package/dist/backends/gui/textarea.js +23 -0
- package/dist/backends/gui/textarea.js.map +1 -0
- package/dist/backends/gui/toaster.cjs +13 -0
- package/dist/backends/gui/toaster.d.ts +29 -0
- package/dist/backends/gui/toaster.d.ts.map +1 -0
- package/dist/backends/gui/toaster.js +10 -0
- package/dist/backends/gui/toaster.js.map +1 -0
- package/dist/backends/gui/tooltip.cjs +22 -0
- package/dist/backends/gui/tooltip.d.ts +13 -0
- package/dist/backends/gui/tooltip.d.ts.map +1 -0
- package/dist/backends/gui/tooltip.js +17 -0
- package/dist/backends/gui/tooltip.js.map +1 -0
- package/dist/canvas.cjs +27 -14
- package/dist/canvas.d.ts +1 -0
- package/dist/canvas.d.ts.map +1 -0
- package/dist/canvas.js +10 -1
- package/dist/canvas.js.map +1 -1
- package/dist/cd/layout.cjs +143 -0
- package/dist/cd/layout.d.ts +1 -0
- package/dist/cd/layout.d.ts.map +1 -0
- package/dist/cd/layout.js +141 -0
- package/dist/cd/layout.js.map +1 -0
- package/dist/cd/status.cjs +132 -0
- package/dist/cd/status.d.ts +2 -1
- package/dist/cd/status.d.ts.map +1 -0
- package/dist/cd/status.js +120 -0
- package/dist/cd/status.js.map +1 -0
- package/dist/cd/time.cjs +60 -0
- package/dist/cd/time.d.ts +1 -0
- package/dist/cd/time.d.ts.map +1 -0
- package/dist/cd/time.js +56 -0
- package/dist/cd/time.js.map +1 -0
- package/dist/cd/types.cjs +19 -0
- package/dist/cd/types.d.ts +1 -0
- package/dist/cd/types.d.ts.map +1 -0
- package/dist/cd/types.js +19 -0
- package/dist/cd/types.js.map +1 -0
- package/dist/core/cn.cjs +15 -0
- package/dist/core/cn.d.ts +5 -5
- package/dist/core/cn.d.ts.map +1 -0
- package/dist/core/cn.js +13 -0
- package/dist/core/cn.js.map +1 -0
- package/dist/core/fonts.cjs +26 -0
- package/dist/core/fonts.d.ts +1 -0
- package/dist/core/fonts.d.ts.map +1 -0
- package/dist/core/fonts.js +24 -0
- package/dist/core/fonts.js.map +1 -0
- package/dist/core/index.cjs +31 -0
- package/dist/core/index.d.ts +4 -3
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/tokens.cjs +35 -0
- package/dist/core/tokens.d.ts +1 -0
- package/dist/core/tokens.d.ts.map +1 -0
- package/dist/core/tokens.js +16 -0
- package/dist/core/tokens.js.map +1 -0
- package/dist/dashboard.cjs +24 -14
- package/dist/dashboard.d.ts +1 -0
- package/dist/dashboard.d.ts.map +1 -0
- package/dist/dashboard.js +7 -1
- package/dist/dashboard.js.map +1 -1
- package/dist/data.cjs +28 -14
- package/dist/data.d.ts +1 -0
- package/dist/data.d.ts.map +1 -0
- package/dist/data.js +11 -1
- package/dist/data.js.map +1 -1
- package/dist/framework/CollectionBuilder.cjs +77 -0
- package/dist/framework/CollectionBuilder.d.ts +3 -2
- package/dist/framework/CollectionBuilder.d.ts.map +1 -0
- package/dist/framework/CollectionBuilder.js +75 -0
- package/dist/framework/CollectionBuilder.js.map +1 -0
- package/dist/framework/CollectionsBrowser.cjs +107 -0
- package/dist/framework/CollectionsBrowser.d.ts +3 -2
- package/dist/framework/CollectionsBrowser.d.ts.map +1 -0
- package/dist/framework/CollectionsBrowser.js +105 -0
- package/dist/framework/CollectionsBrowser.js.map +1 -0
- package/dist/framework/DocTypeDetail.cjs +187 -0
- package/dist/framework/DocTypeDetail.d.ts +2 -1
- package/dist/framework/DocTypeDetail.d.ts.map +1 -0
- package/dist/framework/DocTypeDetail.js +185 -0
- package/dist/framework/DocTypeDetail.js.map +1 -0
- package/dist/framework/DocTypeRecords.cjs +130 -0
- package/dist/framework/DocTypeRecords.d.ts +4 -3
- package/dist/framework/DocTypeRecords.d.ts.map +1 -0
- package/dist/framework/DocTypeRecords.js +128 -0
- package/dist/framework/DocTypeRecords.js.map +1 -0
- package/dist/framework/MediaGrid.cjs +134 -0
- package/dist/framework/MediaGrid.d.ts +4 -3
- package/dist/framework/MediaGrid.d.ts.map +1 -0
- package/dist/framework/MediaGrid.js +132 -0
- package/dist/framework/MediaGrid.js.map +1 -0
- package/dist/framework/RecordCards.cjs +47 -0
- package/dist/framework/RecordCards.d.ts +1 -0
- package/dist/framework/RecordCards.d.ts.map +1 -0
- package/dist/framework/RecordCards.js +45 -0
- package/dist/framework/RecordCards.js.map +1 -0
- package/dist/framework/builder-logic.cjs +169 -0
- package/dist/framework/builder-logic.d.ts +2 -1
- package/dist/framework/builder-logic.d.ts.map +1 -0
- package/dist/framework/builder-logic.js +156 -0
- package/dist/framework/builder-logic.js.map +1 -0
- package/dist/framework/client.cjs +95 -0
- package/dist/framework/client.d.ts +2 -1
- package/dist/framework/client.d.ts.map +1 -0
- package/dist/framework/client.js +91 -0
- package/dist/framework/client.js.map +1 -0
- package/dist/framework/core.cjs +36 -212
- package/dist/framework/core.d.ts +7 -6
- package/dist/framework/core.d.ts.map +1 -0
- package/dist/framework/core.js +20 -2
- package/dist/framework/core.js.map +1 -1
- package/dist/framework/data.cjs +41 -0
- package/dist/framework/data.d.ts +3 -2
- package/dist/framework/data.d.ts.map +1 -0
- package/dist/framework/data.js +38 -0
- package/dist/framework/data.js.map +1 -0
- package/dist/framework/fields.cjs +358 -0
- package/dist/framework/fields.d.ts +2 -1
- package/dist/framework/fields.d.ts.map +1 -0
- package/dist/framework/fields.js +335 -0
- package/dist/framework/fields.js.map +1 -0
- package/dist/framework/index.cjs +58 -1339
- package/dist/framework/index.d.ts +10 -9
- package/dist/framework/index.d.ts.map +1 -0
- package/dist/framework/index.js +35 -1117
- package/dist/framework/index.js.map +1 -1
- package/dist/framework/media.cjs +133 -0
- package/dist/framework/media.d.ts +2 -1
- package/dist/framework/media.d.ts.map +1 -0
- package/dist/framework/media.js +124 -0
- package/dist/framework/media.js.map +1 -0
- package/dist/framework/parts.cjs +60 -0
- package/dist/framework/parts.d.ts +1 -0
- package/dist/framework/parts.d.ts.map +1 -0
- package/dist/framework/parts.js +51 -0
- package/dist/framework/parts.js.map +1 -0
- package/dist/framework/responsive.cjs +62 -0
- package/dist/framework/responsive.d.ts +1 -0
- package/dist/framework/responsive.d.ts.map +1 -0
- package/dist/framework/responsive.js +58 -0
- package/dist/framework/responsive.js.map +1 -0
- package/dist/framework/types.cjs +20 -0
- package/dist/framework/types.d.ts +1 -0
- package/dist/framework/types.d.ts.map +1 -0
- package/dist/framework/types.js +18 -0
- package/dist/framework/types.js.map +1 -0
- package/dist/gitops.cjs +21 -14
- package/dist/gitops.d.ts +1 -0
- package/dist/gitops.d.ts.map +1 -0
- package/dist/gitops.js +4 -1
- package/dist/gitops.js.map +1 -1
- package/dist/gui-config.cjs +145 -112
- package/dist/gui-config.d.ts +1 -0
- package/dist/gui-config.d.ts.map +1 -0
- package/dist/gui-config.js +140 -104
- package/dist/gui-config.js.map +1 -1
- package/dist/index.cjs +40 -1144
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -1018
- package/dist/index.js.map +1 -1
- package/dist/models/ModelSelector.cjs +58 -0
- package/dist/models/ModelSelector.d.ts +10 -6
- package/dist/models/ModelSelector.d.ts.map +1 -0
- package/dist/models/ModelSelector.js +56 -0
- package/dist/models/ModelSelector.js.map +1 -0
- package/dist/models/catalog.cjs +191 -0
- package/dist/models/catalog.d.ts +2 -1
- package/dist/models/catalog.d.ts.map +1 -0
- package/dist/models/catalog.js +185 -0
- package/dist/models/catalog.js.map +1 -0
- package/dist/models/index.cjs +16 -0
- package/dist/models/index.d.ts +6 -5
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +8 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/types.cjs +8 -0
- package/dist/models/types.d.ts +1 -0
- package/dist/models/types.d.ts.map +1 -0
- package/dist/models/types.js +8 -0
- package/dist/models/types.js.map +1 -0
- package/dist/oss/blueprint.cjs +96 -0
- package/dist/oss/blueprint.d.ts +1 -0
- package/dist/oss/blueprint.d.ts.map +1 -0
- package/dist/oss/blueprint.js +94 -0
- package/dist/oss/blueprint.js.map +1 -0
- package/dist/oss/catalog.cjs +174 -0
- package/dist/oss/catalog.d.ts +1 -0
- package/dist/oss/catalog.d.ts.map +1 -0
- package/dist/oss/catalog.js +165 -0
- package/dist/oss/catalog.js.map +1 -0
- package/dist/oss.cjs +27 -188
- package/dist/oss.d.ts +3 -2
- package/dist/oss.d.ts.map +1 -0
- package/dist/oss.js +12 -178
- package/dist/oss.js.map +1 -1
- package/dist/primitives/AspectRatio.cjs +8 -0
- package/dist/primitives/AspectRatio.d.ts +2 -1
- package/dist/primitives/AspectRatio.d.ts.map +1 -0
- package/dist/primitives/AspectRatio.js +5 -0
- package/dist/primitives/AspectRatio.js.map +1 -0
- package/dist/primitives/Avatar.cjs +8 -0
- package/dist/primitives/Avatar.d.ts +2 -1
- package/dist/primitives/Avatar.d.ts.map +1 -0
- package/dist/primitives/Avatar.js +5 -0
- package/dist/primitives/Avatar.js.map +1 -0
- package/dist/primitives/AvatarFallback.cjs +8 -0
- package/dist/primitives/AvatarFallback.d.ts +2 -1
- package/dist/primitives/AvatarFallback.d.ts.map +1 -0
- package/dist/primitives/AvatarFallback.js +5 -0
- package/dist/primitives/AvatarFallback.js.map +1 -0
- package/dist/primitives/AvatarImage.cjs +8 -0
- package/dist/primitives/AvatarImage.d.ts +2 -1
- package/dist/primitives/AvatarImage.d.ts.map +1 -0
- package/dist/primitives/AvatarImage.js +5 -0
- package/dist/primitives/AvatarImage.js.map +1 -0
- package/dist/primitives/Badge.cjs +8 -0
- package/dist/primitives/Badge.d.ts +2 -1
- package/dist/primitives/Badge.d.ts.map +1 -0
- package/dist/primitives/Badge.js +5 -0
- package/dist/primitives/Badge.js.map +1 -0
- package/dist/primitives/Button.cjs +8 -0
- package/dist/primitives/Button.d.ts +2 -1
- package/dist/primitives/Button.d.ts.map +1 -0
- package/dist/primitives/Button.js +5 -0
- package/dist/primitives/Button.js.map +1 -0
- package/dist/primitives/Card.cjs +8 -0
- package/dist/primitives/Card.d.ts +2 -1
- package/dist/primitives/Card.d.ts.map +1 -0
- package/dist/primitives/Card.js +5 -0
- package/dist/primitives/Card.js.map +1 -0
- package/dist/primitives/CardAction.cjs +8 -0
- package/dist/primitives/CardAction.d.ts +2 -1
- package/dist/primitives/CardAction.d.ts.map +1 -0
- package/dist/primitives/CardAction.js +5 -0
- package/dist/primitives/CardAction.js.map +1 -0
- package/dist/primitives/CardContent.cjs +8 -0
- package/dist/primitives/CardContent.d.ts +2 -1
- package/dist/primitives/CardContent.d.ts.map +1 -0
- package/dist/primitives/CardContent.js +5 -0
- package/dist/primitives/CardContent.js.map +1 -0
- package/dist/primitives/CardDescription.cjs +8 -0
- package/dist/primitives/CardDescription.d.ts +2 -1
- package/dist/primitives/CardDescription.d.ts.map +1 -0
- package/dist/primitives/CardDescription.js +5 -0
- package/dist/primitives/CardDescription.js.map +1 -0
- package/dist/primitives/CardFooter.cjs +8 -0
- package/dist/primitives/CardFooter.d.ts +2 -1
- package/dist/primitives/CardFooter.d.ts.map +1 -0
- package/dist/primitives/CardFooter.js +5 -0
- package/dist/primitives/CardFooter.js.map +1 -0
- package/dist/primitives/CardHeader.cjs +8 -0
- package/dist/primitives/CardHeader.d.ts +2 -1
- package/dist/primitives/CardHeader.d.ts.map +1 -0
- package/dist/primitives/CardHeader.js +5 -0
- package/dist/primitives/CardHeader.js.map +1 -0
- package/dist/primitives/CardTitle.cjs +8 -0
- package/dist/primitives/CardTitle.d.ts +2 -1
- package/dist/primitives/CardTitle.d.ts.map +1 -0
- package/dist/primitives/CardTitle.js +5 -0
- package/dist/primitives/CardTitle.js.map +1 -0
- package/dist/primitives/Checkbox.cjs +8 -0
- package/dist/primitives/Checkbox.d.ts +2 -1
- package/dist/primitives/Checkbox.d.ts.map +1 -0
- package/dist/primitives/Checkbox.js +5 -0
- package/dist/primitives/Checkbox.js.map +1 -0
- package/dist/primitives/Collapsible.cjs +8 -0
- package/dist/primitives/Collapsible.d.ts +2 -1
- package/dist/primitives/Collapsible.d.ts.map +1 -0
- package/dist/primitives/Collapsible.js +5 -0
- package/dist/primitives/Collapsible.js.map +1 -0
- package/dist/primitives/CollapsibleContent.cjs +8 -0
- package/dist/primitives/CollapsibleContent.d.ts +2 -1
- package/dist/primitives/CollapsibleContent.d.ts.map +1 -0
- package/dist/primitives/CollapsibleContent.js +5 -0
- package/dist/primitives/CollapsibleContent.js.map +1 -0
- package/dist/primitives/CollapsibleTrigger.cjs +8 -0
- package/dist/primitives/CollapsibleTrigger.d.ts +2 -1
- package/dist/primitives/CollapsibleTrigger.d.ts.map +1 -0
- package/dist/primitives/CollapsibleTrigger.js +5 -0
- package/dist/primitives/CollapsibleTrigger.js.map +1 -0
- package/dist/primitives/Command.cjs +8 -0
- package/dist/primitives/Command.d.ts +2 -1
- package/dist/primitives/Command.d.ts.map +1 -0
- package/dist/primitives/Command.js +5 -0
- package/dist/primitives/Command.js.map +1 -0
- package/dist/primitives/CommandDialog.cjs +8 -0
- package/dist/primitives/CommandDialog.d.ts +2 -1
- package/dist/primitives/CommandDialog.d.ts.map +1 -0
- package/dist/primitives/CommandDialog.js +5 -0
- package/dist/primitives/CommandDialog.js.map +1 -0
- package/dist/primitives/CommandEmpty.cjs +8 -0
- package/dist/primitives/CommandEmpty.d.ts +2 -1
- package/dist/primitives/CommandEmpty.d.ts.map +1 -0
- package/dist/primitives/CommandEmpty.js +5 -0
- package/dist/primitives/CommandEmpty.js.map +1 -0
- package/dist/primitives/CommandGroup.cjs +8 -0
- package/dist/primitives/CommandGroup.d.ts +2 -1
- package/dist/primitives/CommandGroup.d.ts.map +1 -0
- package/dist/primitives/CommandGroup.js +5 -0
- package/dist/primitives/CommandGroup.js.map +1 -0
- package/dist/primitives/CommandInput.cjs +8 -0
- package/dist/primitives/CommandInput.d.ts +2 -1
- package/dist/primitives/CommandInput.d.ts.map +1 -0
- package/dist/primitives/CommandInput.js +5 -0
- package/dist/primitives/CommandInput.js.map +1 -0
- package/dist/primitives/CommandItem.cjs +8 -0
- package/dist/primitives/CommandItem.d.ts +2 -1
- package/dist/primitives/CommandItem.d.ts.map +1 -0
- package/dist/primitives/CommandItem.js +5 -0
- package/dist/primitives/CommandItem.js.map +1 -0
- package/dist/primitives/CommandList.cjs +8 -0
- package/dist/primitives/CommandList.d.ts +2 -1
- package/dist/primitives/CommandList.d.ts.map +1 -0
- package/dist/primitives/CommandList.js +5 -0
- package/dist/primitives/CommandList.js.map +1 -0
- package/dist/primitives/CommandSeparator.cjs +8 -0
- package/dist/primitives/CommandSeparator.d.ts +2 -1
- package/dist/primitives/CommandSeparator.d.ts.map +1 -0
- package/dist/primitives/CommandSeparator.js +5 -0
- package/dist/primitives/CommandSeparator.js.map +1 -0
- package/dist/primitives/CommandShortcut.cjs +8 -0
- package/dist/primitives/CommandShortcut.d.ts +2 -1
- package/dist/primitives/CommandShortcut.d.ts.map +1 -0
- package/dist/primitives/CommandShortcut.js +5 -0
- package/dist/primitives/CommandShortcut.js.map +1 -0
- package/dist/primitives/Dialog.cjs +8 -0
- package/dist/primitives/Dialog.d.ts +2 -1
- package/dist/primitives/Dialog.d.ts.map +1 -0
- package/dist/primitives/Dialog.js +5 -0
- package/dist/primitives/Dialog.js.map +1 -0
- package/dist/primitives/DialogClose.cjs +8 -0
- package/dist/primitives/DialogClose.d.ts +2 -1
- package/dist/primitives/DialogClose.d.ts.map +1 -0
- package/dist/primitives/DialogClose.js +5 -0
- package/dist/primitives/DialogClose.js.map +1 -0
- package/dist/primitives/DialogContent.cjs +8 -0
- package/dist/primitives/DialogContent.d.ts +2 -1
- package/dist/primitives/DialogContent.d.ts.map +1 -0
- package/dist/primitives/DialogContent.js +5 -0
- package/dist/primitives/DialogContent.js.map +1 -0
- package/dist/primitives/DialogDescription.cjs +8 -0
- package/dist/primitives/DialogDescription.d.ts +2 -1
- package/dist/primitives/DialogDescription.d.ts.map +1 -0
- package/dist/primitives/DialogDescription.js +5 -0
- package/dist/primitives/DialogDescription.js.map +1 -0
- package/dist/primitives/DialogFooter.cjs +8 -0
- package/dist/primitives/DialogFooter.d.ts +2 -1
- package/dist/primitives/DialogFooter.d.ts.map +1 -0
- package/dist/primitives/DialogFooter.js +5 -0
- package/dist/primitives/DialogFooter.js.map +1 -0
- package/dist/primitives/DialogHeader.cjs +8 -0
- package/dist/primitives/DialogHeader.d.ts +2 -1
- package/dist/primitives/DialogHeader.d.ts.map +1 -0
- package/dist/primitives/DialogHeader.js +5 -0
- package/dist/primitives/DialogHeader.js.map +1 -0
- package/dist/primitives/DialogOverlay.cjs +8 -0
- package/dist/primitives/DialogOverlay.d.ts +2 -1
- package/dist/primitives/DialogOverlay.d.ts.map +1 -0
- package/dist/primitives/DialogOverlay.js +5 -0
- package/dist/primitives/DialogOverlay.js.map +1 -0
- package/dist/primitives/DialogPortal.cjs +8 -0
- package/dist/primitives/DialogPortal.d.ts +2 -1
- package/dist/primitives/DialogPortal.d.ts.map +1 -0
- package/dist/primitives/DialogPortal.js +5 -0
- package/dist/primitives/DialogPortal.js.map +1 -0
- package/dist/primitives/DialogTitle.cjs +8 -0
- package/dist/primitives/DialogTitle.d.ts +2 -1
- package/dist/primitives/DialogTitle.d.ts.map +1 -0
- package/dist/primitives/DialogTitle.js +5 -0
- package/dist/primitives/DialogTitle.js.map +1 -0
- package/dist/primitives/DialogTrigger.cjs +8 -0
- package/dist/primitives/DialogTrigger.d.ts +2 -1
- package/dist/primitives/DialogTrigger.d.ts.map +1 -0
- package/dist/primitives/DialogTrigger.js +5 -0
- package/dist/primitives/DialogTrigger.js.map +1 -0
- package/dist/primitives/DropdownMenu.cjs +8 -0
- package/dist/primitives/DropdownMenu.d.ts +2 -1
- package/dist/primitives/DropdownMenu.d.ts.map +1 -0
- package/dist/primitives/DropdownMenu.js +5 -0
- package/dist/primitives/DropdownMenu.js.map +1 -0
- package/dist/primitives/DropdownMenuCheckboxItem.cjs +8 -0
- package/dist/primitives/DropdownMenuCheckboxItem.d.ts +2 -1
- package/dist/primitives/DropdownMenuCheckboxItem.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuCheckboxItem.js +5 -0
- package/dist/primitives/DropdownMenuCheckboxItem.js.map +1 -0
- package/dist/primitives/DropdownMenuContent.cjs +8 -0
- package/dist/primitives/DropdownMenuContent.d.ts +2 -1
- package/dist/primitives/DropdownMenuContent.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuContent.js +5 -0
- package/dist/primitives/DropdownMenuContent.js.map +1 -0
- package/dist/primitives/DropdownMenuGroup.cjs +8 -0
- package/dist/primitives/DropdownMenuGroup.d.ts +2 -1
- package/dist/primitives/DropdownMenuGroup.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuGroup.js +5 -0
- package/dist/primitives/DropdownMenuGroup.js.map +1 -0
- package/dist/primitives/DropdownMenuItem.cjs +8 -0
- package/dist/primitives/DropdownMenuItem.d.ts +2 -1
- package/dist/primitives/DropdownMenuItem.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuItem.js +5 -0
- package/dist/primitives/DropdownMenuItem.js.map +1 -0
- package/dist/primitives/DropdownMenuLabel.cjs +8 -0
- package/dist/primitives/DropdownMenuLabel.d.ts +2 -1
- package/dist/primitives/DropdownMenuLabel.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuLabel.js +5 -0
- package/dist/primitives/DropdownMenuLabel.js.map +1 -0
- package/dist/primitives/DropdownMenuPortal.cjs +8 -0
- package/dist/primitives/DropdownMenuPortal.d.ts +2 -1
- package/dist/primitives/DropdownMenuPortal.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuPortal.js +5 -0
- package/dist/primitives/DropdownMenuPortal.js.map +1 -0
- package/dist/primitives/DropdownMenuRadioGroup.cjs +8 -0
- package/dist/primitives/DropdownMenuRadioGroup.d.ts +2 -1
- package/dist/primitives/DropdownMenuRadioGroup.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuRadioGroup.js +5 -0
- package/dist/primitives/DropdownMenuRadioGroup.js.map +1 -0
- package/dist/primitives/DropdownMenuRadioItem.cjs +8 -0
- package/dist/primitives/DropdownMenuRadioItem.d.ts +2 -1
- package/dist/primitives/DropdownMenuRadioItem.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuRadioItem.js +5 -0
- package/dist/primitives/DropdownMenuRadioItem.js.map +1 -0
- package/dist/primitives/DropdownMenuSeparator.cjs +8 -0
- package/dist/primitives/DropdownMenuSeparator.d.ts +2 -1
- package/dist/primitives/DropdownMenuSeparator.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuSeparator.js +5 -0
- package/dist/primitives/DropdownMenuSeparator.js.map +1 -0
- package/dist/primitives/DropdownMenuShortcut.cjs +8 -0
- package/dist/primitives/DropdownMenuShortcut.d.ts +2 -1
- package/dist/primitives/DropdownMenuShortcut.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuShortcut.js +5 -0
- package/dist/primitives/DropdownMenuShortcut.js.map +1 -0
- package/dist/primitives/DropdownMenuSub.cjs +8 -0
- package/dist/primitives/DropdownMenuSub.d.ts +2 -1
- package/dist/primitives/DropdownMenuSub.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuSub.js +5 -0
- package/dist/primitives/DropdownMenuSub.js.map +1 -0
- package/dist/primitives/DropdownMenuSubContent.cjs +8 -0
- package/dist/primitives/DropdownMenuSubContent.d.ts +2 -1
- package/dist/primitives/DropdownMenuSubContent.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuSubContent.js +5 -0
- package/dist/primitives/DropdownMenuSubContent.js.map +1 -0
- package/dist/primitives/DropdownMenuSubTrigger.cjs +8 -0
- package/dist/primitives/DropdownMenuSubTrigger.d.ts +2 -1
- package/dist/primitives/DropdownMenuSubTrigger.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuSubTrigger.js +5 -0
- package/dist/primitives/DropdownMenuSubTrigger.js.map +1 -0
- package/dist/primitives/DropdownMenuTrigger.cjs +8 -0
- package/dist/primitives/DropdownMenuTrigger.d.ts +2 -1
- package/dist/primitives/DropdownMenuTrigger.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuTrigger.js +5 -0
- package/dist/primitives/DropdownMenuTrigger.js.map +1 -0
- package/dist/primitives/Input.cjs +8 -0
- package/dist/primitives/Input.d.ts +2 -1
- package/dist/primitives/Input.d.ts.map +1 -0
- package/dist/primitives/Input.js +5 -0
- package/dist/primitives/Input.js.map +1 -0
- package/dist/primitives/Label.cjs +8 -0
- package/dist/primitives/Label.d.ts +2 -1
- package/dist/primitives/Label.d.ts.map +1 -0
- package/dist/primitives/Label.js +5 -0
- package/dist/primitives/Label.js.map +1 -0
- package/dist/primitives/Popover.cjs +8 -0
- package/dist/primitives/Popover.d.ts +2 -1
- package/dist/primitives/Popover.d.ts.map +1 -0
- package/dist/primitives/Popover.js +5 -0
- package/dist/primitives/Popover.js.map +1 -0
- package/dist/primitives/PopoverAnchor.cjs +8 -0
- package/dist/primitives/PopoverAnchor.d.ts +2 -1
- package/dist/primitives/PopoverAnchor.d.ts.map +1 -0
- package/dist/primitives/PopoverAnchor.js +5 -0
- package/dist/primitives/PopoverAnchor.js.map +1 -0
- package/dist/primitives/PopoverClose.cjs +8 -0
- package/dist/primitives/PopoverClose.d.ts +2 -0
- package/dist/primitives/PopoverClose.d.ts.map +1 -0
- package/dist/primitives/PopoverClose.js +5 -0
- package/dist/primitives/PopoverClose.js.map +1 -0
- package/dist/primitives/PopoverContent.cjs +8 -0
- package/dist/primitives/PopoverContent.d.ts +2 -1
- package/dist/primitives/PopoverContent.d.ts.map +1 -0
- package/dist/primitives/PopoverContent.js +5 -0
- package/dist/primitives/PopoverContent.js.map +1 -0
- package/dist/primitives/PopoverTrigger.cjs +8 -0
- package/dist/primitives/PopoverTrigger.d.ts +2 -1
- package/dist/primitives/PopoverTrigger.d.ts.map +1 -0
- package/dist/primitives/PopoverTrigger.js +5 -0
- package/dist/primitives/PopoverTrigger.js.map +1 -0
- package/dist/primitives/Progress.cjs +8 -0
- package/dist/primitives/Progress.d.ts +2 -1
- package/dist/primitives/Progress.d.ts.map +1 -0
- package/dist/primitives/Progress.js +5 -0
- package/dist/primitives/Progress.js.map +1 -0
- package/dist/primitives/ResizableHandle.cjs +8 -0
- package/dist/primitives/ResizableHandle.d.ts +2 -0
- package/dist/primitives/ResizableHandle.d.ts.map +1 -0
- package/dist/primitives/ResizableHandle.js +5 -0
- package/dist/primitives/ResizableHandle.js.map +1 -0
- package/dist/primitives/ResizablePanel.cjs +8 -0
- package/dist/primitives/ResizablePanel.d.ts +2 -0
- package/dist/primitives/ResizablePanel.d.ts.map +1 -0
- package/dist/primitives/ResizablePanel.js +5 -0
- package/dist/primitives/ResizablePanel.js.map +1 -0
- package/dist/primitives/ResizablePanelGroup.cjs +8 -0
- package/dist/primitives/ResizablePanelGroup.d.ts +2 -0
- package/dist/primitives/ResizablePanelGroup.d.ts.map +1 -0
- package/dist/primitives/ResizablePanelGroup.js +5 -0
- package/dist/primitives/ResizablePanelGroup.js.map +1 -0
- package/dist/primitives/ScrollArea.cjs +8 -0
- package/dist/primitives/ScrollArea.d.ts +2 -1
- package/dist/primitives/ScrollArea.d.ts.map +1 -0
- package/dist/primitives/ScrollArea.js +5 -0
- package/dist/primitives/ScrollArea.js.map +1 -0
- package/dist/primitives/ScrollBar.cjs +8 -0
- package/dist/primitives/ScrollBar.d.ts +2 -1
- package/dist/primitives/ScrollBar.d.ts.map +1 -0
- package/dist/primitives/ScrollBar.js +5 -0
- package/dist/primitives/ScrollBar.js.map +1 -0
- package/dist/primitives/Select.cjs +8 -0
- package/dist/primitives/Select.d.ts +2 -1
- package/dist/primitives/Select.d.ts.map +1 -0
- package/dist/primitives/Select.js +5 -0
- package/dist/primitives/Select.js.map +1 -0
- package/dist/primitives/SelectContent.cjs +8 -0
- package/dist/primitives/SelectContent.d.ts +2 -1
- package/dist/primitives/SelectContent.d.ts.map +1 -0
- package/dist/primitives/SelectContent.js +5 -0
- package/dist/primitives/SelectContent.js.map +1 -0
- package/dist/primitives/SelectGroup.cjs +8 -0
- package/dist/primitives/SelectGroup.d.ts +2 -1
- package/dist/primitives/SelectGroup.d.ts.map +1 -0
- package/dist/primitives/SelectGroup.js +5 -0
- package/dist/primitives/SelectGroup.js.map +1 -0
- package/dist/primitives/SelectItem.cjs +8 -0
- package/dist/primitives/SelectItem.d.ts +2 -1
- package/dist/primitives/SelectItem.d.ts.map +1 -0
- package/dist/primitives/SelectItem.js +5 -0
- package/dist/primitives/SelectItem.js.map +1 -0
- package/dist/primitives/SelectLabel.cjs +8 -0
- package/dist/primitives/SelectLabel.d.ts +2 -1
- package/dist/primitives/SelectLabel.d.ts.map +1 -0
- package/dist/primitives/SelectLabel.js +5 -0
- package/dist/primitives/SelectLabel.js.map +1 -0
- package/dist/primitives/SelectScrollDownButton.cjs +8 -0
- package/dist/primitives/SelectScrollDownButton.d.ts +2 -1
- package/dist/primitives/SelectScrollDownButton.d.ts.map +1 -0
- package/dist/primitives/SelectScrollDownButton.js +5 -0
- package/dist/primitives/SelectScrollDownButton.js.map +1 -0
- package/dist/primitives/SelectScrollUpButton.cjs +8 -0
- package/dist/primitives/SelectScrollUpButton.d.ts +2 -1
- package/dist/primitives/SelectScrollUpButton.d.ts.map +1 -0
- package/dist/primitives/SelectScrollUpButton.js +5 -0
- package/dist/primitives/SelectScrollUpButton.js.map +1 -0
- package/dist/primitives/SelectSeparator.cjs +8 -0
- package/dist/primitives/SelectSeparator.d.ts +2 -1
- package/dist/primitives/SelectSeparator.d.ts.map +1 -0
- package/dist/primitives/SelectSeparator.js +5 -0
- package/dist/primitives/SelectSeparator.js.map +1 -0
- package/dist/primitives/SelectTrigger.cjs +8 -0
- package/dist/primitives/SelectTrigger.d.ts +2 -1
- package/dist/primitives/SelectTrigger.d.ts.map +1 -0
- package/dist/primitives/SelectTrigger.js +5 -0
- package/dist/primitives/SelectTrigger.js.map +1 -0
- package/dist/primitives/SelectValue.cjs +8 -0
- package/dist/primitives/SelectValue.d.ts +2 -1
- package/dist/primitives/SelectValue.d.ts.map +1 -0
- package/dist/primitives/SelectValue.js +5 -0
- package/dist/primitives/SelectValue.js.map +1 -0
- package/dist/primitives/Separator.cjs +8 -0
- package/dist/primitives/Separator.d.ts +2 -1
- package/dist/primitives/Separator.d.ts.map +1 -0
- package/dist/primitives/Separator.js +5 -0
- package/dist/primitives/Separator.js.map +1 -0
- package/dist/primitives/Slider.cjs +8 -0
- package/dist/primitives/Slider.d.ts +2 -1
- package/dist/primitives/Slider.d.ts.map +1 -0
- package/dist/primitives/Slider.js +5 -0
- package/dist/primitives/Slider.js.map +1 -0
- package/dist/primitives/Switch.cjs +8 -0
- package/dist/primitives/Switch.d.ts +2 -1
- package/dist/primitives/Switch.d.ts.map +1 -0
- package/dist/primitives/Switch.js +5 -0
- package/dist/primitives/Switch.js.map +1 -0
- package/dist/primitives/Tabs.cjs +8 -0
- package/dist/primitives/Tabs.d.ts +2 -1
- package/dist/primitives/Tabs.d.ts.map +1 -0
- package/dist/primitives/Tabs.js +5 -0
- package/dist/primitives/Tabs.js.map +1 -0
- package/dist/primitives/TabsContent.cjs +8 -0
- package/dist/primitives/TabsContent.d.ts +2 -1
- package/dist/primitives/TabsContent.d.ts.map +1 -0
- package/dist/primitives/TabsContent.js +5 -0
- package/dist/primitives/TabsContent.js.map +1 -0
- package/dist/primitives/TabsList.cjs +8 -0
- package/dist/primitives/TabsList.d.ts +2 -1
- package/dist/primitives/TabsList.d.ts.map +1 -0
- package/dist/primitives/TabsList.js +5 -0
- package/dist/primitives/TabsList.js.map +1 -0
- package/dist/primitives/TabsTrigger.cjs +8 -0
- package/dist/primitives/TabsTrigger.d.ts +2 -1
- package/dist/primitives/TabsTrigger.d.ts.map +1 -0
- package/dist/primitives/TabsTrigger.js +5 -0
- package/dist/primitives/TabsTrigger.js.map +1 -0
- package/dist/primitives/Textarea.cjs +8 -0
- package/dist/primitives/Textarea.d.ts +2 -1
- package/dist/primitives/Textarea.d.ts.map +1 -0
- package/dist/primitives/Textarea.js +5 -0
- package/dist/primitives/Textarea.js.map +1 -0
- package/dist/primitives/Toaster.cjs +8 -0
- package/dist/primitives/Toaster.d.ts +2 -1
- package/dist/primitives/Toaster.d.ts.map +1 -0
- package/dist/primitives/Toaster.js +5 -0
- package/dist/primitives/Toaster.js.map +1 -0
- package/dist/primitives/Tooltip.cjs +8 -0
- package/dist/primitives/Tooltip.d.ts +2 -1
- package/dist/primitives/Tooltip.d.ts.map +1 -0
- package/dist/primitives/Tooltip.js +5 -0
- package/dist/primitives/Tooltip.js.map +1 -0
- package/dist/primitives/TooltipContent.cjs +8 -0
- package/dist/primitives/TooltipContent.d.ts +2 -1
- package/dist/primitives/TooltipContent.d.ts.map +1 -0
- package/dist/primitives/TooltipContent.js +5 -0
- package/dist/primitives/TooltipContent.js.map +1 -0
- package/dist/primitives/TooltipProvider.cjs +8 -0
- package/dist/primitives/TooltipProvider.d.ts +2 -1
- package/dist/primitives/TooltipProvider.d.ts.map +1 -0
- package/dist/primitives/TooltipProvider.js +5 -0
- package/dist/primitives/TooltipProvider.js.map +1 -0
- package/dist/primitives/TooltipTrigger.cjs +8 -0
- package/dist/primitives/TooltipTrigger.d.ts +2 -1
- package/dist/primitives/TooltipTrigger.d.ts.map +1 -0
- package/dist/primitives/TooltipTrigger.js +5 -0
- package/dist/primitives/TooltipTrigger.js.map +1 -0
- package/dist/primitives/badgeVariants.cjs +8 -0
- package/dist/primitives/badgeVariants.d.ts +2 -1
- package/dist/primitives/badgeVariants.d.ts.map +1 -0
- package/dist/primitives/badgeVariants.js +5 -0
- package/dist/primitives/badgeVariants.js.map +1 -0
- package/dist/primitives/bases/data/index.cjs +28 -14
- package/dist/primitives/bases/data/index.d.ts +1 -0
- package/dist/primitives/bases/data/index.d.ts.map +1 -0
- package/dist/primitives/bases/data/index.js +11 -1
- package/dist/primitives/bases/data/index.js.map +1 -1
- package/dist/primitives/buttonVariants.cjs +8 -0
- package/dist/primitives/buttonVariants.d.ts +2 -1
- package/dist/primitives/buttonVariants.d.ts.map +1 -0
- package/dist/primitives/buttonVariants.js +5 -0
- package/dist/primitives/buttonVariants.js.map +1 -0
- package/dist/primitives/index.cjs +20 -0
- package/dist/primitives/index.d.ts +2 -1
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +5 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/toast.cjs +8 -0
- package/dist/primitives/toast.d.ts +2 -1
- package/dist/primitives/toast.d.ts.map +1 -0
- package/dist/primitives/toast.js +5 -0
- package/dist/primitives/toast.js.map +1 -0
- package/dist/product/AnimatedLogo.cjs +102 -0
- package/dist/product/AnimatedLogo.d.ts +2 -1
- package/dist/product/AnimatedLogo.d.ts.map +1 -0
- package/dist/product/AnimatedLogo.js +100 -0
- package/dist/product/AnimatedLogo.js.map +1 -0
- package/dist/product/AppHeader.cjs +55 -0
- package/dist/product/AppHeader.d.ts +2 -1
- package/dist/product/AppHeader.d.ts.map +1 -0
- package/dist/product/AppHeader.js +53 -0
- package/dist/product/AppHeader.js.map +1 -0
- package/dist/product/BackendState.cjs +80 -0
- package/dist/product/BackendState.d.ts +1 -0
- package/dist/product/BackendState.d.ts.map +1 -0
- package/dist/product/BackendState.js +76 -0
- package/dist/product/BackendState.js.map +1 -0
- package/dist/product/BrandMark.cjs +19 -0
- package/dist/product/BrandMark.d.ts +1 -0
- package/dist/product/BrandMark.d.ts.map +1 -0
- package/dist/product/BrandMark.js +17 -0
- package/dist/product/BrandMark.js.map +1 -0
- package/dist/product/Charts.cjs +243 -0
- package/dist/product/Charts.d.ts +1 -0
- package/dist/product/Charts.d.ts.map +1 -0
- package/dist/product/Charts.js +235 -0
- package/dist/product/Charts.js.map +1 -0
- package/dist/product/ComboBox.cjs +44 -0
- package/dist/product/ComboBox.d.ts +3 -2
- package/dist/product/ComboBox.d.ts.map +1 -0
- package/dist/product/ComboBox.js +42 -0
- package/dist/product/ComboBox.js.map +1 -0
- package/dist/product/CommerceResource.cjs +39 -0
- package/dist/product/CommerceResource.d.ts +2 -1
- package/dist/product/CommerceResource.d.ts.map +1 -0
- package/dist/product/CommerceResource.js +37 -0
- package/dist/product/CommerceResource.js.map +1 -0
- package/dist/product/ConfirmDelete.cjs +42 -0
- package/dist/product/ConfirmDelete.d.ts +1 -0
- package/dist/product/ConfirmDelete.d.ts.map +1 -0
- package/dist/product/ConfirmDelete.js +40 -0
- package/dist/product/ConfirmDelete.js.map +1 -0
- package/dist/product/DataTable.cjs +58 -0
- package/dist/product/DataTable.d.ts +1 -0
- package/dist/product/DataTable.d.ts.map +1 -0
- package/dist/product/DataTable.js +56 -0
- package/dist/product/DataTable.js.map +1 -0
- package/dist/product/Donut.cjs +25 -0
- package/dist/product/Donut.d.ts +1 -0
- package/dist/product/Donut.d.ts.map +1 -0
- package/dist/product/Donut.js +23 -0
- package/dist/product/Donut.js.map +1 -0
- package/dist/product/EmptyState.cjs +30 -0
- package/dist/product/EmptyState.d.ts +2 -1
- package/dist/product/EmptyState.d.ts.map +1 -0
- package/dist/product/EmptyState.js +28 -0
- package/dist/product/EmptyState.js.map +1 -0
- package/dist/product/FadeIn.cjs +9 -0
- package/dist/product/FadeIn.d.ts +1 -0
- package/dist/product/FadeIn.d.ts.map +1 -0
- package/dist/product/FadeIn.js +7 -0
- package/dist/product/FadeIn.js.map +1 -0
- package/dist/product/Field.cjs +111 -0
- package/dist/product/Field.d.ts +1 -0
- package/dist/product/Field.d.ts.map +1 -0
- package/dist/product/Field.js +104 -0
- package/dist/product/Field.js.map +1 -0
- package/dist/product/Filters.cjs +31 -0
- package/dist/product/Filters.d.ts +1 -0
- package/dist/product/Filters.d.ts.map +1 -0
- package/dist/product/Filters.js +28 -0
- package/dist/product/Filters.js.map +1 -0
- package/dist/product/HanzoMark.cjs +16 -0
- package/dist/product/HanzoMark.d.ts +1 -0
- package/dist/product/HanzoMark.d.ts.map +1 -0
- package/dist/product/HanzoMark.js +14 -0
- package/dist/product/HanzoMark.js.map +1 -0
- package/dist/product/Metric.cjs +96 -0
- package/dist/product/Metric.d.ts +1 -0
- package/dist/product/Metric.d.ts.map +1 -0
- package/dist/product/Metric.js +85 -0
- package/dist/product/Metric.js.map +1 -0
- package/dist/product/OrgMark.cjs +50 -0
- package/dist/product/OrgMark.d.ts +2 -1
- package/dist/product/OrgMark.d.ts.map +1 -0
- package/dist/product/OrgMark.js +47 -0
- package/dist/product/OrgMark.js.map +1 -0
- package/dist/product/OrgSwitcher.cjs +140 -0
- package/dist/product/OrgSwitcher.d.ts +2 -1
- package/dist/product/OrgSwitcher.d.ts.map +1 -0
- package/dist/product/OrgSwitcher.js +138 -0
- package/dist/product/OrgSwitcher.js.map +1 -0
- package/dist/product/PageHeader.cjs +15 -0
- package/dist/product/PageHeader.d.ts +1 -0
- package/dist/product/PageHeader.d.ts.map +1 -0
- package/dist/product/PageHeader.js +13 -0
- package/dist/product/PageHeader.js.map +1 -0
- package/dist/product/PrimaryButton.cjs +31 -0
- package/dist/product/PrimaryButton.d.ts +1 -0
- package/dist/product/PrimaryButton.d.ts.map +1 -0
- package/dist/product/PrimaryButton.js +29 -0
- package/dist/product/PrimaryButton.js.map +1 -0
- package/dist/product/ProductIcon.cjs +36 -0
- package/dist/product/ProductIcon.d.ts +2 -1
- package/dist/product/ProductIcon.d.ts.map +1 -0
- package/dist/product/ProductIcon.js +34 -0
- package/dist/product/ProductIcon.js.map +1 -0
- package/dist/product/ProviderLogo.cjs +84 -0
- package/dist/product/ProviderLogo.d.ts +1 -0
- package/dist/product/ProviderLogo.d.ts.map +1 -0
- package/dist/product/ProviderLogo.js +81 -0
- package/dist/product/ProviderLogo.js.map +1 -0
- package/dist/product/Reorder.cjs +82 -0
- package/dist/product/Reorder.d.ts +1 -0
- package/dist/product/Reorder.d.ts.map +1 -0
- package/dist/product/Reorder.js +78 -0
- package/dist/product/Reorder.js.map +1 -0
- package/dist/product/SelectMenu.cjs +19 -0
- package/dist/product/SelectMenu.d.ts +1 -0
- package/dist/product/SelectMenu.d.ts.map +1 -0
- package/dist/product/SelectMenu.js +17 -0
- package/dist/product/SelectMenu.js.map +1 -0
- package/dist/product/SiteFooter.cjs +17 -0
- package/dist/product/SiteFooter.d.ts +2 -1
- package/dist/product/SiteFooter.d.ts.map +1 -0
- package/dist/product/SiteFooter.js +15 -0
- package/dist/product/SiteFooter.js.map +1 -0
- package/dist/product/SiteNav.cjs +124 -0
- package/dist/product/SiteNav.d.ts +1 -0
- package/dist/product/SiteNav.d.ts.map +1 -0
- package/dist/product/SiteNav.js +122 -0
- package/dist/product/SiteNav.js.map +1 -0
- package/dist/product/SlideOver.cjs +129 -0
- package/dist/product/SlideOver.d.ts +2 -1
- package/dist/product/SlideOver.d.ts.map +1 -0
- package/dist/product/SlideOver.js +126 -0
- package/dist/product/SlideOver.js.map +1 -0
- package/dist/product/StatusTag.cjs +49 -0
- package/dist/product/StatusTag.d.ts +1 -0
- package/dist/product/StatusTag.d.ts.map +1 -0
- package/dist/product/StatusTag.js +47 -0
- package/dist/product/StatusTag.js.map +1 -0
- package/dist/product/ThemeToggle.cjs +120 -0
- package/dist/product/ThemeToggle.d.ts +1 -0
- package/dist/product/ThemeToggle.d.ts.map +1 -0
- package/dist/product/ThemeToggle.js +84 -0
- package/dist/product/ThemeToggle.js.map +1 -0
- package/dist/product/ThemeToggleNext.cjs +20 -0
- package/dist/product/ThemeToggleNext.d.ts +2 -1
- package/dist/product/ThemeToggleNext.d.ts.map +1 -0
- package/dist/product/ThemeToggleNext.js +19 -0
- package/dist/product/ThemeToggleNext.js.map +1 -0
- package/dist/product/Toast.cjs +90 -0
- package/dist/product/Toast.d.ts +1 -0
- package/dist/product/Toast.d.ts.map +1 -0
- package/dist/product/Toast.js +87 -0
- package/dist/product/Toast.js.map +1 -0
- package/dist/product/accent.cjs +97 -0
- package/dist/product/accent.d.ts +1 -0
- package/dist/product/accent.d.ts.map +1 -0
- package/dist/product/accent.js +90 -0
- package/dist/product/accent.js.map +1 -0
- package/dist/product/animatedLogo.logic.cjs +52 -0
- package/dist/product/animatedLogo.logic.d.ts +1 -0
- package/dist/product/animatedLogo.logic.d.ts.map +1 -0
- package/dist/product/animatedLogo.logic.js +47 -0
- package/dist/product/animatedLogo.logic.js.map +1 -0
- package/dist/product/brand.cjs +91 -0
- package/dist/product/brand.d.ts +1 -0
- package/dist/product/brand.d.ts.map +1 -0
- package/dist/product/brand.js +88 -0
- package/dist/product/brand.js.map +1 -0
- package/dist/product/color.cjs +6 -0
- package/dist/product/color.d.ts +1 -0
- package/dist/product/color.d.ts.map +1 -0
- package/dist/product/color.js +3 -0
- package/dist/product/color.js.map +1 -0
- package/dist/product/combobox/filter.cjs +31 -0
- package/dist/product/combobox/filter.d.ts +1 -0
- package/dist/product/combobox/filter.d.ts.map +1 -0
- package/dist/product/combobox/filter.js +28 -0
- package/dist/product/combobox/filter.js.map +1 -0
- package/dist/product/host.cjs +20 -0
- package/dist/product/host.d.ts +1 -0
- package/dist/product/host.d.ts.map +1 -0
- package/dist/product/host.js +16 -0
- package/dist/product/host.js.map +1 -0
- package/dist/product/index.cjs +120 -2240
- package/dist/product/index.d.ts +43 -41
- package/dist/product/index.d.ts.map +1 -0
- package/dist/product/index.js +88 -1912
- package/dist/product/index.js.map +1 -1
- package/dist/product/instrument.cjs +79 -0
- package/dist/product/instrument.d.ts +1 -0
- package/dist/product/instrument.d.ts.map +1 -0
- package/dist/product/instrument.js +72 -0
- package/dist/product/instrument.js.map +1 -0
- package/dist/product/menu/ContextMenu.cjs +26 -0
- package/dist/product/menu/ContextMenu.d.ts +2 -1
- package/dist/product/menu/ContextMenu.d.ts.map +1 -0
- package/dist/product/menu/ContextMenu.js +24 -0
- package/dist/product/menu/ContextMenu.js.map +1 -0
- package/dist/product/menu/FloatingMenu.cjs +87 -0
- package/dist/product/menu/FloatingMenu.d.ts +1 -0
- package/dist/product/menu/FloatingMenu.d.ts.map +1 -0
- package/dist/product/menu/FloatingMenu.js +85 -0
- package/dist/product/menu/FloatingMenu.js.map +1 -0
- package/dist/product/menu/index.cjs +30 -0
- package/dist/product/menu/index.d.ts +6 -5
- package/dist/product/menu/index.d.ts.map +1 -0
- package/dist/product/menu/index.js +19 -0
- package/dist/product/menu/index.js.map +1 -0
- package/dist/product/menu/items.cjs +92 -0
- package/dist/product/menu/items.d.ts +2 -1
- package/dist/product/menu/items.d.ts.map +1 -0
- package/dist/product/menu/items.js +85 -0
- package/dist/product/menu/items.js.map +1 -0
- package/dist/product/menu/portal-theme.cjs +13 -0
- package/dist/product/menu/portal-theme.d.ts +1 -0
- package/dist/product/menu/portal-theme.d.ts.map +1 -0
- package/dist/product/menu/portal-theme.js +12 -0
- package/dist/product/menu/portal-theme.js.map +1 -0
- package/dist/product/menu/roving.cjs +31 -0
- package/dist/product/menu/roving.d.ts +1 -0
- package/dist/product/menu/roving.d.ts.map +1 -0
- package/dist/product/menu/roving.js +29 -0
- package/dist/product/menu/roving.js.map +1 -0
- package/dist/product/scope.cjs +102 -0
- package/dist/product/scope.d.ts +1 -0
- package/dist/product/scope.d.ts.map +1 -0
- package/dist/product/scope.js +99 -0
- package/dist/product/scope.js.map +1 -0
- package/dist/product/social/CampaignCard.cjs +17 -0
- package/dist/product/social/CampaignCard.d.ts +1 -0
- package/dist/product/social/CampaignCard.d.ts.map +1 -0
- package/dist/product/social/CampaignCard.js +15 -0
- package/dist/product/social/CampaignCard.js.map +1 -0
- package/dist/product/social/ChannelBadge.cjs +24 -0
- package/dist/product/social/ChannelBadge.d.ts +2 -1
- package/dist/product/social/ChannelBadge.d.ts.map +1 -0
- package/dist/product/social/ChannelBadge.js +22 -0
- package/dist/product/social/ChannelBadge.js.map +1 -0
- package/dist/product/social/PostAgenda.cjs +40 -0
- package/dist/product/social/PostAgenda.d.ts +2 -1
- package/dist/product/social/PostAgenda.d.ts.map +1 -0
- package/dist/product/social/PostAgenda.js +38 -0
- package/dist/product/social/PostAgenda.js.map +1 -0
- package/dist/product/social/PostCard.cjs +19 -0
- package/dist/product/social/PostCard.d.ts +2 -1
- package/dist/product/social/PostCard.d.ts.map +1 -0
- package/dist/product/social/PostCard.js +17 -0
- package/dist/product/social/PostCard.js.map +1 -0
- package/dist/product/social/PostComposer.cjs +64 -0
- package/dist/product/social/PostComposer.d.ts +2 -1
- package/dist/product/social/PostComposer.d.ts.map +1 -0
- package/dist/product/social/PostComposer.js +61 -0
- package/dist/product/social/PostComposer.js.map +1 -0
- package/dist/product/social/ProviderReadinessList.cjs +16 -0
- package/dist/product/social/ProviderReadinessList.d.ts +2 -1
- package/dist/product/social/ProviderReadinessList.d.ts.map +1 -0
- package/dist/product/social/ProviderReadinessList.js +14 -0
- package/dist/product/social/ProviderReadinessList.js.map +1 -0
- package/dist/product/social/SocialResource.cjs +147 -0
- package/dist/product/social/SocialResource.d.ts +2 -1
- package/dist/product/social/SocialResource.d.ts.map +1 -0
- package/dist/product/social/SocialResource.js +145 -0
- package/dist/product/social/SocialResource.js.map +1 -0
- package/dist/product/social/SocialSummaryBar.cjs +20 -0
- package/dist/product/social/SocialSummaryBar.d.ts +2 -1
- package/dist/product/social/SocialSummaryBar.d.ts.map +1 -0
- package/dist/product/social/SocialSummaryBar.js +18 -0
- package/dist/product/social/SocialSummaryBar.js.map +1 -0
- package/dist/product/social/ViewToggle.cjs +23 -0
- package/dist/product/social/ViewToggle.d.ts +1 -0
- package/dist/product/social/ViewToggle.d.ts.map +1 -0
- package/dist/product/social/ViewToggle.js +21 -0
- package/dist/product/social/ViewToggle.js.map +1 -0
- package/dist/product/social/api.cjs +137 -52
- package/dist/product/social/api.d.ts +1 -0
- package/dist/product/social/api.d.ts.map +1 -0
- package/dist/product/social/api.js +126 -2
- package/dist/product/social/api.js.map +1 -1
- package/dist/product/social/format.cjs +39 -0
- package/dist/product/social/format.d.ts +1 -0
- package/dist/product/social/format.d.ts.map +1 -0
- package/dist/product/social/format.js +34 -0
- package/dist/product/social/format.js.map +1 -0
- package/dist/product/social/index.cjs +38 -111
- package/dist/product/social/index.d.ts +12 -11
- package/dist/product/social/index.d.ts.map +1 -0
- package/dist/product/social/index.js +22 -5
- package/dist/product/social/index.js.map +1 -1
- package/dist/product/surfaces.data.cjs +25 -0
- package/dist/product/surfaces.data.d.ts +1 -0
- package/dist/product/surfaces.data.d.ts.map +1 -0
- package/dist/product/surfaces.data.js +22 -0
- package/dist/product/surfaces.data.js.map +1 -0
- package/dist/styles/hanzo-motion.css +188 -0
- package/dist/telemetry.cjs +31 -14
- package/dist/telemetry.d.ts +1 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +14 -1
- package/dist/telemetry.js.map +1 -1
- package/dist/theme.css +185 -0
- package/dist/usage.cjs +24 -14
- package/dist/usage.d.ts +1 -0
- package/dist/usage.d.ts.map +1 -0
- package/dist/usage.js +7 -1
- package/dist/usage.js.map +1 -1
- package/package.json +35 -78
- package/dist/ThemeToggleNext-AEDLHX5X.js +0 -4
- package/dist/ThemeToggleNext-AEDLHX5X.js.map +0 -1
- package/dist/ThemeToggleNext-N6ASYJ6J.cjs +0 -19
- package/dist/ThemeToggleNext-N6ASYJ6J.cjs.map +0 -1
- package/dist/backends/shadcn/aspect-ratio.d.ts +0 -4
- package/dist/backends/shadcn/avatar.d.ts +0 -6
- package/dist/backends/shadcn/badge.d.ts +0 -9
- package/dist/backends/shadcn/button.d.ts +0 -19
- package/dist/backends/shadcn/card.d.ts +0 -9
- package/dist/backends/shadcn/checkbox.d.ts +0 -9
- package/dist/backends/shadcn/collapsible.d.ts +0 -5
- package/dist/backends/shadcn/command.d.ts +0 -80
- package/dist/backends/shadcn/dialog.d.ts +0 -15
- package/dist/backends/shadcn/dropdown-menu.d.ts +0 -34
- package/dist/backends/shadcn/index.d.ts +0 -23
- package/dist/backends/shadcn/input.d.ts +0 -11
- package/dist/backends/shadcn/label.d.ts +0 -4
- package/dist/backends/shadcn/popover.d.ts +0 -7
- package/dist/backends/shadcn/progress.d.ts +0 -4
- package/dist/backends/shadcn/scroll-area.d.ts +0 -5
- package/dist/backends/shadcn/select.d.ts +0 -13
- package/dist/backends/shadcn/separator.d.ts +0 -4
- package/dist/backends/shadcn/slider.d.ts +0 -4
- package/dist/backends/shadcn/switch.d.ts +0 -4
- package/dist/backends/shadcn/tabs.d.ts +0 -7
- package/dist/backends/shadcn/textarea.d.ts +0 -4
- package/dist/backends/shadcn/toaster.d.ts +0 -10
- package/dist/backends/shadcn/tooltip.d.ts +0 -7
- package/dist/backends/shadcn/utils.d.ts +0 -8
- package/dist/billing.cjs +0 -14
- package/dist/billing.cjs.map +0 -1
- package/dist/billing.d.ts +0 -1
- package/dist/billing.js +0 -3
- package/dist/billing.js.map +0 -1
- package/dist/canvas.cjs.map +0 -1
- package/dist/chunk-3NG33DV2.cjs +0 -606
- package/dist/chunk-3NG33DV2.cjs.map +0 -1
- package/dist/chunk-5CZOYONP.js +0 -342
- package/dist/chunk-5CZOYONP.js.map +0 -1
- package/dist/chunk-77AMCLN4.js +0 -99
- package/dist/chunk-77AMCLN4.js.map +0 -1
- package/dist/chunk-7XDEUEWI.cjs +0 -43
- package/dist/chunk-7XDEUEWI.cjs.map +0 -1
- package/dist/chunk-7ZNK6JSS.js +0 -830
- package/dist/chunk-7ZNK6JSS.js.map +0 -1
- package/dist/chunk-ARV3P4CE.cjs +0 -104
- package/dist/chunk-ARV3P4CE.cjs.map +0 -1
- package/dist/chunk-FVQXROBK.js +0 -36
- package/dist/chunk-FVQXROBK.js.map +0 -1
- package/dist/chunk-GVCOAJLO.js +0 -396
- package/dist/chunk-GVCOAJLO.js.map +0 -1
- package/dist/chunk-GWNNLYX4.cjs +0 -352
- package/dist/chunk-GWNNLYX4.cjs.map +0 -1
- package/dist/chunk-MWBFAV3D.cjs +0 -104
- package/dist/chunk-MWBFAV3D.cjs.map +0 -1
- package/dist/chunk-ONVERVFG.cjs +0 -850
- package/dist/chunk-ONVERVFG.cjs.map +0 -1
- package/dist/chunk-P2QU5MN5.js +0 -554
- package/dist/chunk-P2QU5MN5.js.map +0 -1
- package/dist/chunk-WHJR5S4L.cjs +0 -417
- package/dist/chunk-WHJR5S4L.cjs.map +0 -1
- package/dist/chunk-ZGTJCJ55.js +0 -92
- package/dist/chunk-ZGTJCJ55.js.map +0 -1
- package/dist/components.d.ts +0 -1
- package/dist/dashboard.cjs.map +0 -1
- package/dist/data.cjs.map +0 -1
- package/dist/framework/core.cjs.map +0 -1
- package/dist/framework/index.cjs.map +0 -1
- package/dist/gitops.cjs.map +0 -1
- package/dist/gui-config.cjs.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/network.cjs +0 -14
- package/dist/network.cjs.map +0 -1
- package/dist/network.d.ts +0 -1
- package/dist/network.js +0 -3
- package/dist/network.js.map +0 -1
- package/dist/oss.cjs.map +0 -1
- package/dist/primitives/bases/data/index.cjs.map +0 -1
- package/dist/product/index.cjs.map +0 -1
- package/dist/product/menu/DropdownMenu.d.ts +0 -29
- package/dist/product/social/api.cjs.map +0 -1
- package/dist/product/social/index.cjs.map +0 -1
- package/dist/telemetry.cjs.map +0 -1
- package/dist/usage.cjs.map +0 -1
- package/dist/wallet.cjs +0 -14
- package/dist/wallet.cjs.map +0 -1
- package/dist/wallet.d.ts +0 -1
- package/dist/wallet.js +0 -3
- package/dist/wallet.js.map +0 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DocTypeRecords = DocTypeRecords;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* DocTypeRecords — the documents surface for ONE framework DocType, driven
|
|
8
|
+
* ENTIRELY by DocType metadata. It loads the schema (→ @hanzo/data
|
|
9
|
+
* `FieldDefinition[]` via `docTypeToFields`), the documents, and each relation's
|
|
10
|
+
* candidate records, then renders them in the shape the CONTAINER can actually
|
|
11
|
+
* hold. Every field type shows the right Display/Input with ZERO per-doctype code,
|
|
12
|
+
* so a CMS Page, an ERP Invoice, or a Helpdesk Ticket all render here.
|
|
13
|
+
*
|
|
14
|
+
* MOBILE FIRST — the layout is a decision, not a media query afterthought:
|
|
15
|
+
* · phone → `RecordCards`, a stacked card per record. A table of 12 columns on
|
|
16
|
+
* a 390px screen is a sideways drag; a card is a read.
|
|
17
|
+
* · desktop → @hanzo/data's `RecordsView` (table ⇆ board, filter/sort/group,
|
|
18
|
+
* inline cell editing).
|
|
19
|
+
* The first paint is ALWAYS the card list (see `responsive.ts`), and the table is
|
|
20
|
+
* the enhancement applied once the box measures wide enough.
|
|
21
|
+
*
|
|
22
|
+
* The table also finally honors the DocType's OWN column projection
|
|
23
|
+
* (`listHiddenFields` → `inListView`): a Sales Order that declares 4 list columns
|
|
24
|
+
* out of 12 fields now renders 4. That projection was implemented and tested but
|
|
25
|
+
* never passed to a view — which is exactly why the grid was unusable narrow.
|
|
26
|
+
*
|
|
27
|
+
* Persistence is REAL: an inline cell edit sends the FULL record (the engine
|
|
28
|
+
* validates the whole document on update) via `savePayload`, and reflects the
|
|
29
|
+
* server's row. States are honest — loading / empty / backend-error, never a
|
|
30
|
+
* fabricated row.
|
|
31
|
+
*/
|
|
32
|
+
const react_1 = require("react");
|
|
33
|
+
const gui_1 = require("@hanzo/gui");
|
|
34
|
+
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
35
|
+
const data_1 = require("@hanzo/data");
|
|
36
|
+
const BackendState_1 = require("../product/BackendState.cjs");
|
|
37
|
+
const fields_1 = require("./fields.cjs");
|
|
38
|
+
const data_2 = require("./data.cjs");
|
|
39
|
+
const MediaGrid_1 = require("./MediaGrid.cjs");
|
|
40
|
+
const RecordCards_1 = require("./RecordCards.cjs");
|
|
41
|
+
const parts_1 = require("./parts.cjs");
|
|
42
|
+
const responsive_1 = require("./responsive.cjs");
|
|
43
|
+
function DocTypeRecords({ client, doctype, onOpen, onCreate, project, title, media, renderMedia, limit = 200, }) {
|
|
44
|
+
const [state, setState] = (0, react_1.useState)({ phase: 'loading' });
|
|
45
|
+
const [mutationError, setMutationError] = (0, react_1.useState)(null);
|
|
46
|
+
const { phone, onLayout } = (0, responsive_1.useContainerLayout)();
|
|
47
|
+
const load = (0, react_1.useCallback)(async (signal) => {
|
|
48
|
+
setState({ phase: 'loading' });
|
|
49
|
+
try {
|
|
50
|
+
const dt = await client.doctypes.get(doctype);
|
|
51
|
+
const linkOptions = await (0, data_2.loadLinkOptions)(client, dt);
|
|
52
|
+
// Scope the list to the selected project ONLY when the collection declares
|
|
53
|
+
// a `project` field (the engine 400s a filter on an unknown field). No
|
|
54
|
+
// project selected, or a collection without the field → org-level list.
|
|
55
|
+
const filters = project && (0, fields_1.hasProjectField)(dt) ? { [fields_1.PROJECT_FIELD]: project } : undefined;
|
|
56
|
+
const docs = await client.records.list(doctype, { limit, ...(filters ? { filters } : {}) });
|
|
57
|
+
if (signal.cancelled)
|
|
58
|
+
return;
|
|
59
|
+
const records = docs.map((d) => (0, fields_1.enrichLinks)((0, fields_1.toRecord)(d, dt), dt, linkOptions));
|
|
60
|
+
setState({ phase: 'ready', dt, fields: (0, fields_1.docTypeToFields)(dt), docs, records, linkOptions });
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
if (!signal.cancelled)
|
|
64
|
+
setState({ phase: 'error', error: (0, BackendState_1.classifyBackend)(e) });
|
|
65
|
+
}
|
|
66
|
+
}, [client, doctype, project, limit]);
|
|
67
|
+
(0, react_1.useEffect)(() => {
|
|
68
|
+
const signal = { cancelled: false };
|
|
69
|
+
void load(signal);
|
|
70
|
+
return () => {
|
|
71
|
+
signal.cancelled = true;
|
|
72
|
+
};
|
|
73
|
+
}, [load]);
|
|
74
|
+
const reload = (0, react_1.useCallback)(() => void load({ cancelled: false }), [load]);
|
|
75
|
+
const ready = state.phase === 'ready' ? state : undefined;
|
|
76
|
+
const fieldOptions = (0, react_1.useMemo)(() => (ready ? (0, data_2.makeFieldOptions)(ready.linkOptions) : undefined), [ready]);
|
|
77
|
+
/**
|
|
78
|
+
* The table view starts from the DocType's own column projection. Controlled,
|
|
79
|
+
* because a host that later persists saved views hands one in — but the DEFAULT
|
|
80
|
+
* is the schema's answer, not "every field".
|
|
81
|
+
*/
|
|
82
|
+
const [view, setView] = (0, react_1.useState)(undefined);
|
|
83
|
+
const dtName = ready?.dt.name;
|
|
84
|
+
(0, react_1.useEffect)(() => {
|
|
85
|
+
if (!ready)
|
|
86
|
+
return;
|
|
87
|
+
setView({
|
|
88
|
+
id: `doctype:${ready.dt.name}`,
|
|
89
|
+
name: ready.dt.name,
|
|
90
|
+
kind: 'table',
|
|
91
|
+
filters: [],
|
|
92
|
+
sorts: [],
|
|
93
|
+
hiddenFields: (0, fields_1.listHiddenFields)(ready.dt),
|
|
94
|
+
});
|
|
95
|
+
// Re-seed only when the DocType changes; user edits to the view persist.
|
|
96
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
97
|
+
}, [dtName]);
|
|
98
|
+
const cards = (0, react_1.useMemo)(() => (ready ? (0, fields_1.cardFields)(ready.dt, ready.fields) : []), [ready]);
|
|
99
|
+
/** Persist ONE inline edit. The engine validates the whole document on update,
|
|
100
|
+
* so send the full record with the cell change merged in (never a partial body). */
|
|
101
|
+
const onEditCommit = (0, react_1.useCallback)(async (record, field, value) => {
|
|
102
|
+
if (state.phase !== 'ready')
|
|
103
|
+
return;
|
|
104
|
+
const name = typeof record.name === 'string' ? record.name : '';
|
|
105
|
+
if (!name)
|
|
106
|
+
return;
|
|
107
|
+
setMutationError(null);
|
|
108
|
+
try {
|
|
109
|
+
const body = (0, fields_1.savePayload)({ ...record, [field.name]: value }, state.dt);
|
|
110
|
+
const saved = await client.records.update(doctype, name, body);
|
|
111
|
+
const next = (0, fields_1.enrichLinks)((0, fields_1.toRecord)(saved, state.dt), state.dt, state.linkOptions);
|
|
112
|
+
setState((s) => (s.phase === 'ready' ? { ...s, records: s.records.map((r) => (r.name === name ? next : r)) } : s));
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
setMutationError((0, BackendState_1.classifyBackend)(e).message);
|
|
116
|
+
throw e; // let the board revert its optimistic move
|
|
117
|
+
}
|
|
118
|
+
}, [client, doctype, state]);
|
|
119
|
+
if (state.phase === 'error') {
|
|
120
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { onLayout: onLayout, width: "100%", children: (0, jsx_runtime_1.jsx)(BackendState_1.BackendStateCard, { state: state.error, onRetry: reload, hint: `framework · GET /v1/framework/${doctype}` }) }));
|
|
121
|
+
}
|
|
122
|
+
const refresh = phone ? ((0, jsx_runtime_1.jsx)(parts_1.Action, { phone: true, icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.RefreshCw, { size: 15 }), onPress: reload, children: "Refresh" })) : ((0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$2", minH: responsive_1.TAP - 12, icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.RefreshCw, { size: 15 }), onPress: reload, children: "Refresh" }));
|
|
123
|
+
// A media/asset library (a required Attach) gets the DAM gallery instead of the
|
|
124
|
+
// record views — real upload to the host's object storage + presigned thumbnails.
|
|
125
|
+
if (ready && (media || renderMedia) && (0, fields_1.isMediaDoctype)(ready.dt)) {
|
|
126
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { onLayout: onLayout, width: "100%", children: renderMedia ? (renderMedia({ dt: ready.dt, docs: ready.docs, onOpen, onChanged: reload, toolbarExtra: refresh })) : ((0, jsx_runtime_1.jsx)(MediaGrid_1.MediaGrid, { client: client, dt: ready.dt, docs: ready.docs, media: media, onOpen: onOpen, onChanged: reload, toolbarExtra: refresh })) }));
|
|
127
|
+
}
|
|
128
|
+
const openByKey = (r) => onOpen(String(r.name ?? r.id ?? ''));
|
|
129
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { onLayout: onLayout, gap: "$3", width: "100%", children: [mutationError ? (0, jsx_runtime_1.jsx)(parts_1.ErrorBar, { message: mutationError }) : null, phone ? ((0, jsx_runtime_1.jsx)(RecordCards_1.RecordCards, { titleField: ready?.dt.titleField, fields: ready?.fields ?? [], cardFields: cards, records: ready?.records ?? [], loading: state.phase === 'loading', empty: `No records in ${doctype} yet.`, onOpen: openByKey, onCreate: onCreate, toolbarExtra: refresh })) : ((0, jsx_runtime_1.jsx)(gui_1.YStack, { testID: "doctype-table", width: "100%", children: (0, jsx_runtime_1.jsx)(data_1.RecordsView, { title: title, fields: ready?.fields ?? [], records: ready?.records ?? [], loading: state.phase === 'loading', view: view, onViewChange: setView, onOpen: openByKey, onCreate: onCreate, createLabel: "New record", onEditCommit: onEditCommit, fieldOptions: fieldOptions, toolbarExtra: refresh, titleField: ready?.dt.titleField, empty: `No records in ${doctype} yet.` }) }))] }));
|
|
130
|
+
}
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
* fabricated row.
|
|
26
26
|
*/
|
|
27
27
|
import { type ReactNode } from 'react';
|
|
28
|
-
import type { FrameworkClient } from './client';
|
|
29
|
-
import type { DocType, FrameworkDoc } from './types';
|
|
30
|
-
import type { MediaUploader } from './media';
|
|
28
|
+
import type { FrameworkClient } from './client.js';
|
|
29
|
+
import type { DocType, FrameworkDoc } from './types.js';
|
|
30
|
+
import type { MediaUploader } from './media.js';
|
|
31
31
|
export interface DocTypeRecordsProps {
|
|
32
32
|
client: FrameworkClient;
|
|
33
33
|
/** DocType name to render. */
|
|
@@ -61,3 +61,4 @@ export interface DocTypeRecordsProps {
|
|
|
61
61
|
limit?: number;
|
|
62
62
|
}
|
|
63
63
|
export declare function DocTypeRecords({ client, doctype, onOpen, onCreate, project, title, media, renderMedia, limit, }: DocTypeRecordsProps): import("react/jsx-runtime").JSX.Element;
|
|
64
|
+
//# sourceMappingURL=DocTypeRecords.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocTypeRecords.d.ts","sourceRoot":"","sources":["../../src/framework/DocTypeRecords.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAMjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAiBpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAc5C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,eAAe,CAAA;IACvB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,mDAAmD;IACnD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,iCAAiC;IACjC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,yFAAyF;IACzF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE;QAChB,EAAE,EAAE,OAAO,CAAA;QACX,IAAI,EAAE,YAAY,EAAE,CAAA;QACpB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;QAC9B,SAAS,EAAE,MAAM,IAAI,CAAA;QACrB,YAAY,EAAE,SAAS,CAAA;KACxB,KAAK,SAAS,CAAA;IACf,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,WAAW,EACX,KAAW,GACZ,EAAE,mBAAmB,2CA2KrB"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* DocTypeRecords — the documents surface for ONE framework DocType, driven
|
|
5
|
+
* ENTIRELY by DocType metadata. It loads the schema (→ @hanzo/data
|
|
6
|
+
* `FieldDefinition[]` via `docTypeToFields`), the documents, and each relation's
|
|
7
|
+
* candidate records, then renders them in the shape the CONTAINER can actually
|
|
8
|
+
* hold. Every field type shows the right Display/Input with ZERO per-doctype code,
|
|
9
|
+
* so a CMS Page, an ERP Invoice, or a Helpdesk Ticket all render here.
|
|
10
|
+
*
|
|
11
|
+
* MOBILE FIRST — the layout is a decision, not a media query afterthought:
|
|
12
|
+
* · phone → `RecordCards`, a stacked card per record. A table of 12 columns on
|
|
13
|
+
* a 390px screen is a sideways drag; a card is a read.
|
|
14
|
+
* · desktop → @hanzo/data's `RecordsView` (table ⇆ board, filter/sort/group,
|
|
15
|
+
* inline cell editing).
|
|
16
|
+
* The first paint is ALWAYS the card list (see `responsive.ts`), and the table is
|
|
17
|
+
* the enhancement applied once the box measures wide enough.
|
|
18
|
+
*
|
|
19
|
+
* The table also finally honors the DocType's OWN column projection
|
|
20
|
+
* (`listHiddenFields` → `inListView`): a Sales Order that declares 4 list columns
|
|
21
|
+
* out of 12 fields now renders 4. That projection was implemented and tested but
|
|
22
|
+
* never passed to a view — which is exactly why the grid was unusable narrow.
|
|
23
|
+
*
|
|
24
|
+
* Persistence is REAL: an inline cell edit sends the FULL record (the engine
|
|
25
|
+
* validates the whole document on update) via `savePayload`, and reflects the
|
|
26
|
+
* server's row. States are honest — loading / empty / backend-error, never a
|
|
27
|
+
* fabricated row.
|
|
28
|
+
*/
|
|
29
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
30
|
+
import { Button, YStack } from '@hanzo/gui';
|
|
31
|
+
import { RefreshCw } from '@hanzogui/lucide-icons-2';
|
|
32
|
+
import { RecordsView } from '@hanzo/data';
|
|
33
|
+
import { BackendStateCard, classifyBackend } from '../product/BackendState.js';
|
|
34
|
+
import { cardFields as pickCardFields, docTypeToFields, enrichLinks, hasProjectField, isMediaDoctype, listHiddenFields, PROJECT_FIELD, savePayload, toRecord, } from './fields.js';
|
|
35
|
+
import { loadLinkOptions, makeFieldOptions } from './data.js';
|
|
36
|
+
import { MediaGrid } from './MediaGrid.js';
|
|
37
|
+
import { RecordCards } from './RecordCards.js';
|
|
38
|
+
import { Action, ErrorBar } from './parts.js';
|
|
39
|
+
import { useContainerLayout, TAP } from './responsive.js';
|
|
40
|
+
export function DocTypeRecords({ client, doctype, onOpen, onCreate, project, title, media, renderMedia, limit = 200, }) {
|
|
41
|
+
const [state, setState] = useState({ phase: 'loading' });
|
|
42
|
+
const [mutationError, setMutationError] = useState(null);
|
|
43
|
+
const { phone, onLayout } = useContainerLayout();
|
|
44
|
+
const load = useCallback(async (signal) => {
|
|
45
|
+
setState({ phase: 'loading' });
|
|
46
|
+
try {
|
|
47
|
+
const dt = await client.doctypes.get(doctype);
|
|
48
|
+
const linkOptions = await loadLinkOptions(client, dt);
|
|
49
|
+
// Scope the list to the selected project ONLY when the collection declares
|
|
50
|
+
// a `project` field (the engine 400s a filter on an unknown field). No
|
|
51
|
+
// project selected, or a collection without the field → org-level list.
|
|
52
|
+
const filters = project && hasProjectField(dt) ? { [PROJECT_FIELD]: project } : undefined;
|
|
53
|
+
const docs = await client.records.list(doctype, { limit, ...(filters ? { filters } : {}) });
|
|
54
|
+
if (signal.cancelled)
|
|
55
|
+
return;
|
|
56
|
+
const records = docs.map((d) => enrichLinks(toRecord(d, dt), dt, linkOptions));
|
|
57
|
+
setState({ phase: 'ready', dt, fields: docTypeToFields(dt), docs, records, linkOptions });
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
if (!signal.cancelled)
|
|
61
|
+
setState({ phase: 'error', error: classifyBackend(e) });
|
|
62
|
+
}
|
|
63
|
+
}, [client, doctype, project, limit]);
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
const signal = { cancelled: false };
|
|
66
|
+
void load(signal);
|
|
67
|
+
return () => {
|
|
68
|
+
signal.cancelled = true;
|
|
69
|
+
};
|
|
70
|
+
}, [load]);
|
|
71
|
+
const reload = useCallback(() => void load({ cancelled: false }), [load]);
|
|
72
|
+
const ready = state.phase === 'ready' ? state : undefined;
|
|
73
|
+
const fieldOptions = useMemo(() => (ready ? makeFieldOptions(ready.linkOptions) : undefined), [ready]);
|
|
74
|
+
/**
|
|
75
|
+
* The table view starts from the DocType's own column projection. Controlled,
|
|
76
|
+
* because a host that later persists saved views hands one in — but the DEFAULT
|
|
77
|
+
* is the schema's answer, not "every field".
|
|
78
|
+
*/
|
|
79
|
+
const [view, setView] = useState(undefined);
|
|
80
|
+
const dtName = ready?.dt.name;
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
if (!ready)
|
|
83
|
+
return;
|
|
84
|
+
setView({
|
|
85
|
+
id: `doctype:${ready.dt.name}`,
|
|
86
|
+
name: ready.dt.name,
|
|
87
|
+
kind: 'table',
|
|
88
|
+
filters: [],
|
|
89
|
+
sorts: [],
|
|
90
|
+
hiddenFields: listHiddenFields(ready.dt),
|
|
91
|
+
});
|
|
92
|
+
// Re-seed only when the DocType changes; user edits to the view persist.
|
|
93
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
94
|
+
}, [dtName]);
|
|
95
|
+
const cards = useMemo(() => (ready ? pickCardFields(ready.dt, ready.fields) : []), [ready]);
|
|
96
|
+
/** Persist ONE inline edit. The engine validates the whole document on update,
|
|
97
|
+
* so send the full record with the cell change merged in (never a partial body). */
|
|
98
|
+
const onEditCommit = useCallback(async (record, field, value) => {
|
|
99
|
+
if (state.phase !== 'ready')
|
|
100
|
+
return;
|
|
101
|
+
const name = typeof record.name === 'string' ? record.name : '';
|
|
102
|
+
if (!name)
|
|
103
|
+
return;
|
|
104
|
+
setMutationError(null);
|
|
105
|
+
try {
|
|
106
|
+
const body = savePayload({ ...record, [field.name]: value }, state.dt);
|
|
107
|
+
const saved = await client.records.update(doctype, name, body);
|
|
108
|
+
const next = enrichLinks(toRecord(saved, state.dt), state.dt, state.linkOptions);
|
|
109
|
+
setState((s) => (s.phase === 'ready' ? { ...s, records: s.records.map((r) => (r.name === name ? next : r)) } : s));
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
setMutationError(classifyBackend(e).message);
|
|
113
|
+
throw e; // let the board revert its optimistic move
|
|
114
|
+
}
|
|
115
|
+
}, [client, doctype, state]);
|
|
116
|
+
if (state.phase === 'error') {
|
|
117
|
+
return (_jsx(YStack, { onLayout: onLayout, width: "100%", children: _jsx(BackendStateCard, { state: state.error, onRetry: reload, hint: `framework · GET /v1/framework/${doctype}` }) }));
|
|
118
|
+
}
|
|
119
|
+
const refresh = phone ? (_jsx(Action, { phone: true, icon: _jsx(RefreshCw, { size: 15 }), onPress: reload, children: "Refresh" })) : (_jsx(Button, { size: "$2", minH: TAP - 12, icon: _jsx(RefreshCw, { size: 15 }), onPress: reload, children: "Refresh" }));
|
|
120
|
+
// A media/asset library (a required Attach) gets the DAM gallery instead of the
|
|
121
|
+
// record views — real upload to the host's object storage + presigned thumbnails.
|
|
122
|
+
if (ready && (media || renderMedia) && isMediaDoctype(ready.dt)) {
|
|
123
|
+
return (_jsx(YStack, { onLayout: onLayout, width: "100%", children: renderMedia ? (renderMedia({ dt: ready.dt, docs: ready.docs, onOpen, onChanged: reload, toolbarExtra: refresh })) : (_jsx(MediaGrid, { client: client, dt: ready.dt, docs: ready.docs, media: media, onOpen: onOpen, onChanged: reload, toolbarExtra: refresh })) }));
|
|
124
|
+
}
|
|
125
|
+
const openByKey = (r) => onOpen(String(r.name ?? r.id ?? ''));
|
|
126
|
+
return (_jsxs(YStack, { onLayout: onLayout, gap: "$3", width: "100%", children: [mutationError ? _jsx(ErrorBar, { message: mutationError }) : null, phone ? (_jsx(RecordCards, { titleField: ready?.dt.titleField, fields: ready?.fields ?? [], cardFields: cards, records: ready?.records ?? [], loading: state.phase === 'loading', empty: `No records in ${doctype} yet.`, onOpen: openByKey, onCreate: onCreate, toolbarExtra: refresh })) : (_jsx(YStack, { testID: "doctype-table", width: "100%", children: _jsx(RecordsView, { title: title, fields: ready?.fields ?? [], records: ready?.records ?? [], loading: state.phase === 'loading', view: view, onViewChange: setView, onOpen: openByKey, onCreate: onCreate, createLabel: "New record", onEditCommit: onEditCommit, fieldOptions: fieldOptions, toolbarExtra: refresh, titleField: ready?.dt.titleField, empty: `No records in ${doctype} yet.` }) }))] }));
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=DocTypeRecords.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocTypeRecords.js","sourceRoot":"","sources":["../../src/framework/DocTypeRecords.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.MediaGrid = MediaGrid;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* MediaGrid — the DAM (media library) for a media DocType (an Attach-backed
|
|
8
|
+
* collection). A REAL asset manager: drag/drop or pick files → they upload through
|
|
9
|
+
* the injected `MediaUploader` (the host's own per-org object store) → a document
|
|
10
|
+
* is created from the DocType's OWN schema → the grid shows a live thumbnail
|
|
11
|
+
* (presigned on view, since object URLs are short-lived). Delete removes the
|
|
12
|
+
* document AND the object.
|
|
13
|
+
*
|
|
14
|
+
* The document body is `mediaDocPayload(dt, facts)` — metadata-driven. This used
|
|
15
|
+
* to write a hardcoded `{title, file, mime, size, width, height}`, which is the
|
|
16
|
+
* CMS Media fixture's schema: a lane whose media type labels its rows `caption`
|
|
17
|
+
* got untitled rows, silently, because the engine drops unknown keys. Now the
|
|
18
|
+
* filename lands on the DocType's declared title field and each fact is written
|
|
19
|
+
* only if that DocType has somewhere to put it.
|
|
20
|
+
*
|
|
21
|
+
* MOBILE FIRST: tiles are flex-basis, not a fixed 200px — two-up on a phone,
|
|
22
|
+
* filling whatever the box gives on a desktop. The upload control is a full-width
|
|
23
|
+
* tap target on a phone, and the per-tile delete is a 44px control rather than a
|
|
24
|
+
* 13px glyph.
|
|
25
|
+
*
|
|
26
|
+
* Web-first by nature (file picker + drag/drop + `<img>` thumbnails), like the
|
|
27
|
+
* other file-touching components in this layer.
|
|
28
|
+
*/
|
|
29
|
+
const react_1 = require("react");
|
|
30
|
+
const gui_1 = require("@hanzo/gui");
|
|
31
|
+
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
32
|
+
const EmptyState_1 = require("../product/EmptyState.cjs");
|
|
33
|
+
const BackendState_1 = require("../product/BackendState.cjs");
|
|
34
|
+
const fields_1 = require("./fields.cjs");
|
|
35
|
+
const media_1 = require("./media.cjs");
|
|
36
|
+
const parts_1 = require("./parts.cjs");
|
|
37
|
+
const responsive_1 = require("./responsive.cjs");
|
|
38
|
+
function MediaGrid({ client, dt, docs, media, onOpen, onChanged, toolbarExtra, accept = 'image/*,application/pdf,video/*,audio/*', }) {
|
|
39
|
+
const fileField = (0, fields_1.mediaFileField)(dt);
|
|
40
|
+
const inputRef = (0, react_1.useRef)(null);
|
|
41
|
+
const [busy, setBusy] = (0, react_1.useState)(false);
|
|
42
|
+
const [progress, setProgress] = (0, react_1.useState)(null);
|
|
43
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
44
|
+
const { phone, onLayout } = (0, responsive_1.useContainerLayout)();
|
|
45
|
+
const upload = (0, react_1.useCallback)(async (files) => {
|
|
46
|
+
const list = Array.from(files);
|
|
47
|
+
if (list.length === 0)
|
|
48
|
+
return;
|
|
49
|
+
setBusy(true);
|
|
50
|
+
setError(null);
|
|
51
|
+
setProgress({ done: 0, total: list.length });
|
|
52
|
+
try {
|
|
53
|
+
for (let i = 0; i < list.length; i += 1) {
|
|
54
|
+
const facts = await media.upload(list[i]);
|
|
55
|
+
await client.records.create(dt.name, (0, fields_1.mediaDocPayload)(dt, facts));
|
|
56
|
+
setProgress({ done: i + 1, total: list.length });
|
|
57
|
+
}
|
|
58
|
+
onChanged();
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
setError((0, BackendState_1.classifyBackend)(e).message);
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
setBusy(false);
|
|
65
|
+
setProgress(null);
|
|
66
|
+
}
|
|
67
|
+
}, [client, dt, media, onChanged]);
|
|
68
|
+
const pick = () => inputRef.current?.click();
|
|
69
|
+
const onInput = (e) => {
|
|
70
|
+
if (e.target.files)
|
|
71
|
+
void upload(e.target.files);
|
|
72
|
+
e.target.value = ''; // allow re-selecting the same file
|
|
73
|
+
};
|
|
74
|
+
const HiddenInput = ((0, jsx_runtime_1.jsx)("input", { ref: inputRef, type: "file", multiple: true, accept: accept, style: { display: 'none' }, onChange: onInput }));
|
|
75
|
+
const uploadLabel = busy ? (progress ? `Uploading ${progress.done}/${progress.total}…` : 'Uploading…') : 'Upload';
|
|
76
|
+
if (docs.length === 0) {
|
|
77
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { onLayout: onLayout, gap: "$3", width: "100%", children: [HiddenInput, toolbarExtra ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { justify: phone ? 'flex-start' : 'flex-end', gap: "$2", width: "100%", children: toolbarExtra })) : null, error ? (0, jsx_runtime_1.jsx)(parts_1.ErrorBar, { message: error }) : null, (0, jsx_runtime_1.jsx)(DropZone, { busy: busy, onDrop: upload, children: (0, jsx_runtime_1.jsx)(EmptyState_1.EmptyState, { icon: lucide_icons_2_1.Image, title: "No media yet", description: "Drag files here, or upload \u2014 images and files go to your organization's object storage and become reusable media you can attach to any record.", primary: { label: uploadLabel, onPress: pick } }) })] }));
|
|
78
|
+
}
|
|
79
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { onLayout: onLayout, gap: "$3", width: "100%", children: [HiddenInput, (0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$2", items: "center", flexWrap: "wrap", justify: phone ? 'flex-start' : 'flex-end', width: "100%", children: [toolbarExtra, (0, jsx_runtime_1.jsx)(parts_1.Action, { phone: phone, primary: true, icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Upload, { size: 15 }), disabled: busy, onPress: pick, children: uploadLabel })] }), error ? (0, jsx_runtime_1.jsx)(parts_1.ErrorBar, { message: error }) : null, (0, jsx_runtime_1.jsx)(DropZone, { busy: busy, onDrop: upload, children: (0, jsx_runtime_1.jsx)(gui_1.XStack, { gap: "$3", flexWrap: "wrap", width: "100%", children: docs.map((d) => ((0, jsx_runtime_1.jsx)(MediaCard, { doc: d, dt: dt, fileField: fileField, media: media, phone: phone, onOpen: () => onOpen(String(d.name)), onDelete: async () => {
|
|
80
|
+
setBusy(true);
|
|
81
|
+
setError(null);
|
|
82
|
+
try {
|
|
83
|
+
await media.remove(d[fileField]);
|
|
84
|
+
await client.records.remove(dt.name, String(d.name));
|
|
85
|
+
onChanged();
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
setError((0, BackendState_1.classifyBackend)(e).message);
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
setBusy(false);
|
|
92
|
+
}
|
|
93
|
+
}, disabled: busy }, String(d.name)))) }) })] }));
|
|
94
|
+
}
|
|
95
|
+
/** One asset card — presigned thumbnail, title, type, and a delete affordance. */
|
|
96
|
+
function MediaCard({ doc, dt, fileField, media, phone, onOpen, onDelete, disabled, }) {
|
|
97
|
+
const [url, setUrl] = (0, react_1.useState)('');
|
|
98
|
+
const [confirming, setConfirming] = (0, react_1.useState)(false);
|
|
99
|
+
const raw = String(doc[fileField] ?? '');
|
|
100
|
+
const title = (0, fields_1.titleOf)(doc, dt);
|
|
101
|
+
(0, react_1.useEffect)(() => {
|
|
102
|
+
let cancelled = false;
|
|
103
|
+
void media.resolveUrl(raw).then((u) => {
|
|
104
|
+
if (!cancelled)
|
|
105
|
+
setUrl(u);
|
|
106
|
+
});
|
|
107
|
+
return () => {
|
|
108
|
+
cancelled = true;
|
|
109
|
+
};
|
|
110
|
+
}, [raw, media]);
|
|
111
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { borderWidth: 1, borderColor: "$borderColor", rounded: "$4",
|
|
112
|
+
// Two-up on a phone, a 200px tile once there is room — never a fixed column
|
|
113
|
+
// with dead space beside it.
|
|
114
|
+
grow: 0, flexBasis: phone ? '47%' : 200, maxW: phone ? undefined : 200, minW: 140, overflow: "hidden", hoverStyle: { borderColor: '$color8' }, children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { height: phone ? 110 : 130, bg: "$color3", items: "center", justify: "center", overflow: "hidden", cursor: "pointer", pressStyle: { opacity: 0.8 }, onPress: onOpen, children: url && ((0, media_1.looksLikeImage)(raw) || (0, media_1.looksLikeImage)(url)) ? (
|
|
115
|
+
// eslint-disable-next-line @next/next/no-img-element
|
|
116
|
+
(0, jsx_runtime_1.jsx)("img", { src: url, alt: String(doc.alt ?? title), style: { width: '100%', height: '100%', objectFit: 'cover' } })) : ((0, jsx_runtime_1.jsx)(lucide_icons_2_1.Image, { size: 28 })) }), (0, jsx_runtime_1.jsxs)(gui_1.YStack, { p: "$3", gap: "$1", children: [(0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$3", fontWeight: "700", numberOfLines: 1, children: title }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { justify: "space-between", items: "center", gap: "$2", children: [(0, jsx_runtime_1.jsx)(parts_1.Meta, { children: String(doc.mime ?? 'file') }), confirming ? ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$1", children: [(0, jsx_runtime_1.jsx)(gui_1.Button, { size: phone ? '$3' : '$1', minH: phone ? responsive_1.TAP : undefined, theme: "red", disabled: disabled, onPress: () => {
|
|
117
|
+
setConfirming(false);
|
|
118
|
+
void onDelete();
|
|
119
|
+
}, children: "Delete" }), (0, jsx_runtime_1.jsx)(gui_1.Button, { size: phone ? '$3' : '$1', minH: phone ? responsive_1.TAP : undefined, disabled: disabled, onPress: () => setConfirming(false), children: "No" })] })) : ((0, jsx_runtime_1.jsx)(gui_1.Button, { size: phone ? '$3' : '$1', circular: true, chromeless: true, minW: phone ? responsive_1.TAP : undefined, minH: phone ? responsive_1.TAP : undefined, "aria-label": `Delete ${title}`, icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Trash2, { size: phone ? 16 : 13 }), disabled: disabled, onPress: () => setConfirming(true) }))] })] })] }));
|
|
120
|
+
}
|
|
121
|
+
/** A drag-and-drop wrapper that highlights on drag-over and uploads on drop. */
|
|
122
|
+
function DropZone({ children, busy, onDrop, }) {
|
|
123
|
+
const [over, setOver] = (0, react_1.useState)(false);
|
|
124
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { width: "100%", onDragOver: (e) => {
|
|
125
|
+
e.preventDefault();
|
|
126
|
+
if (!busy)
|
|
127
|
+
setOver(true);
|
|
128
|
+
}, onDragLeave: () => setOver(false), onDrop: (e) => {
|
|
129
|
+
e.preventDefault();
|
|
130
|
+
setOver(false);
|
|
131
|
+
if (!busy && e.dataTransfer?.files?.length)
|
|
132
|
+
void onDrop(e.dataTransfer.files);
|
|
133
|
+
}, rounded: "$4", p: over ? '$3' : 0, borderWidth: over ? 2 : 0, borderColor: "$color8", style: { borderStyle: 'dashed' }, children: children }));
|
|
134
|
+
}
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
* other file-touching components in this layer.
|
|
23
23
|
*/
|
|
24
24
|
import { type ReactNode } from 'react';
|
|
25
|
-
import type { FrameworkClient } from './client';
|
|
26
|
-
import type { DocType, FrameworkDoc } from './types';
|
|
27
|
-
import { type MediaUploader } from './media';
|
|
25
|
+
import type { FrameworkClient } from './client.js';
|
|
26
|
+
import type { DocType, FrameworkDoc } from './types.js';
|
|
27
|
+
import { type MediaUploader } from './media.js';
|
|
28
28
|
export interface MediaGridProps {
|
|
29
29
|
client: FrameworkClient;
|
|
30
30
|
dt: DocType;
|
|
@@ -40,3 +40,4 @@ export interface MediaGridProps {
|
|
|
40
40
|
accept?: string;
|
|
41
41
|
}
|
|
42
42
|
export declare function MediaGrid({ client, dt, docs, media, onOpen, onChanged, toolbarExtra, accept, }: MediaGridProps): import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
//# sourceMappingURL=MediaGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaGrid.d.ts","sourceRoot":"","sources":["../../src/framework/MediaGrid.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAA4C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAMhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,SAAS,CAAA;AAI5D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,eAAe,CAAA;IACvB,EAAE,EAAE,OAAO,CAAA;IACX,IAAI,EAAE,YAAY,EAAE,CAAA;IACpB,4DAA4D;IAC5D,KAAK,EAAE,aAAa,CAAA;IACpB,qEAAqE;IACrE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,sDAAsD;IACtD,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,EAAE,EACF,IAAI,EACJ,KAAK,EACL,MAAM,EACN,SAAS,EACT,YAAY,EACZ,MAAkD,GACnD,EAAE,cAAc,2CA2GhB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* MediaGrid — the DAM (media library) for a media DocType (an Attach-backed
|
|
5
|
+
* collection). A REAL asset manager: drag/drop or pick files → they upload through
|
|
6
|
+
* the injected `MediaUploader` (the host's own per-org object store) → a document
|
|
7
|
+
* is created from the DocType's OWN schema → the grid shows a live thumbnail
|
|
8
|
+
* (presigned on view, since object URLs are short-lived). Delete removes the
|
|
9
|
+
* document AND the object.
|
|
10
|
+
*
|
|
11
|
+
* The document body is `mediaDocPayload(dt, facts)` — metadata-driven. This used
|
|
12
|
+
* to write a hardcoded `{title, file, mime, size, width, height}`, which is the
|
|
13
|
+
* CMS Media fixture's schema: a lane whose media type labels its rows `caption`
|
|
14
|
+
* got untitled rows, silently, because the engine drops unknown keys. Now the
|
|
15
|
+
* filename lands on the DocType's declared title field and each fact is written
|
|
16
|
+
* only if that DocType has somewhere to put it.
|
|
17
|
+
*
|
|
18
|
+
* MOBILE FIRST: tiles are flex-basis, not a fixed 200px — two-up on a phone,
|
|
19
|
+
* filling whatever the box gives on a desktop. The upload control is a full-width
|
|
20
|
+
* tap target on a phone, and the per-tile delete is a 44px control rather than a
|
|
21
|
+
* 13px glyph.
|
|
22
|
+
*
|
|
23
|
+
* Web-first by nature (file picker + drag/drop + `<img>` thumbnails), like the
|
|
24
|
+
* other file-touching components in this layer.
|
|
25
|
+
*/
|
|
26
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
27
|
+
import { Button, Text, XStack, YStack } from '@hanzo/gui';
|
|
28
|
+
import { Image as ImageIcon, Trash2, Upload } from '@hanzogui/lucide-icons-2';
|
|
29
|
+
import { EmptyState } from '../product/EmptyState.js';
|
|
30
|
+
import { classifyBackend } from '../product/BackendState.js';
|
|
31
|
+
import { mediaDocPayload, mediaFileField, titleOf } from './fields.js';
|
|
32
|
+
import { looksLikeImage } from './media.js';
|
|
33
|
+
import { Action, ErrorBar, Meta } from './parts.js';
|
|
34
|
+
import { useContainerLayout, TAP } from './responsive.js';
|
|
35
|
+
export function MediaGrid({ client, dt, docs, media, onOpen, onChanged, toolbarExtra, accept = 'image/*,application/pdf,video/*,audio/*', }) {
|
|
36
|
+
const fileField = mediaFileField(dt);
|
|
37
|
+
const inputRef = useRef(null);
|
|
38
|
+
const [busy, setBusy] = useState(false);
|
|
39
|
+
const [progress, setProgress] = useState(null);
|
|
40
|
+
const [error, setError] = useState(null);
|
|
41
|
+
const { phone, onLayout } = useContainerLayout();
|
|
42
|
+
const upload = useCallback(async (files) => {
|
|
43
|
+
const list = Array.from(files);
|
|
44
|
+
if (list.length === 0)
|
|
45
|
+
return;
|
|
46
|
+
setBusy(true);
|
|
47
|
+
setError(null);
|
|
48
|
+
setProgress({ done: 0, total: list.length });
|
|
49
|
+
try {
|
|
50
|
+
for (let i = 0; i < list.length; i += 1) {
|
|
51
|
+
const facts = await media.upload(list[i]);
|
|
52
|
+
await client.records.create(dt.name, mediaDocPayload(dt, facts));
|
|
53
|
+
setProgress({ done: i + 1, total: list.length });
|
|
54
|
+
}
|
|
55
|
+
onChanged();
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
setError(classifyBackend(e).message);
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
setBusy(false);
|
|
62
|
+
setProgress(null);
|
|
63
|
+
}
|
|
64
|
+
}, [client, dt, media, onChanged]);
|
|
65
|
+
const pick = () => inputRef.current?.click();
|
|
66
|
+
const onInput = (e) => {
|
|
67
|
+
if (e.target.files)
|
|
68
|
+
void upload(e.target.files);
|
|
69
|
+
e.target.value = ''; // allow re-selecting the same file
|
|
70
|
+
};
|
|
71
|
+
const HiddenInput = (_jsx("input", { ref: inputRef, type: "file", multiple: true, accept: accept, style: { display: 'none' }, onChange: onInput }));
|
|
72
|
+
const uploadLabel = busy ? (progress ? `Uploading ${progress.done}/${progress.total}…` : 'Uploading…') : 'Upload';
|
|
73
|
+
if (docs.length === 0) {
|
|
74
|
+
return (_jsxs(YStack, { onLayout: onLayout, gap: "$3", width: "100%", children: [HiddenInput, toolbarExtra ? (_jsx(XStack, { justify: phone ? 'flex-start' : 'flex-end', gap: "$2", width: "100%", children: toolbarExtra })) : null, error ? _jsx(ErrorBar, { message: error }) : null, _jsx(DropZone, { busy: busy, onDrop: upload, children: _jsx(EmptyState, { icon: ImageIcon, title: "No media yet", description: "Drag files here, or upload \u2014 images and files go to your organization's object storage and become reusable media you can attach to any record.", primary: { label: uploadLabel, onPress: pick } }) })] }));
|
|
75
|
+
}
|
|
76
|
+
return (_jsxs(YStack, { onLayout: onLayout, gap: "$3", width: "100%", children: [HiddenInput, _jsxs(XStack, { gap: "$2", items: "center", flexWrap: "wrap", justify: phone ? 'flex-start' : 'flex-end', width: "100%", children: [toolbarExtra, _jsx(Action, { phone: phone, primary: true, icon: _jsx(Upload, { size: 15 }), disabled: busy, onPress: pick, children: uploadLabel })] }), error ? _jsx(ErrorBar, { message: error }) : null, _jsx(DropZone, { busy: busy, onDrop: upload, children: _jsx(XStack, { gap: "$3", flexWrap: "wrap", width: "100%", children: docs.map((d) => (_jsx(MediaCard, { doc: d, dt: dt, fileField: fileField, media: media, phone: phone, onOpen: () => onOpen(String(d.name)), onDelete: async () => {
|
|
77
|
+
setBusy(true);
|
|
78
|
+
setError(null);
|
|
79
|
+
try {
|
|
80
|
+
await media.remove(d[fileField]);
|
|
81
|
+
await client.records.remove(dt.name, String(d.name));
|
|
82
|
+
onChanged();
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
setError(classifyBackend(e).message);
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
setBusy(false);
|
|
89
|
+
}
|
|
90
|
+
}, disabled: busy }, String(d.name)))) }) })] }));
|
|
91
|
+
}
|
|
92
|
+
/** One asset card — presigned thumbnail, title, type, and a delete affordance. */
|
|
93
|
+
function MediaCard({ doc, dt, fileField, media, phone, onOpen, onDelete, disabled, }) {
|
|
94
|
+
const [url, setUrl] = useState('');
|
|
95
|
+
const [confirming, setConfirming] = useState(false);
|
|
96
|
+
const raw = String(doc[fileField] ?? '');
|
|
97
|
+
const title = titleOf(doc, dt);
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
let cancelled = false;
|
|
100
|
+
void media.resolveUrl(raw).then((u) => {
|
|
101
|
+
if (!cancelled)
|
|
102
|
+
setUrl(u);
|
|
103
|
+
});
|
|
104
|
+
return () => {
|
|
105
|
+
cancelled = true;
|
|
106
|
+
};
|
|
107
|
+
}, [raw, media]);
|
|
108
|
+
return (_jsxs(YStack, { borderWidth: 1, borderColor: "$borderColor", rounded: "$4",
|
|
109
|
+
// Two-up on a phone, a 200px tile once there is room — never a fixed column
|
|
110
|
+
// with dead space beside it.
|
|
111
|
+
grow: 0, flexBasis: phone ? '47%' : 200, maxW: phone ? undefined : 200, minW: 140, overflow: "hidden", hoverStyle: { borderColor: '$color8' }, children: [_jsx(YStack, { height: phone ? 110 : 130, bg: "$color3", items: "center", justify: "center", overflow: "hidden", cursor: "pointer", pressStyle: { opacity: 0.8 }, onPress: onOpen, children: url && (looksLikeImage(raw) || looksLikeImage(url)) ? (
|
|
112
|
+
// eslint-disable-next-line @next/next/no-img-element
|
|
113
|
+
_jsx("img", { src: url, alt: String(doc.alt ?? title), style: { width: '100%', height: '100%', objectFit: 'cover' } })) : (_jsx(ImageIcon, { size: 28 })) }), _jsxs(YStack, { p: "$3", gap: "$1", children: [_jsx(Text, { fontSize: "$3", fontWeight: "700", numberOfLines: 1, children: title }), _jsxs(XStack, { justify: "space-between", items: "center", gap: "$2", children: [_jsx(Meta, { children: String(doc.mime ?? 'file') }), confirming ? (_jsxs(XStack, { gap: "$1", children: [_jsx(Button, { size: phone ? '$3' : '$1', minH: phone ? TAP : undefined, theme: "red", disabled: disabled, onPress: () => {
|
|
114
|
+
setConfirming(false);
|
|
115
|
+
void onDelete();
|
|
116
|
+
}, children: "Delete" }), _jsx(Button, { size: phone ? '$3' : '$1', minH: phone ? TAP : undefined, disabled: disabled, onPress: () => setConfirming(false), children: "No" })] })) : (_jsx(Button, { size: phone ? '$3' : '$1', circular: true, chromeless: true, minW: phone ? TAP : undefined, minH: phone ? TAP : undefined, "aria-label": `Delete ${title}`, icon: _jsx(Trash2, { size: phone ? 16 : 13 }), disabled: disabled, onPress: () => setConfirming(true) }))] })] })] }));
|
|
117
|
+
}
|
|
118
|
+
/** A drag-and-drop wrapper that highlights on drag-over and uploads on drop. */
|
|
119
|
+
function DropZone({ children, busy, onDrop, }) {
|
|
120
|
+
const [over, setOver] = useState(false);
|
|
121
|
+
return (_jsx(YStack, { width: "100%", onDragOver: (e) => {
|
|
122
|
+
e.preventDefault();
|
|
123
|
+
if (!busy)
|
|
124
|
+
setOver(true);
|
|
125
|
+
}, onDragLeave: () => setOver(false), onDrop: (e) => {
|
|
126
|
+
e.preventDefault();
|
|
127
|
+
setOver(false);
|
|
128
|
+
if (!busy && e.dataTransfer?.files?.length)
|
|
129
|
+
void onDrop(e.dataTransfer.files);
|
|
130
|
+
}, rounded: "$4", p: over ? '$3' : 0, borderWidth: over ? 2 : 0, borderColor: "$color8", style: { borderStyle: 'dashed' }, children: children }));
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=MediaGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaGrid.js","sourceRoot":"","sources":["../../src/framework/MediaGrid.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AAChF,OAAO,EAAE,MAAM,EAAQ,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAGzD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AACnE,OAAO,EAAE,cAAc,EAAsB,MAAM,SAAS,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAiBtD,MAAM,UAAU,SAAS,CAAC,EACxB,MAAM,EACN,EAAE,EACF,IAAI,EACJ,KAAK,EACL,MAAM,EACN,SAAS,EACT,YAAY,EACZ,MAAM,GAAG,yCAAyC,GACnC;IACf,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC,CAAA;IACpC,MAAM,QAAQ,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAA;IACtD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAyC,IAAI,CAAC,CAAA;IACtF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACvD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAEhD,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,KAAwB,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAA;QACb,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAC5C,IAAI,CAAC;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;gBACzC,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;gBAChE,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YAClD,CAAC;YACD,SAAS,EAAE,CAAA;QACb,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QACtC,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,CAAA;YACd,WAAW,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAC/B,CAAA;IAED,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;IAC5C,MAAM,OAAO,GAAG,CAAC,CAAsC,EAAE,EAAE;QACzD,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK;YAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC/C,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAA,CAAC,mCAAmC;IACzD,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAClB,gBAAO,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAC,MAAM,EAAC,QAAQ,QAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,GAAI,CAC7G,CAAA;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IAEjH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CACL,MAAC,MAAM,IAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,MAAM,aAC9C,WAAW,EACX,YAAY,CAAC,CAAC,CAAC,CACd,KAAC,MAAM,IAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,MAAM,YACtE,YAAY,GACN,CACV,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,OAAO,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI,EAC5C,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,YAClC,KAAC,UAAU,IACT,IAAI,EAAE,SAAS,EACf,KAAK,EAAC,cAAc,EACpB,WAAW,EAAC,qJAAgJ,EAC5J,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,GAC9C,GACO,IACJ,CACV,CAAA;IACH,CAAC;IAED,OAAO,CACL,MAAC,MAAM,IAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,MAAM,aAC9C,WAAW,EACZ,MAAC,MAAM,IAAC,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,QAAQ,EAAC,MAAM,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAC,MAAM,aACrG,YAAY,EACb,KAAC,MAAM,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,QAAC,IAAI,EAAE,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,GAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,YACpF,WAAW,GACL,IACF,EACR,KAAK,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,OAAO,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI,EAC5C,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,YAClC,KAAC,MAAM,IAAC,GAAG,EAAC,IAAI,EAAC,QAAQ,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,YAC1C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACf,KAAC,SAAS,IAER,GAAG,EAAE,CAAC,EACN,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EACpC,QAAQ,EAAE,KAAK,IAAI,EAAE;4BACnB,OAAO,CAAC,IAAI,CAAC,CAAA;4BACb,QAAQ,CAAC,IAAI,CAAC,CAAA;4BACd,IAAI,CAAC;gCACH,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;gCAChC,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;gCACpD,SAAS,EAAE,CAAA;4BACb,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC;gCACX,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;4BACtC,CAAC;oCAAS,CAAC;gCACT,OAAO,CAAC,KAAK,CAAC,CAAA;4BAChB,CAAC;wBACH,CAAC,EACD,QAAQ,EAAE,IAAI,IApBT,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAqBnB,CACH,CAAC,GACK,GACA,IACJ,CACV,CAAA;AACH,CAAC;AAED,kFAAkF;AAClF,SAAS,SAAS,CAAC,EACjB,GAAG,EACH,EAAE,EACF,SAAS,EACT,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,GAUT;IACC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAClC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,KAAK,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,SAAS;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAA;QAC3B,CAAC,CAAC,CAAA;QACF,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAA;QAClB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;IAEhB,OAAO,CACL,MAAC,MAAM,IACL,WAAW,EAAE,CAAC,EACd,WAAW,EAAC,cAAc,EAC1B,OAAO,EAAC,IAAI;QACZ,4EAA4E;QAC5E,6BAA6B;QAC7B,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAC9B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAC7B,IAAI,EAAE,GAAG,EACT,QAAQ,EAAC,QAAQ,EACjB,UAAU,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,aAEtC,KAAC,MAAM,IACL,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EACzB,EAAE,EAAC,SAAS,EACZ,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,QAAQ,EAChB,QAAQ,EAAC,QAAQ,EACjB,MAAM,EAAC,SAAS,EAChB,UAAU,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAC5B,OAAO,EAAE,MAAM,YAEd,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,qDAAqD;gBACrD,cAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAI,CAC/G,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,GAAI,CACxB,GACM,EACT,MAAC,MAAM,IAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,aACrB,KAAC,IAAI,IAAC,QAAQ,EAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,aAAa,EAAE,CAAC,YAClD,KAAK,GACD,EACP,MAAC,MAAM,IAAC,OAAO,EAAC,eAAe,EAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,aACrD,KAAC,IAAI,cAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,GAAQ,EACxC,UAAU,CAAC,CAAC,CAAC,CACZ,MAAC,MAAM,IAAC,GAAG,EAAC,IAAI,aACd,KAAC,MAAM,IACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EACzB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAC7B,KAAK,EAAC,KAAK,EACX,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE;4CACZ,aAAa,CAAC,KAAK,CAAC,CAAA;4CACpB,KAAK,QAAQ,EAAE,CAAA;wCACjB,CAAC,uBAGM,EACT,KAAC,MAAM,IAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,mBAEhH,IACF,CACV,CAAC,CAAC,CAAC,CACF,KAAC,MAAM,IACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EACzB,QAAQ,QACR,UAAU,QACV,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAC7B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,gBACjB,UAAU,KAAK,EAAE,EAC7B,IAAI,EAAE,KAAC,MAAM,IAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAI,EACvC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,GAClC,CACH,IACM,IACF,IACF,CACV,CAAA;AACH,CAAC;AAED,gFAAgF;AAChF,SAAS,QAAQ,CAAC,EAChB,QAAQ,EACR,IAAI,EACJ,MAAM,GAKP;IACC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,OAAO,CACL,KAAC,MAAM,IACL,KAAK,EAAC,MAAM,EACZ,UAAU,EAAE,CAAC,CAAkB,EAAE,EAAE;YACjC,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC,EACD,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EACjC,MAAM,EAAE,CAAC,CAAkB,EAAE,EAAE;YAC7B,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,OAAO,CAAC,KAAK,CAAC,CAAA;YACd,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM;gBAAE,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAC/E,CAAC,EACD,OAAO,EAAC,IAAI,EACZ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAClB,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACzB,WAAW,EAAC,SAAS,EACrB,KAAK,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,YAE/B,QAAQ,GACF,CACV,CAAA;AACH,CAAC"}
|