@cloudvoyant/helical-svelte 0.19.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/dist/Badge.svelte +24 -0
- package/dist/Badge.svelte.d.ts +12 -0
- package/dist/Button.svelte +35 -0
- package/dist/Button.svelte.d.ts +14 -0
- package/dist/Center.svelte +21 -0
- package/dist/Center.svelte.d.ts +9 -0
- package/dist/Chart.svelte +52 -0
- package/dist/Chart.svelte.d.ts +22 -0
- package/dist/Col.svelte +21 -0
- package/dist/Col.svelte.d.ts +9 -0
- package/dist/Container.svelte +21 -0
- package/dist/Container.svelte.d.ts +9 -0
- package/dist/CopyButton.svelte +58 -0
- package/dist/CopyButton.svelte.d.ts +12 -0
- package/dist/Figure.svelte +32 -0
- package/dist/Figure.svelte.d.ts +14 -0
- package/dist/HStack.svelte +21 -0
- package/dist/HStack.svelte.d.ts +9 -0
- package/dist/InlineLaTeX.svelte +34 -0
- package/dist/InlineLaTeX.svelte.d.ts +9 -0
- package/dist/Input.svelte +17 -0
- package/dist/Input.svelte.d.ts +8 -0
- package/dist/Item.svelte +22 -0
- package/dist/Item.svelte.d.ts +10 -0
- package/dist/LaTeX.svelte +34 -0
- package/dist/LaTeX.svelte.d.ts +9 -0
- package/dist/Manim.svelte +119 -0
- package/dist/Manim.svelte.d.ts +12 -0
- package/dist/Mermaid.svelte +92 -0
- package/dist/Mermaid.svelte.d.ts +14 -0
- package/dist/Notice.svelte +87 -0
- package/dist/Notice.svelte.d.ts +12 -0
- package/dist/Page.svelte +27 -0
- package/dist/Page.svelte.d.ts +10 -0
- package/dist/PageContent.svelte +21 -0
- package/dist/PageContent.svelte.d.ts +9 -0
- package/dist/PageFooter.svelte +21 -0
- package/dist/PageFooter.svelte.d.ts +9 -0
- package/dist/PageGutter.svelte +37 -0
- package/dist/PageGutter.svelte.d.ts +12 -0
- package/dist/PageSection.svelte +21 -0
- package/dist/PageSection.svelte.d.ts +9 -0
- package/dist/Portal.svelte +11 -0
- package/dist/Portal.svelte.d.ts +4 -0
- package/dist/PrevNext.svelte +47 -0
- package/dist/PrevNext.svelte.d.ts +15 -0
- package/dist/Reveal.svelte +40 -0
- package/dist/Reveal.svelte.d.ts +9 -0
- package/dist/Row.svelte +21 -0
- package/dist/Row.svelte.d.ts +9 -0
- package/dist/Scroll.svelte +72 -0
- package/dist/Scroll.svelte.d.ts +14 -0
- package/dist/Splitter.svelte +12 -0
- package/dist/Splitter.svelte.d.ts +4 -0
- package/dist/SplitterPanel.svelte +12 -0
- package/dist/SplitterPanel.svelte.d.ts +4 -0
- package/dist/SplitterResizeTrigger.svelte +15 -0
- package/dist/SplitterResizeTrigger.svelte.d.ts +4 -0
- package/dist/SplitterResizeTriggerIndicator.svelte +15 -0
- package/dist/SplitterResizeTriggerIndicator.svelte.d.ts +4 -0
- package/dist/Stack.svelte +21 -0
- package/dist/Stack.svelte.d.ts +9 -0
- package/dist/Textarea.svelte +14 -0
- package/dist/Textarea.svelte.d.ts +4 -0
- package/dist/ToggleButton.svelte +18 -0
- package/dist/ToggleButton.svelte.d.ts +9 -0
- package/dist/ToggleButtonIndicator.svelte +9 -0
- package/dist/ToggleButtonIndicator.svelte.d.ts +4 -0
- package/dist/VStack.svelte +21 -0
- package/dist/VStack.svelte.d.ts +9 -0
- package/dist/YouTube.svelte +81 -0
- package/dist/YouTube.svelte.d.ts +13 -0
- package/dist/YoutubeTimestampAt.svelte +20 -0
- package/dist/YoutubeTimestampAt.svelte.d.ts +10 -0
- package/dist/YoutubeTimestamps.svelte +100 -0
- package/dist/YoutubeTimestamps.svelte.d.ts +11 -0
- package/dist/card/Card.svelte +34 -0
- package/dist/card/Card.svelte.d.ts +12 -0
- package/dist/card/CardBody.svelte +21 -0
- package/dist/card/CardBody.svelte.d.ts +9 -0
- package/dist/card/CardCover.svelte +26 -0
- package/dist/card/CardCover.svelte.d.ts +11 -0
- package/dist/card/CardDescription.svelte +21 -0
- package/dist/card/CardDescription.svelte.d.ts +9 -0
- package/dist/card/CardFooter.svelte +21 -0
- package/dist/card/CardFooter.svelte.d.ts +9 -0
- package/dist/card/CardHeader.svelte +21 -0
- package/dist/card/CardHeader.svelte.d.ts +9 -0
- package/dist/card/CardTitle.svelte +22 -0
- package/dist/card/CardTitle.svelte.d.ts +10 -0
- package/dist/card/index.d.ts +7 -0
- package/dist/card/index.js +8 -0
- package/dist/checkbox/Checkbox.svelte +23 -0
- package/dist/checkbox/Checkbox.svelte.d.ts +8 -0
- package/dist/checkbox/CheckboxContext.svelte.d.ts +1 -0
- package/dist/checkbox/CheckboxContext.svelte.js +3 -0
- package/dist/checkbox/CheckboxControl.svelte +17 -0
- package/dist/checkbox/CheckboxControl.svelte.d.ts +4 -0
- package/dist/checkbox/CheckboxGroup.svelte +14 -0
- package/dist/checkbox/CheckboxGroup.svelte.d.ts +4 -0
- package/dist/checkbox/CheckboxIndicator.svelte +14 -0
- package/dist/checkbox/CheckboxIndicator.svelte.d.ts +4 -0
- package/dist/checkbox/CheckboxLabel.svelte +14 -0
- package/dist/checkbox/CheckboxLabel.svelte.d.ts +4 -0
- package/dist/checkbox/index.d.ts +6 -0
- package/dist/checkbox/index.js +7 -0
- package/dist/code-block/CodeBlock.svelte +67 -0
- package/dist/code-block/CodeBlock.svelte.d.ts +17 -0
- package/dist/code-block/CodeBlockContent.svelte +19 -0
- package/dist/code-block/CodeBlockContent.svelte.d.ts +8 -0
- package/dist/code-block/CodeBlockContext.svelte.d.ts +11 -0
- package/dist/code-block/CodeBlockContext.svelte.js +7 -0
- package/dist/code-block/CodeBlockCopyButton.svelte +19 -0
- package/dist/code-block/CodeBlockCopyButton.svelte.d.ts +8 -0
- package/dist/code-block/CodeBlockHeader.svelte +15 -0
- package/dist/code-block/CodeBlockHeader.svelte.d.ts +9 -0
- package/dist/code-block/CodeBlockTitle.svelte +15 -0
- package/dist/code-block/CodeBlockTitle.svelte.d.ts +9 -0
- package/dist/code-block/CodeRenderer.svelte +78 -0
- package/dist/code-block/CodeRenderer.svelte.d.ts +12 -0
- package/dist/code-block/LanguageTabsCodeBlock.svelte +119 -0
- package/dist/code-block/LanguageTabsCodeBlock.svelte.d.ts +12 -0
- package/dist/code-block/MultiFileCodeBlock.svelte +75 -0
- package/dist/code-block/MultiFileCodeBlock.svelte.d.ts +12 -0
- package/dist/code-block/index.d.ts +7 -0
- package/dist/code-block/index.js +8 -0
- package/dist/combobox/Combobox.svelte +25 -0
- package/dist/combobox/Combobox.svelte.d.ts +9 -0
- package/dist/combobox/ComboboxClear.svelte +14 -0
- package/dist/combobox/ComboboxClear.svelte.d.ts +4 -0
- package/dist/combobox/ComboboxContent.svelte +19 -0
- package/dist/combobox/ComboboxContent.svelte.d.ts +4 -0
- package/dist/combobox/ComboboxContext.svelte.d.ts +1 -0
- package/dist/combobox/ComboboxContext.svelte.js +3 -0
- package/dist/combobox/ComboboxControl.svelte +14 -0
- package/dist/combobox/ComboboxControl.svelte.d.ts +4 -0
- package/dist/combobox/ComboboxEmpty.svelte +18 -0
- package/dist/combobox/ComboboxEmpty.svelte.d.ts +4 -0
- package/dist/combobox/ComboboxInput.svelte +17 -0
- package/dist/combobox/ComboboxInput.svelte.d.ts +8 -0
- package/dist/combobox/ComboboxItem.svelte +22 -0
- package/dist/combobox/ComboboxItem.svelte.d.ts +10 -0
- package/dist/combobox/ComboboxItemGroup.svelte +11 -0
- package/dist/combobox/ComboboxItemGroup.svelte.d.ts +4 -0
- package/dist/combobox/ComboboxItemGroupLabel.svelte +14 -0
- package/dist/combobox/ComboboxItemGroupLabel.svelte.d.ts +4 -0
- package/dist/combobox/ComboboxItemIndicator.svelte +14 -0
- package/dist/combobox/ComboboxItemIndicator.svelte.d.ts +4 -0
- package/dist/combobox/ComboboxItemText.svelte +11 -0
- package/dist/combobox/ComboboxItemText.svelte.d.ts +4 -0
- package/dist/combobox/ComboboxList.svelte +14 -0
- package/dist/combobox/ComboboxList.svelte.d.ts +4 -0
- package/dist/combobox/ComboboxTrigger.svelte +14 -0
- package/dist/combobox/ComboboxTrigger.svelte.d.ts +4 -0
- package/dist/combobox/index.d.ts +14 -0
- package/dist/combobox/index.js +15 -0
- package/dist/dialog/Dialog.svelte +11 -0
- package/dist/dialog/Dialog.svelte.d.ts +4 -0
- package/dist/dialog/DialogBackdrop.svelte +17 -0
- package/dist/dialog/DialogBackdrop.svelte.d.ts +7 -0
- package/dist/dialog/DialogContent.svelte +22 -0
- package/dist/dialog/DialogContent.svelte.d.ts +9 -0
- package/dist/dialog/DialogContext.svelte.d.ts +1 -0
- package/dist/dialog/DialogContext.svelte.js +3 -0
- package/dist/dialog/DialogDescription.svelte +16 -0
- package/dist/dialog/DialogDescription.svelte.d.ts +7 -0
- package/dist/dialog/DialogDismiss.svelte +16 -0
- package/dist/dialog/DialogDismiss.svelte.d.ts +7 -0
- package/dist/dialog/DialogFooter.svelte +20 -0
- package/dist/dialog/DialogFooter.svelte.d.ts +9 -0
- package/dist/dialog/DialogHeader.svelte +20 -0
- package/dist/dialog/DialogHeader.svelte.d.ts +9 -0
- package/dist/dialog/DialogProvider.svelte +11 -0
- package/dist/dialog/DialogProvider.svelte.d.ts +4 -0
- package/dist/dialog/DialogRender.svelte +9 -0
- package/dist/dialog/DialogRender.svelte.d.ts +4 -0
- package/dist/dialog/DialogTitle.svelte +16 -0
- package/dist/dialog/DialogTitle.svelte.d.ts +7 -0
- package/dist/dialog/DialogTrigger.svelte +13 -0
- package/dist/dialog/DialogTrigger.svelte.d.ts +7 -0
- package/dist/dialog/index.d.ts +12 -0
- package/dist/dialog/index.js +13 -0
- package/dist/editor/BookmarkInput.svelte +107 -0
- package/dist/editor/BookmarkInput.svelte.d.ts +13 -0
- package/dist/editor/BubbleMenu.svelte +412 -0
- package/dist/editor/BubbleMenu.svelte.d.ts +7 -0
- package/dist/editor/CodeBlockComponent.svelte +307 -0
- package/dist/editor/CodeBlockComponent.svelte.d.ts +4 -0
- package/dist/editor/CursorOverlay.svelte +99 -0
- package/dist/editor/CursorOverlay.svelte.d.ts +15 -0
- package/dist/editor/Editor.svelte +646 -0
- package/dist/editor/Editor.svelte.d.ts +27 -0
- package/dist/editor/FontColorPicker.svelte +102 -0
- package/dist/editor/FontColorPicker.svelte.d.ts +9 -0
- package/dist/editor/ImageFileUpload.svelte +70 -0
- package/dist/editor/ImageFileUpload.svelte.d.ts +8 -0
- package/dist/editor/ImageInput.svelte +189 -0
- package/dist/editor/ImageInput.svelte.d.ts +11 -0
- package/dist/editor/ImageNodeView.svelte +116 -0
- package/dist/editor/ImageNodeView.svelte.d.ts +4 -0
- package/dist/editor/LinkEditPopover.svelte +95 -0
- package/dist/editor/LinkEditPopover.svelte.d.ts +9 -0
- package/dist/editor/LinkPreviewCard.svelte +83 -0
- package/dist/editor/LinkPreviewCard.svelte.d.ts +4 -0
- package/dist/editor/MentionList.svelte +184 -0
- package/dist/editor/MentionList.svelte.d.ts +13 -0
- package/dist/editor/NoticeNodeView.svelte +57 -0
- package/dist/editor/NoticeNodeView.svelte.d.ts +4 -0
- package/dist/editor/Reader.svelte +284 -0
- package/dist/editor/Reader.svelte.d.ts +7 -0
- package/dist/editor/SlashMenu.svelte +124 -0
- package/dist/editor/SlashMenu.svelte.d.ts +9 -0
- package/dist/editor/UrlMentionPill.svelte +29 -0
- package/dist/editor/UrlMentionPill.svelte.d.ts +4 -0
- package/dist/editor/YouTubeInput.svelte +81 -0
- package/dist/editor/YouTubeInput.svelte.d.ts +9 -0
- package/dist/editor/index.d.ts +4 -0
- package/dist/editor/index.js +4 -0
- package/dist/field/Field.svelte +14 -0
- package/dist/field/Field.svelte.d.ts +4 -0
- package/dist/field/FieldContext.svelte.d.ts +1 -0
- package/dist/field/FieldContext.svelte.js +3 -0
- package/dist/field/FieldError.svelte +14 -0
- package/dist/field/FieldError.svelte.d.ts +4 -0
- package/dist/field/FieldHelper.svelte +14 -0
- package/dist/field/FieldHelper.svelte.d.ts +4 -0
- package/dist/field/FieldLabel.svelte +14 -0
- package/dist/field/FieldLabel.svelte.d.ts +4 -0
- package/dist/field/FieldRequiredIndicator.svelte +14 -0
- package/dist/field/FieldRequiredIndicator.svelte.d.ts +4 -0
- package/dist/field/FieldSet.svelte +14 -0
- package/dist/field/FieldSet.svelte.d.ts +4 -0
- package/dist/field/FieldSetError.svelte +14 -0
- package/dist/field/FieldSetError.svelte.d.ts +4 -0
- package/dist/field/FieldSetHelper.svelte +14 -0
- package/dist/field/FieldSetHelper.svelte.d.ts +4 -0
- package/dist/field/FieldSetLegend.svelte +14 -0
- package/dist/field/FieldSetLegend.svelte.d.ts +4 -0
- package/dist/field/index.d.ts +10 -0
- package/dist/field/index.js +11 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.js +62 -0
- package/dist/listbox/Listbox.svelte +33 -0
- package/dist/listbox/Listbox.svelte.d.ts +12 -0
- package/dist/listbox/ListboxContent.svelte +18 -0
- package/dist/listbox/ListboxContent.svelte.d.ts +9 -0
- package/dist/listbox/ListboxContext.svelte.d.ts +1 -0
- package/dist/listbox/ListboxContext.svelte.js +3 -0
- package/dist/listbox/ListboxEmpty.svelte +14 -0
- package/dist/listbox/ListboxEmpty.svelte.d.ts +9 -0
- package/dist/listbox/ListboxInput.svelte +14 -0
- package/dist/listbox/ListboxInput.svelte.d.ts +7 -0
- package/dist/listbox/ListboxItem.svelte +20 -0
- package/dist/listbox/ListboxItem.svelte.d.ts +10 -0
- package/dist/listbox/ListboxItemIndicator.svelte +14 -0
- package/dist/listbox/ListboxItemIndicator.svelte.d.ts +9 -0
- package/dist/listbox/ListboxItemText.svelte +14 -0
- package/dist/listbox/ListboxItemText.svelte.d.ts +9 -0
- package/dist/listbox/ListboxLabel.svelte +14 -0
- package/dist/listbox/ListboxLabel.svelte.d.ts +9 -0
- package/dist/listbox/index.d.ts +9 -0
- package/dist/listbox/index.js +10 -0
- package/dist/navbar/NavbarActions.svelte +25 -0
- package/dist/navbar/NavbarActions.svelte.d.ts +9 -0
- package/dist/navbar/NavbarActivationArea.svelte +30 -0
- package/dist/navbar/NavbarActivationArea.svelte.d.ts +9 -0
- package/dist/navbar/NavbarBrand.svelte +25 -0
- package/dist/navbar/NavbarBrand.svelte.d.ts +9 -0
- package/dist/navbar/NavbarContext.svelte.d.ts +25 -0
- package/dist/navbar/NavbarContext.svelte.js +14 -0
- package/dist/navbar/NavbarMenu.svelte +61 -0
- package/dist/navbar/NavbarMenu.svelte.d.ts +10 -0
- package/dist/navbar/NavbarMenuContent.svelte +16 -0
- package/dist/navbar/NavbarMenuContent.svelte.d.ts +4 -0
- package/dist/navbar/NavbarMenuContext.svelte.d.ts +8 -0
- package/dist/navbar/NavbarMenuContext.svelte.js +14 -0
- package/dist/navbar/NavbarMenuIndicator.svelte +12 -0
- package/dist/navbar/NavbarMenuIndicator.svelte.d.ts +4 -0
- package/dist/navbar/NavbarMenuItem.svelte +34 -0
- package/dist/navbar/NavbarMenuItem.svelte.d.ts +8 -0
- package/dist/navbar/NavbarMenuLink.svelte +18 -0
- package/dist/navbar/NavbarMenuLink.svelte.d.ts +4 -0
- package/dist/navbar/NavbarMenuList.svelte +14 -0
- package/dist/navbar/NavbarMenuList.svelte.d.ts +4 -0
- package/dist/navbar/NavbarMenuTrigger.svelte +30 -0
- package/dist/navbar/NavbarMenuTrigger.svelte.d.ts +4 -0
- package/dist/navbar/NavbarMenuViewport.svelte +12 -0
- package/dist/navbar/NavbarMenuViewport.svelte.d.ts +4 -0
- package/dist/navbar/NavbarMenuViewportPositioner.svelte +17 -0
- package/dist/navbar/NavbarMenuViewportPositioner.svelte.d.ts +4 -0
- package/dist/navbar/NavbarMobileMenu.svelte +14 -0
- package/dist/navbar/NavbarMobileMenu.svelte.d.ts +4 -0
- package/dist/navbar/NavbarMobileMenuContent.svelte +23 -0
- package/dist/navbar/NavbarMobileMenuContent.svelte.d.ts +9 -0
- package/dist/navbar/NavbarMobileMenuTrigger.svelte +26 -0
- package/dist/navbar/NavbarMobileMenuTrigger.svelte.d.ts +4 -0
- package/dist/navbar/NavbarMobileOverlay.svelte +85 -0
- package/dist/navbar/NavbarMobileOverlay.svelte.d.ts +9 -0
- package/dist/navbar/NavbarProvider.svelte +83 -0
- package/dist/navbar/NavbarProvider.svelte.d.ts +8 -0
- package/dist/navbar/NavbarRoot.svelte +142 -0
- package/dist/navbar/NavbarRoot.svelte.d.ts +13 -0
- package/dist/navbar/NavbarTrigger.svelte +60 -0
- package/dist/navbar/NavbarTrigger.svelte.d.ts +10 -0
- package/dist/navbar/index.d.ts +22 -0
- package/dist/navbar/index.js +28 -0
- package/dist/number-input/NumberInput.svelte +14 -0
- package/dist/number-input/NumberInput.svelte.d.ts +4 -0
- package/dist/number-input/NumberInputContext.svelte.d.ts +1 -0
- package/dist/number-input/NumberInputContext.svelte.js +3 -0
- package/dist/number-input/NumberInputControl.svelte +14 -0
- package/dist/number-input/NumberInputControl.svelte.d.ts +4 -0
- package/dist/number-input/NumberInputDecrement.svelte +14 -0
- package/dist/number-input/NumberInputDecrement.svelte.d.ts +4 -0
- package/dist/number-input/NumberInputIncrement.svelte +14 -0
- package/dist/number-input/NumberInputIncrement.svelte.d.ts +4 -0
- package/dist/number-input/NumberInputInput.svelte +12 -0
- package/dist/number-input/NumberInputInput.svelte.d.ts +4 -0
- package/dist/number-input/index.d.ts +6 -0
- package/dist/number-input/index.js +7 -0
- package/dist/pagination/Pagination.svelte +35 -0
- package/dist/pagination/Pagination.svelte.d.ts +4 -0
- package/dist/pagination/PaginationEllipsis.svelte +26 -0
- package/dist/pagination/PaginationEllipsis.svelte.d.ts +4 -0
- package/dist/pagination/PaginationItem.svelte +14 -0
- package/dist/pagination/PaginationItem.svelte.d.ts +4 -0
- package/dist/pagination/PaginationItems.svelte +21 -0
- package/dist/pagination/PaginationItems.svelte.d.ts +18 -0
- package/dist/pagination/PaginationNext.svelte +29 -0
- package/dist/pagination/PaginationNext.svelte.d.ts +4 -0
- package/dist/pagination/PaginationPrevious.svelte +29 -0
- package/dist/pagination/PaginationPrevious.svelte.d.ts +4 -0
- package/dist/pagination/index.d.ts +6 -0
- package/dist/pagination/index.js +7 -0
- package/dist/popover/Popover.svelte +11 -0
- package/dist/popover/Popover.svelte.d.ts +4 -0
- package/dist/popover/PopoverAnchor.svelte +13 -0
- package/dist/popover/PopoverAnchor.svelte.d.ts +7 -0
- package/dist/popover/PopoverContent.svelte +35 -0
- package/dist/popover/PopoverContent.svelte.d.ts +8 -0
- package/dist/popover/PopoverContext.svelte.d.ts +1 -0
- package/dist/popover/PopoverContext.svelte.js +3 -0
- package/dist/popover/PopoverDescription.svelte +16 -0
- package/dist/popover/PopoverDescription.svelte.d.ts +7 -0
- package/dist/popover/PopoverDismiss.svelte +16 -0
- package/dist/popover/PopoverDismiss.svelte.d.ts +7 -0
- package/dist/popover/PopoverIndicator.svelte +16 -0
- package/dist/popover/PopoverIndicator.svelte.d.ts +7 -0
- package/dist/popover/PopoverProvider.svelte +11 -0
- package/dist/popover/PopoverProvider.svelte.d.ts +4 -0
- package/dist/popover/PopoverTitle.svelte +16 -0
- package/dist/popover/PopoverTitle.svelte.d.ts +7 -0
- package/dist/popover/PopoverTrigger.svelte +13 -0
- package/dist/popover/PopoverTrigger.svelte.d.ts +7 -0
- package/dist/popover/index.d.ts +10 -0
- package/dist/popover/index.js +11 -0
- package/dist/prose/Prose.svelte +23 -0
- package/dist/prose/Prose.svelte.d.ts +11 -0
- package/dist/prose/index.d.ts +1 -0
- package/dist/prose/index.js +2 -0
- package/dist/questions/MultipleChoiceQuestion.svelte +167 -0
- package/dist/questions/MultipleChoiceQuestion.svelte.d.ts +19 -0
- package/dist/questions/NumericQuestion.svelte +139 -0
- package/dist/questions/NumericQuestion.svelte.d.ts +20 -0
- package/dist/questions/Quiz.svelte +119 -0
- package/dist/questions/Quiz.svelte.d.ts +11 -0
- package/dist/questions/SingleChoiceQuestion.svelte +141 -0
- package/dist/questions/SingleChoiceQuestion.svelte.d.ts +19 -0
- package/dist/questions/index.d.ts +4 -0
- package/dist/questions/index.js +5 -0
- package/dist/radio-group/RadioGroup.svelte +16 -0
- package/dist/radio-group/RadioGroup.svelte.d.ts +7 -0
- package/dist/radio-group/RadioGroupItem.svelte +26 -0
- package/dist/radio-group/RadioGroupItem.svelte.d.ts +7 -0
- package/dist/radio-group/index.d.ts +2 -0
- package/dist/radio-group/index.js +3 -0
- package/dist/select/Select.svelte +70 -0
- package/dist/select/Select.svelte.d.ts +11 -0
- package/dist/select/SelectClearTrigger.svelte +14 -0
- package/dist/select/SelectClearTrigger.svelte.d.ts +4 -0
- package/dist/select/SelectContent.svelte +19 -0
- package/dist/select/SelectContent.svelte.d.ts +4 -0
- package/dist/select/SelectContext.svelte.d.ts +1 -0
- package/dist/select/SelectContext.svelte.js +3 -0
- package/dist/select/SelectIndicator.svelte +14 -0
- package/dist/select/SelectIndicator.svelte.d.ts +4 -0
- package/dist/select/SelectItem.svelte +21 -0
- package/dist/select/SelectItem.svelte.d.ts +9 -0
- package/dist/select/SelectItemGroup.svelte +11 -0
- package/dist/select/SelectItemGroup.svelte.d.ts +4 -0
- package/dist/select/SelectItemGroupLabel.svelte +14 -0
- package/dist/select/SelectItemGroupLabel.svelte.d.ts +4 -0
- package/dist/select/SelectItemIndicator.svelte +14 -0
- package/dist/select/SelectItemIndicator.svelte.d.ts +4 -0
- package/dist/select/SelectItemText.svelte +14 -0
- package/dist/select/SelectItemText.svelte.d.ts +4 -0
- package/dist/select/SelectNative.svelte +73 -0
- package/dist/select/SelectNative.svelte.d.ts +16 -0
- package/dist/select/SelectTrigger.svelte +19 -0
- package/dist/select/SelectTrigger.svelte.d.ts +8 -0
- package/dist/select/SelectValue.svelte +18 -0
- package/dist/select/SelectValue.svelte.d.ts +4 -0
- package/dist/select/index.d.ts +13 -0
- package/dist/select/index.js +14 -0
- package/dist/sidebar/Content.svelte +19 -0
- package/dist/sidebar/Content.svelte.d.ts +9 -0
- package/dist/sidebar/Footer.svelte +19 -0
- package/dist/sidebar/Footer.svelte.d.ts +9 -0
- package/dist/sidebar/Group.svelte +27 -0
- package/dist/sidebar/Group.svelte.d.ts +10 -0
- package/dist/sidebar/GroupAction.svelte +28 -0
- package/dist/sidebar/GroupAction.svelte.d.ts +10 -0
- package/dist/sidebar/Header.svelte +19 -0
- package/dist/sidebar/Header.svelte.d.ts +9 -0
- package/dist/sidebar/Input.svelte +21 -0
- package/dist/sidebar/Input.svelte.d.ts +7 -0
- package/dist/sidebar/Inset.svelte +19 -0
- package/dist/sidebar/Inset.svelte.d.ts +9 -0
- package/dist/sidebar/Menu.svelte +19 -0
- package/dist/sidebar/Menu.svelte.d.ts +9 -0
- package/dist/sidebar/MenuAction.svelte +34 -0
- package/dist/sidebar/MenuAction.svelte.d.ts +11 -0
- package/dist/sidebar/MenuBadge.svelte +25 -0
- package/dist/sidebar/MenuBadge.svelte.d.ts +9 -0
- package/dist/sidebar/MenuButton.svelte +80 -0
- package/dist/sidebar/MenuButton.svelte.d.ts +18 -0
- package/dist/sidebar/MenuItem.svelte +25 -0
- package/dist/sidebar/MenuItem.svelte.d.ts +9 -0
- package/dist/sidebar/MenuLink.svelte +66 -0
- package/dist/sidebar/MenuLink.svelte.d.ts +21 -0
- package/dist/sidebar/MenuSkeleton.svelte +38 -0
- package/dist/sidebar/MenuSkeleton.svelte.d.ts +8 -0
- package/dist/sidebar/MenuSub.svelte +25 -0
- package/dist/sidebar/MenuSub.svelte.d.ts +9 -0
- package/dist/sidebar/MenuSubButton.svelte +31 -0
- package/dist/sidebar/MenuSubButton.svelte.d.ts +12 -0
- package/dist/sidebar/MenuSubItem.svelte +25 -0
- package/dist/sidebar/MenuSubItem.svelte.d.ts +9 -0
- package/dist/sidebar/Provider.svelte +103 -0
- package/dist/sidebar/Provider.svelte.d.ts +12 -0
- package/dist/sidebar/Rail.svelte +32 -0
- package/dist/sidebar/Rail.svelte.d.ts +7 -0
- package/dist/sidebar/Root.svelte +109 -0
- package/dist/sidebar/Root.svelte.d.ts +15 -0
- package/dist/sidebar/Separator.svelte +22 -0
- package/dist/sidebar/Separator.svelte.d.ts +7 -0
- package/dist/sidebar/Trigger.svelte +34 -0
- package/dist/sidebar/Trigger.svelte.d.ts +9 -0
- package/dist/sidebar/context.svelte.d.ts +4 -0
- package/dist/sidebar/context.svelte.js +14 -0
- package/dist/sidebar/index.d.ts +24 -0
- package/dist/sidebar/index.js +28 -0
- package/dist/switch/Switch.svelte +23 -0
- package/dist/switch/Switch.svelte.d.ts +8 -0
- package/dist/switch/SwitchContext.svelte.d.ts +1 -0
- package/dist/switch/SwitchContext.svelte.js +3 -0
- package/dist/switch/SwitchControl.svelte +17 -0
- package/dist/switch/SwitchControl.svelte.d.ts +4 -0
- package/dist/switch/SwitchLabel.svelte +14 -0
- package/dist/switch/SwitchLabel.svelte.d.ts +4 -0
- package/dist/switch/SwitchThumb.svelte +12 -0
- package/dist/switch/SwitchThumb.svelte.d.ts +4 -0
- package/dist/switch/index.d.ts +5 -0
- package/dist/switch/index.js +6 -0
- package/dist/tabs/Tabs.svelte +24 -0
- package/dist/tabs/Tabs.svelte.d.ts +4 -0
- package/dist/tabs/TabsContent.svelte +14 -0
- package/dist/tabs/TabsContent.svelte.d.ts +4 -0
- package/dist/tabs/TabsContext.svelte.d.ts +1 -0
- package/dist/tabs/TabsContext.svelte.js +3 -0
- package/dist/tabs/TabsList.svelte +20 -0
- package/dist/tabs/TabsList.svelte.d.ts +7 -0
- package/dist/tabs/TabsTrigger.svelte +14 -0
- package/dist/tabs/TabsTrigger.svelte.d.ts +4 -0
- package/dist/tabs/index.d.ts +5 -0
- package/dist/tabs/index.js +6 -0
- package/dist/tags-input/TagInput.svelte +19 -0
- package/dist/tags-input/TagInput.svelte.d.ts +4 -0
- package/dist/tags-input/TagInputClearTrigger.svelte +14 -0
- package/dist/tags-input/TagInputClearTrigger.svelte.d.ts +4 -0
- package/dist/tags-input/TagInputContext.svelte.d.ts +1 -0
- package/dist/tags-input/TagInputContext.svelte.js +3 -0
- package/dist/tags-input/TagInputControl.svelte +14 -0
- package/dist/tags-input/TagInputControl.svelte.d.ts +4 -0
- package/dist/tags-input/TagInputInput.svelte +12 -0
- package/dist/tags-input/TagInputInput.svelte.d.ts +4 -0
- package/dist/tags-input/TagInputItem.svelte +14 -0
- package/dist/tags-input/TagInputItem.svelte.d.ts +4 -0
- package/dist/tags-input/TagInputItemDeleteTrigger.svelte +14 -0
- package/dist/tags-input/TagInputItemDeleteTrigger.svelte.d.ts +4 -0
- package/dist/tags-input/TagInputItemInput.svelte +12 -0
- package/dist/tags-input/TagInputItemInput.svelte.d.ts +4 -0
- package/dist/tags-input/TagInputItemPreview.svelte +11 -0
- package/dist/tags-input/TagInputItemPreview.svelte.d.ts +4 -0
- package/dist/tags-input/TagInputItemText.svelte +14 -0
- package/dist/tags-input/TagInputItemText.svelte.d.ts +4 -0
- package/dist/tags-input/index.d.ts +11 -0
- package/dist/tags-input/index.js +12 -0
- package/dist/toggle-group/ToggleGroup.svelte +28 -0
- package/dist/toggle-group/ToggleGroup.svelte.d.ts +11 -0
- package/dist/toggle-group/ToggleGroupItem.svelte +28 -0
- package/dist/toggle-group/ToggleGroupItem.svelte.d.ts +11 -0
- package/dist/toggle-group/index.d.ts +2 -0
- package/dist/toggle-group/index.js +3 -0
- package/dist/tooltip/Tooltip.svelte +11 -0
- package/dist/tooltip/Tooltip.svelte.d.ts +4 -0
- package/dist/tooltip/TooltipContent.svelte +35 -0
- package/dist/tooltip/TooltipContent.svelte.d.ts +8 -0
- package/dist/tooltip/TooltipContext.svelte.d.ts +1 -0
- package/dist/tooltip/TooltipContext.svelte.js +3 -0
- package/dist/tooltip/TooltipProvider.svelte +11 -0
- package/dist/tooltip/TooltipProvider.svelte.d.ts +4 -0
- package/dist/tooltip/TooltipRender.svelte +9 -0
- package/dist/tooltip/TooltipRender.svelte.d.ts +3 -0
- package/dist/tooltip/TooltipTrigger.svelte +13 -0
- package/dist/tooltip/TooltipTrigger.svelte.d.ts +7 -0
- package/dist/tooltip/index.d.ts +6 -0
- package/dist/tooltip/index.js +7 -0
- package/dist/window/Window.svelte +34 -0
- package/dist/window/Window.svelte.d.ts +10 -0
- package/dist/window/WindowBody.svelte +16 -0
- package/dist/window/WindowBody.svelte.d.ts +7 -0
- package/dist/window/WindowContext.svelte.d.ts +1 -0
- package/dist/window/WindowContext.svelte.js +3 -0
- package/dist/window/WindowControl.svelte +16 -0
- package/dist/window/WindowControl.svelte.d.ts +7 -0
- package/dist/window/WindowDismiss.svelte +16 -0
- package/dist/window/WindowDismiss.svelte.d.ts +7 -0
- package/dist/window/WindowDragTrigger.svelte +16 -0
- package/dist/window/WindowDragTrigger.svelte.d.ts +7 -0
- package/dist/window/WindowHeader.svelte +16 -0
- package/dist/window/WindowHeader.svelte.d.ts +7 -0
- package/dist/window/WindowProvider.svelte +11 -0
- package/dist/window/WindowProvider.svelte.d.ts +4 -0
- package/dist/window/WindowRender.svelte +9 -0
- package/dist/window/WindowRender.svelte.d.ts +4 -0
- package/dist/window/WindowResizeTrigger.svelte +16 -0
- package/dist/window/WindowResizeTrigger.svelte.d.ts +7 -0
- package/dist/window/WindowStageTrigger.svelte +16 -0
- package/dist/window/WindowStageTrigger.svelte.d.ts +7 -0
- package/dist/window/WindowTitle.svelte +16 -0
- package/dist/window/WindowTitle.svelte.d.ts +7 -0
- package/dist/window/index.d.ts +12 -0
- package/dist/window/index.js +13 -0
- package/package.json +68 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { NodeViewProps } from '@tiptap/core';
|
|
3
|
+
import { NodeViewWrapper } from 'svelte-tiptap';
|
|
4
|
+
import YouTube from '../YouTube.svelte';
|
|
5
|
+
|
|
6
|
+
let { node, deleteNode }: NodeViewProps = $props();
|
|
7
|
+
|
|
8
|
+
const { url, title, description, image, favicon, type } = $derived(node.attrs);
|
|
9
|
+
let imageError = $state(false);
|
|
10
|
+
let faviconError = $state(false);
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<NodeViewWrapper class="link-preview relative my-4" data-type={type}>
|
|
14
|
+
{#if type === 'bookmark'}
|
|
15
|
+
<a
|
|
16
|
+
href={url}
|
|
17
|
+
target="_blank"
|
|
18
|
+
rel="noopener noreferrer"
|
|
19
|
+
class="flex overflow-hidden rounded-lg border border-border/70 bg-muted/40 transition-colors hover:bg-muted bookmark-card-edit"
|
|
20
|
+
style="text-decoration: none !important; color: inherit;"
|
|
21
|
+
>
|
|
22
|
+
<div class="flex-1 min-w-0 flex flex-col justify-between px-3 py-2.5">
|
|
23
|
+
<div>
|
|
24
|
+
<div class="text-base font-semibold mb-1 line-clamp-1">{title}</div>
|
|
25
|
+
{#if description}
|
|
26
|
+
<p class="text-xs text-muted-foreground mb-2 line-clamp-2 leading-snug">
|
|
27
|
+
{description}
|
|
28
|
+
</p>
|
|
29
|
+
{/if}
|
|
30
|
+
</div>
|
|
31
|
+
<div class="flex items-center gap-1.5 text-xs text-muted-foreground mt-auto">
|
|
32
|
+
{#if favicon && !faviconError}
|
|
33
|
+
<img src={favicon} alt="" class="w-3.5 h-3.5 flex-shrink-0" onerror={() => (faviconError = true)} />
|
|
34
|
+
{:else}
|
|
35
|
+
<svg class="w-3 h-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
|
|
36
|
+
<path
|
|
37
|
+
d="M12.586 4.586a2 2 0 112.828 2.828l-3 3a2 2 0 01-2.828 0 1 1 0 00-1.414 1.414 4 4 0 005.656 0l3-3a4 4 0 00-5.656-5.656l-1.5 1.5a1 1 0 101.414 1.414l1.5-1.5zm-5 5a2 2 0 012.828 0 1 1 0 101.414-1.414 4 4 0 00-5.656 0l-3 3a4 4 0 105.656 5.656l1.5-1.5a1 1 0 10-1.414-1.414l-1.5 1.5a2 2 0 11-2.828-2.828l3-3z"
|
|
38
|
+
/>
|
|
39
|
+
</svg>
|
|
40
|
+
{/if}
|
|
41
|
+
<span class="truncate text-xs opacity-80">{new URL(url).hostname}</span>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
{#if image && !imageError}
|
|
45
|
+
<div class="flex-shrink-0 w-48 aspect-video bg-muted">
|
|
46
|
+
<img src={image} alt={title} class="w-full h-full object-cover" onerror={() => (imageError = true)} />
|
|
47
|
+
</div>
|
|
48
|
+
{/if}
|
|
49
|
+
</a>
|
|
50
|
+
{:else if type === 'embed'}
|
|
51
|
+
<YouTube {url} {title} />
|
|
52
|
+
{/if}
|
|
53
|
+
|
|
54
|
+
<button
|
|
55
|
+
type="button"
|
|
56
|
+
class="absolute top-2 right-2 w-6 h-6 rounded-full bg-muted border-none cursor-pointer text-xl leading-none opacity-0 transition-opacity hover:opacity-100"
|
|
57
|
+
onclick={deleteNode}
|
|
58
|
+
>
|
|
59
|
+
×
|
|
60
|
+
</button>
|
|
61
|
+
</NodeViewWrapper>
|
|
62
|
+
|
|
63
|
+
<style>
|
|
64
|
+
.line-clamp-2 {
|
|
65
|
+
display: -webkit-box;
|
|
66
|
+
-webkit-line-clamp: 2;
|
|
67
|
+
line-clamp: 2;
|
|
68
|
+
-webkit-box-orient: vertical;
|
|
69
|
+
overflow: hidden;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
:global(.bookmark-card-edit) {
|
|
73
|
+
background-color: var(--bookmark-bg) !important;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
:global(.bookmark-card-edit:hover) {
|
|
77
|
+
background-color: var(--bookmark-bg-hover) !important;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
:global(.bookmark-card-edit p) {
|
|
81
|
+
line-height: 1.375 !important;
|
|
82
|
+
}
|
|
83
|
+
</style>
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { MentionItem, MentionListElement } from '@cloudvoyant/helical-ui';
|
|
3
|
+
|
|
4
|
+
let {
|
|
5
|
+
items = [],
|
|
6
|
+
command,
|
|
7
|
+
clientRect,
|
|
8
|
+
}: {
|
|
9
|
+
items: MentionItem[];
|
|
10
|
+
command: (item: Partial<MentionItem>) => void;
|
|
11
|
+
clientRect: (() => DOMRect | null) | null;
|
|
12
|
+
} = $props();
|
|
13
|
+
|
|
14
|
+
let selectedIndex = $state(0);
|
|
15
|
+
let element: HTMLElement;
|
|
16
|
+
|
|
17
|
+
// Expose keyboard handler globally for TipTap
|
|
18
|
+
$effect(() => {
|
|
19
|
+
if (element) {
|
|
20
|
+
(element as MentionListElement).__mentionListKeyDown = onKeyDown;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
function onKeyDown(event: KeyboardEvent) {
|
|
25
|
+
if (event.key === 'ArrowUp') {
|
|
26
|
+
selectedIndex = Math.max(0, selectedIndex - 1);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
if (event.key === 'ArrowDown') {
|
|
30
|
+
selectedIndex = Math.min(items.length - 1, selectedIndex + 1);
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
if (event.key === 'Enter') {
|
|
34
|
+
selectItem(selectedIndex);
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function selectItem(index: number) {
|
|
41
|
+
const item = items[index];
|
|
42
|
+
if (item) {
|
|
43
|
+
command({
|
|
44
|
+
id: item.id,
|
|
45
|
+
// `label` is the display name; `title` is optional and undefined for user mentions.
|
|
46
|
+
label: item.label,
|
|
47
|
+
type: item.type,
|
|
48
|
+
seriesId: item.seriesId || null,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Position dropdown
|
|
54
|
+
$effect(() => {
|
|
55
|
+
if (element && clientRect) {
|
|
56
|
+
const rect = clientRect();
|
|
57
|
+
if (rect) {
|
|
58
|
+
element.style.top = `${rect.bottom + window.scrollY}px`;
|
|
59
|
+
element.style.left = `${rect.left + window.scrollX}px`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// Reset selected index when items change
|
|
65
|
+
$effect(() => {
|
|
66
|
+
if (items.length > 0 && selectedIndex >= items.length) {
|
|
67
|
+
selectedIndex = 0;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
// Expose onKeyDown for parent
|
|
72
|
+
export function ref() {
|
|
73
|
+
return { onKeyDown };
|
|
74
|
+
}
|
|
75
|
+
</script>
|
|
76
|
+
|
|
77
|
+
<div bind:this={element} class="mention-list">
|
|
78
|
+
{#if items.length === 0}
|
|
79
|
+
<div class="empty">No results</div>
|
|
80
|
+
{:else}
|
|
81
|
+
<ul>
|
|
82
|
+
{#each items as item, index}
|
|
83
|
+
<li class:selected={index === selectedIndex}>
|
|
84
|
+
<button type="button" class="mention-item-button" onclick={() => selectItem(index)}>
|
|
85
|
+
<!-- `label` is the display name (id/label/type/seriesId/title); `title` is an
|
|
86
|
+
optional extra and is undefined for plain user mentions. -->
|
|
87
|
+
<div class="title">{item.label}</div>
|
|
88
|
+
<div class="type-label">{item.type}</div>
|
|
89
|
+
</button>
|
|
90
|
+
</li>
|
|
91
|
+
{/each}
|
|
92
|
+
</ul>
|
|
93
|
+
{/if}
|
|
94
|
+
</div>
|
|
95
|
+
|
|
96
|
+
<style>
|
|
97
|
+
.mention-list {
|
|
98
|
+
position: absolute;
|
|
99
|
+
z-index: 1000;
|
|
100
|
+
max-height: 300px;
|
|
101
|
+
overflow-y: auto;
|
|
102
|
+
background: white;
|
|
103
|
+
border: 1px solid #e5e7eb;
|
|
104
|
+
border-radius: 0.375rem;
|
|
105
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
106
|
+
min-width: 280px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
:global(.dark) .mention-list {
|
|
110
|
+
background: #1f2937;
|
|
111
|
+
border-color: #374151;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
ul {
|
|
115
|
+
list-style: none;
|
|
116
|
+
padding: 0.25rem;
|
|
117
|
+
margin: 0;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
li {
|
|
121
|
+
padding: 0;
|
|
122
|
+
margin: 0;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.mention-item-button {
|
|
126
|
+
width: 100%;
|
|
127
|
+
display: flex;
|
|
128
|
+
align-items: center;
|
|
129
|
+
justify-content: space-between;
|
|
130
|
+
gap: 0.75rem;
|
|
131
|
+
padding: 0.375rem 0.5rem;
|
|
132
|
+
border-radius: 0.25rem;
|
|
133
|
+
cursor: pointer;
|
|
134
|
+
color: #111827;
|
|
135
|
+
transition: background-color 0.1s;
|
|
136
|
+
background: none;
|
|
137
|
+
border: none;
|
|
138
|
+
text-align: left;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
:global(.dark) .mention-item-button {
|
|
142
|
+
color: #f9fafb;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.mention-item-button:hover,
|
|
146
|
+
li.selected .mention-item-button {
|
|
147
|
+
background: #f3f4f6;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
:global(.dark) li:hover,
|
|
151
|
+
:global(.dark) li.selected {
|
|
152
|
+
background: #374151;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.title {
|
|
156
|
+
flex: 1;
|
|
157
|
+
font-size: 0.875rem;
|
|
158
|
+
overflow: hidden;
|
|
159
|
+
text-overflow: ellipsis;
|
|
160
|
+
white-space: nowrap;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.type-label {
|
|
164
|
+
font-size: 0.75rem;
|
|
165
|
+
font-style: italic;
|
|
166
|
+
color: #6b7280;
|
|
167
|
+
flex-shrink: 0;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
:global(.dark) .type-label {
|
|
171
|
+
color: #9ca3af;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.empty {
|
|
175
|
+
padding: 0.75rem;
|
|
176
|
+
text-align: center;
|
|
177
|
+
font-size: 0.875rem;
|
|
178
|
+
color: #9ca3af;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
:global(.dark) .empty {
|
|
182
|
+
color: #6b7280;
|
|
183
|
+
}
|
|
184
|
+
</style>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { MentionItem } from '@cloudvoyant/helical-ui';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
items: MentionItem[];
|
|
4
|
+
command: (item: Partial<MentionItem>) => void;
|
|
5
|
+
clientRect: (() => DOMRect | null) | null;
|
|
6
|
+
};
|
|
7
|
+
declare const MentionList: import("svelte").Component<$$ComponentProps, {
|
|
8
|
+
ref: () => {
|
|
9
|
+
onKeyDown: (event: KeyboardEvent) => boolean;
|
|
10
|
+
};
|
|
11
|
+
}, "">;
|
|
12
|
+
type MentionList = ReturnType<typeof MentionList>;
|
|
13
|
+
export default MentionList;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<!-- libs/helical-svelte/src/editor/NoticeNodeView.svelte -->
|
|
2
|
+
<script lang="ts">
|
|
3
|
+
import type { NodeViewProps } from '@tiptap/core';
|
|
4
|
+
import type { NoticeVariants } from '@cloudvoyant/helical-ui';
|
|
5
|
+
import { NodeViewContent, NodeViewWrapper } from 'svelte-tiptap';
|
|
6
|
+
import Notice from '../Notice.svelte';
|
|
7
|
+
|
|
8
|
+
type NoticeType = Exclude<NoticeVariants['variant'], null | undefined | 'none'>;
|
|
9
|
+
|
|
10
|
+
let { node, editor, getPos, updateAttributes }: NodeViewProps = $props();
|
|
11
|
+
const variant = $derived((node.attrs.variant as NoticeType | undefined) ?? 'info');
|
|
12
|
+
const title = $derived((node.attrs.title as string | undefined) ?? 'Note');
|
|
13
|
+
const variants: NoticeType[] = ['info', 'success', 'warning', 'error'];
|
|
14
|
+
|
|
15
|
+
function bodyStart(): number | null {
|
|
16
|
+
const nodePosition = typeof getPos === 'function' ? getPos() : undefined;
|
|
17
|
+
return typeof nodePosition === 'number' ? nodePosition + 2 : null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function focusBody() {
|
|
21
|
+
const position = bodyStart();
|
|
22
|
+
if (position !== null) editor.chain().focus().setTextSelection(position).run();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function handleTitleKeydown(event: KeyboardEvent) {
|
|
26
|
+
if (event.key === 'ArrowDown' || event.key === 'Enter') {
|
|
27
|
+
event.preventDefault();
|
|
28
|
+
focusBody();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<NodeViewWrapper>
|
|
34
|
+
<Notice {variant} class="editor-notice-node relative my-1 px-2 py-1">
|
|
35
|
+
<div class="flex items-center gap-2" contenteditable={false}>
|
|
36
|
+
<input
|
|
37
|
+
aria-label="Notice title"
|
|
38
|
+
value={title}
|
|
39
|
+
oninput={(event) => updateAttributes({ title: event.currentTarget.value })}
|
|
40
|
+
onkeydown={handleTitleKeydown}
|
|
41
|
+
class="min-w-0 flex-1 bg-transparent font-semibold tracking-tight outline-none placeholder:text-muted-foreground"
|
|
42
|
+
placeholder="Notice title"
|
|
43
|
+
/>
|
|
44
|
+
<select
|
|
45
|
+
aria-label="Notice type"
|
|
46
|
+
value={variant}
|
|
47
|
+
onchange={(event) => updateAttributes({ variant: event.currentTarget.value })}
|
|
48
|
+
class="rounded border border-input bg-background px-1.5 py-0.5 text-xs"
|
|
49
|
+
>
|
|
50
|
+
{#each variants as value}
|
|
51
|
+
<option {value}>{value}</option>
|
|
52
|
+
{/each}
|
|
53
|
+
</select>
|
|
54
|
+
</div>
|
|
55
|
+
<NodeViewContent class="[&_p]:m-0" />
|
|
56
|
+
</Notice>
|
|
57
|
+
</NodeViewWrapper>
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { generateHTML } from '@tiptap/core';
|
|
3
|
+
import { buildExtensions, type EditorNodeViews } from '@cloudvoyant/helical-ui';
|
|
4
|
+
|
|
5
|
+
// The Reader renders static HTML via generateHTML, which only ever calls renderHTML — node
|
|
6
|
+
// views are never instantiated, so inert factories are correct here.
|
|
7
|
+
const noopNodeView = () => () => ({}) as never;
|
|
8
|
+
const inertNodeViews: EditorNodeViews = {
|
|
9
|
+
image: noopNodeView,
|
|
10
|
+
urlMention: noopNodeView,
|
|
11
|
+
linkPreview: noopNodeView,
|
|
12
|
+
codeBlock: noopNodeView,
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// Same extension set as the Editor, plus heading ids so headings are anchor-linkable.
|
|
16
|
+
const extensions = buildExtensions({ headingWithId: true, nodeViews: inertNodeViews });
|
|
17
|
+
|
|
18
|
+
let { content, style = '' }: { content: string; style?: string } = $props();
|
|
19
|
+
|
|
20
|
+
let html = $derived.by(() => {
|
|
21
|
+
if (!content) return '';
|
|
22
|
+
try {
|
|
23
|
+
const json = JSON.parse(content);
|
|
24
|
+
// Strip the title node (first H1) — the page renders it separately in the header
|
|
25
|
+
if (json.content?.[0]?.type === 'heading' && json.content[0].attrs?.level === 1) {
|
|
26
|
+
json.content = json.content.slice(1);
|
|
27
|
+
}
|
|
28
|
+
return generateHTML(json, extensions);
|
|
29
|
+
} catch {
|
|
30
|
+
return '';
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<div class="prose prose-lg dark:prose-invert max-w-none reader-content" {style}>
|
|
36
|
+
{@html html}
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<style>
|
|
40
|
+
/* Bookmark links */
|
|
41
|
+
:global(.reader-content .bookmark-link) {
|
|
42
|
+
text-decoration: none !important;
|
|
43
|
+
color: inherit !important;
|
|
44
|
+
transition: all 0.2s;
|
|
45
|
+
background-color: var(--bookmark-bg) !important;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
:global(.reader-content .bookmark-link:hover) {
|
|
49
|
+
background-color: var(--bookmark-bg-hover) !important;
|
|
50
|
+
border-color: oklch(var(--border));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
:global(.reader-content .bookmark-link h3),
|
|
54
|
+
:global(.reader-content .bookmark-link p),
|
|
55
|
+
:global(.reader-content .bookmark-link span) {
|
|
56
|
+
text-decoration: none !important;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:global(.reader-content .bookmark-link p) {
|
|
60
|
+
line-height: 1.375 !important;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* Link preview images */
|
|
64
|
+
:global(.reader-content .link-preview img) {
|
|
65
|
+
display: block;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
:global(.reader-content .link-preview img[src='']),
|
|
69
|
+
:global(.reader-content .link-preview img:not([src])) {
|
|
70
|
+
display: none;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* Text alignment */
|
|
74
|
+
:global(.reader-content [data-text-align='left']) {
|
|
75
|
+
text-align: left !important;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
:global(.reader-content [data-text-align='center']) {
|
|
79
|
+
text-align: center !important;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
:global(.reader-content [data-text-align='right']) {
|
|
83
|
+
text-align: right !important;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
:global(.reader-content [data-text-align='justify']) {
|
|
87
|
+
text-align: justify !important;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Code blocks */
|
|
91
|
+
:global(.reader-content .code-block-wrapper) {
|
|
92
|
+
position: relative;
|
|
93
|
+
background-color: var(--code-block-bg);
|
|
94
|
+
min-height: 80px;
|
|
95
|
+
margin: 1rem 0;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
:global(.reader-content .code-block-content) {
|
|
99
|
+
padding: 2.5rem 1rem 1rem 1rem;
|
|
100
|
+
overflow-x: auto;
|
|
101
|
+
font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;
|
|
102
|
+
font-size: calc(var(--base-font-size, 16px) * 0.875);
|
|
103
|
+
line-height: var(--line-height, 1.5);
|
|
104
|
+
margin: 0;
|
|
105
|
+
background: transparent;
|
|
106
|
+
color: #24292f;
|
|
107
|
+
border: none;
|
|
108
|
+
outline: none;
|
|
109
|
+
min-height: 60px;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
:global(.dark .reader-content .code-block-content) {
|
|
113
|
+
color: #c9d1d9;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
:global(.reader-content .code-block-content code) {
|
|
117
|
+
background: none !important;
|
|
118
|
+
color: inherit !important;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
:global(.reader-content .code-block-language-label) {
|
|
122
|
+
position: absolute;
|
|
123
|
+
top: 0.5rem;
|
|
124
|
+
right: 0.5rem;
|
|
125
|
+
font-size: 0.75rem;
|
|
126
|
+
font-weight: 500;
|
|
127
|
+
padding: 0.25rem 0.5rem;
|
|
128
|
+
background-color: var(--lang-label-bg);
|
|
129
|
+
color: var(--lang-label-text);
|
|
130
|
+
letter-spacing: 0.05em;
|
|
131
|
+
z-index: 10;
|
|
132
|
+
border: 1px solid var(--lang-label-border);
|
|
133
|
+
border-radius: 0.25rem;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* Lists */
|
|
137
|
+
:global(.reader-content ul),
|
|
138
|
+
:global(.reader-content ol) {
|
|
139
|
+
list-style-position: outside;
|
|
140
|
+
padding-left: 1.625rem;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
:global(.reader-content ul li),
|
|
144
|
+
:global(.reader-content ol li) {
|
|
145
|
+
display: list-item !important;
|
|
146
|
+
margin: 0;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
:global(.reader-content ul li > p),
|
|
150
|
+
:global(.reader-content ol li > p) {
|
|
151
|
+
display: inline;
|
|
152
|
+
margin: 0;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/* Task lists */
|
|
156
|
+
:global(.reader-content ul[data-type='taskList']) {
|
|
157
|
+
list-style: none;
|
|
158
|
+
padding-left: 0;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
:global(.reader-content ul[data-type='taskList'] li[data-type='taskItem']) {
|
|
162
|
+
display: flex;
|
|
163
|
+
align-items: flex-start;
|
|
164
|
+
gap: 0.5rem;
|
|
165
|
+
margin: 0.25rem 0;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
:global(.reader-content ul[data-type='taskList'] li[data-type='taskItem'] label) {
|
|
169
|
+
display: flex;
|
|
170
|
+
align-items: flex-start;
|
|
171
|
+
gap: 0.5rem;
|
|
172
|
+
cursor: default;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
:global(.reader-content ul[data-type='taskList'] li[data-type='taskItem'] input[type='checkbox']) {
|
|
176
|
+
margin-top: 0.25rem;
|
|
177
|
+
flex-shrink: 0;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/* Indentation */
|
|
181
|
+
:global(.reader-content .tt-indent-1) {
|
|
182
|
+
padding-left: 2rem;
|
|
183
|
+
}
|
|
184
|
+
:global(.reader-content .tt-indent-2) {
|
|
185
|
+
padding-left: 4rem;
|
|
186
|
+
}
|
|
187
|
+
:global(.reader-content .tt-indent-3) {
|
|
188
|
+
padding-left: 6rem;
|
|
189
|
+
}
|
|
190
|
+
:global(.reader-content .tt-indent-4) {
|
|
191
|
+
padding-left: 8rem;
|
|
192
|
+
}
|
|
193
|
+
:global(.reader-content .tt-indent-5) {
|
|
194
|
+
padding-left: 10rem;
|
|
195
|
+
}
|
|
196
|
+
:global(.reader-content .tt-indent-6) {
|
|
197
|
+
padding-left: 12rem;
|
|
198
|
+
}
|
|
199
|
+
:global(.reader-content .tt-indent-7) {
|
|
200
|
+
padding-left: 14rem;
|
|
201
|
+
}
|
|
202
|
+
:global(.reader-content .tt-indent-8) {
|
|
203
|
+
padding-left: 16rem;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* URL Mention Pills */
|
|
207
|
+
:global(.reader-content a.url-mention-pill) {
|
|
208
|
+
display: inline-flex;
|
|
209
|
+
align-items: center;
|
|
210
|
+
gap: 0.375rem;
|
|
211
|
+
padding: 0.125rem 0.375rem;
|
|
212
|
+
margin: 0 0.125rem -0.125rem 0.125rem;
|
|
213
|
+
border-radius: 0.375rem;
|
|
214
|
+
background-color: var(--url-pill-bg);
|
|
215
|
+
color: inherit;
|
|
216
|
+
text-decoration: none !important;
|
|
217
|
+
font-size: 0.875rem;
|
|
218
|
+
line-height: 1.25;
|
|
219
|
+
transition: background-color 0.15s;
|
|
220
|
+
vertical-align: text-bottom;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
:global(.reader-content a.url-mention-pill:hover) {
|
|
224
|
+
background-color: #e5e7eb;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
:global(.dark .reader-content a.url-mention-pill:hover) {
|
|
228
|
+
background-color: #6b7280;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
:global(.reader-content a.url-mention-pill svg),
|
|
232
|
+
:global(.reader-content a.url-mention-pill img) {
|
|
233
|
+
width: 0.875rem;
|
|
234
|
+
height: 0.875rem;
|
|
235
|
+
flex-shrink: 0;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/* Internal Mention */
|
|
239
|
+
:global(.reader-content a.internal-mention) {
|
|
240
|
+
color: inherit;
|
|
241
|
+
text-decoration: underline;
|
|
242
|
+
cursor: pointer;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
:global(.reader-content a.internal-mention:hover) {
|
|
246
|
+
opacity: 0.8;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/* Text colors - theme-aware */
|
|
250
|
+
:global(.reader-content span[data-color='red']) {
|
|
251
|
+
color: var(--text-red);
|
|
252
|
+
}
|
|
253
|
+
:global(.reader-content span[data-color='orange']) {
|
|
254
|
+
color: var(--text-orange);
|
|
255
|
+
}
|
|
256
|
+
:global(.reader-content span[data-color='yellow']) {
|
|
257
|
+
color: var(--text-yellow);
|
|
258
|
+
}
|
|
259
|
+
:global(.reader-content span[data-color='green']) {
|
|
260
|
+
color: var(--text-green);
|
|
261
|
+
}
|
|
262
|
+
:global(.reader-content span[data-color='cyan']) {
|
|
263
|
+
color: var(--text-cyan);
|
|
264
|
+
}
|
|
265
|
+
:global(.reader-content span[data-color='blue']) {
|
|
266
|
+
color: var(--text-blue);
|
|
267
|
+
}
|
|
268
|
+
:global(.reader-content span[data-color='violet']) {
|
|
269
|
+
color: var(--text-violet);
|
|
270
|
+
}
|
|
271
|
+
:global(.reader-content span[data-color='fuchsia']) {
|
|
272
|
+
color: var(--text-fuchsia);
|
|
273
|
+
}
|
|
274
|
+
:global(.reader-content span[data-color='slate']) {
|
|
275
|
+
color: var(--text-slate);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/* Tiptap writes selected highlight colors inline. This non-important default is only the
|
|
279
|
+
fallback for highlights without an explicit color. */
|
|
280
|
+
:global(.reader-content mark) {
|
|
281
|
+
background-color: var(--highlight-yellow);
|
|
282
|
+
color: inherit !important;
|
|
283
|
+
}
|
|
284
|
+
</style>
|