@smart-coder-labs/apple-design-system 1.0.0
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 +442 -0
- package/dist/cli/commands/add.d.ts +2 -0
- package/dist/cli/commands/add.d.ts.map +1 -0
- package/dist/cli/commands/add.js +102 -0
- package/dist/cli/commands/add.js.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +73 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +20 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/registry.d.ts +4 -0
- package/dist/cli/utils/registry.d.ts.map +1 -0
- package/dist/cli/utils/registry.js +52 -0
- package/dist/cli/utils/registry.js.map +1 -0
- package/dist/components/AIThinkingIndicator.d.ts +10 -0
- package/dist/components/AIThinkingIndicator.d.ts.map +1 -0
- package/dist/components/AIThinkingIndicator.js +60 -0
- package/dist/components/AIThinkingIndicator.js.map +1 -0
- package/dist/components/Accordion.d.ts +27 -0
- package/dist/components/Accordion.d.ts.map +1 -0
- package/dist/components/Accordion.js +123 -0
- package/dist/components/Accordion.js.map +1 -0
- package/dist/components/ActivityFeed.d.ts +26 -0
- package/dist/components/ActivityFeed.d.ts.map +1 -0
- package/dist/components/ActivityFeed.js +55 -0
- package/dist/components/ActivityFeed.js.map +1 -0
- package/dist/components/ActivityMonitor.d.ts +38 -0
- package/dist/components/ActivityMonitor.d.ts.map +1 -0
- package/dist/components/ActivityMonitor.js +164 -0
- package/dist/components/ActivityMonitor.js.map +1 -0
- package/dist/components/AddressSelector.d.ts +23 -0
- package/dist/components/AddressSelector.d.ts.map +1 -0
- package/dist/components/AddressSelector.js +145 -0
- package/dist/components/AddressSelector.js.map +1 -0
- package/dist/components/AgendaView.d.ts +11 -0
- package/dist/components/AgendaView.d.ts.map +1 -0
- package/dist/components/AgendaView.js +47 -0
- package/dist/components/AgendaView.js.map +1 -0
- package/dist/components/Alert.d.ts +9 -0
- package/dist/components/Alert.d.ts.map +1 -0
- package/dist/components/Alert.js +38 -0
- package/dist/components/Alert.js.map +1 -0
- package/dist/components/AudioPlayer.d.ts +11 -0
- package/dist/components/AudioPlayer.d.ts.map +1 -0
- package/dist/components/AudioPlayer.js +116 -0
- package/dist/components/AudioPlayer.js.map +1 -0
- package/dist/components/Avatar.d.ts +17 -0
- package/dist/components/Avatar.d.ts.map +1 -0
- package/dist/components/Avatar.js +74 -0
- package/dist/components/Avatar.js.map +1 -0
- package/dist/components/AvatarGroup.d.ts +15 -0
- package/dist/components/AvatarGroup.d.ts.map +1 -0
- package/dist/components/AvatarGroup.js +28 -0
- package/dist/components/AvatarGroup.js.map +1 -0
- package/dist/components/Badge.d.ts +21 -0
- package/dist/components/Badge.d.ts.map +1 -0
- package/dist/components/Badge.js +103 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/BarcodeGenerator.d.ts +18 -0
- package/dist/components/BarcodeGenerator.d.ts.map +1 -0
- package/dist/components/BarcodeGenerator.js +64 -0
- package/dist/components/BarcodeGenerator.js.map +1 -0
- package/dist/components/Blockquote.d.ts +9 -0
- package/dist/components/Blockquote.d.ts.map +1 -0
- package/dist/components/Blockquote.js +8 -0
- package/dist/components/Blockquote.js.map +1 -0
- package/dist/components/BottomNavigation.d.ts +21 -0
- package/dist/components/BottomNavigation.d.ts.map +1 -0
- package/dist/components/BottomNavigation.js +77 -0
- package/dist/components/BottomNavigation.js.map +1 -0
- package/dist/components/Breadcrumb.d.ts +20 -0
- package/dist/components/Breadcrumb.d.ts.map +1 -0
- package/dist/components/Breadcrumb.js +24 -0
- package/dist/components/Breadcrumb.js.map +1 -0
- package/dist/components/BreadcrumbTabsHybrid.d.ts +25 -0
- package/dist/components/BreadcrumbTabsHybrid.d.ts.map +1 -0
- package/dist/components/BreadcrumbTabsHybrid.js +58 -0
- package/dist/components/BreadcrumbTabsHybrid.js.map +1 -0
- package/dist/components/Button.d.ts +14 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.js +91 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/ButtonWithDropdown.d.ts +19 -0
- package/dist/components/ButtonWithDropdown.d.ts.map +1 -0
- package/dist/components/ButtonWithDropdown.js +33 -0
- package/dist/components/ButtonWithDropdown.js.map +1 -0
- package/dist/components/Calendar.d.ts +28 -0
- package/dist/components/Calendar.d.ts.map +1 -0
- package/dist/components/Calendar.js +365 -0
- package/dist/components/Calendar.js.map +1 -0
- package/dist/components/Callout.d.ts +11 -0
- package/dist/components/Callout.d.ts.map +1 -0
- package/dist/components/Callout.js +35 -0
- package/dist/components/Callout.js.map +1 -0
- package/dist/components/Caption.d.ts +6 -0
- package/dist/components/Caption.d.ts.map +1 -0
- package/dist/components/Caption.js +7 -0
- package/dist/components/Caption.js.map +1 -0
- package/dist/components/Card.d.ts +30 -0
- package/dist/components/Card.d.ts.map +1 -0
- package/dist/components/Card.js +72 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/CartPreview.d.ts +28 -0
- package/dist/components/CartPreview.d.ts.map +1 -0
- package/dist/components/CartPreview.js +80 -0
- package/dist/components/CartPreview.js.map +1 -0
- package/dist/components/Chart.d.ts +19 -0
- package/dist/components/Chart.d.ts.map +1 -0
- package/dist/components/Chart.js +46 -0
- package/dist/components/Chart.js.map +1 -0
- package/dist/components/ChatBubble.d.ts +19 -0
- package/dist/components/ChatBubble.d.ts.map +1 -0
- package/dist/components/ChatBubble.js +27 -0
- package/dist/components/ChatBubble.js.map +1 -0
- package/dist/components/ChatInput.d.ts +22 -0
- package/dist/components/ChatInput.d.ts.map +1 -0
- package/dist/components/ChatInput.js +115 -0
- package/dist/components/ChatInput.js.map +1 -0
- package/dist/components/Checkbox.d.ts +10 -0
- package/dist/components/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox.js +35 -0
- package/dist/components/Checkbox.js.map +1 -0
- package/dist/components/Chip.d.ts +14 -0
- package/dist/components/Chip.d.ts.map +1 -0
- package/dist/components/Chip.js +43 -0
- package/dist/components/Chip.js.map +1 -0
- package/dist/components/CodeBlock.d.ts +9 -0
- package/dist/components/CodeBlock.d.ts.map +1 -0
- package/dist/components/CodeBlock.js +16 -0
- package/dist/components/CodeBlock.js.map +1 -0
- package/dist/components/Collapsible.d.ts +19 -0
- package/dist/components/Collapsible.d.ts.map +1 -0
- package/dist/components/Collapsible.js +42 -0
- package/dist/components/Collapsible.js.map +1 -0
- package/dist/components/Combobox.d.ts +17 -0
- package/dist/components/Combobox.d.ts.map +1 -0
- package/dist/components/Combobox.js +114 -0
- package/dist/components/Combobox.js.map +1 -0
- package/dist/components/CommandMenu.d.ts +36 -0
- package/dist/components/CommandMenu.d.ts.map +1 -0
- package/dist/components/CommandMenu.js +102 -0
- package/dist/components/CommandMenu.js.map +1 -0
- package/dist/components/CommentThread.d.ts +28 -0
- package/dist/components/CommentThread.d.ts.map +1 -0
- package/dist/components/CommentThread.js +66 -0
- package/dist/components/CommentThread.js.map +1 -0
- package/dist/components/ConfirmDialog.d.ts +27 -0
- package/dist/components/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/ConfirmDialog.js +62 -0
- package/dist/components/ConfirmDialog.js.map +1 -0
- package/dist/components/ContextMenu.d.ts +85 -0
- package/dist/components/ContextMenu.d.ts.map +1 -0
- package/dist/components/ContextMenu.js +191 -0
- package/dist/components/ContextMenu.js.map +1 -0
- package/dist/components/ControlCenterToggles.d.ts +18 -0
- package/dist/components/ControlCenterToggles.d.ts.map +1 -0
- package/dist/components/ControlCenterToggles.js +14 -0
- package/dist/components/ControlCenterToggles.js.map +1 -0
- package/dist/components/Counters.d.ts +16 -0
- package/dist/components/Counters.d.ts.map +1 -0
- package/dist/components/Counters.js +9 -0
- package/dist/components/Counters.js.map +1 -0
- package/dist/components/CountersListWithChart.d.ts +15 -0
- package/dist/components/CountersListWithChart.d.ts.map +1 -0
- package/dist/components/CountersListWithChart.js +22 -0
- package/dist/components/CountersListWithChart.js.map +1 -0
- package/dist/components/DataGrid.d.ts +38 -0
- package/dist/components/DataGrid.d.ts.map +1 -0
- package/dist/components/DataGrid.js +271 -0
- package/dist/components/DataGrid.js.map +1 -0
- package/dist/components/DatePicker.d.ts +17 -0
- package/dist/components/DatePicker.d.ts.map +1 -0
- package/dist/components/DatePicker.js +248 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/DateRangePicker.d.ts +21 -0
- package/dist/components/DateRangePicker.d.ts.map +1 -0
- package/dist/components/DateRangePicker.js +213 -0
- package/dist/components/DateRangePicker.js.map +1 -0
- package/dist/components/DefinitionList.d.ts +21 -0
- package/dist/components/DefinitionList.d.ts.map +1 -0
- package/dist/components/DefinitionList.js +44 -0
- package/dist/components/DefinitionList.js.map +1 -0
- package/dist/components/DescriptionBlock.d.ts +36 -0
- package/dist/components/DescriptionBlock.d.ts.map +1 -0
- package/dist/components/DescriptionBlock.js +27 -0
- package/dist/components/DescriptionBlock.js.map +1 -0
- package/dist/components/DeviceList.d.ts +24 -0
- package/dist/components/DeviceList.d.ts.map +1 -0
- package/dist/components/DeviceList.js +46 -0
- package/dist/components/DeviceList.js.map +1 -0
- package/dist/components/DiffViewer.d.ts +13 -0
- package/dist/components/DiffViewer.d.ts.map +1 -0
- package/dist/components/DiffViewer.js +93 -0
- package/dist/components/DiffViewer.js.map +1 -0
- package/dist/components/Divider.d.ts +28 -0
- package/dist/components/Divider.d.ts.map +1 -0
- package/dist/components/Divider.js +16 -0
- package/dist/components/Divider.js.map +1 -0
- package/dist/components/DockBar.d.ts +29 -0
- package/dist/components/DockBar.d.ts.map +1 -0
- package/dist/components/DockBar.js +64 -0
- package/dist/components/DockBar.js.map +1 -0
- package/dist/components/EmptyState.d.ts +25 -0
- package/dist/components/EmptyState.d.ts.map +1 -0
- package/dist/components/EmptyState.js +20 -0
- package/dist/components/EmptyState.js.map +1 -0
- package/dist/components/ErrorBoundary.d.ts +24 -0
- package/dist/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/ErrorBoundary.js +55 -0
- package/dist/components/ErrorBoundary.js.map +1 -0
- package/dist/components/FAB.d.ts +15 -0
- package/dist/components/FAB.d.ts.map +1 -0
- package/dist/components/FAB.js +46 -0
- package/dist/components/FAB.js.map +1 -0
- package/dist/components/FABGroup.d.ts +15 -0
- package/dist/components/FABGroup.d.ts.map +1 -0
- package/dist/components/FABGroup.js +47 -0
- package/dist/components/FABGroup.js.map +1 -0
- package/dist/components/FileIntelligencePreview.d.ts +25 -0
- package/dist/components/FileIntelligencePreview.d.ts.map +1 -0
- package/dist/components/FileIntelligencePreview.js +66 -0
- package/dist/components/FileIntelligencePreview.js.map +1 -0
- package/dist/components/FileUpload.d.ts +13 -0
- package/dist/components/FileUpload.d.ts.map +1 -0
- package/dist/components/FileUpload.js +107 -0
- package/dist/components/FileUpload.js.map +1 -0
- package/dist/components/FilterBar.d.ts +35 -0
- package/dist/components/FilterBar.d.ts.map +1 -0
- package/dist/components/FilterBar.js +79 -0
- package/dist/components/FilterBar.js.map +1 -0
- package/dist/components/FloatingToolbar.d.ts +24 -0
- package/dist/components/FloatingToolbar.d.ts.map +1 -0
- package/dist/components/FloatingToolbar.js +180 -0
- package/dist/components/FloatingToolbar.js.map +1 -0
- package/dist/components/Footer.d.ts +32 -0
- package/dist/components/Footer.d.ts.map +1 -0
- package/dist/components/Footer.js +31 -0
- package/dist/components/Footer.js.map +1 -0
- package/dist/components/Gallery.d.ts +11 -0
- package/dist/components/Gallery.d.ts.map +1 -0
- package/dist/components/Gallery.js +32 -0
- package/dist/components/Gallery.js.map +1 -0
- package/dist/components/GestureCard.d.ts +12 -0
- package/dist/components/GestureCard.d.ts.map +1 -0
- package/dist/components/GestureCard.js +58 -0
- package/dist/components/GestureCard.js.map +1 -0
- package/dist/components/GridSystem.d.ts +72 -0
- package/dist/components/GridSystem.d.ts.map +1 -0
- package/dist/components/GridSystem.js +65 -0
- package/dist/components/GridSystem.js.map +1 -0
- package/dist/components/HamburgerMenuIcon.d.ts +24 -0
- package/dist/components/HamburgerMenuIcon.d.ts.map +1 -0
- package/dist/components/HamburgerMenuIcon.js +44 -0
- package/dist/components/HamburgerMenuIcon.js.map +1 -0
- package/dist/components/HapticButton.d.ts +23 -0
- package/dist/components/HapticButton.d.ts.map +1 -0
- package/dist/components/HapticButton.js +104 -0
- package/dist/components/HapticButton.js.map +1 -0
- package/dist/components/Heading.d.ts +6 -0
- package/dist/components/Heading.d.ts.map +1 -0
- package/dist/components/Heading.js +7 -0
- package/dist/components/Heading.js.map +1 -0
- package/dist/components/IconButton.d.ts +14 -0
- package/dist/components/IconButton.d.ts.map +1 -0
- package/dist/components/IconButton.js +39 -0
- package/dist/components/IconButton.js.map +1 -0
- package/dist/components/ImageCarousel.d.ts +18 -0
- package/dist/components/ImageCarousel.d.ts.map +1 -0
- package/dist/components/ImageCarousel.js +74 -0
- package/dist/components/ImageCarousel.js.map +1 -0
- package/dist/components/ImageCropper.d.ts +10 -0
- package/dist/components/ImageCropper.d.ts.map +1 -0
- package/dist/components/ImageCropper.js +138 -0
- package/dist/components/ImageCropper.js.map +1 -0
- package/dist/components/Input.d.ts +18 -0
- package/dist/components/Input.d.ts.map +1 -0
- package/dist/components/Input.js +117 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/InspectorPanel.d.ts +18 -0
- package/dist/components/InspectorPanel.d.ts.map +1 -0
- package/dist/components/InspectorPanel.js +33 -0
- package/dist/components/InspectorPanel.js.map +1 -0
- package/dist/components/InvoicePreview.d.ts +41 -0
- package/dist/components/InvoicePreview.d.ts.map +1 -0
- package/dist/components/InvoicePreview.js +106 -0
- package/dist/components/InvoicePreview.js.map +1 -0
- package/dist/components/JsonViewer.d.ts +17 -0
- package/dist/components/JsonViewer.d.ts.map +1 -0
- package/dist/components/JsonViewer.js +58 -0
- package/dist/components/JsonViewer.js.map +1 -0
- package/dist/components/KPIBlock.d.ts +23 -0
- package/dist/components/KPIBlock.d.ts.map +1 -0
- package/dist/components/KPIBlock.js +82 -0
- package/dist/components/KPIBlock.js.map +1 -0
- package/dist/components/KanbanBoard.d.ts +34 -0
- package/dist/components/KanbanBoard.d.ts.map +1 -0
- package/dist/components/KanbanBoard.js +296 -0
- package/dist/components/KanbanBoard.js.map +1 -0
- package/dist/components/KeyValueInfo.d.ts +28 -0
- package/dist/components/KeyValueInfo.d.ts.map +1 -0
- package/dist/components/KeyValueInfo.js +80 -0
- package/dist/components/KeyValueInfo.js.map +1 -0
- package/dist/components/Label.d.ts +8 -0
- package/dist/components/Label.d.ts.map +1 -0
- package/dist/components/Label.js +9 -0
- package/dist/components/Label.js.map +1 -0
- package/dist/components/Layout.d.ts +16 -0
- package/dist/components/Layout.d.ts.map +1 -0
- package/dist/components/Layout.js +26 -0
- package/dist/components/Layout.js.map +1 -0
- package/dist/components/Lightbox.d.ts +18 -0
- package/dist/components/Lightbox.d.ts.map +1 -0
- package/dist/components/Lightbox.js +60 -0
- package/dist/components/Lightbox.js.map +1 -0
- package/dist/components/LoadingOverlay.d.ts +32 -0
- package/dist/components/LoadingOverlay.d.ts.map +1 -0
- package/dist/components/LoadingOverlay.js +10 -0
- package/dist/components/LoadingOverlay.js.map +1 -0
- package/dist/components/LoginForm.d.ts +14 -0
- package/dist/components/LoginForm.d.ts.map +1 -0
- package/dist/components/LoginForm.js +36 -0
- package/dist/components/LoginForm.js.map +1 -0
- package/dist/components/MaintenanceMode.d.ts +41 -0
- package/dist/components/MaintenanceMode.d.ts.map +1 -0
- package/dist/components/MaintenanceMode.js +21 -0
- package/dist/components/MaintenanceMode.js.map +1 -0
- package/dist/components/MarkdownEditor.d.ts +14 -0
- package/dist/components/MarkdownEditor.d.ts.map +1 -0
- package/dist/components/MarkdownEditor.js +55 -0
- package/dist/components/MarkdownEditor.js.map +1 -0
- package/dist/components/MasonryLayout.d.ts +31 -0
- package/dist/components/MasonryLayout.d.ts.map +1 -0
- package/dist/components/MasonryLayout.js +17 -0
- package/dist/components/MasonryLayout.js.map +1 -0
- package/dist/components/MenuBar.d.ts +34 -0
- package/dist/components/MenuBar.d.ts.map +1 -0
- package/dist/components/MenuBar.js +66 -0
- package/dist/components/MenuBar.js.map +1 -0
- package/dist/components/MessageReactions.d.ts +22 -0
- package/dist/components/MessageReactions.d.ts.map +1 -0
- package/dist/components/MessageReactions.js +37 -0
- package/dist/components/MessageReactions.js.map +1 -0
- package/dist/components/Modal.d.ts +37 -0
- package/dist/components/Modal.d.ts.map +1 -0
- package/dist/components/Modal.js +93 -0
- package/dist/components/Modal.js.map +1 -0
- package/dist/components/ModalStackManager.d.ts +34 -0
- package/dist/components/ModalStackManager.d.ts.map +1 -0
- package/dist/components/ModalStackManager.js +52 -0
- package/dist/components/ModalStackManager.js.map +1 -0
- package/dist/components/MultiFileUpload.d.ts +15 -0
- package/dist/components/MultiFileUpload.d.ts.map +1 -0
- package/dist/components/MultiFileUpload.js +138 -0
- package/dist/components/MultiFileUpload.js.map +1 -0
- package/dist/components/NavBar.d.ts +30 -0
- package/dist/components/NavBar.d.ts.map +1 -0
- package/dist/components/NavBar.js +80 -0
- package/dist/components/NavBar.js.map +1 -0
- package/dist/components/NavigationDrawer.d.ts +48 -0
- package/dist/components/NavigationDrawer.d.ts.map +1 -0
- package/dist/components/NavigationDrawer.js +95 -0
- package/dist/components/NavigationDrawer.js.map +1 -0
- package/dist/components/NotificationCenterPanel.d.ts +25 -0
- package/dist/components/NotificationCenterPanel.d.ts.map +1 -0
- package/dist/components/NotificationCenterPanel.js +50 -0
- package/dist/components/NotificationCenterPanel.js.map +1 -0
- package/dist/components/OTPInput.d.ts +15 -0
- package/dist/components/OTPInput.d.ts.map +1 -0
- package/dist/components/OTPInput.js +144 -0
- package/dist/components/OTPInput.js.map +1 -0
- package/dist/components/OfflineState.d.ts +36 -0
- package/dist/components/OfflineState.d.ts.map +1 -0
- package/dist/components/OfflineState.js +21 -0
- package/dist/components/OfflineState.js.map +1 -0
- package/dist/components/OrderSummary.d.ts +19 -0
- package/dist/components/OrderSummary.d.ts.map +1 -0
- package/dist/components/OrderSummary.js +8 -0
- package/dist/components/OrderSummary.js.map +1 -0
- package/dist/components/Pagination.d.ts +28 -0
- package/dist/components/Pagination.d.ts.map +1 -0
- package/dist/components/Pagination.js +119 -0
- package/dist/components/Pagination.js.map +1 -0
- package/dist/components/Panel.d.ts +14 -0
- package/dist/components/Panel.d.ts.map +1 -0
- package/dist/components/Panel.js +27 -0
- package/dist/components/Panel.js.map +1 -0
- package/dist/components/Paragraph.d.ts +6 -0
- package/dist/components/Paragraph.d.ts.map +1 -0
- package/dist/components/Paragraph.js +7 -0
- package/dist/components/Paragraph.js.map +1 -0
- package/dist/components/PasswordInput.d.ts +16 -0
- package/dist/components/PasswordInput.d.ts.map +1 -0
- package/dist/components/PasswordInput.js +66 -0
- package/dist/components/PasswordInput.js.map +1 -0
- package/dist/components/PaymentMethodSelector.d.ts +22 -0
- package/dist/components/PaymentMethodSelector.d.ts.map +1 -0
- package/dist/components/PaymentMethodSelector.js +24 -0
- package/dist/components/PaymentMethodSelector.js.map +1 -0
- package/dist/components/PermissionsMatrix.d.ts +23 -0
- package/dist/components/PermissionsMatrix.d.ts.map +1 -0
- package/dist/components/PermissionsMatrix.js +52 -0
- package/dist/components/PermissionsMatrix.js.map +1 -0
- package/dist/components/Popover.d.ts +19 -0
- package/dist/components/Popover.d.ts.map +1 -0
- package/dist/components/Popover.js +159 -0
- package/dist/components/Popover.js.map +1 -0
- package/dist/components/PriceDisplay.d.ts +18 -0
- package/dist/components/PriceDisplay.d.ts.map +1 -0
- package/dist/components/PriceDisplay.js +37 -0
- package/dist/components/PriceDisplay.js.map +1 -0
- package/dist/components/ProductCard.d.ts +30 -0
- package/dist/components/ProductCard.d.ts.map +1 -0
- package/dist/components/ProductCard.js +73 -0
- package/dist/components/ProductCard.js.map +1 -0
- package/dist/components/Progress.d.ts +9 -0
- package/dist/components/Progress.d.ts.map +1 -0
- package/dist/components/Progress.js +13 -0
- package/dist/components/Progress.js.map +1 -0
- package/dist/components/PromptSuggestionChips.d.ts +15 -0
- package/dist/components/PromptSuggestionChips.d.ts.map +1 -0
- package/dist/components/PromptSuggestionChips.js +17 -0
- package/dist/components/PromptSuggestionChips.js.map +1 -0
- package/dist/components/PropertyList.d.ts +29 -0
- package/dist/components/PropertyList.d.ts.map +1 -0
- package/dist/components/PropertyList.js +90 -0
- package/dist/components/PropertyList.js.map +1 -0
- package/dist/components/QRCodeGenerator.d.ts +17 -0
- package/dist/components/QRCodeGenerator.d.ts.map +1 -0
- package/dist/components/QRCodeGenerator.js +56 -0
- package/dist/components/QRCodeGenerator.js.map +1 -0
- package/dist/components/QuantitySelector.d.ts +16 -0
- package/dist/components/QuantitySelector.d.ts.map +1 -0
- package/dist/components/QuantitySelector.js +55 -0
- package/dist/components/QuantitySelector.js.map +1 -0
- package/dist/components/QueryBuilder.d.ts +30 -0
- package/dist/components/QueryBuilder.d.ts.map +1 -0
- package/dist/components/QueryBuilder.js +227 -0
- package/dist/components/QueryBuilder.js.map +1 -0
- package/dist/components/RadioGroup.d.ts +16 -0
- package/dist/components/RadioGroup.d.ts.map +1 -0
- package/dist/components/RadioGroup.js +36 -0
- package/dist/components/RadioGroup.js.map +1 -0
- package/dist/components/RangeSlider.d.ts +18 -0
- package/dist/components/RangeSlider.d.ts.map +1 -0
- package/dist/components/RangeSlider.js +121 -0
- package/dist/components/RangeSlider.js.map +1 -0
- package/dist/components/RatingInput.d.ts +15 -0
- package/dist/components/RatingInput.d.ts.map +1 -0
- package/dist/components/RatingInput.js +44 -0
- package/dist/components/RatingInput.js.map +1 -0
- package/dist/components/RecoveryCodeDisplay.d.ts +12 -0
- package/dist/components/RecoveryCodeDisplay.d.ts.map +1 -0
- package/dist/components/RecoveryCodeDisplay.js +48 -0
- package/dist/components/RecoveryCodeDisplay.js.map +1 -0
- package/dist/components/ResizablePanel.d.ts +18 -0
- package/dist/components/ResizablePanel.d.ts.map +1 -0
- package/dist/components/ResizablePanel.js +64 -0
- package/dist/components/ResizablePanel.js.map +1 -0
- package/dist/components/Reviews.d.ts +26 -0
- package/dist/components/Reviews.d.ts.map +1 -0
- package/dist/components/Reviews.js +30 -0
- package/dist/components/Reviews.js.map +1 -0
- package/dist/components/RichTextEditor.d.ts +14 -0
- package/dist/components/RichTextEditor.d.ts.map +1 -0
- package/dist/components/RichTextEditor.js +38 -0
- package/dist/components/RichTextEditor.js.map +1 -0
- package/dist/components/RotarySelector.d.ts +20 -0
- package/dist/components/RotarySelector.d.ts.map +1 -0
- package/dist/components/RotarySelector.js +99 -0
- package/dist/components/RotarySelector.js.map +1 -0
- package/dist/components/SchedulerTimeline.d.ts +31 -0
- package/dist/components/SchedulerTimeline.d.ts.map +1 -0
- package/dist/components/SchedulerTimeline.js +210 -0
- package/dist/components/SchedulerTimeline.js.map +1 -0
- package/dist/components/ScrollArea.d.ts +11 -0
- package/dist/components/ScrollArea.d.ts.map +1 -0
- package/dist/components/ScrollArea.js +132 -0
- package/dist/components/ScrollArea.js.map +1 -0
- package/dist/components/SearchInput.d.ts +13 -0
- package/dist/components/SearchInput.d.ts.map +1 -0
- package/dist/components/SearchInput.js +34 -0
- package/dist/components/SearchInput.js.map +1 -0
- package/dist/components/SectionHeader.d.ts +27 -0
- package/dist/components/SectionHeader.d.ts.map +1 -0
- package/dist/components/SectionHeader.js +18 -0
- package/dist/components/SectionHeader.js.map +1 -0
- package/dist/components/SecurityActivityLog.d.ts +20 -0
- package/dist/components/SecurityActivityLog.d.ts.map +1 -0
- package/dist/components/SecurityActivityLog.js +56 -0
- package/dist/components/SecurityActivityLog.js.map +1 -0
- package/dist/components/SegmentedInput.d.ts +15 -0
- package/dist/components/SegmentedInput.d.ts.map +1 -0
- package/dist/components/SegmentedInput.js +134 -0
- package/dist/components/SegmentedInput.js.map +1 -0
- package/dist/components/Select.d.ts +57 -0
- package/dist/components/Select.d.ts.map +1 -0
- package/dist/components/Select.js +275 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/Sheet.d.ts +35 -0
- package/dist/components/Sheet.d.ts.map +1 -0
- package/dist/components/Sheet.js +117 -0
- package/dist/components/Sheet.js.map +1 -0
- package/dist/components/Sidebar.d.ts +23 -0
- package/dist/components/Sidebar.d.ts.map +1 -0
- package/dist/components/Sidebar.js +21 -0
- package/dist/components/Sidebar.js.map +1 -0
- package/dist/components/SignaturePad.d.ts +19 -0
- package/dist/components/SignaturePad.d.ts.map +1 -0
- package/dist/components/SignaturePad.js +133 -0
- package/dist/components/SignaturePad.js.map +1 -0
- package/dist/components/SignupForm.d.ts +15 -0
- package/dist/components/SignupForm.d.ts.map +1 -0
- package/dist/components/SignupForm.js +50 -0
- package/dist/components/SignupForm.js.map +1 -0
- package/dist/components/Skeleton.d.ts +3 -0
- package/dist/components/Skeleton.d.ts.map +1 -0
- package/dist/components/Skeleton.js +13 -0
- package/dist/components/Skeleton.js.map +1 -0
- package/dist/components/SlideToDelete.d.ts +26 -0
- package/dist/components/SlideToDelete.d.ts.map +1 -0
- package/dist/components/SlideToDelete.js +88 -0
- package/dist/components/SlideToDelete.js.map +1 -0
- package/dist/components/Slider.d.ts +18 -0
- package/dist/components/Slider.d.ts.map +1 -0
- package/dist/components/Slider.js +99 -0
- package/dist/components/Slider.js.map +1 -0
- package/dist/components/Snackbar.d.ts +16 -0
- package/dist/components/Snackbar.d.ts.map +1 -0
- package/dist/components/Snackbar.js +39 -0
- package/dist/components/Snackbar.js.map +1 -0
- package/dist/components/Spacer.d.ts +21 -0
- package/dist/components/Spacer.d.ts.map +1 -0
- package/dist/components/Spacer.js +44 -0
- package/dist/components/Spacer.js.map +1 -0
- package/dist/components/Sparkline.d.ts +17 -0
- package/dist/components/Sparkline.d.ts.map +1 -0
- package/dist/components/Sparkline.js +41 -0
- package/dist/components/Sparkline.js.map +1 -0
- package/dist/components/Spinner.d.ts +8 -0
- package/dist/components/Spinner.d.ts.map +1 -0
- package/dist/components/Spinner.js +26 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/SplitButton.d.ts +20 -0
- package/dist/components/SplitButton.d.ts.map +1 -0
- package/dist/components/SplitButton.js +48 -0
- package/dist/components/SplitButton.js.map +1 -0
- package/dist/components/SplitView.d.ts +40 -0
- package/dist/components/SplitView.d.ts.map +1 -0
- package/dist/components/SplitView.js +14 -0
- package/dist/components/SplitView.js.map +1 -0
- package/dist/components/StatisticDisplay.d.ts +48 -0
- package/dist/components/StatisticDisplay.d.ts.map +1 -0
- package/dist/components/StatisticDisplay.js +141 -0
- package/dist/components/StatisticDisplay.js.map +1 -0
- package/dist/components/Stepper.d.ts +24 -0
- package/dist/components/Stepper.d.ts.map +1 -0
- package/dist/components/Stepper.js +99 -0
- package/dist/components/Stepper.js.map +1 -0
- package/dist/components/StickyContainer.d.ts +32 -0
- package/dist/components/StickyContainer.d.ts.map +1 -0
- package/dist/components/StickyContainer.js +17 -0
- package/dist/components/StickyContainer.js.map +1 -0
- package/dist/components/Switch.d.ts +12 -0
- package/dist/components/Switch.d.ts.map +1 -0
- package/dist/components/Switch.js +46 -0
- package/dist/components/Switch.js.map +1 -0
- package/dist/components/Table.d.ts +22 -0
- package/dist/components/Table.d.ts.map +1 -0
- package/dist/components/Table.js +72 -0
- package/dist/components/Table.js.map +1 -0
- package/dist/components/Tabs.d.ts +29 -0
- package/dist/components/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs.js +63 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/Tag.d.ts +14 -0
- package/dist/components/Tag.d.ts.map +1 -0
- package/dist/components/Tag.js +44 -0
- package/dist/components/Tag.js.map +1 -0
- package/dist/components/TagsInput.d.ts +15 -0
- package/dist/components/TagsInput.d.ts.map +1 -0
- package/dist/components/TagsInput.js +54 -0
- package/dist/components/TagsInput.js.map +1 -0
- package/dist/components/Text.d.ts +21 -0
- package/dist/components/Text.d.ts.map +1 -0
- package/dist/components/Text.js +47 -0
- package/dist/components/Text.js.map +1 -0
- package/dist/components/Textarea.d.ts +6 -0
- package/dist/components/Textarea.d.ts.map +1 -0
- package/dist/components/Textarea.js +10 -0
- package/dist/components/Textarea.js.map +1 -0
- package/dist/components/ThemeToggle.d.ts +22 -0
- package/dist/components/ThemeToggle.d.ts.map +1 -0
- package/dist/components/ThemeToggle.js +81 -0
- package/dist/components/ThemeToggle.js.map +1 -0
- package/dist/components/TimePicker.d.ts +15 -0
- package/dist/components/TimePicker.d.ts.map +1 -0
- package/dist/components/TimePicker.js +148 -0
- package/dist/components/TimePicker.js.map +1 -0
- package/dist/components/Timeline.d.ts +21 -0
- package/dist/components/Timeline.d.ts.map +1 -0
- package/dist/components/Timeline.js +63 -0
- package/dist/components/Timeline.js.map +1 -0
- package/dist/components/Title.d.ts +17 -0
- package/dist/components/Title.d.ts.map +1 -0
- package/dist/components/Title.js +46 -0
- package/dist/components/Title.js.map +1 -0
- package/dist/components/Toast.d.ts +25 -0
- package/dist/components/Toast.d.ts.map +1 -0
- package/dist/components/Toast.js +96 -0
- package/dist/components/Toast.js.map +1 -0
- package/dist/components/Tooltip.d.ts +13 -0
- package/dist/components/Tooltip.d.ts.map +1 -0
- package/dist/components/Tooltip.js +20 -0
- package/dist/components/Tooltip.js.map +1 -0
- package/dist/components/TopActionBar.d.ts +60 -0
- package/dist/components/TopActionBar.d.ts.map +1 -0
- package/dist/components/TopActionBar.js +69 -0
- package/dist/components/TopActionBar.js.map +1 -0
- package/dist/components/TreeView.d.ts +29 -0
- package/dist/components/TreeView.d.ts.map +1 -0
- package/dist/components/TreeView.js +97 -0
- package/dist/components/TreeView.js.map +1 -0
- package/dist/components/TwoFactorAuth.d.ts +12 -0
- package/dist/components/TwoFactorAuth.d.ts.map +1 -0
- package/dist/components/TwoFactorAuth.js +48 -0
- package/dist/components/TwoFactorAuth.js.map +1 -0
- package/dist/components/VideoPlayer.d.ts +11 -0
- package/dist/components/VideoPlayer.d.ts.map +1 -0
- package/dist/components/VideoPlayer.js +132 -0
- package/dist/components/VideoPlayer.js.map +1 -0
- package/dist/components/VoiceRecorder.d.ts +11 -0
- package/dist/components/VoiceRecorder.d.ts.map +1 -0
- package/dist/components/VoiceRecorder.js +145 -0
- package/dist/components/VoiceRecorder.js.map +1 -0
- package/dist/components/WindowControls.d.ts +10 -0
- package/dist/components/WindowControls.d.ts.map +1 -0
- package/dist/components/WindowControls.js +18 -0
- package/dist/components/WindowControls.js.map +1 -0
- package/dist/components/WindowFrame.d.ts +11 -0
- package/dist/components/WindowFrame.d.ts.map +1 -0
- package/dist/components/WindowFrame.js +26 -0
- package/dist/components/WindowFrame.js.map +1 -0
- package/dist/globals.css +316 -0
- package/dist/index.d.ts +249 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +144 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +6 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/scripts/build-registry.d.ts +2 -0
- package/dist/scripts/build-registry.d.ts.map +1 -0
- package/dist/scripts/build-registry.js +58 -0
- package/dist/scripts/build-registry.js.map +1 -0
- package/dist/tokens.d.ts +281 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +265 -0
- package/dist/tokens.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +118 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import React, { useState, useRef, useEffect } from 'react';
|
|
4
|
+
import { cn } from '../lib/utils';
|
|
5
|
+
import { Textarea } from './Textarea';
|
|
6
|
+
import { Button } from './Button';
|
|
7
|
+
import { Paperclip, Send, X, File, Mic } from 'lucide-react';
|
|
8
|
+
/* ========================================
|
|
9
|
+
COMPONENT
|
|
10
|
+
======================================== */
|
|
11
|
+
export const ChatInput = React.forwardRef(({ value = '', onChange, onSend, placeholder = 'Type a message...', attachments = [], onAttachmentsChange, maxAttachments = 5, showAttachmentButton = true, showVoiceButton = false, disabled = false, className, ...props }, ref) => {
|
|
12
|
+
const [inputValue, setInputValue] = useState(value);
|
|
13
|
+
const [localAttachments, setLocalAttachments] = useState(attachments);
|
|
14
|
+
const fileInputRef = useRef(null);
|
|
15
|
+
const textareaRef = useRef(null);
|
|
16
|
+
// Sync attachments from props
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (attachments) {
|
|
19
|
+
setLocalAttachments(attachments);
|
|
20
|
+
}
|
|
21
|
+
}, [attachments]);
|
|
22
|
+
const handleInputChange = (e) => {
|
|
23
|
+
const newValue = e.target.value;
|
|
24
|
+
setInputValue(newValue);
|
|
25
|
+
onChange?.(newValue);
|
|
26
|
+
};
|
|
27
|
+
const handleSend = () => {
|
|
28
|
+
if ((inputValue.trim() || localAttachments.length > 0) && !disabled) {
|
|
29
|
+
onSend?.(inputValue, localAttachments);
|
|
30
|
+
setInputValue('');
|
|
31
|
+
setLocalAttachments([]);
|
|
32
|
+
onAttachmentsChange?.([]);
|
|
33
|
+
if (textareaRef.current) {
|
|
34
|
+
textareaRef.current.style.height = 'auto';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const handleKeyDown = (e) => {
|
|
39
|
+
if (e.key === 'Enter' && !e.shiftKey) {
|
|
40
|
+
e.preventDefault();
|
|
41
|
+
handleSend();
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const handleFileSelect = (e) => {
|
|
45
|
+
const files = Array.from(e.target.files || []);
|
|
46
|
+
if (files.length === 0)
|
|
47
|
+
return;
|
|
48
|
+
const remainingSlots = maxAttachments - localAttachments.length;
|
|
49
|
+
if (remainingSlots <= 0) {
|
|
50
|
+
alert(`Maximum ${maxAttachments} attachments allowed`);
|
|
51
|
+
if (fileInputRef.current) {
|
|
52
|
+
fileInputRef.current.value = '';
|
|
53
|
+
}
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const filesToAdd = files.slice(0, remainingSlots);
|
|
57
|
+
const newAttachments = [];
|
|
58
|
+
filesToAdd.forEach((file) => {
|
|
59
|
+
const type = file.type.startsWith('image/') ? 'image'
|
|
60
|
+
: file.type.startsWith('video/') ? 'video'
|
|
61
|
+
: file.type.startsWith('audio/') ? 'audio'
|
|
62
|
+
: 'file';
|
|
63
|
+
const attachment = {
|
|
64
|
+
id: `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
|
|
65
|
+
file,
|
|
66
|
+
type,
|
|
67
|
+
};
|
|
68
|
+
if (type === 'image') {
|
|
69
|
+
const reader = new FileReader();
|
|
70
|
+
reader.onload = (e) => {
|
|
71
|
+
attachment.preview = e.target?.result;
|
|
72
|
+
setLocalAttachments((prev) => {
|
|
73
|
+
const updated = [...prev, attachment];
|
|
74
|
+
onAttachmentsChange?.(updated);
|
|
75
|
+
return updated;
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
reader.onerror = () => {
|
|
79
|
+
console.error('Error reading image file');
|
|
80
|
+
};
|
|
81
|
+
reader.readAsDataURL(file);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
newAttachments.push(attachment);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
if (newAttachments.length > 0) {
|
|
88
|
+
setLocalAttachments((prev) => {
|
|
89
|
+
const updated = [...prev, ...newAttachments];
|
|
90
|
+
onAttachmentsChange?.(updated);
|
|
91
|
+
return updated;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
if (fileInputRef.current) {
|
|
95
|
+
fileInputRef.current.value = '';
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
const handleRemoveAttachment = (id) => {
|
|
99
|
+
const newAttachments = localAttachments.filter((a) => a.id !== id);
|
|
100
|
+
setLocalAttachments(newAttachments);
|
|
101
|
+
onAttachmentsChange?.(newAttachments);
|
|
102
|
+
};
|
|
103
|
+
const handleAttachmentClick = () => {
|
|
104
|
+
fileInputRef.current?.click();
|
|
105
|
+
};
|
|
106
|
+
return (_jsxs("div", { ref: ref, className: cn("w-full", className), ...props, children: [localAttachments.length > 0 && (_jsx("div", { className: "flex gap-2 mb-2 overflow-x-auto pb-2", children: localAttachments.map((attachment) => (_jsxs("div", { className: "relative flex-shrink-0 w-20 h-20 rounded-lg overflow-hidden bg-surface-secondary border border-border-primary", children: [attachment.preview ? (_jsx("img", { src: attachment.preview, alt: attachment.file.name, className: "w-full h-full object-cover" })) : (_jsx("div", { className: "w-full h-full flex items-center justify-center", children: _jsx(File, { className: "w-6 h-6 text-text-tertiary" }) })), _jsx("button", { onClick: () => handleRemoveAttachment(attachment.id), className: "absolute top-1 right-1 w-5 h-5 rounded-full bg-black/50 text-white flex items-center justify-center hover:bg-black/70 transition-colors", children: _jsx(X, { className: "w-3 h-3" }) })] }, attachment.id))) })), _jsxs("div", { className: "flex items-center gap-2 p-3 bg-surface-secondary rounded-2xl border border-border-primary", children: [showAttachmentButton && localAttachments.length < maxAttachments && (_jsx(Button, { variant: "ghost", size: "sm", onClick: handleAttachmentClick, disabled: disabled, className: "flex-shrink-0", type: "button", children: _jsx(Paperclip, { className: "w-4 h-4" }) })), _jsx(Textarea, { ref: textareaRef, value: inputValue, onChange: handleInputChange, onKeyDown: handleKeyDown, placeholder: placeholder, disabled: disabled, rows: 1, className: "flex-1 min-h-[40px] max-h-[120px] resize-none border-0 bg-transparent focus-visible:ring-0 py-2", style: {
|
|
107
|
+
height: 'auto',
|
|
108
|
+
}, onInput: (e) => {
|
|
109
|
+
const target = e.target;
|
|
110
|
+
target.style.height = 'auto';
|
|
111
|
+
target.style.height = `${target.scrollHeight}px`;
|
|
112
|
+
} }), showVoiceButton && (_jsx(Button, { variant: "ghost", size: "sm", disabled: disabled, className: "flex-shrink-0", type: "button", children: _jsx(Mic, { className: "w-4 h-4" }) })), _jsx(Button, { variant: "primary", size: "sm", onClick: handleSend, disabled: disabled || (!inputValue.trim() && localAttachments.length === 0), className: "flex-shrink-0", type: "button", children: _jsx(Send, { className: "w-4 h-4" }) }), _jsx("input", { ref: fileInputRef, type: "file", multiple: true, accept: "image/*,video/*,audio/*,.pdf,.doc,.docx,.txt,.csv,.xlsx,.pptx", onChange: handleFileSelect, className: "hidden" })] })] }));
|
|
113
|
+
});
|
|
114
|
+
ChatInput.displayName = 'ChatInput';
|
|
115
|
+
//# sourceMappingURL=ChatInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatInput.js","sourceRoot":"","sources":["../../components/ChatInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type CheckedState = boolean | "indeterminate";
|
|
3
|
+
export interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "type" | "checked" | "defaultChecked" | "onChange"> {
|
|
4
|
+
checked?: CheckedState;
|
|
5
|
+
defaultChecked?: CheckedState;
|
|
6
|
+
onCheckedChange?: (checked: CheckedState) => void;
|
|
7
|
+
}
|
|
8
|
+
declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
|
|
9
|
+
export { Checkbox };
|
|
10
|
+
//# sourceMappingURL=Checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../components/Checkbox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,KAAK,YAAY,GAAG,OAAO,GAAG,eAAe,CAAC;AAE9C,MAAM,WAAW,aACb,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,UAAU,CAAC;IAC7G,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;CACrD;AAED,QAAA,MAAM,QAAQ,wFAuEb,CAAC;AAGF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Check, Minus } from "lucide-react";
|
|
5
|
+
import { cn } from "../lib/utils";
|
|
6
|
+
const Checkbox = React.forwardRef(({ className, checked, defaultChecked = false, onCheckedChange, disabled, ...props }, ref) => {
|
|
7
|
+
const inputRef = React.useRef(null);
|
|
8
|
+
const setRefs = React.useCallback((node) => {
|
|
9
|
+
inputRef.current = node;
|
|
10
|
+
if (typeof ref === "function")
|
|
11
|
+
ref(node);
|
|
12
|
+
else if (ref)
|
|
13
|
+
ref.current = node;
|
|
14
|
+
}, [ref]);
|
|
15
|
+
const [internalChecked, setInternalChecked] = React.useState(defaultChecked);
|
|
16
|
+
const currentChecked = checked !== undefined ? checked : internalChecked;
|
|
17
|
+
React.useEffect(() => {
|
|
18
|
+
if (inputRef.current) {
|
|
19
|
+
inputRef.current.indeterminate = currentChecked === "indeterminate";
|
|
20
|
+
}
|
|
21
|
+
}, [currentChecked]);
|
|
22
|
+
const dataState = currentChecked === "indeterminate" ? "indeterminate" : currentChecked ? "checked" : "unchecked";
|
|
23
|
+
const handleChange = (event) => {
|
|
24
|
+
// If it was indeterminate, a user action should move to checked.
|
|
25
|
+
const nextChecked = currentChecked === "indeterminate" ? true : event.target.checked;
|
|
26
|
+
if (checked === undefined) {
|
|
27
|
+
setInternalChecked(nextChecked);
|
|
28
|
+
}
|
|
29
|
+
onCheckedChange?.(nextChecked);
|
|
30
|
+
};
|
|
31
|
+
return (_jsxs("span", { className: "inline-flex items-center align-middle", "data-state": dataState, "aria-disabled": disabled ? true : undefined, children: [_jsx("input", { ref: setRefs, type: "checkbox", className: cn("peer h-5 w-5 shrink-0 rounded-md border border-border-primary shadow-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-accent-blue data-[state=checked]:text-white data-[state=checked]:border-accent-blue data-[state=indeterminate]:bg-accent-blue data-[state=indeterminate]:text-white data-[state=indeterminate]:border-accent-blue transition-all duration-200 appearance-none", className), role: "checkbox", "aria-checked": dataState === "indeterminate" ? "mixed" : currentChecked, "data-state": dataState, checked: currentChecked === true, onChange: handleChange, disabled: disabled, ...props }), _jsx("span", { className: cn("pointer-events-none -ml-5 flex h-5 w-5 items-center justify-center text-current align-middle", "[input[data-state=unchecked]+&]:opacity-0"), "aria-hidden": true, children: dataState === "indeterminate" ? (_jsx(Minus, { className: "h-3 w-3 stroke-3" })) : (_jsx(Check, { className: "h-3.5 w-3.5 stroke-3" })) })] }));
|
|
32
|
+
});
|
|
33
|
+
Checkbox.displayName = "Checkbox";
|
|
34
|
+
export { Checkbox };
|
|
35
|
+
//# sourceMappingURL=Checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../components/Checkbox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type ChipVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
|
|
3
|
+
export type ChipSize = 'sm' | 'md' | 'lg';
|
|
4
|
+
export interface ChipProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick'> {
|
|
5
|
+
label: string;
|
|
6
|
+
variant?: ChipVariant;
|
|
7
|
+
size?: ChipSize;
|
|
8
|
+
icon?: React.ElementType;
|
|
9
|
+
onDelete?: () => void;
|
|
10
|
+
onClick?: () => void;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare const Chip: React.ForwardRefExoticComponent<ChipProps & React.RefAttributes<HTMLDivElement>>;
|
|
14
|
+
//# sourceMappingURL=Chip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../../components/Chip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAS1C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAC3F,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IACpF,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,eAAO,MAAM,IAAI,kFA8EhB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
import { cn } from '../lib/utils';
|
|
4
|
+
import { motion } from 'framer-motion';
|
|
5
|
+
import { X } from 'lucide-react';
|
|
6
|
+
/* ========================================
|
|
7
|
+
CHIP COMPONENT
|
|
8
|
+
======================================== */
|
|
9
|
+
export const Chip = forwardRef(({ label, variant = 'default', size = 'md', icon: Icon, onDelete, onClick, disabled = false, className, ...props }, ref) => {
|
|
10
|
+
const variants = {
|
|
11
|
+
default: "bg-surface-secondary text-text-primary border-border-primary hover:bg-surface-tertiary",
|
|
12
|
+
primary: "bg-accent-blue/10 text-accent-blue border-accent-blue/20 hover:bg-accent-blue/20",
|
|
13
|
+
success: "bg-status-success/10 text-status-success border-status-success/20 hover:bg-status-success/20",
|
|
14
|
+
warning: "bg-status-warning/10 text-status-warning border-status-warning/20 hover:bg-status-warning/20",
|
|
15
|
+
error: "bg-status-error/10 text-status-error border-status-error/20 hover:bg-status-error/20",
|
|
16
|
+
info: "bg-status-info/10 text-status-info border-status-info/20 hover:bg-status-info/20",
|
|
17
|
+
};
|
|
18
|
+
const sizes = {
|
|
19
|
+
sm: {
|
|
20
|
+
container: "h-6 px-2 gap-1 text-xs",
|
|
21
|
+
icon: "w-3 h-3",
|
|
22
|
+
deleteButton: "w-3.5 h-3.5",
|
|
23
|
+
},
|
|
24
|
+
md: {
|
|
25
|
+
container: "h-8 px-3 gap-1.5 text-sm",
|
|
26
|
+
icon: "w-4 h-4",
|
|
27
|
+
deleteButton: "w-4 h-4",
|
|
28
|
+
},
|
|
29
|
+
lg: {
|
|
30
|
+
container: "h-10 px-4 gap-2 text-base",
|
|
31
|
+
icon: "w-5 h-5",
|
|
32
|
+
deleteButton: "w-5 h-5",
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
const isClickable = !!onClick && !disabled;
|
|
36
|
+
const Component = motion.div;
|
|
37
|
+
return (_jsxs(Component, { ref: ref, whileHover: isClickable ? { scale: 1.02 } : undefined, whileTap: isClickable ? { scale: 0.98 } : undefined, onClick: isClickable ? onClick : undefined, className: cn("inline-flex items-center justify-center rounded-full border font-medium transition-colors", variants[variant], sizes[size].container, isClickable && "cursor-pointer", disabled && "opacity-50 cursor-not-allowed", className), children: [Icon && _jsx(Icon, { className: sizes[size].icon }), _jsx("span", { children: label }), onDelete && !disabled && (_jsx("button", { onClick: (e) => {
|
|
38
|
+
e.stopPropagation();
|
|
39
|
+
onDelete();
|
|
40
|
+
}, className: "rounded-full hover:bg-black/10 transition-colors focus:outline-none p-0.5", "aria-label": "Delete", children: _jsx(X, { className: sizes[size].deleteButton }) }))] }));
|
|
41
|
+
});
|
|
42
|
+
Chip.displayName = 'Chip';
|
|
43
|
+
//# sourceMappingURL=Chip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Chip.js","sourceRoot":"","sources":["../../components/Chip.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAmBjC;;8CAE8C;AAE9C,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAC1B,CACI,EACI,KAAK,EACL,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,IAAI,EAAE,IAAI,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,GAAG,KAAK,EACX,EACD,GAAG,EACL,EAAE;IACA,MAAM,QAAQ,GAAG;QACb,OAAO,EAAE,wFAAwF;QACjG,OAAO,EAAE,kFAAkF;QAC3F,OAAO,EAAE,8FAA8F;QACvG,OAAO,EAAE,8FAA8F;QACvG,KAAK,EAAE,sFAAsF;QAC7F,IAAI,EAAE,kFAAkF;KAC3F,CAAC;IAEF,MAAM,KAAK,GAAG;QACV,EAAE,EAAE;YACA,SAAS,EAAE,wBAAwB;YACnC,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,aAAa;SAC9B;QACD,EAAE,EAAE;YACA,SAAS,EAAE,0BAA0B;YACrC,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,SAAS;SAC1B;QACD,EAAE,EAAE;YACA,SAAS,EAAE,2BAA2B;YACtC,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,SAAS;SAC1B;KACJ,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC;IAE3C,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;IAE7B,OAAO,CACH,MAAC,SAAS,IACN,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,EACrD,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,EACnD,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC1C,SAAS,EAAE,EAAE,CACT,2FAA2F,EAC3F,QAAQ,CAAC,OAAO,CAAC,EACjB,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EACrB,WAAW,IAAI,gBAAgB,EAC/B,QAAQ,IAAI,+BAA+B,EAC3C,SAAS,CACZ,aAEA,IAAI,IAAI,KAAC,IAAI,IAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,GAAI,EAC9C,yBAAO,KAAK,GAAQ,EACnB,QAAQ,IAAI,CAAC,QAAQ,IAAI,CACtB,iBACI,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACX,CAAC,CAAC,eAAe,EAAE,CAAC;oBACpB,QAAQ,EAAE,CAAC;gBACf,CAAC,EACD,SAAS,EAAC,2EAA2E,gBAC1E,QAAQ,YAEnB,KAAC,CAAC,IAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,GAAI,GACrC,CACZ,IACO,CACf,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../components/CodeBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA0C9C,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Check, Copy } from 'lucide-react';
|
|
4
|
+
export const CodeBlock = ({ code, language = 'typescript', showLineNumbers = false, className = '', }) => {
|
|
5
|
+
const [copied, setCopied] = React.useState(false);
|
|
6
|
+
const handleCopy = () => {
|
|
7
|
+
navigator.clipboard.writeText(code);
|
|
8
|
+
setCopied(true);
|
|
9
|
+
setTimeout(() => setCopied(false), 2000);
|
|
10
|
+
};
|
|
11
|
+
return (_jsxs("div", { className: `relative group rounded-xl overflow-hidden bg-background-secondary border border-border-primary ${className}`, children: [_jsxs("div", { className: "flex items-center justify-between px-4 py-2 bg-background-tertiary/50 border-b border-border-primary", children: [_jsx("span", { className: "text-xs font-medium text-text-tertiary uppercase tracking-wider", children: language }), _jsx("button", { onClick: handleCopy, className: "p-1.5 rounded-lg hover:bg-background-tertiary text-text-tertiary hover:text-text-primary transition-colors focus:outline-none focus:ring-2 focus:ring-accent-blue/20", "aria-label": "Copy code", children: copied ? _jsx(Check, { className: "w-4 h-4 text-status-success" }) : _jsx(Copy, { className: "w-4 h-4" }) })] }), _jsx("div", { className: "p-4 overflow-x-auto", children: _jsx("pre", { className: "font-mono text-sm text-text-primary leading-relaxed", children: _jsx("code", { children: showLineNumbers
|
|
12
|
+
? code.split('\n').map((line, i) => (_jsxs("div", { className: "table-row", children: [_jsx("span", { className: "table-cell text-right pr-4 text-text-quaternary select-none w-8", children: i + 1 }), _jsx("span", { className: "table-cell whitespace-pre", children: line || ' ' })] }, i)))
|
|
13
|
+
: code }) }) })] }));
|
|
14
|
+
};
|
|
15
|
+
CodeBlock.displayName = 'CodeBlock';
|
|
16
|
+
//# sourceMappingURL=CodeBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeBlock.js","sourceRoot":"","sources":["../../components/CodeBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAS3C,MAAM,CAAC,MAAM,SAAS,GAA6B,CAAC,EAChD,IAAI,EACJ,QAAQ,GAAG,YAAY,EACvB,eAAe,GAAG,KAAK,EACvB,SAAS,GAAG,EAAE,GACjB,EAAE,EAAE;IACD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,OAAO,CACH,eAAK,SAAS,EAAE,kGAAkG,SAAS,EAAE,aACzH,eAAK,SAAS,EAAC,sGAAsG,aACjH,eAAM,SAAS,EAAC,iEAAiE,YAAE,QAAQ,GAAQ,EACnG,iBACI,OAAO,EAAE,UAAU,EACnB,SAAS,EAAC,sKAAsK,gBACrK,WAAW,YAErB,MAAM,CAAC,CAAC,CAAC,KAAC,KAAK,IAAC,SAAS,EAAC,6BAA6B,GAAG,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,GACrF,IACP,EACN,cAAK,SAAS,EAAC,qBAAqB,YAChC,cAAK,SAAS,EAAC,qDAAqD,YAChE,yBACK,eAAe;4BACZ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAChC,eAAa,SAAS,EAAC,WAAW,aAC9B,eAAM,SAAS,EAAC,iEAAiE,YAAE,CAAC,GAAG,CAAC,GAAQ,EAChG,eAAM,SAAS,EAAC,2BAA2B,YAAE,IAAI,IAAI,GAAG,GAAQ,KAF1D,CAAC,CAGL,CACT,CAAC;4BACF,CAAC,CAAC,IAAI,GACP,GACL,GACJ,IACJ,CACT,CAAC;AACN,CAAC,CAAC;AAEF,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type CollapsibleProps = {
|
|
3
|
+
open?: boolean;
|
|
4
|
+
defaultOpen?: boolean;
|
|
5
|
+
onOpenChange?: (open: boolean) => void;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
} & React.HTMLAttributes<HTMLDivElement>;
|
|
8
|
+
declare const Collapsible: React.ForwardRefExoticComponent<{
|
|
9
|
+
open?: boolean;
|
|
10
|
+
defaultOpen?: boolean;
|
|
11
|
+
onOpenChange?: (open: boolean) => void;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
} & React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
14
|
+
export type CollapsibleTriggerProps = React.ButtonHTMLAttributes<HTMLButtonElement>;
|
|
15
|
+
declare const CollapsibleTrigger: React.ForwardRefExoticComponent<CollapsibleTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
16
|
+
export type CollapsibleContentProps = React.HTMLAttributes<HTMLDivElement>;
|
|
17
|
+
declare const CollapsibleContent: React.ForwardRefExoticComponent<CollapsibleContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
export { Collapsible, CollapsibleTrigger, CollapsibleContent };
|
|
19
|
+
//# sourceMappingURL=Collapsible.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../components/Collapsible.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAEzC,QAAA,MAAM,WAAW;WANN,OAAO;kBACA,OAAO;mBACN,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI;eAC3B,OAAO;+EAqCrB,CAAC;AAGF,MAAM,MAAM,uBAAuB,GAAG,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAEpF,QAAA,MAAM,kBAAkB,mGA2BvB,CAAC;AAGF,MAAM,MAAM,uBAAuB,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAE3E,QAAA,MAAM,kBAAkB,gGAgCvB,CAAC;AAGF,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { motion } from "framer-motion";
|
|
5
|
+
const CollapsibleContext = React.createContext(null);
|
|
6
|
+
const Collapsible = React.forwardRef(({ open, defaultOpen = false, onOpenChange, disabled, className, children, ...props }, ref) => {
|
|
7
|
+
const [internalOpen, setInternalOpen] = React.useState(defaultOpen);
|
|
8
|
+
const isControlled = open !== undefined;
|
|
9
|
+
const currentOpen = isControlled ? open : internalOpen;
|
|
10
|
+
const baseId = React.useId();
|
|
11
|
+
const toggle = React.useCallback(() => {
|
|
12
|
+
if (disabled)
|
|
13
|
+
return;
|
|
14
|
+
const next = !currentOpen;
|
|
15
|
+
if (!isControlled)
|
|
16
|
+
setInternalOpen(next);
|
|
17
|
+
onOpenChange?.(next);
|
|
18
|
+
}, [currentOpen, disabled, isControlled, onOpenChange]);
|
|
19
|
+
const contextValue = React.useMemo(() => ({ open: !!currentOpen, disabled, triggerId: `${baseId}-trigger`, contentId: `${baseId}-content`, toggle }), [baseId, currentOpen, disabled, toggle]);
|
|
20
|
+
return (_jsx(CollapsibleContext.Provider, { value: contextValue, children: _jsx("div", { ref: ref, "data-state": currentOpen ? "open" : "closed", "data-disabled": disabled ? "" : undefined, className: className, ...props, children: children }) }));
|
|
21
|
+
});
|
|
22
|
+
Collapsible.displayName = "Collapsible";
|
|
23
|
+
const CollapsibleTrigger = React.forwardRef(({ className, children, ...props }, ref) => {
|
|
24
|
+
const context = React.useContext(CollapsibleContext);
|
|
25
|
+
if (!context) {
|
|
26
|
+
throw new Error("CollapsibleTrigger must be used within Collapsible");
|
|
27
|
+
}
|
|
28
|
+
const { open, toggle, triggerId, contentId, disabled } = context;
|
|
29
|
+
return (_jsx("button", { ref: ref, id: triggerId, type: "button", "aria-controls": contentId, "aria-expanded": open, onClick: toggle, disabled: disabled || props.disabled, "data-state": open ? "open" : "closed", "data-disabled": disabled || props.disabled ? "" : undefined, className: className, ...props, children: children }));
|
|
30
|
+
});
|
|
31
|
+
CollapsibleTrigger.displayName = "CollapsibleTrigger";
|
|
32
|
+
const CollapsibleContent = React.forwardRef(({ className, children, ...props }, ref) => {
|
|
33
|
+
const context = React.useContext(CollapsibleContext);
|
|
34
|
+
if (!context) {
|
|
35
|
+
throw new Error("CollapsibleContent must be used within Collapsible");
|
|
36
|
+
}
|
|
37
|
+
const { open, triggerId, contentId, disabled } = context;
|
|
38
|
+
return (_jsx("div", { ref: ref, id: contentId, role: "region", "aria-labelledby": triggerId, "aria-hidden": !open, "data-state": open ? "open" : "closed", "data-disabled": disabled ? "" : undefined, className: className, ...props, children: _jsx(motion.div, { initial: false, animate: { height: open ? "auto" : 0, opacity: open ? 1 : 0 }, transition: { duration: 0.2, ease: "easeInOut" }, style: { overflow: "hidden" }, children: children }) }));
|
|
39
|
+
});
|
|
40
|
+
CollapsibleContent.displayName = "CollapsibleContent";
|
|
41
|
+
export { Collapsible, CollapsibleTrigger, CollapsibleContent };
|
|
42
|
+
//# sourceMappingURL=Collapsible.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Collapsible.js","sourceRoot":"","sources":["../../components/Collapsible.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ComboboxOption {
|
|
2
|
+
value: string;
|
|
3
|
+
label: string;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface ComboboxProps {
|
|
7
|
+
items: ComboboxOption[];
|
|
8
|
+
value?: string;
|
|
9
|
+
onChange?: (value: string) => void;
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
searchPlaceholder?: string;
|
|
12
|
+
emptyMessage?: string;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function Combobox({ items, value, onChange, placeholder, searchPlaceholder, emptyMessage, disabled, className, }: ComboboxProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=Combobox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../components/Combobox.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,EACrB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,WAAiC,EACjC,iBAA+B,EAC/B,YAA+B,EAC/B,QAAgB,EAChB,SAAS,GACZ,EAAE,aAAa,2CAsMf"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { ChevronsUpDown, Search } from "lucide-react";
|
|
5
|
+
import { cn } from "../lib/utils";
|
|
6
|
+
import { AnimatePresence, motion } from "framer-motion";
|
|
7
|
+
export function Combobox({ items, value, onChange, placeholder = "Select an item...", searchPlaceholder = "Search...", emptyMessage = "No item found.", disabled = false, className, }) {
|
|
8
|
+
const [open, setOpen] = React.useState(false);
|
|
9
|
+
const [search, setSearch] = React.useState("");
|
|
10
|
+
const [highlightedIndex, setHighlightedIndex] = React.useState(0);
|
|
11
|
+
const inputRef = React.useRef(null);
|
|
12
|
+
const listRef = React.useRef(null);
|
|
13
|
+
const triggerRef = React.useRef(null);
|
|
14
|
+
const containerRef = React.useRef(null);
|
|
15
|
+
const [triggerWidth, setTriggerWidth] = React.useState(null);
|
|
16
|
+
const filteredItems = React.useMemo(() => {
|
|
17
|
+
if (!search)
|
|
18
|
+
return items;
|
|
19
|
+
return items.filter((item) => item.label.toLowerCase().includes(search.toLowerCase()));
|
|
20
|
+
}, [items, search]);
|
|
21
|
+
const selectedItem = items.find((item) => item.value === value);
|
|
22
|
+
// Reset highlight when search changes
|
|
23
|
+
React.useEffect(() => {
|
|
24
|
+
setHighlightedIndex(0);
|
|
25
|
+
}, [search]);
|
|
26
|
+
// Focus input when opened
|
|
27
|
+
React.useEffect(() => {
|
|
28
|
+
if (open) {
|
|
29
|
+
// Small timeout to ensure popover is mounted
|
|
30
|
+
setTimeout(() => inputRef.current?.focus(), 50);
|
|
31
|
+
setSearch("");
|
|
32
|
+
setHighlightedIndex(0);
|
|
33
|
+
}
|
|
34
|
+
}, [open]);
|
|
35
|
+
const handleSelect = (itemValue) => {
|
|
36
|
+
onChange?.(itemValue);
|
|
37
|
+
setOpen(false);
|
|
38
|
+
};
|
|
39
|
+
const handleKeyDown = (e) => {
|
|
40
|
+
if (!open) {
|
|
41
|
+
if (e.key === "Enter" || e.key === "ArrowDown" || e.key === " ") {
|
|
42
|
+
e.preventDefault();
|
|
43
|
+
setOpen(true);
|
|
44
|
+
}
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
switch (e.key) {
|
|
48
|
+
case "ArrowDown":
|
|
49
|
+
e.preventDefault();
|
|
50
|
+
setHighlightedIndex((prev) => prev < filteredItems.length - 1 ? prev + 1 : 0);
|
|
51
|
+
break;
|
|
52
|
+
case "ArrowUp":
|
|
53
|
+
e.preventDefault();
|
|
54
|
+
setHighlightedIndex((prev) => (prev > 0 ? prev - 1 : filteredItems.length - 1));
|
|
55
|
+
break;
|
|
56
|
+
case "Enter":
|
|
57
|
+
e.preventDefault();
|
|
58
|
+
if (highlightedIndex >= 0 && filteredItems[highlightedIndex]) {
|
|
59
|
+
handleSelect(filteredItems[highlightedIndex].value);
|
|
60
|
+
}
|
|
61
|
+
break;
|
|
62
|
+
case "Escape":
|
|
63
|
+
e.preventDefault();
|
|
64
|
+
setOpen(false);
|
|
65
|
+
break;
|
|
66
|
+
case "Tab":
|
|
67
|
+
setOpen(false);
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
// Scroll highlighted item into view
|
|
72
|
+
React.useEffect(() => {
|
|
73
|
+
if (open && listRef.current && highlightedIndex >= 0) {
|
|
74
|
+
const highlightedElement = listRef.current.children[highlightedIndex];
|
|
75
|
+
if (highlightedElement) {
|
|
76
|
+
highlightedElement.scrollIntoView({
|
|
77
|
+
block: "nearest",
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}, [highlightedIndex, open]);
|
|
82
|
+
// Measure trigger width for popover sizing
|
|
83
|
+
React.useLayoutEffect(() => {
|
|
84
|
+
if (triggerRef.current) {
|
|
85
|
+
setTriggerWidth(triggerRef.current.offsetWidth);
|
|
86
|
+
}
|
|
87
|
+
}, [className]);
|
|
88
|
+
// Close on outside click when open
|
|
89
|
+
React.useEffect(() => {
|
|
90
|
+
if (!open)
|
|
91
|
+
return;
|
|
92
|
+
const handleClickOutside = (event) => {
|
|
93
|
+
if (containerRef.current && !containerRef.current.contains(event.target)) {
|
|
94
|
+
setOpen(false);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
98
|
+
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
99
|
+
}, [open]);
|
|
100
|
+
return (_jsxs("div", { className: "relative w-full", ref: containerRef, children: [_jsxs("button", { ref: triggerRef, role: "combobox", "aria-expanded": open, disabled: disabled, className: cn("group flex h-10 w-full items-center justify-between rounded-lg border border-border-primary bg-surface-primary px-3 py-2 text-sm ring-offset-background placeholder:text-text-tertiary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 shadow-sm hover:bg-surface-secondary/50 transition-colors", className), onKeyDown: handleKeyDown, onClick: () => !disabled && setOpen((prev) => !prev), children: [_jsx("span", { className: cn("truncate", !selectedItem && "text-text-tertiary"), children: selectedItem ? selectedItem.label : placeholder }), _jsx(ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })] }), _jsx(AnimatePresence, { children: open && (_jsxs(motion.div, { initial: { opacity: 0, scale: 0.95, y: -6 }, animate: { opacity: 1, scale: 1, y: 0 }, exit: { opacity: 0, scale: 0.95, y: -6 }, transition: { duration: 0.12, ease: "easeOut" }, "data-state": open ? "open" : "closed", className: cn("absolute z-50 overflow-hidden rounded-xl border border-border-primary bg-surface-glass backdrop-blur-xl text-text-primary shadow-lg", "p-0"), style: {
|
|
101
|
+
minWidth: triggerWidth ? `${triggerWidth}px` : undefined,
|
|
102
|
+
top: "calc(100% + 4px)",
|
|
103
|
+
left: 0,
|
|
104
|
+
}, children: [_jsxs("div", { className: "flex items-center border-b border-border-primary px-3", children: [_jsx(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }), _jsx("input", { ref: inputRef, className: "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-text-tertiary disabled:cursor-not-allowed disabled:opacity-50", placeholder: searchPlaceholder, value: search, onChange: (e) => setSearch(e.target.value), onKeyDown: handleKeyDown })] }), _jsx("div", { ref: listRef, className: "max-h-[200px] overflow-y-auto overflow-x-hidden py-1", onMouseLeave: () => setHighlightedIndex(-1), children: filteredItems.length === 0 ? (_jsx("div", { className: "p-2 text-center text-sm text-text-tertiary", children: emptyMessage })) : (filteredItems.map((item, index) => {
|
|
105
|
+
const isSelected = item.value === value;
|
|
106
|
+
const isHighlighted = index === highlightedIndex;
|
|
107
|
+
return (_jsx("div", { className: cn("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors mx-1", isSelected
|
|
108
|
+
? "bg-accent-blue text-white"
|
|
109
|
+
: isHighlighted
|
|
110
|
+
? "bg-surface-secondary text-text-primary"
|
|
111
|
+
: "text-text-primary", item.disabled && "pointer-events-none opacity-50"), onClick: () => !item.disabled && handleSelect(item.value), onMouseEnter: () => setHighlightedIndex(index), children: _jsx("span", { className: "truncate", children: item.label }) }, item.value));
|
|
112
|
+
})) })] }, "combobox-popover")) })] }));
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=Combobox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Combobox.js","sourceRoot":"","sources":["../../components/Combobox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Command Menu / Spotlight Search component – macOS-style command palette.
|
|
4
|
+
*
|
|
5
|
+
* Features keyboard navigation, search filtering, and grouped commands.
|
|
6
|
+
* Inspired by macOS Spotlight and modern command palettes.
|
|
7
|
+
*/
|
|
8
|
+
export interface CommandMenuItem {
|
|
9
|
+
id: string;
|
|
10
|
+
label: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
icon?: React.ReactNode;
|
|
13
|
+
shortcut?: string;
|
|
14
|
+
onSelect: () => void;
|
|
15
|
+
keywords?: string[];
|
|
16
|
+
}
|
|
17
|
+
export interface CommandMenuGroup {
|
|
18
|
+
title?: string;
|
|
19
|
+
items: CommandMenuItem[];
|
|
20
|
+
}
|
|
21
|
+
export interface CommandMenuProps {
|
|
22
|
+
/** Whether the command menu is open */
|
|
23
|
+
isOpen: boolean;
|
|
24
|
+
/** Callback when menu should close */
|
|
25
|
+
onClose: () => void;
|
|
26
|
+
/** Command groups */
|
|
27
|
+
groups: CommandMenuGroup[];
|
|
28
|
+
/** Placeholder text for search input */
|
|
29
|
+
placeholder?: string;
|
|
30
|
+
/** Optional className for custom styling */
|
|
31
|
+
className?: string;
|
|
32
|
+
/** Empty state message */
|
|
33
|
+
emptyMessage?: string;
|
|
34
|
+
}
|
|
35
|
+
export declare const CommandMenu: React.ForwardRefExoticComponent<CommandMenuProps & React.RefAttributes<HTMLDivElement>>;
|
|
36
|
+
//# sourceMappingURL=CommandMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandMenu.d.ts","sourceRoot":"","sources":["../../components/CommandMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;;;;GAKG;AAEH,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC7B,uCAAuC;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,qBAAqB;IACrB,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,WAAW,yFA+PvB,CAAC"}
|