@admin-layout/tailwind-ui 12.2.4-alpha.4 → 12.2.4-alpha.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/AIToolbar/components/AIToolBar.d.ts +22 -0
- package/lib/components/AIToolbar/components/AIToolBar.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/AIToolBar.js +83 -0
- package/lib/components/AIToolbar/components/AIToolBar.js.map +1 -0
- package/lib/components/AIToolbar/components/AIToolbarPrimitives.d.ts +14 -0
- package/lib/components/AIToolbar/components/AIToolbarPrimitives.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/AIToolbarPrimitives.js +60 -0
- package/lib/components/AIToolbar/components/AIToolbarPrimitives.js.map +1 -0
- package/lib/components/AIToolbar/components/CustomCursor.d.ts +2 -0
- package/lib/components/AIToolbar/components/CustomCursor.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/CustomCursor.js +66 -0
- package/lib/components/AIToolbar/components/CustomCursor.js.map +1 -0
- package/lib/components/AIToolbar/components/DragButton.d.ts +9 -0
- package/lib/components/AIToolbar/components/DragButton.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/DragButton.js +57 -0
- package/lib/components/AIToolbar/components/DragButton.js.map +1 -0
- package/lib/components/AIToolbar/components/Markdown/copy-button.d.ts +7 -0
- package/lib/components/AIToolbar/components/Markdown/copy-button.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/Markdown/copy-button.js +30 -0
- package/lib/components/AIToolbar/components/Markdown/copy-button.js.map +1 -0
- package/lib/components/AIToolbar/components/Markdown/index.d.ts +7 -0
- package/lib/components/AIToolbar/components/Markdown/index.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/Markdown/index.js +46 -0
- package/lib/components/AIToolbar/components/Markdown/index.js.map +1 -0
- package/lib/components/AIToolbar/components/completion/Audio.d.ts +3 -0
- package/lib/components/AIToolbar/components/completion/Audio.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/completion/Audio.js +65 -0
- package/lib/components/AIToolbar/components/completion/Audio.js.map +1 -0
- package/lib/components/AIToolbar/components/completion/AutoSpeechVad.d.ts +11 -0
- package/lib/components/AIToolbar/components/completion/AutoSpeechVad.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/completion/AutoSpeechVad.js +66 -0
- package/lib/components/AIToolbar/components/completion/AutoSpeechVad.js.map +1 -0
- package/lib/components/AIToolbar/components/completion/Files.d.ts +6 -0
- package/lib/components/AIToolbar/components/completion/Files.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/completion/Files.js +134 -0
- package/lib/components/AIToolbar/components/completion/Files.js.map +1 -0
- package/lib/components/AIToolbar/components/completion/Input.d.ts +5 -0
- package/lib/components/AIToolbar/components/completion/Input.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/completion/Input.js +169 -0
- package/lib/components/AIToolbar/components/completion/Input.js.map +1 -0
- package/lib/components/AIToolbar/components/completion/MessageHistory.d.ts +11 -0
- package/lib/components/AIToolbar/components/completion/MessageHistory.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/completion/MessageHistory.js +90 -0
- package/lib/components/AIToolbar/components/completion/MessageHistory.js.map +1 -0
- package/lib/components/AIToolbar/components/completion/Screenshot.d.ts +6 -0
- package/lib/components/AIToolbar/components/completion/Screenshot.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/completion/Screenshot.js +28 -0
- package/lib/components/AIToolbar/components/completion/Screenshot.js.map +1 -0
- package/lib/components/AIToolbar/components/completion/index.d.ts +10 -0
- package/lib/components/AIToolbar/components/completion/index.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/completion/index.js +20 -0
- package/lib/components/AIToolbar/components/completion/index.js.map +1 -0
- package/lib/components/AIToolbar/components/index.d.ts +17 -0
- package/lib/components/AIToolbar/components/index.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/Header.d.ts +14 -0
- package/lib/components/AIToolbar/components/speech/Header.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/Header.js +82 -0
- package/lib/components/AIToolbar/components/speech/Header.js.map +1 -0
- package/lib/components/AIToolbar/components/speech/ModeSwitcher.d.ts +8 -0
- package/lib/components/AIToolbar/components/speech/ModeSwitcher.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/ModeSwitcher.js +44 -0
- package/lib/components/AIToolbar/components/speech/ModeSwitcher.js.map +1 -0
- package/lib/components/AIToolbar/components/speech/PermissionFlow.d.ts +8 -0
- package/lib/components/AIToolbar/components/speech/PermissionFlow.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/PermissionFlow.js +161 -0
- package/lib/components/AIToolbar/components/speech/PermissionFlow.js.map +1 -0
- package/lib/components/AIToolbar/components/speech/QuickActions.d.ts +13 -0
- package/lib/components/AIToolbar/components/speech/QuickActions.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/QuickActions.js +100 -0
- package/lib/components/AIToolbar/components/speech/QuickActions.js.map +1 -0
- package/lib/components/AIToolbar/components/speech/RecordingPanel.d.ts +14 -0
- package/lib/components/AIToolbar/components/speech/RecordingPanel.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/RecordingPanel.js +101 -0
- package/lib/components/AIToolbar/components/speech/RecordingPanel.js.map +1 -0
- package/lib/components/AIToolbar/components/speech/ResultsSection.d.ts +12 -0
- package/lib/components/AIToolbar/components/speech/ResultsSection.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/ResultsSection.js +132 -0
- package/lib/components/AIToolbar/components/speech/ResultsSection.js.map +1 -0
- package/lib/components/AIToolbar/components/speech/SettingsPanel.d.ts +12 -0
- package/lib/components/AIToolbar/components/speech/SettingsPanel.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/SettingsPanel.js +289 -0
- package/lib/components/AIToolbar/components/speech/SettingsPanel.js.map +1 -0
- package/lib/components/AIToolbar/components/speech/StatusIndicator.d.ts +10 -0
- package/lib/components/AIToolbar/components/speech/StatusIndicator.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/StatusIndicator.js +48 -0
- package/lib/components/AIToolbar/components/speech/StatusIndicator.js.map +1 -0
- package/lib/components/AIToolbar/components/speech/Warning.d.ts +6 -0
- package/lib/components/AIToolbar/components/speech/Warning.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/Warning.js +154 -0
- package/lib/components/AIToolbar/components/speech/Warning.js.map +1 -0
- package/lib/components/AIToolbar/components/speech/audio-visualizer.d.ts +7 -0
- package/lib/components/AIToolbar/components/speech/audio-visualizer.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/audio-visualizer.js +194 -0
- package/lib/components/AIToolbar/components/speech/audio-visualizer.js.map +1 -0
- package/lib/components/AIToolbar/components/speech/floatArrayToWav.d.ts +2 -0
- package/lib/components/AIToolbar/components/speech/floatArrayToWav.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/floatArrayToWav.js +32 -0
- package/lib/components/AIToolbar/components/speech/floatArrayToWav.js.map +1 -0
- package/lib/components/AIToolbar/components/speech/index.d.ts +4 -0
- package/lib/components/AIToolbar/components/speech/index.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/index.js +292 -0
- package/lib/components/AIToolbar/components/speech/index.js.map +1 -0
- package/lib/components/AIToolbar/components/speech/promptTemplates.d.ts +12 -0
- package/lib/components/AIToolbar/components/speech/promptTemplates.d.ts.map +1 -0
- package/lib/components/AIToolbar/components/speech/promptTemplates.js +114 -0
- package/lib/components/AIToolbar/components/speech/promptTemplates.js.map +1 -0
- package/lib/components/AIToolbar/components/types.d.ts +175 -0
- package/lib/components/AIToolbar/components/types.d.ts.map +1 -0
- package/lib/components/AIToolbar/index.d.ts +5 -0
- package/lib/components/AIToolbar/index.d.ts.map +1 -0
- package/lib/components/Button/Button.d.ts +1 -1
- package/lib/components/Button/Button.d.ts.map +1 -1
- package/lib/components/Button/Button.js +7 -6
- package/lib/components/Button/Button.js.map +1 -1
- package/lib/components/DatePicker/DatePicker.js +158 -140
- package/lib/components/DatePicker/DatePicker.js.map +1 -1
- package/lib/components/Dialog/Dialog.d.ts +20 -0
- package/lib/components/Dialog/Dialog.d.ts.map +1 -0
- package/lib/components/Dialog/Dialog.js +111 -0
- package/lib/components/Dialog/Dialog.js.map +1 -0
- package/lib/components/Dialog/index.d.ts +3 -0
- package/lib/components/Dialog/index.d.ts.map +1 -0
- package/lib/components/ErrorHandlers/ApplicationErrorHandler.d.ts +1 -2
- package/lib/components/ErrorHandlers/ApplicationErrorHandler.d.ts.map +1 -1
- package/lib/components/ErrorHandlers/ApplicationErrorHandler.js +2 -2
- package/lib/components/ErrorHandlers/ErrorBoundary.d.ts +1 -2
- package/lib/components/ErrorHandlers/ErrorBoundary.d.ts.map +1 -1
- package/lib/components/ErrorHandlers/ErrorBoundary.js +35 -28
- package/lib/components/ErrorHandlers/ErrorBoundary.js.map +1 -1
- package/lib/components/ErrorHandlers/LayoutErrorBoundary.d.ts +1 -2
- package/lib/components/ErrorHandlers/LayoutErrorBoundary.d.ts.map +1 -1
- package/lib/components/ErrorHandlers/LayoutErrorBoundary.js +20 -15
- package/lib/components/ErrorHandlers/LayoutErrorBoundary.js.map +1 -1
- package/lib/components/ErrorHandlers/RemixErrorBoundary.d.ts +4 -2
- package/lib/components/ErrorHandlers/RemixErrorBoundary.d.ts.map +1 -1
- package/lib/components/ErrorHandlers/RemixErrorBoundary.js +222 -100
- package/lib/components/ErrorHandlers/RemixErrorBoundary.js.map +1 -1
- package/lib/components/ErrorHandlers/SPAErrorBoundary.d.ts +4 -2
- package/lib/components/ErrorHandlers/SPAErrorBoundary.d.ts.map +1 -1
- package/lib/components/ErrorHandlers/SPAErrorBoundary.js +247 -82
- package/lib/components/ErrorHandlers/SPAErrorBoundary.js.map +1 -1
- package/lib/components/ErrorPages/403.d.ts +1 -2
- package/lib/components/ErrorPages/403.d.ts.map +1 -1
- package/lib/components/ErrorPages/403.js +26 -18
- package/lib/components/ErrorPages/403.js.map +1 -1
- package/lib/components/ErrorPages/404.d.ts +1 -2
- package/lib/components/ErrorPages/404.d.ts.map +1 -1
- package/lib/components/ErrorPages/404.js +26 -18
- package/lib/components/ErrorPages/404.js.map +1 -1
- package/lib/components/ErrorPages/500.d.ts +1 -2
- package/lib/components/ErrorPages/500.d.ts.map +1 -1
- package/lib/components/ErrorPages/500.js +26 -18
- package/lib/components/ErrorPages/500.js.map +1 -1
- package/lib/components/InputToolBar/InputToolBar.d.ts +8 -0
- package/lib/components/InputToolBar/InputToolBar.d.ts.map +1 -0
- package/lib/components/InputToolBar/InputToolBar.js +469 -0
- package/lib/components/InputToolBar/InputToolBar.js.map +1 -0
- package/lib/components/InputToolBar/defaults.d.ts +15 -0
- package/lib/components/InputToolBar/defaults.d.ts.map +1 -0
- package/lib/components/InputToolBar/defaults.js +59 -0
- package/lib/components/InputToolBar/defaults.js.map +1 -0
- package/lib/components/InputToolBar/index.d.ts +5 -0
- package/lib/components/InputToolBar/index.d.ts.map +1 -0
- package/lib/components/InputToolBar/types.d.ts +153 -0
- package/lib/components/InputToolBar/types.d.ts.map +1 -0
- package/lib/components/LanguageMenuDropdown/LanguageMenuDropdown.d.ts +1 -2
- package/lib/components/LanguageMenuDropdown/LanguageMenuDropdown.d.ts.map +1 -1
- package/lib/components/LanguageMenuDropdown/LanguageMenuDropdown.js +24 -19
- package/lib/components/LanguageMenuDropdown/LanguageMenuDropdown.js.map +1 -1
- package/lib/components/Markdown/MarkdownBreadcrumbs.d.ts +13 -0
- package/lib/components/Markdown/MarkdownBreadcrumbs.d.ts.map +1 -0
- package/lib/components/Markdown/MarkdownBreadcrumbs.js +34 -0
- package/lib/components/Markdown/MarkdownBreadcrumbs.js.map +1 -0
- package/lib/components/Markdown/MarkdownCopyButton.d.ts +10 -0
- package/lib/components/Markdown/MarkdownCopyButton.d.ts.map +1 -0
- package/lib/components/Markdown/MarkdownCopyButton.js +229 -0
- package/lib/components/Markdown/MarkdownCopyButton.js.map +1 -0
- package/lib/components/Markdown/MarkdownHeader.d.ts +13 -0
- package/lib/components/Markdown/MarkdownHeader.d.ts.map +1 -0
- package/lib/components/Markdown/MarkdownHeader.js +44 -0
- package/lib/components/Markdown/MarkdownHeader.js.map +1 -0
- package/lib/components/Markdown/MarkdownNavigation.d.ts +15 -0
- package/lib/components/Markdown/MarkdownNavigation.d.ts.map +1 -0
- package/lib/components/Markdown/MarkdownNavigation.js +38 -0
- package/lib/components/Markdown/MarkdownNavigation.js.map +1 -0
- package/lib/components/Markdown/MarkdownPage.d.ts +41 -0
- package/lib/components/Markdown/MarkdownPage.d.ts.map +1 -0
- package/lib/components/Markdown/MarkdownPage.js +238 -0
- package/lib/components/Markdown/MarkdownPage.js.map +1 -0
- package/lib/components/Markdown/MarkdownTableOfContents.d.ts +15 -0
- package/lib/components/Markdown/MarkdownTableOfContents.d.ts.map +1 -0
- package/lib/components/Markdown/MarkdownTableOfContents.js +57 -0
- package/lib/components/Markdown/MarkdownTableOfContents.js.map +1 -0
- package/lib/components/Markdown/index.d.ts +7 -0
- package/lib/components/Markdown/index.d.ts.map +1 -0
- package/lib/components/OTP/OTPInput.js +32 -30
- package/lib/components/OTP/OTPInput.js.map +1 -1
- package/lib/components/OTP/OTPVerification.js +75 -55
- package/lib/components/OTP/OTPVerification.js.map +1 -1
- package/lib/components/OTP/SingleInput.js +2 -2
- package/lib/components/OTP/SingleInput.js.map +1 -1
- package/lib/components/PageContainer/PageContainer.js +29 -22
- package/lib/components/PageContainer/PageContainer.js.map +1 -1
- package/lib/components/PageLoading/index.js +8 -7
- package/lib/components/PageLoading/index.js.map +1 -1
- package/lib/components/RJSFPreview/PreviewAsyncDropdown.d.ts +1 -2
- package/lib/components/RJSFPreview/PreviewAsyncDropdown.d.ts.map +1 -1
- package/lib/components/ReactTable/Table.d.ts +1 -2
- package/lib/components/ReactTable/Table.d.ts.map +1 -1
- package/lib/components/ReactTable/Table.js +92 -71
- package/lib/components/ReactTable/Table.js.map +1 -1
- package/lib/components/ReactTable/TableFilters.d.ts +2 -3
- package/lib/components/ReactTable/TableFilters.d.ts.map +1 -1
- package/lib/components/ReactTable/TableFilters.js +40 -34
- package/lib/components/ReactTable/TableFilters.js.map +1 -1
- package/lib/components/Search/SearchInput.d.ts +1 -2
- package/lib/components/Search/SearchInput.d.ts.map +1 -1
- package/lib/components/Search/SearchInput.js +14 -13
- package/lib/components/Search/SearchInput.js.map +1 -1
- package/lib/components/Select/Select.d.ts +6 -6
- package/lib/components/Select/Select.d.ts.map +1 -1
- package/lib/components/Select/Select.js +60 -45
- package/lib/components/Select/Select.js.map +1 -1
- package/lib/components/Spin/index.js +14 -11
- package/lib/components/Spin/index.js.map +1 -1
- package/lib/components/ThemeProvider/ThemeProvider.d.ts +1 -1
- package/lib/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/lib/components/ThemeProvider/ThemeProvider.js +29 -17
- package/lib/components/ThemeProvider/ThemeProvider.js.map +1 -1
- package/lib/components/ThemeProvider/ThemeToggle.js +28 -25
- package/lib/components/ThemeProvider/ThemeToggle.js.map +1 -1
- package/lib/components/ThemeProvider/types.d.ts +3 -3
- package/lib/components/ThemeProvider/types.d.ts.map +1 -1
- package/lib/components/index.d.ts +5 -0
- package/lib/components/index.d.ts.map +1 -1
- package/lib/hooks/useToast.d.ts +1 -1
- package/lib/hooks/useToast.d.ts.map +1 -1
- package/lib/hooks/useToast.js +46 -37
- package/lib/hooks/useToast.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/shardui/accordion.js +20 -16
- package/lib/shardui/accordion.js.map +1 -1
- package/lib/shardui/alert-dialog.d.ts +2 -2
- package/lib/shardui/alert-dialog.js +15 -13
- package/lib/shardui/alert-dialog.js.map +1 -1
- package/lib/shardui/alert.js +4 -4
- package/lib/shardui/alert.js.map +1 -1
- package/lib/shardui/avatar.js +4 -4
- package/lib/shardui/avatar.js.map +1 -1
- package/lib/shardui/badge.d.ts +1 -1
- package/lib/shardui/badge.d.ts.map +1 -1
- package/lib/shardui/badge.js +2 -2
- package/lib/shardui/badge.js.map +1 -1
- package/lib/shardui/breadcrumb.d.ts +2 -2
- package/lib/shardui/breadcrumb.js +19 -16
- package/lib/shardui/breadcrumb.js.map +1 -1
- package/lib/shardui/button.js +2 -2
- package/lib/shardui/button.js.map +1 -1
- package/lib/shardui/calendar.d.ts +1 -1
- package/lib/shardui/calendar.d.ts.map +1 -1
- package/lib/shardui/calendar.js +4 -4
- package/lib/shardui/card.js +7 -7
- package/lib/shardui/card.js.map +1 -1
- package/lib/shardui/carousel.js +40 -33
- package/lib/shardui/carousel.js.map +1 -1
- package/lib/shardui/chart.d.ts +1 -1
- package/lib/shardui/chart.d.ts.map +1 -1
- package/lib/shardui/chart.js +81 -66
- package/lib/shardui/chart.js.map +1 -1
- package/lib/shardui/checkbox.js +10 -8
- package/lib/shardui/checkbox.js.map +1 -1
- package/lib/shardui/command.d.ts +2 -2
- package/lib/shardui/command.d.ts.map +1 -1
- package/lib/shardui/command.js +28 -24
- package/lib/shardui/command.js.map +1 -1
- package/lib/shardui/context-menu.d.ts +1 -1
- package/lib/shardui/context-menu.js +41 -30
- package/lib/shardui/context-menu.js.map +1 -1
- package/lib/shardui/dialog.d.ts +2 -2
- package/lib/shardui/dialog.js +22 -17
- package/lib/shardui/dialog.js.map +1 -1
- package/lib/shardui/drawer.d.ts +3 -3
- package/lib/shardui/drawer.js +17 -14
- package/lib/shardui/drawer.js.map +1 -1
- package/lib/shardui/dropdown-menu.d.ts +1 -1
- package/lib/shardui/dropdown-menu.js +42 -31
- package/lib/shardui/dropdown-menu.js.map +1 -1
- package/lib/shardui/form.d.ts +1 -1
- package/lib/shardui/form.d.ts.map +1 -1
- package/lib/shardui/form.js +22 -19
- package/lib/shardui/form.js.map +1 -1
- package/lib/shardui/hover-card.js +2 -2
- package/lib/shardui/hover-card.js.map +1 -1
- package/lib/shardui/input-otp.js +16 -13
- package/lib/shardui/input-otp.js.map +1 -1
- package/lib/shardui/input.js +2 -2
- package/lib/shardui/input.js.map +1 -1
- package/lib/shardui/label.js +2 -2
- package/lib/shardui/label.js.map +1 -1
- package/lib/shardui/menubar.d.ts +1 -1
- package/lib/shardui/menubar.js +46 -35
- package/lib/shardui/menubar.js.map +1 -1
- package/lib/shardui/navigation-menu.js +28 -24
- package/lib/shardui/navigation-menu.js.map +1 -1
- package/lib/shardui/pagination.d.ts +5 -5
- package/lib/shardui/pagination.js +30 -22
- package/lib/shardui/pagination.js.map +1 -1
- package/lib/shardui/popover.js +10 -8
- package/lib/shardui/popover.js.map +1 -1
- package/lib/shardui/progress.js +10 -9
- package/lib/shardui/progress.js.map +1 -1
- package/lib/shardui/radio-group.js +11 -9
- package/lib/shardui/radio-group.js.map +1 -1
- package/lib/shardui/resizable.d.ts +3 -3
- package/lib/shardui/resizable.d.ts.map +1 -1
- package/lib/shardui/resizable.js +11 -9
- package/lib/shardui/resizable.js.map +1 -1
- package/lib/shardui/scroll-area.js +14 -11
- package/lib/shardui/scroll-area.js.map +1 -1
- package/lib/shardui/select.js +49 -35
- package/lib/shardui/select.js.map +1 -1
- package/lib/shardui/separator.js +2 -2
- package/lib/shardui/separator.js.map +1 -1
- package/lib/shardui/sheet.d.ts +2 -2
- package/lib/shardui/sheet.js +24 -19
- package/lib/shardui/sheet.js.map +1 -1
- package/lib/shardui/sidebar.js +104 -88
- package/lib/shardui/sidebar.js.map +1 -1
- package/lib/shardui/skeleton.d.ts +1 -1
- package/lib/shardui/skeleton.d.ts.map +1 -1
- package/lib/shardui/skeleton.js +2 -2
- package/lib/shardui/skeleton.js.map +1 -1
- package/lib/shardui/slider.js +12 -10
- package/lib/shardui/slider.js.map +1 -1
- package/lib/shardui/sonner.d.ts +1 -1
- package/lib/shardui/sonner.d.ts.map +1 -1
- package/lib/shardui/sonner.js +2 -2
- package/lib/shardui/sonner.js.map +1 -1
- package/lib/shardui/switch.js +7 -6
- package/lib/shardui/switch.js.map +1 -1
- package/lib/shardui/table.js +16 -15
- package/lib/shardui/table.js.map +1 -1
- package/lib/shardui/tabs.js +4 -4
- package/lib/shardui/tabs.js.map +1 -1
- package/lib/shardui/textarea.js +2 -2
- package/lib/shardui/textarea.js.map +1 -1
- package/lib/shardui/toast.js +12 -11
- package/lib/shardui/toast.js.map +1 -1
- package/lib/shardui/toaster.d.ts +1 -2
- package/lib/shardui/toaster.d.ts.map +1 -1
- package/lib/shardui/toaster.js +21 -14
- package/lib/shardui/toaster.js.map +1 -1
- package/lib/shardui/toggle-group.js +15 -12
- package/lib/shardui/toggle-group.js.map +1 -1
- package/lib/shardui/toggle.js +2 -2
- package/lib/shardui/toggle.js.map +1 -1
- package/lib/shardui/tooltip.js +2 -2
- package/lib/shardui/tooltip.js.map +1 -1
- package/package.json +7 -3
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/** Data-only config for built-in textarea. When provided, InputToolBar renders the textarea with default styling. */
|
|
3
|
+
export interface InputConfig {
|
|
4
|
+
value: string;
|
|
5
|
+
onChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
onKeyDown?: (e: React.KeyboardEvent<HTMLTextAreaElement>) => void;
|
|
9
|
+
onPaste?: (e: React.ClipboardEvent<HTMLTextAreaElement>) => void;
|
|
10
|
+
id?: string;
|
|
11
|
+
name?: string;
|
|
12
|
+
/** Optional ref for the textarea (e.g. for focus / height adjustment) */
|
|
13
|
+
inputRef?: React.RefObject<HTMLTextAreaElement | null>;
|
|
14
|
+
}
|
|
15
|
+
/** Predefined toolbar action ids for left section (mode toggles, template) */
|
|
16
|
+
export type LeftToolbarItemId = 'search' | 'zap' | 'lightbulb' | 'template';
|
|
17
|
+
/** Predefined toolbar action ids for right section. projectSettings = first item, disabled by default; enable via overrides. tag = enhance prompt, chip = configure model; both support enabled/disable and custom label, icon, onClick for app-specific use. */
|
|
18
|
+
export type RightToolbarItemId = 'projectSettings' | 'tag' | 'chip' | 'camera' | 'image' | 'attach' | 'mic';
|
|
19
|
+
/** Single toolbar button/item configuration */
|
|
20
|
+
export interface ToolbarItemConfig<TId extends string = string> {
|
|
21
|
+
/** Unique id for the item (used for enable/disable and callbacks) */
|
|
22
|
+
id: TId;
|
|
23
|
+
/** Icon (React node) or custom content for the button */
|
|
24
|
+
icon?: ReactNode;
|
|
25
|
+
/** Accessible label / title (e.g. "Enhance your prompt with AI" when enabled, "Type something to enhance" when disabled) */
|
|
26
|
+
label: string;
|
|
27
|
+
/** Whether the item is enabled (default true). When false, item is hidden. */
|
|
28
|
+
enabled?: boolean;
|
|
29
|
+
/** When true, button is visible but disabled (greyed out, not clickable). Use for e.g. "enhance" when input is empty. */
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
/** When true, show loading spinner and treat as disabled. Use for e.g. "enhance" while request is in flight. */
|
|
32
|
+
loading?: boolean;
|
|
33
|
+
/** Whether the item is in active/selected state (e.g. primary color + hover style for right items) */
|
|
34
|
+
active?: boolean;
|
|
35
|
+
/** Click handler */
|
|
36
|
+
onClick?: () => void;
|
|
37
|
+
/** Optional custom button element; when set, icon/label are ignored and this is rendered */
|
|
38
|
+
customButton?: ReactNode;
|
|
39
|
+
}
|
|
40
|
+
/** When provided, the rightmost button shows Stop when loading, Send when hasContent, else Mic. Replaces any "mic" item in rightItems. */
|
|
41
|
+
export interface MicSendButtonConfig {
|
|
42
|
+
/** True when input has content – show send icon; otherwise show mic icon (unless loading). */
|
|
43
|
+
hasContent: boolean;
|
|
44
|
+
onSend: () => void;
|
|
45
|
+
onMic: () => void;
|
|
46
|
+
disabled?: boolean;
|
|
47
|
+
/** When true, show stop icon and call onStop on click. */
|
|
48
|
+
isLoading?: boolean;
|
|
49
|
+
onStop?: () => void;
|
|
50
|
+
}
|
|
51
|
+
/** Configuration for the optional template pill: either "+ Template (N)" or selected template name with remove/change */
|
|
52
|
+
export interface TemplateButtonConfig {
|
|
53
|
+
/** Button label prefix when no selection, e.g. "+ Template" */
|
|
54
|
+
label: string;
|
|
55
|
+
/** Count to show in parentheses when no selection, e.g. (1) */
|
|
56
|
+
count?: number;
|
|
57
|
+
/** When set, show selected template pill (name + remove + change) instead of "+ Template (N)" */
|
|
58
|
+
selectedLabel?: string | null;
|
|
59
|
+
/** Open template modal / change template (used for main pill click and for "change" when selected) */
|
|
60
|
+
onClick?: () => void;
|
|
61
|
+
/** When template is selected, called when user clicks remove (X) */
|
|
62
|
+
onClearTemplate?: () => void;
|
|
63
|
+
/** Disabled state */
|
|
64
|
+
disabled?: boolean;
|
|
65
|
+
}
|
|
66
|
+
/** Minimal template item for the default template selection modal. Map your app's template type to this shape. */
|
|
67
|
+
export interface TemplateModalItem {
|
|
68
|
+
id: string;
|
|
69
|
+
label: string;
|
|
70
|
+
description?: string;
|
|
71
|
+
category?: string;
|
|
72
|
+
}
|
|
73
|
+
/** Config for the template selection modal. Pass data from props; InputToolBar renders default modal or custom via templateModalRender. */
|
|
74
|
+
export interface TemplateModalConfig {
|
|
75
|
+
isOpen: boolean;
|
|
76
|
+
onClose: () => void;
|
|
77
|
+
templates: TemplateModalItem[];
|
|
78
|
+
selectedId: string | null;
|
|
79
|
+
onSelect: (id: string) => void;
|
|
80
|
+
suggestedId?: string | null;
|
|
81
|
+
title?: string;
|
|
82
|
+
/** Optional class for the modal content box (inner container). Use to standardize width/size, e.g. `max-w-md` or `max-w-xl`. */
|
|
83
|
+
modalClassName?: string;
|
|
84
|
+
}
|
|
85
|
+
/** Render prop for custom template modal. When provided, used instead of the default modal UI. */
|
|
86
|
+
export type TemplateModalRender = (config: TemplateModalConfig) => ReactNode;
|
|
87
|
+
/** Props passed to the project settings modal render function. Values are updated via the parent's callback (e.g. onModelConfigChange). */
|
|
88
|
+
export interface ProjectSettingsModalRenderProps {
|
|
89
|
+
onClose: () => void;
|
|
90
|
+
}
|
|
91
|
+
/** Render prop for project settings modal content. When projectSettings is clicked, parent opens modal (sets projectSettingsModalOpen). Modal content receives onClose; parent passes config and onChange from props so values update via parent. */
|
|
92
|
+
export type ProjectSettingsModalRender = (props: ProjectSettingsModalRenderProps) => ReactNode;
|
|
93
|
+
/** Optional class overrides for InputToolBar sections. Use to adapt to light/dark theme or custom styling. */
|
|
94
|
+
export interface InputToolBarClassNames {
|
|
95
|
+
/** Root section (default: rounded border bg-card shadow) */
|
|
96
|
+
container?: string;
|
|
97
|
+
/** Left toolbar group wrapper */
|
|
98
|
+
leftGroup?: string;
|
|
99
|
+
/** Template pill when no selection (e.g. "+ Template (N)") */
|
|
100
|
+
templatePill?: string;
|
|
101
|
+
/** Template pill when selected/suggested (name + remove + change) */
|
|
102
|
+
templatePillSelected?: string;
|
|
103
|
+
/** Left mode buttons – active state (filled) */
|
|
104
|
+
leftButtonActive?: string;
|
|
105
|
+
/** Left mode buttons – inactive state (outline) */
|
|
106
|
+
leftButtonInactive?: string;
|
|
107
|
+
/** Right toolbar buttons – default state */
|
|
108
|
+
rightButton?: string;
|
|
109
|
+
/** Right toolbar buttons – active state */
|
|
110
|
+
rightButtonActive?: string;
|
|
111
|
+
/** Right toolbar buttons – disabled state */
|
|
112
|
+
rightButtonDisabled?: string;
|
|
113
|
+
/** Mic/Send button (primary action) */
|
|
114
|
+
micSendButton?: string;
|
|
115
|
+
}
|
|
116
|
+
/** Props for the InputToolBar container. UI only: all data and behavior come from props. */
|
|
117
|
+
export interface InputToolBarProps {
|
|
118
|
+
/** Optional class name for the toolbar container (merged with container in classNames) */
|
|
119
|
+
className?: string;
|
|
120
|
+
/** Optional class overrides for toolbar sections (works in both light and dark theme) */
|
|
121
|
+
classNames?: InputToolBarClassNames;
|
|
122
|
+
/** When provided, InputToolBar renders a built-in textarea; pass only data (value, onChange, etc.). */
|
|
123
|
+
inputConfig?: InputConfig | null;
|
|
124
|
+
/** Optional content above the input when inputConfig is set (e.g. panels, banners). */
|
|
125
|
+
topContent?: ReactNode;
|
|
126
|
+
/** Left section: items and template pill. All data (active, onClick, etc.) from parent. */
|
|
127
|
+
leftItems?: Array<ToolbarItemConfig<LeftToolbarItemId>>;
|
|
128
|
+
/** Right section: items. All data (onClick, etc.) from parent. */
|
|
129
|
+
rightItems?: Array<ToolbarItemConfig<RightToolbarItemId>>;
|
|
130
|
+
/** Optional template pill (e.g. "+ Template (1)"). Data from parent. */
|
|
131
|
+
templateButton?: TemplateButtonConfig | null;
|
|
132
|
+
/** Template selection modal: pass data from props. When set, InputToolBar renders the modal (default UI or custom). */
|
|
133
|
+
templateModalConfig?: TemplateModalConfig | null;
|
|
134
|
+
/** When provided, used instead of the default template modal UI. Receives templateModalConfig. */
|
|
135
|
+
templateModalRender?: TemplateModalRender | null;
|
|
136
|
+
/** Custom content for the left section (overrides leftItems) */
|
|
137
|
+
leftCustomRender?: ReactNode;
|
|
138
|
+
/** Custom content for the right section (overrides rightItems and micSendButton) */
|
|
139
|
+
rightCustomRender?: ReactNode;
|
|
140
|
+
/** When set, rightmost button: Stop/Send/Mic; all data and handlers from parent. */
|
|
141
|
+
micSendButton?: MicSendButtonConfig | null;
|
|
142
|
+
/** When true, the project settings modal (from projectSettingsModalRender) is shown. Set by parent when projectSettings is clicked. */
|
|
143
|
+
projectSettingsModalOpen?: boolean;
|
|
144
|
+
/** Called when the project settings modal should close (e.g. overlay click or close button). */
|
|
145
|
+
onProjectSettingsModalClose?: () => void;
|
|
146
|
+
/** Renders the project settings modal content (e.g. Configuration / Other Settings / Secret tabs). Parent passes config and onChange so values update via parent (same pattern as ModelConfigPanel). */
|
|
147
|
+
projectSettingsModalRender?: ProjectSettingsModalRender | null;
|
|
148
|
+
/** Optional content in the middle when not using inputConfig */
|
|
149
|
+
children?: ReactNode;
|
|
150
|
+
/** Click on container (e.g. to focus input) */
|
|
151
|
+
onContainerClick?: (e: React.MouseEvent) => void;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/InputToolBar/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
export declare const LanguageMenuDropdown: ({ className, i18nConfig }: {
|
|
3
2
|
className?: string;
|
|
4
3
|
i18nConfig?: any;
|
|
5
|
-
}) =>
|
|
4
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
6
5
|
//# sourceMappingURL=LanguageMenuDropdown.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LanguageMenuDropdown.d.ts","sourceRoot":"","sources":["../../../src/components/LanguageMenuDropdown/LanguageMenuDropdown.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LanguageMenuDropdown.d.ts","sourceRoot":"","sources":["../../../src/components/LanguageMenuDropdown/LanguageMenuDropdown.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,oBAAoB,GAAI,2BAA2B;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,GAAG,CAAA;CAAE,4CAuDvG,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import {jsx}from'react/jsx-runtime';import {useState,useEffect}from'react';import {useTranslation}from'react-i18next';import {useMediaQuery}from'../../hooks/useMediaQuery.js';import {languages,useLayoutSettings}from'@admin-layout/client';import'../../utils/isBrowser/index.js';import {cn}from'../../utils/util.js';import'fast-deep-equal/react.js';const LanguageMenuDropdown = ({
|
|
2
2
|
className,
|
|
3
3
|
i18nConfig
|
|
4
4
|
}) => {
|
|
@@ -39,22 +39,27 @@ import React__default,{useState,useEffect}from'react';import {useTranslation}fro
|
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
|
-
return
|
|
43
|
-
className: "relative"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
42
|
+
return jsx("div", {
|
|
43
|
+
className: "relative",
|
|
44
|
+
children: jsx("div", {
|
|
45
|
+
className: "custom-select-container w-[180px]",
|
|
46
|
+
children: jsx("select", {
|
|
47
|
+
className: cn('w-full h-10 rounded-md outline-none border border-input bg-background px-3 py-2 pl-10 text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 appearance-none cursor-pointer', className),
|
|
48
|
+
value: currentLang.key,
|
|
49
|
+
onChange: e => handleLanguageChange(e.target.value),
|
|
50
|
+
"aria-label": "Select language",
|
|
51
|
+
children: filteredLanguages.map(language => jsx("option", {
|
|
52
|
+
value: language.key,
|
|
53
|
+
className: "p-2",
|
|
54
|
+
children: jsx("div", {
|
|
55
|
+
className: "p-2",
|
|
56
|
+
children: jsx("span", {
|
|
57
|
+
className: "text-sm",
|
|
58
|
+
children: isMobile ? language.key : language.label
|
|
59
|
+
})
|
|
60
|
+
})
|
|
61
|
+
}, language.key))
|
|
62
|
+
})
|
|
63
|
+
})
|
|
64
|
+
});
|
|
60
65
|
};export{LanguageMenuDropdown};//# sourceMappingURL=LanguageMenuDropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LanguageMenuDropdown.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LanguageMenuDropdown.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface MarkdownBreadcrumbsProps {
|
|
3
|
+
categoryId: string;
|
|
4
|
+
categoryTitle?: string;
|
|
5
|
+
markdownTitle: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
getHelpCenterLink: () => string;
|
|
8
|
+
getCategoryLink: (categoryId: string) => string;
|
|
9
|
+
helpCenterLabel: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const MarkdownBreadcrumbs: React.FC<MarkdownBreadcrumbsProps>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=MarkdownBreadcrumbs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownBreadcrumbs.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown/MarkdownBreadcrumbs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,wBAAwB;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAChD,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAwBlE,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {jsx,jsxs}from'react/jsx-runtime';import {Link}from'@remix-run/react';import'../../utils/isBrowser/index.js';import {cn}from'../../utils/util.js';import'react';import'fast-deep-equal/react.js';const MarkdownBreadcrumbs = ({
|
|
2
|
+
categoryId,
|
|
3
|
+
categoryTitle,
|
|
4
|
+
markdownTitle,
|
|
5
|
+
className,
|
|
6
|
+
getHelpCenterLink,
|
|
7
|
+
getCategoryLink,
|
|
8
|
+
helpCenterLabel
|
|
9
|
+
}) => {
|
|
10
|
+
return jsx("div", {
|
|
11
|
+
className: cn('w-full max-w-[90rem] mx-auto px-4 sm:px-6 lg:px-8 xl:px-16', className),
|
|
12
|
+
children: jsxs("nav", {
|
|
13
|
+
className: "flex items-center space-x-2 text-sm text-muted-foreground",
|
|
14
|
+
children: [jsx(Link, {
|
|
15
|
+
to: getHelpCenterLink(),
|
|
16
|
+
className: "hover:text-foreground transition-colors",
|
|
17
|
+
children: helpCenterLabel
|
|
18
|
+
}), jsx("span", {
|
|
19
|
+
className: "text-muted-foreground/60",
|
|
20
|
+
children: "\u203A"
|
|
21
|
+
}), jsx(Link, {
|
|
22
|
+
to: getCategoryLink(categoryId),
|
|
23
|
+
className: "hover:text-foreground transition-colors",
|
|
24
|
+
children: categoryTitle || categoryId
|
|
25
|
+
}), jsx("span", {
|
|
26
|
+
className: "text-muted-foreground/60",
|
|
27
|
+
children: "\u203A"
|
|
28
|
+
}), jsx("span", {
|
|
29
|
+
className: "text-primary",
|
|
30
|
+
children: markdownTitle
|
|
31
|
+
})]
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
};export{MarkdownBreadcrumbs};//# sourceMappingURL=MarkdownBreadcrumbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownBreadcrumbs.js","sources":["../../../src/components/Markdown/MarkdownBreadcrumbs.tsx"],"sourcesContent":[null],"names":[],"mappings":"wMAMI,MAAA,mBAAuB,GAAA,CAAA;YACvB;eACU;eACV;AACA,EAAA,SAAA;mBACe;AAClB,EAAA,eAAA;AAED,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface MarkdownCopyButtonProps {
|
|
3
|
+
markdownTitle: string;
|
|
4
|
+
markdownContent: string;
|
|
5
|
+
markdownUrl?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const MarkdownCopyButton: React.FC<MarkdownCopyButtonProps>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=MarkdownCopyButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownCopyButton.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown/MarkdownCopyButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,UAAU,uBAAuB;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAsQhE,CAAC"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import {jsxs,jsx}from'react/jsx-runtime';import {useState,useRef,useEffect}from'react';import'../../utils/isBrowser/index.js';import {cn}from'../../utils/util.js';import'fast-deep-equal/react.js';const MarkdownCopyButton = ({
|
|
2
|
+
markdownTitle,
|
|
3
|
+
markdownContent,
|
|
4
|
+
markdownUrl,
|
|
5
|
+
className
|
|
6
|
+
}) => {
|
|
7
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
8
|
+
const [copySuccess, setCopySuccess] = useState(false);
|
|
9
|
+
const dropdownRef = useRef(null);
|
|
10
|
+
// Close dropdown when clicking outside
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const handleClickOutside = event => {
|
|
13
|
+
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
14
|
+
setIsOpen(false);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
if (isOpen) {
|
|
18
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
19
|
+
}
|
|
20
|
+
return () => {
|
|
21
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
22
|
+
};
|
|
23
|
+
}, [isOpen]);
|
|
24
|
+
// Convert HTML to Markdown (simplified version)
|
|
25
|
+
const htmlToMarkdown = html => {
|
|
26
|
+
// Remove script and style tags
|
|
27
|
+
let text = html.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
|
|
28
|
+
text = text.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '');
|
|
29
|
+
// Convert headings
|
|
30
|
+
text = text.replace(/<h([1-6])[^>]*>(.*?)<\/h\1>/gi, (match, level, content) => {
|
|
31
|
+
const hashes = '#'.repeat(parseInt(level));
|
|
32
|
+
return `\n${hashes} ${content.trim()}\n`;
|
|
33
|
+
});
|
|
34
|
+
// Convert bold
|
|
35
|
+
text = text.replace(/<strong[^>]*>(.*?)<\/strong>/gi, '**$1**');
|
|
36
|
+
text = text.replace(/<b[^>]*>(.*?)<\/b>/gi, '**$1**');
|
|
37
|
+
// Convert italic
|
|
38
|
+
text = text.replace(/<em[^>]*>(.*?)<\/em>/gi, '*$1*');
|
|
39
|
+
text = text.replace(/<i[^>]*>(.*?)<\/i>/gi, '*$1*');
|
|
40
|
+
// Convert links
|
|
41
|
+
text = text.replace(/<a[^>]*href=["']([^"']*)["'][^>]*>(.*?)<\/a>/gi, '[$2]($1)');
|
|
42
|
+
// Convert code blocks
|
|
43
|
+
text = text.replace(/<pre[^>]*><code[^>]*>(.*?)<\/code><\/pre>/gis, '```\n$1\n```');
|
|
44
|
+
text = text.replace(/<code[^>]*>(.*?)<\/code>/gi, '`$1`');
|
|
45
|
+
// Convert lists
|
|
46
|
+
text = text.replace(/<ul[^>]*>(.*?)<\/ul>/gis, (match, content) => {
|
|
47
|
+
const items = content.match(/<li[^>]*>(.*?)<\/li>/gis) || [];
|
|
48
|
+
return '\n' + items.map(item => {
|
|
49
|
+
const cleanItem = item.replace(/<li[^>]*>|<\/li>/gi, '').trim();
|
|
50
|
+
return `- ${cleanItem}`;
|
|
51
|
+
}).join('\n') + '\n';
|
|
52
|
+
});
|
|
53
|
+
text = text.replace(/<ol[^>]*>(.*?)<\/ol>/gis, (match, content) => {
|
|
54
|
+
const items = content.match(/<li[^>]*>(.*?)<\/li>/gis) || [];
|
|
55
|
+
return '\n' + items.map((item, index) => {
|
|
56
|
+
const cleanItem = item.replace(/<li[^>]*>|<\/li>/gi, '').trim();
|
|
57
|
+
return `${index + 1}. ${cleanItem}`;
|
|
58
|
+
}).join('\n') + '\n';
|
|
59
|
+
});
|
|
60
|
+
// Convert paragraphs
|
|
61
|
+
text = text.replace(/<p[^>]*>(.*?)<\/p>/gi, '$1\n\n');
|
|
62
|
+
// Remove remaining HTML tags
|
|
63
|
+
text = text.replace(/<[^>]+>/g, '');
|
|
64
|
+
// Decode HTML entities
|
|
65
|
+
const textarea = document.createElement('textarea');
|
|
66
|
+
textarea.innerHTML = text;
|
|
67
|
+
text = textarea.value;
|
|
68
|
+
// Clean up extra whitespace
|
|
69
|
+
text = text.replace(/\n{3,}/g, '\n\n').trim();
|
|
70
|
+
return `# ${markdownTitle}\n\n${text}`;
|
|
71
|
+
};
|
|
72
|
+
const handleCopyMarkdown = async () => {
|
|
73
|
+
try {
|
|
74
|
+
const markdown = htmlToMarkdown(markdownContent);
|
|
75
|
+
await navigator.clipboard.writeText(markdown);
|
|
76
|
+
setCopySuccess(true);
|
|
77
|
+
setIsOpen(false);
|
|
78
|
+
setTimeout(() => setCopySuccess(false), 2000);
|
|
79
|
+
} catch (err) {
|
|
80
|
+
console.error('Failed to copy:', err);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
const handleOpenChatGPT = () => {
|
|
84
|
+
const url = `https://chat.openai.com/?q=${encodeURIComponent(markdownTitle)}`;
|
|
85
|
+
window.open(url, '_blank');
|
|
86
|
+
setIsOpen(false);
|
|
87
|
+
};
|
|
88
|
+
const handleOpenClaude = () => {
|
|
89
|
+
const url = `https://claude.ai/?q=${encodeURIComponent(markdownTitle)}`;
|
|
90
|
+
window.open(url, '_blank');
|
|
91
|
+
setIsOpen(false);
|
|
92
|
+
};
|
|
93
|
+
return jsxs("div", {
|
|
94
|
+
className: cn('relative inline-flex items-center rounded-md border border-border bg-background', className),
|
|
95
|
+
ref: dropdownRef,
|
|
96
|
+
children: [jsxs("div", {
|
|
97
|
+
className: "flex items-center overflow-hidden rounded-md",
|
|
98
|
+
children: [jsxs("button", {
|
|
99
|
+
onClick: handleCopyMarkdown,
|
|
100
|
+
className: cn('flex items-center gap-2 px-3 py-1.5', 'bg-background hover:bg-muted/50 transition-colors', 'text-sm text-foreground', 'border-0'),
|
|
101
|
+
children: [jsx("svg", {
|
|
102
|
+
className: "w-4 h-4",
|
|
103
|
+
fill: "none",
|
|
104
|
+
stroke: "currentColor",
|
|
105
|
+
viewBox: "0 0 24 24",
|
|
106
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
107
|
+
children: jsx("path", {
|
|
108
|
+
strokeLinecap: "round",
|
|
109
|
+
strokeLinejoin: "round",
|
|
110
|
+
strokeWidth: 2,
|
|
111
|
+
d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"
|
|
112
|
+
})
|
|
113
|
+
}), jsx("span", {
|
|
114
|
+
children: copySuccess ? 'Copied' : 'Copy page'
|
|
115
|
+
})]
|
|
116
|
+
}), jsx("div", {
|
|
117
|
+
className: "h-5 w-px bg-border"
|
|
118
|
+
}), jsx("button", {
|
|
119
|
+
onClick: e => {
|
|
120
|
+
e.stopPropagation();
|
|
121
|
+
setIsOpen(!isOpen);
|
|
122
|
+
},
|
|
123
|
+
className: cn('flex items-center justify-center px-2 py-1.5', 'bg-background hover:bg-muted/50 transition-colors', 'text-sm text-foreground', 'border-0'),
|
|
124
|
+
children: jsx("svg", {
|
|
125
|
+
className: cn('w-3 h-3 transition-transform', isOpen && 'rotate-180'),
|
|
126
|
+
fill: "none",
|
|
127
|
+
stroke: "currentColor",
|
|
128
|
+
viewBox: "0 0 24 24",
|
|
129
|
+
children: jsx("path", {
|
|
130
|
+
strokeLinecap: "round",
|
|
131
|
+
strokeLinejoin: "round",
|
|
132
|
+
strokeWidth: 2,
|
|
133
|
+
d: "M19 9l-7 7-7-7"
|
|
134
|
+
})
|
|
135
|
+
})
|
|
136
|
+
})]
|
|
137
|
+
}), isOpen && jsx("div", {
|
|
138
|
+
className: "absolute right-0 top-full mt-2 w-64 bg-background border border-border rounded-lg shadow-lg z-[100] overflow-hidden",
|
|
139
|
+
children: jsxs("div", {
|
|
140
|
+
className: "py-1",
|
|
141
|
+
children: [jsxs("button", {
|
|
142
|
+
onClick: handleCopyMarkdown,
|
|
143
|
+
className: "w-full px-4 py-3 text-left hover:bg-muted/50 transition-colors flex items-start gap-3 group",
|
|
144
|
+
children: [jsx("svg", {
|
|
145
|
+
className: "w-5 h-5 text-muted-foreground group-hover:text-foreground mt-0.5 flex-shrink-0",
|
|
146
|
+
fill: "none",
|
|
147
|
+
stroke: "currentColor",
|
|
148
|
+
viewBox: "0 0 24 24",
|
|
149
|
+
children: jsx("path", {
|
|
150
|
+
strokeLinecap: "round",
|
|
151
|
+
strokeLinejoin: "round",
|
|
152
|
+
strokeWidth: 2,
|
|
153
|
+
d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"
|
|
154
|
+
})
|
|
155
|
+
}), jsxs("div", {
|
|
156
|
+
className: "flex-1 min-w-0",
|
|
157
|
+
children: [jsx("div", {
|
|
158
|
+
className: "text-sm font-medium text-foreground",
|
|
159
|
+
children: "Copy page"
|
|
160
|
+
}), jsx("div", {
|
|
161
|
+
className: "text-xs text-muted-foreground mt-0.5",
|
|
162
|
+
children: "Copy page as Markdown for LLMs"
|
|
163
|
+
})]
|
|
164
|
+
})]
|
|
165
|
+
}), jsxs("button", {
|
|
166
|
+
onClick: handleOpenChatGPT,
|
|
167
|
+
className: "w-full px-4 py-3 text-left hover:bg-muted/50 transition-colors flex items-start gap-3 group",
|
|
168
|
+
children: [jsx("div", {
|
|
169
|
+
className: "w-5 h-5 mt-0.5 flex-shrink-0 flex items-center justify-center",
|
|
170
|
+
children: jsx("span", {
|
|
171
|
+
className: "text-lg",
|
|
172
|
+
children: "\uD83E\uDD16"
|
|
173
|
+
})
|
|
174
|
+
}), jsxs("div", {
|
|
175
|
+
className: "flex-1 min-w-0",
|
|
176
|
+
children: [jsx("div", {
|
|
177
|
+
className: "text-sm font-medium text-foreground",
|
|
178
|
+
children: "Open in ChatGPT"
|
|
179
|
+
}), jsx("div", {
|
|
180
|
+
className: "text-xs text-muted-foreground mt-0.5",
|
|
181
|
+
children: "Ask questions about this page"
|
|
182
|
+
})]
|
|
183
|
+
}), jsx("svg", {
|
|
184
|
+
className: "w-4 h-4 text-muted-foreground group-hover:text-foreground mt-1 flex-shrink-0",
|
|
185
|
+
fill: "none",
|
|
186
|
+
stroke: "currentColor",
|
|
187
|
+
viewBox: "0 0 24 24",
|
|
188
|
+
children: jsx("path", {
|
|
189
|
+
strokeLinecap: "round",
|
|
190
|
+
strokeLinejoin: "round",
|
|
191
|
+
strokeWidth: 2,
|
|
192
|
+
d: "M9 5l7 7-7 7"
|
|
193
|
+
})
|
|
194
|
+
})]
|
|
195
|
+
}), jsxs("button", {
|
|
196
|
+
onClick: handleOpenClaude,
|
|
197
|
+
className: "w-full px-4 py-3 text-left hover:bg-muted/50 transition-colors flex items-start gap-3 group",
|
|
198
|
+
children: [jsx("div", {
|
|
199
|
+
className: "w-5 h-5 mt-0.5 flex-shrink-0 flex items-center justify-center",
|
|
200
|
+
children: jsx("span", {
|
|
201
|
+
className: "text-lg",
|
|
202
|
+
children: "\u2744\uFE0F"
|
|
203
|
+
})
|
|
204
|
+
}), jsxs("div", {
|
|
205
|
+
className: "flex-1 min-w-0",
|
|
206
|
+
children: [jsx("div", {
|
|
207
|
+
className: "text-sm font-medium text-foreground",
|
|
208
|
+
children: "Open in Claude"
|
|
209
|
+
}), jsx("div", {
|
|
210
|
+
className: "text-xs text-muted-foreground mt-0.5",
|
|
211
|
+
children: "Ask questions about this page"
|
|
212
|
+
})]
|
|
213
|
+
}), jsx("svg", {
|
|
214
|
+
className: "w-4 h-4 text-muted-foreground group-hover:text-foreground mt-1 flex-shrink-0",
|
|
215
|
+
fill: "none",
|
|
216
|
+
stroke: "currentColor",
|
|
217
|
+
viewBox: "0 0 24 24",
|
|
218
|
+
children: jsx("path", {
|
|
219
|
+
strokeLinecap: "round",
|
|
220
|
+
strokeLinejoin: "round",
|
|
221
|
+
strokeWidth: 2,
|
|
222
|
+
d: "M9 5l7 7-7 7"
|
|
223
|
+
})
|
|
224
|
+
})]
|
|
225
|
+
})]
|
|
226
|
+
})
|
|
227
|
+
})]
|
|
228
|
+
});
|
|
229
|
+
};export{MarkdownCopyButton};//# sourceMappingURL=MarkdownCopyButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownCopyButton.js","sources":["../../../src/components/Markdown/MarkdownCopyButton.tsx"],"sourcesContent":[null],"names":[],"mappings":"oMAKI,MAAA,kBAAwB,GAAA,CAAA;eACb;iBACC;AACf,EAAA,WAAA;AAED,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface MarkdownHeaderProps {
|
|
3
|
+
categoryTitle?: string;
|
|
4
|
+
title: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
author?: string;
|
|
7
|
+
updatedAt?: string;
|
|
8
|
+
markdownContent: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const MarkdownHeader: React.FC<MarkdownHeaderProps>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=MarkdownHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownHeader.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown/MarkdownHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,mBAAmB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAmDxD,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import {jsxs,jsx,Fragment}from'react/jsx-runtime';import'../../utils/isBrowser/index.js';import {cn}from'../../utils/util.js';import'react';import'fast-deep-equal/react.js';const MarkdownHeader = ({
|
|
2
|
+
categoryTitle,
|
|
3
|
+
title,
|
|
4
|
+
description,
|
|
5
|
+
author,
|
|
6
|
+
updatedAt,
|
|
7
|
+
markdownContent,
|
|
8
|
+
className
|
|
9
|
+
}) => {
|
|
10
|
+
return jsxs("div", {
|
|
11
|
+
className: cn('mb-10', className),
|
|
12
|
+
children: [categoryTitle && jsx("div", {
|
|
13
|
+
className: "text-[11px] font-semibold tracking-[0.16em] uppercase text-primary mb-3",
|
|
14
|
+
children: categoryTitle
|
|
15
|
+
}), jsx("div", {
|
|
16
|
+
className: "flex items-start justify-between gap-4 mb-5",
|
|
17
|
+
children: jsx("h1", {
|
|
18
|
+
className: "text-[2.4rem] md:text-[2.9rem] lg:text-[3.1rem] font-semibold text-foreground leading-tight tracking-tight flex-1",
|
|
19
|
+
children: title
|
|
20
|
+
})
|
|
21
|
+
}), description && jsx("p", {
|
|
22
|
+
className: "text-[1.15rem] md:text-[1.3rem] text-muted-foreground mb-8 leading-relaxed font-normal max-w-3xl",
|
|
23
|
+
children: description
|
|
24
|
+
}), (author || updatedAt) && jsxs("div", {
|
|
25
|
+
className: "flex items-center space-x-4 text-sm text-muted-foreground",
|
|
26
|
+
children: [author && jsxs(Fragment, {
|
|
27
|
+
children: [jsxs("div", {
|
|
28
|
+
className: "flex items-center",
|
|
29
|
+
children: [jsx("div", {
|
|
30
|
+
className: "mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-muted text-xs text-foreground font-medium",
|
|
31
|
+
children: author.charAt(0)
|
|
32
|
+
}), jsxs("span", {
|
|
33
|
+
children: ["Written by ", author]
|
|
34
|
+
})]
|
|
35
|
+
}), updatedAt && jsx("span", {
|
|
36
|
+
className: "text-muted-foreground/60",
|
|
37
|
+
children: "\u2022"
|
|
38
|
+
})]
|
|
39
|
+
}), updatedAt && jsxs("span", {
|
|
40
|
+
children: ["Updated ", updatedAt]
|
|
41
|
+
})]
|
|
42
|
+
})]
|
|
43
|
+
});
|
|
44
|
+
};export{MarkdownHeader};//# sourceMappingURL=MarkdownHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownHeader.js","sources":["../../../src/components/Markdown/MarkdownHeader.tsx"],"sourcesContent":[null],"names":[],"mappings":"6KAII,MAAA,cAAuB,GAAA,CAAA;;OAEvB;aACS;QACT;WACA;iBACY;AACf,EAAA;AAED,CAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface Markdown {
|
|
3
|
+
categoryId: string;
|
|
4
|
+
slug: string;
|
|
5
|
+
title: string;
|
|
6
|
+
}
|
|
7
|
+
interface MarkdownNavigationProps {
|
|
8
|
+
previousMarkdown?: Markdown | null;
|
|
9
|
+
nextMarkdown?: Markdown | null;
|
|
10
|
+
className?: string;
|
|
11
|
+
getMarkdownLink: (categoryId: string, slug: string) => string;
|
|
12
|
+
}
|
|
13
|
+
export declare const MarkdownNavigation: React.FC<MarkdownNavigationProps>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=MarkdownNavigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownNavigation.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown/MarkdownNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,QAAQ;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,uBAAuB;IAC7B,gBAAgB,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACjE;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA+ChE,CAAC"}
|