@scalar/components 0.21.1 → 0.21.3
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/components/ScalarButton/ScalarButton.vue.js.map +1 -1
- package/dist/components/ScalarButton/ScalarButton.vue.script.js +1 -1
- package/dist/components/ScalarButton/ScalarButton.vue.script.js.map +1 -1
- package/dist/components/ScalarButton/constants.d.ts +1 -1
- package/dist/components/ScalarButton/constants.js +1 -1
- package/dist/components/ScalarButton/constants.js.map +1 -1
- package/dist/components/ScalarCodeBlock/ScalarCodeBlock.vue.d.ts +38 -9
- package/dist/components/ScalarCodeBlock/ScalarCodeBlock.vue.d.ts.map +1 -1
- package/dist/components/ScalarCodeBlock/ScalarCodeBlock.vue.js.map +1 -1
- package/dist/components/ScalarCodeBlock/ScalarCodeBlock.vue.script.js +0 -5
- package/dist/components/ScalarCodeBlock/ScalarCodeBlock.vue.script.js.map +1 -1
- package/dist/components/ScalarCodeBlock/ScalarCodeBlockCopy.vue.d.ts +28 -16
- package/dist/components/ScalarCodeBlock/ScalarCodeBlockCopy.vue.d.ts.map +1 -1
- package/dist/components/ScalarCodeBlock/ScalarCodeBlockCopy.vue.js.map +1 -1
- package/dist/components/ScalarCodeBlock/ScalarCodeBlockCopy.vue.script.js.map +1 -1
- package/dist/components/ScalarCombobox/ScalarCombobox.vue.d.ts +13 -2
- package/dist/components/ScalarCombobox/ScalarCombobox.vue.d.ts.map +1 -1
- package/dist/components/ScalarCombobox/ScalarCombobox.vue.js.map +1 -1
- package/dist/components/ScalarCombobox/ScalarCombobox.vue.script.js +0 -1
- package/dist/components/ScalarCombobox/ScalarCombobox.vue.script.js.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxMultiselect.vue.d.ts +12 -2
- package/dist/components/ScalarCombobox/ScalarComboboxMultiselect.vue.d.ts.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxMultiselect.vue.js.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxMultiselect.vue.script.js +0 -1
- package/dist/components/ScalarCombobox/ScalarComboboxMultiselect.vue.script.js.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxOption.vue.d.ts +23 -13
- package/dist/components/ScalarCombobox/ScalarComboboxOption.vue.d.ts.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxOption.vue.js.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxOption.vue.script.js.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxOptionGroup.vue.d.ts +21 -11
- package/dist/components/ScalarCombobox/ScalarComboboxOptionGroup.vue.d.ts.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxOptionGroup.vue.js.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxOptionGroup.vue.script.js.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxOptions.vue.d.ts +11 -2
- package/dist/components/ScalarCombobox/ScalarComboboxOptions.vue.d.ts.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxOptions.vue.js.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxOptions.vue.script.js.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxPopover.vue.d.ts +16 -6
- package/dist/components/ScalarCombobox/ScalarComboboxPopover.vue.d.ts.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxPopover.vue.js.map +1 -1
- package/dist/components/ScalarCombobox/ScalarComboboxPopover.vue.script.js +0 -1
- package/dist/components/ScalarCombobox/ScalarComboboxPopover.vue.script.js.map +1 -1
- package/dist/components/ScalarErrorBoundary/ScalarErrorBoundary.vue.d.ts +14 -6
- package/dist/components/ScalarErrorBoundary/ScalarErrorBoundary.vue.d.ts.map +1 -1
- package/dist/components/ScalarErrorBoundary/ScalarErrorBoundary.vue.js.map +1 -1
- package/dist/components/ScalarErrorBoundary/ScalarErrorBoundary.vue.script.js.map +1 -1
- package/dist/components/ScalarFileUpload/ScalarFileUploadFileList.vue.js.map +1 -1
- package/dist/components/ScalarFileUpload/ScalarFileUploadFileList.vue.script.js +2 -2
- package/dist/components/ScalarFileUpload/ScalarFileUploadFileList.vue.script.js.map +1 -1
- package/dist/components/ScalarFloating/ScalarFloating.vue.d.ts +19 -9
- package/dist/components/ScalarFloating/ScalarFloating.vue.d.ts.map +1 -1
- package/dist/components/ScalarFloating/ScalarFloating.vue.js.map +1 -1
- package/dist/components/ScalarFloating/ScalarFloating.vue.script.js +0 -1
- package/dist/components/ScalarFloating/ScalarFloating.vue.script.js.map +1 -1
- package/dist/components/ScalarForm/ScalarFormError.vue.d.ts +20 -11
- package/dist/components/ScalarForm/ScalarFormError.vue.d.ts.map +1 -1
- package/dist/components/ScalarForm/ScalarFormError.vue.js.map +1 -1
- package/dist/components/ScalarForm/ScalarFormError.vue.script.js +0 -1
- package/dist/components/ScalarForm/ScalarFormError.vue.script.js.map +1 -1
- package/dist/components/ScalarHotkey/ScalarHotkey.vue.d.ts +15 -5
- package/dist/components/ScalarHotkey/ScalarHotkey.vue.d.ts.map +1 -1
- package/dist/components/ScalarHotkey/ScalarHotkey.vue.js.map +1 -1
- package/dist/components/ScalarHotkey/ScalarHotkey.vue.script.js.map +1 -1
- package/dist/components/ScalarIcon/IconList.vue.d.ts +15 -4
- package/dist/components/ScalarIcon/IconList.vue.d.ts.map +1 -1
- package/dist/components/ScalarListbox/ScalarListbox.vue.d.ts +37 -24
- package/dist/components/ScalarListbox/ScalarListbox.vue.d.ts.map +1 -1
- package/dist/components/ScalarListbox/ScalarListbox.vue.js.map +1 -1
- package/dist/components/ScalarListbox/ScalarListbox.vue.script.js.map +1 -1
- package/dist/components/ScalarListbox/ScalarListboxCheckbox.vue.d.ts +17 -5
- package/dist/components/ScalarListbox/ScalarListboxCheckbox.vue.d.ts.map +1 -1
- package/dist/components/ScalarListbox/ScalarListboxCheckbox.vue.js.map +1 -1
- package/dist/components/ScalarListbox/ScalarListboxCheckbox.vue.script.js +0 -1
- package/dist/components/ScalarListbox/ScalarListboxCheckbox.vue.script.js.map +1 -1
- package/dist/components/ScalarListbox/ScalarListboxItem.vue.d.ts +16 -5
- package/dist/components/ScalarListbox/ScalarListboxItem.vue.d.ts.map +1 -1
- package/dist/components/ScalarListbox/ScalarListboxItem.vue.js.map +1 -1
- package/dist/components/ScalarListbox/ScalarListboxItem.vue.script.js +0 -1
- package/dist/components/ScalarListbox/ScalarListboxItem.vue.script.js.map +1 -1
- package/dist/components/ScalarMarkdown/ScalarMarkdown.vue.d.ts +11 -2
- package/dist/components/ScalarMarkdown/ScalarMarkdown.vue.d.ts.map +1 -1
- package/dist/components/ScalarMarkdown/ScalarMarkdown.vue.js.map +1 -1
- package/dist/components/ScalarMarkdown/ScalarMarkdown.vue.script.js.map +1 -1
- package/dist/components/ScalarMarkdown/ScalarMarkdownSummary.vue.d.ts +26 -17
- package/dist/components/ScalarMarkdown/ScalarMarkdownSummary.vue.d.ts.map +1 -1
- package/dist/components/ScalarMarkdown/ScalarMarkdownSummary.vue.js.map +1 -1
- package/dist/components/ScalarMarkdown/ScalarMarkdownSummary.vue.script.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenu.vue.d.ts +15 -6
- package/dist/components/ScalarMenu/ScalarMenu.vue.d.ts.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenu.vue.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenu.vue.script.js +0 -1
- package/dist/components/ScalarMenu/ScalarMenu.vue.script.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuButton.vue.d.ts +10 -3
- package/dist/components/ScalarMenu/ScalarMenuButton.vue.d.ts.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuButton.vue.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuButton.vue.script.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuLink.vue.d.ts +21 -10
- package/dist/components/ScalarMenu/ScalarMenuLink.vue.d.ts.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuLink.vue.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuLink.vue.script.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuProduct.vue.d.ts +21 -10
- package/dist/components/ScalarMenu/ScalarMenuProduct.vue.d.ts.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuProduct.vue.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuProduct.vue.script.js +0 -1
- package/dist/components/ScalarMenu/ScalarMenuProduct.vue.script.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuProducts.vue.d.ts +22 -11
- package/dist/components/ScalarMenu/ScalarMenuProducts.vue.d.ts.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuProducts.vue.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuProducts.vue.script.js +0 -1
- package/dist/components/ScalarMenu/ScalarMenuProducts.vue.script.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuResources.vue.d.ts +9 -1
- package/dist/components/ScalarMenu/ScalarMenuResources.vue.d.ts.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuResources.vue.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuResources.vue.script.js +0 -1
- package/dist/components/ScalarMenu/ScalarMenuResources.vue.script.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuSection.vue.d.ts +14 -6
- package/dist/components/ScalarMenu/ScalarMenuSection.vue.d.ts.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuSection.vue.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuSection.vue.script.js +0 -1
- package/dist/components/ScalarMenu/ScalarMenuSection.vue.script.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuSupport.vue.d.ts +9 -1
- package/dist/components/ScalarMenu/ScalarMenuSupport.vue.d.ts.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuSupport.vue.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuSupport.vue.script.js +0 -1
- package/dist/components/ScalarMenu/ScalarMenuSupport.vue.script.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuTeamPicker.vue.d.ts +19 -6
- package/dist/components/ScalarMenu/ScalarMenuTeamPicker.vue.d.ts.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuTeamPicker.vue.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuTeamPicker.vue.script.js +0 -1
- package/dist/components/ScalarMenu/ScalarMenuTeamPicker.vue.script.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuTeamProfile.vue.d.ts +16 -5
- package/dist/components/ScalarMenu/ScalarMenuTeamProfile.vue.d.ts.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuTeamProfile.vue.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuTeamProfile.vue.script.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuWorkspacePicker.vue.d.ts +20 -9
- package/dist/components/ScalarMenu/ScalarMenuWorkspacePicker.vue.d.ts.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuWorkspacePicker.vue.js.map +1 -1
- package/dist/components/ScalarMenu/ScalarMenuWorkspacePicker.vue.script.js.map +1 -1
- package/dist/components/ScalarModal/ScalarModal.vue.d.ts +13 -2
- package/dist/components/ScalarModal/ScalarModal.vue.d.ts.map +1 -1
- package/dist/components/ScalarModal/ScalarModal.vue.js +1 -1
- package/dist/components/ScalarModal/ScalarModal.vue.js.map +1 -1
- package/dist/components/ScalarModal/ScalarModal.vue.script.js +13 -0
- package/dist/components/ScalarModal/ScalarModal.vue.script.js.map +1 -1
- package/dist/components/ScalarPopover/ScalarPopover.vue.d.ts +19 -7
- package/dist/components/ScalarPopover/ScalarPopover.vue.d.ts.map +1 -1
- package/dist/components/ScalarPopover/ScalarPopover.vue.js.map +1 -1
- package/dist/components/ScalarPopover/ScalarPopover.vue.script.js +0 -1
- package/dist/components/ScalarPopover/ScalarPopover.vue.script.js.map +1 -1
- package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.d.ts +38 -0
- package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.d.ts.map +1 -0
- package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.js +7 -0
- package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.js.map +1 -0
- package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.script.js +66 -0
- package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.script.js.map +1 -0
- package/dist/components/ScalarSavePrompt/index.d.ts +2 -0
- package/dist/components/ScalarSavePrompt/index.d.ts.map +1 -0
- package/dist/components/ScalarSearchResults/ScalarSearchResultItem.vue.d.ts +23 -13
- package/dist/components/ScalarSearchResults/ScalarSearchResultItem.vue.d.ts.map +1 -1
- package/dist/components/ScalarSearchResults/ScalarSearchResultItem.vue.js.map +1 -1
- package/dist/components/ScalarSearchResults/ScalarSearchResultItem.vue.script.js.map +1 -1
- package/dist/components/ScalarSearchResults/ScalarSearchResultList.vue.d.ts +21 -11
- package/dist/components/ScalarSearchResults/ScalarSearchResultList.vue.d.ts.map +1 -1
- package/dist/components/ScalarSearchResults/ScalarSearchResultList.vue.js.map +1 -1
- package/dist/components/ScalarSearchResults/ScalarSearchResultList.vue.script.js +0 -1
- package/dist/components/ScalarSearchResults/ScalarSearchResultList.vue.script.js.map +1 -1
- package/dist/components/ScalarSidebar/ScalarSidebarSearchButton.vue.d.ts +16 -8
- package/dist/components/ScalarSidebar/ScalarSidebarSearchButton.vue.d.ts.map +1 -1
- package/dist/components/ScalarSidebar/ScalarSidebarSearchButton.vue.js.map +1 -1
- package/dist/components/ScalarSidebar/ScalarSidebarSearchButton.vue.script.js.map +1 -1
- package/dist/components/ScalarSidebar/ScalarSidebarSearchInput.vue.d.ts +21 -9
- package/dist/components/ScalarSidebar/ScalarSidebarSearchInput.vue.d.ts.map +1 -1
- package/dist/components/ScalarSidebar/ScalarSidebarSearchInput.vue.js.map +1 -1
- package/dist/components/ScalarSidebar/ScalarSidebarSearchInput.vue.script.js.map +1 -1
- package/dist/components/ScalarToggle/ScalarToggle.vue.d.ts +20 -9
- package/dist/components/ScalarToggle/ScalarToggle.vue.d.ts.map +1 -1
- package/dist/components/ScalarToggle/ScalarToggle.vue.js.map +1 -1
- package/dist/components/ScalarToggle/ScalarToggle.vue.script.js.map +1 -1
- package/dist/components/ScalarVirtualText/ScalarVirtualText.vue.d.ts +24 -5
- package/dist/components/ScalarVirtualText/ScalarVirtualText.vue.d.ts.map +1 -1
- package/dist/components/ScalarVirtualText/ScalarVirtualText.vue.js.map +1 -1
- package/dist/components/ScalarVirtualText/ScalarVirtualText.vue.script.js +0 -1
- package/dist/components/ScalarVirtualText/ScalarVirtualText.vue.script.js.map +1 -1
- package/dist/index.d.ts +47 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -6
- package/dist/style.css +89 -18
- package/package.json +12 -10
- package/dist/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMarkdown.vue.script.js","names":[],"sources":["../../../src/components/ScalarMarkdown/ScalarMarkdown.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n type Node,\n htmlFromMarkdown,\n isHeading,\n textFromNode,\n} from '@scalar/code-highlight'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { computed, useTemplateRef } from 'vue'\n\nimport type { ScalarMarkdownProps } from './types'\n\nconst {\n value,\n transform,\n transformType,\n withImages = false,\n withAnchors = false,\n anchorPrefix,\n} = defineProps<ScalarMarkdownProps>()\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n\n// Expose the element ref to the parent component\nconst templateRef = useTemplateRef('div')\ndefineExpose({ el: templateRef })\n\nconst transformHeading = (node: Node) => {\n if (!withAnchors) {\n return transform?.(node) || node\n }\n\n if (!isHeading(node)) {\n return node\n }\n\n const headingText = textFromNode(node)\n\n /** Basic slugify for the heading text */\n const slug = headingText.toLowerCase().replace(/\\s+/g, '-')\n\n /** Return adding anchor prefix if present or just the slug */\n const id = anchorPrefix ? `${anchorPrefix}/description/${slug}` : slug\n\n // Add the id to the heading\n node.data = {\n hProperties: {\n id,\n },\n }\n\n if (transform) {\n return transform(node)\n }\n\n return node\n}\n\nconst html = computed(() => {\n return htmlFromMarkdown(value ?? '', {\n removeTags: withImages ? [] : ['img', 'picture'],\n transform:\n withAnchors && transformType === 'heading' ? transformHeading : transform,\n transformType,\n })\n})\n</script>\n<template>\n <div\n ref=\"div\"\n v-bind=\"cx('markdown', { 'line-clamp-(--markdown-clamp)': !!clamp })\"\n :style=\"{ '--markdown-clamp': clamp }\"\n v-html=\"html\" />\n</template>\n<style>\n@import '@scalar/code-highlight/css/code.css';\n\n.scalar-app {\n /* Base container and variables */\n .markdown {\n --scalar-refs-heading-spacing: 24px;\n --markdown-border: var(--scalar-border-width) solid\n var(--scalar-border-color);\n --markdown-spacing-sm: 12px;\n --markdown-spacing-md: 16px;\n --markdown-line-height: 1.625;\n --markdown-heading-line-height: 1.15;\n\n font-family: var(--scalar-font);\n word-break: break-word;\n line-height: var(--markdown-line-height);\n }\n\n .markdown > * {\n margin-bottom: var(--markdown-spacing-md);\n }\n\n /* margin gets doubled between heading + non heading elements if we don't do this*/\n .markdown > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):last-child {\n margin-bottom: 0;\n }\n /* Headings */\n .markdown h1,\n .markdown h2,\n .markdown h3,\n .markdown h4,\n .markdown h5,\n .markdown h6 {\n display: block;\n font-weight: var(--scalar-bold);\n margin-top: var(--scalar-refs-heading-spacing);\n margin-bottom: var(--markdown-spacing-sm);\n line-height: var(--markdown-heading-line-height, 1.15);\n scroll-margin-top: 1rem;\n }\n .markdown h1 {\n font-size: 1.5rem;\n }\n .markdown h2,\n .markdown h3 {\n font-size: 1.25rem;\n }\n .markdown h4,\n .markdown h5,\n .markdown h6 {\n font-size: 1rem;\n }\n\n /* Text formatting and paragraphs */\n .markdown b,\n .markdown strong {\n font-weight: var(--scalar-bold);\n }\n\n .markdown p {\n color: inherit;\n display: block;\n line-height: var(--markdown-line-height);\n }\n\n /* Images */\n .markdown img {\n /**\n * With `display: block` <a><img></a> will take the whole width.\n *\n * @see https://github.com/scalar/scalar/issues/3961\n */\n display: inline-block;\n overflow: hidden;\n border-radius: var(--scalar-radius);\n max-width: 100%;\n }\n\n /* Lists */\n .markdown ul,\n .markdown ol {\n display: flex;\n flex-direction: column;\n padding-left: 1.6em;\n gap: 2px;\n line-height: var(--markdown-line-height);\n }\n\n .markdown li {\n margin-top: 2px;\n padding-left: 7px;\n }\n\n ol > li::marker,\n ol > * > li::marker {\n font: var(--scalar-font);\n font-variant-numeric: tabular-nums;\n font-weight: var(--scalar-semibold);\n white-space: nowrap;\n }\n\n /* Level 1, 4, 7 → decimal */\n .markdown ol {\n list-style-type: decimal;\n }\n /* Level 2, 5, 8 → lower-alpha */\n .markdown ol ol {\n list-style-type: lower-alpha;\n }\n\n .markdown ol ol ol ol,\n .markdown ol ol ol ol ol ol ol {\n list-style-type: decimal;\n }\n\n .markdown ol ol ol ol ol,\n .markdown ol ol ol ol ol ol ol ol {\n list-style-type: lower-alpha;\n }\n\n /* Level 3, 6, 9 → lower-roman */\n .markdown ol ol ol {\n list-style-type: lower-roman;\n }\n\n .markdown ol ol ol ol ol ol,\n .markdown ol ol ol ol ol ol ol ol ol {\n list-style-type: lower-roman;\n }\n\n .markdown ul > li,\n .markdown ul > * > li {\n list-style-type: disc;\n }\n\n /* Tables */\n .markdown table {\n display: table;\n table-layout: fixed;\n overflow-x: auto;\n position: relative;\n width: max-content;\n max-width: 100%;\n margin: 1em 0;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius);\n border-spacing: 0;\n }\n\n .markdown tbody,\n .markdown thead {\n vertical-align: middle;\n }\n\n .markdown tbody {\n display: table-row-group;\n }\n\n .markdown thead {\n display: table-header-group;\n }\n\n .markdown tr {\n display: table-row;\n border-color: inherit;\n vertical-align: inherit;\n }\n\n .markdown td,\n .markdown th {\n display: table-cell;\n vertical-align: top;\n min-width: 1em;\n padding: 8.5px 16px;\n line-height: var(--markdown-line-height);\n position: relative;\n /** Break long words in tables */\n word-break: break-word;\n font-size: var(--scalar-small);\n color: var(--scalar-color-1);\n border-right: var(--markdown-border);\n border-bottom: var(--markdown-border);\n }\n\n .markdown td > *,\n .markdown th > * {\n margin-bottom: 0;\n }\n\n .markdown th:empty {\n display: none;\n }\n\n .markdown td:first-of-type,\n .markdown th:first-of-type {\n border-left: none;\n }\n\n .markdown td:last-of-type,\n .markdown th:last-of-type {\n border-right: none;\n }\n\n .markdown tr:last-of-type td {\n border-bottom: none;\n }\n\n .markdown th {\n font-weight: var(--scalar-bold);\n text-align: left;\n border-left-color: transparent;\n background: var(--scalar-background-2);\n }\n\n .markdown th:first-of-type {\n border-top-left-radius: var(--scalar-radius);\n }\n\n .markdown th:last-of-type {\n border-top-right-radius: var(--scalar-radius);\n }\n\n .markdown tr > [align='left'] {\n text-align: left;\n }\n\n .markdown tr > [align='right'] {\n text-align: right;\n }\n\n .markdown tr > [align='center'] {\n text-align: center;\n }\n\n /* Details */\n .markdown details {\n border: var(--markdown-border);\n border-radius: var(--scalar-radius-xl);\n color: var(--scalar-color-1);\n }\n\n .markdown details > :not(summary) {\n margin: var(--markdown-spacing-md);\n margin-bottom: 0;\n }\n\n .markdown details > p:has(> strong):not(:has(:not(strong))) {\n margin-bottom: 8px;\n }\n\n .markdown details > p:has(> strong):not(:has(:not(strong))) + * {\n margin-top: 0;\n }\n\n .markdown details > table {\n width: calc(100% - calc(var(--markdown-spacing-md) * 2));\n }\n\n .markdown summary {\n border-radius: 2.5px;\n display: flex;\n align-items: flex-start;\n gap: 8px;\n min-height: 40px;\n padding: 7px 14px;\n position: relative;\n font-weight: var(--scalar-semibold);\n line-height: var(--markdown-line-height);\n cursor: pointer;\n user-select: none;\n }\n\n .markdown summary:hover {\n background-color: var(--scalar-background-2);\n }\n\n .markdown details[open] {\n padding-bottom: var(--markdown-spacing-md);\n }\n\n .markdown details[open] > summary {\n border-bottom: var(--markdown-border);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .markdown summary::before {\n display: block;\n content: '';\n flex-shrink: 0;\n width: var(--markdown-spacing-md);\n height: var(--markdown-spacing-md);\n background-color: var(--scalar-color-3);\n mask-image: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" fill=\"currentColor\" width=\"1em\" height=\"1em\"><path d=\"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\"></path></svg>');\n margin-top: 5px;\n }\n\n .markdown summary:hover::before {\n background-color: var(--scalar-color-1);\n }\n\n .markdown details[open] > summary::before {\n transform: rotate(90deg);\n transition: transform 0.1s ease-in-out;\n }\n\n .markdown details:has(+ details) {\n border-bottom: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-bottom: 0;\n }\n\n .markdown details:has(+ details) + details,\n .markdown details:has(+ details) + details > summary {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n /* Links */\n .markdown a {\n --font-color: var(--scalar-link-color, var(--scalar-color-accent));\n --font-visited: var(--scalar-link-color-visited, var(--scalar-color-2));\n text-decoration: var(--scalar-text-decoration);\n\n color: var(--font-color);\n font-weight: var(--scalar-link-font-weight, var(--scalar-semibold));\n text-underline-offset: 0.25rem;\n text-decoration-thickness: 1px;\n text-decoration-color: color-mix(\n in srgb,\n var(--font-color) 30%,\n transparent\n );\n }\n\n .markdown a:hover {\n text-decoration-color: var(--scalar-color-1, currentColor);\n color: var(--scalar-link-color-hover, var(--scalar-color-accent));\n -webkit-text-decoration: var(--scalar-text-decoration-hover);\n text-decoration: var(--scalar-text-decoration-hover);\n }\n\n .markdown a:visited {\n color: var(--font-visited);\n }\n\n /* Text effects and formatting */\n .markdown em {\n font-style: italic;\n }\n\n .markdown sup,\n .markdown sub {\n font-size: var(--scalar-micro);\n font-weight: 450;\n }\n\n .markdown sup {\n vertical-align: super;\n }\n\n .markdown sub {\n vertical-align: sub;\n }\n\n .markdown del {\n text-decoration: line-through;\n }\n\n /* Code blocks and inline code */\n .markdown code {\n font-family: var(--scalar-font-code);\n background-color: var(--scalar-background-2);\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n font-size: var(--scalar-micro);\n border-radius: 2px;\n padding: 0 3px;\n }\n\n .markdown .hljs {\n font-size: var(--scalar-small);\n }\n\n .markdown pre code {\n display: block;\n white-space: pre;\n padding: var(--markdown-spacing-sm);\n line-height: 1.5;\n margin: var(--markdown-spacing-sm) 0;\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n max-width: 100%;\n min-width: 100px;\n }\n\n /* Horizontal rules */\n .markdown hr {\n border: none;\n border-bottom: var(--markdown-border);\n }\n\n /* Blockquotes */\n .markdown blockquote {\n border-left: 2px solid var(--scalar-border-color);\n padding-left: var(--markdown-spacing-sm);\n }\n\n .markdown blockquote > * {\n margin-bottom: var(--markdown-spacing-sm);\n }\n\n /* Markdown Checklist */\n .markdown li.task-list-item {\n position: relative;\n list-style: none;\n }\n\n .markdown li.task-list-item > input {\n display: inline;\n position: absolute;\n top: 0.225em;\n left: -1.4em;\n appearance: none;\n width: var(--markdown-spacing-md);\n height: var(--markdown-spacing-md);\n border: 1px solid var(--scalar-color-3);\n border-radius: var(--scalar-radius);\n }\n\n .markdown li.task-list-item > input[type='checkbox']:checked {\n background-color: var(--scalar-color-1);\n border-color: var(--scalar-color-1);\n }\n\n .markdown li.task-list-item > input[type='checkbox']::before {\n content: '';\n position: absolute;\n left: 5px;\n top: 1px;\n width: 5px;\n height: 10px;\n border: solid var(--scalar-background-1);\n border-width: 0 1.5px 1.5px 0;\n transform: rotate(45deg);\n opacity: 0;\n }\n\n .markdown li.task-list-item > input[type='checkbox']:checked::before {\n opacity: 1;\n }\n\n /* Markdown Alert */\n .markdown .markdown-alert {\n align-items: stretch;\n border-radius: var(--scalar-radius);\n background-color: color-mix(\n in srgb,\n var(--scalar-background-2),\n transparent\n );\n border: var(--markdown-border);\n display: flex;\n gap: var(--markdown-spacing-sm);\n padding: 10px 14px;\n position: relative;\n }\n\n .markdown .markdown-alert .markdown-alert-icon::before {\n content: '';\n display: block;\n width: 18px;\n height: 18px;\n background-color: currentColor;\n flex-shrink: 0;\n margin-top: 3px;\n mask-repeat: no-repeat;\n mask-size: contain;\n mask-position: center;\n }\n\n .markdown .markdown-alert.markdown-alert-note {\n background-color: color-mix(\n in srgb,\n var(--scalar-color-blue),\n transparent 97%\n );\n border: var(--scalar-border-width) solid\n color-mix(in srgb, var(--scalar-color-blue), transparent 50%);\n }\n\n .markdown .markdown-alert.markdown-alert-tip {\n background-color: color-mix(\n in srgb,\n var(--scalar-color-2),\n transparent 97%\n );\n border: var(--scalar-border-width) solid\n color-mix(in srgb, var(--scalar-color-2), transparent 50%);\n }\n\n .markdown .markdown-alert.markdown-alert-note .markdown-alert-icon::before,\n .markdown .markdown-alert.markdown-alert-tip .markdown-alert-icon::before {\n mask-image: url('data:image/svg+xml,<svg data-v-852d534d=\"\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" fill=\"currentColor\" class=\"icon-placeholder\"><path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z\"></path></svg>');\n color: var(--scalar-color-blue);\n }\n\n .markdown .markdown-alert.markdown-alert-important,\n .markdown .markdown-alert.markdown-alert-warning {\n background-color: color-mix(\n in srgb,\n var(--scalar-color-orange),\n transparent 97%\n );\n border: var(--scalar-border-width) solid\n color-mix(in srgb, var(--scalar-color-orange), transparent 50%);\n }\n\n .markdown\n .markdown-alert.markdown-alert-important\n .markdown-alert-icon::before,\n .markdown\n .markdown-alert.markdown-alert-warning\n .markdown-alert-icon::before {\n mask-image: url('data:image/svg+xml,<svg data-v-852d534d=\"\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" fill=\"currentColor\" class=\"icon-placeholder\"><path d=\"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z\"></path></svg>');\n }\n\n .markdown .markdown-alert.markdown-alert-caution {\n background-color: color-mix(\n in srgb,\n var(--scalar-color-red),\n transparent 97%\n );\n border: var(--scalar-border-width) solid\n color-mix(in srgb, var(--scalar-color-red), transparent 50%);\n }\n\n .markdown\n .markdown-alert.markdown-alert-caution\n .markdown-alert-icon::before {\n mask-image: url('data:image/svg+xml,<svg data-v-852d534d=\"\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" fill=\"currentColor\" class=\"icon-placeholder\"><path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z\"></path></svg>');\n color: var(--scalar-color-red);\n }\n\n .markdown .markdown-alert.markdown-alert-success {\n background-color: color-mix(\n in srgb,\n var(--scalar-color-green),\n transparent 97%\n );\n border: var(--scalar-border-width) solid\n color-mix(in srgb, var(--scalar-color-green), transparent 50%);\n }\n\n .markdown\n .markdown-alert.markdown-alert-success\n .markdown-alert-icon::before {\n mask-image: url('data:image/svg+xml,<svg data-v-852d534d=\"\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" fill=\"currentColor\" class=\"icon-placeholder\"><path d=\"M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z\"></path></svg>');\n color: var(--scalar-color-green);\n }\n\n .markdown .markdown-alert.markdown-alert-note .markdown-alert-icon::before {\n color: var(--scalar-color-blue);\n }\n\n .markdown .markdown-alert.markdown-alert-tip .markdown-alert-icon::before {\n color: var(--scalar-color-2);\n }\n\n .markdown\n .markdown-alert.markdown-alert-important\n .markdown-alert-icon::before {\n color: var(--scalar-color-purple);\n }\n\n .markdown\n .markdown-alert.markdown-alert-warning\n .markdown-alert-icon::before {\n color: var(--scalar-color-orange);\n }\n\n .markdown .markdown-alert .markdown-alert-content {\n margin: 0;\n line-height: var(--markdown-line-height);\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EAqBA,MAAM,EAAE,OAAO,WAAU;AAKzB,WAAa,EAAE,IADK,eAAe,MAAK,EACR,CAAA;EAEhC,MAAM,oBAAoB,SAAe;AACvC,OAAI,CAAC,QAAA,YACH,QAAO,QAAA,YAAY,KAAK,IAAI;AAG9B,OAAI,CAAC,UAAU,KAAK,CAClB,QAAO;;GAMT,MAAM,OAHc,aAAa,KAAI,CAGZ,aAAa,CAAC,QAAQ,QAAQ,IAAG;AAM1D,QAAK,OAAO,EACV,aAAa,EACX,IALO,QAAA,eAAe,GAAG,QAAA,aAAa,eAAe,SAAS,MAM/D,EACH;AAEA,OAAI,QAAA,UACF,QAAO,QAAA,UAAU,KAAI;AAGvB,UAAO;;EAGT,MAAM,OAAO,eAAe;AAC1B,UAAO,iBAAiB,QAAA,SAAS,IAAI;IACnC,YAAY,QAAA,aAAa,EAAE,GAAG,CAAC,OAAO,UAAU;IAChD,WACE,QAAA,eAAe,QAAA,kBAAkB,YAAY,mBAAmB,QAAA;IAClE,eAAY,QAAA;IACb,CAAA;IACF;;uBAGC,mBAIkB,OAJlB,WAIkB,EAHhB,KAAI,OAAK,EACD,MAAA,GAAE,CAAA,YAAA,EAAA,iCAAA,CAAA,CAAkD,QAAA,OAAK,CAAA,EAAA;IAChE,OAAK,EAAA,oBAAwB,QAAA,OAAK;IACnC,WAAQ,KAAA"}
|
|
1
|
+
{"version":3,"file":"ScalarMarkdown.vue.script.js","names":[],"sources":["../../../src/components/ScalarMarkdown/ScalarMarkdown.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Markdown component\n *\n * Renders a markdown string as styled HTML with support for\n * headings, links, code blocks, tables, alerts, and more.\n *\n * @example\n * <ScalarMarkdown value=\"# Hello World\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport {\n type Node,\n htmlFromMarkdown,\n isHeading,\n textFromNode,\n} from '@scalar/code-highlight'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { computed, useTemplateRef } from 'vue'\n\nimport type { ScalarMarkdownProps } from './types'\n\nconst {\n value,\n transform,\n transformType,\n withImages = false,\n withAnchors = false,\n anchorPrefix,\n} = defineProps<ScalarMarkdownProps>()\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n\n// Expose the element ref to the parent component\nconst templateRef = useTemplateRef('div')\ndefineExpose({ el: templateRef })\n\nconst transformHeading = (node: Node) => {\n if (!withAnchors) {\n return transform?.(node) || node\n }\n\n if (!isHeading(node)) {\n return node\n }\n\n const headingText = textFromNode(node)\n\n /** Basic slugify for the heading text */\n const slug = headingText.toLowerCase().replace(/\\s+/g, '-')\n\n /** Return adding anchor prefix if present or just the slug */\n const id = anchorPrefix ? `${anchorPrefix}/description/${slug}` : slug\n\n // Add the id to the heading\n node.data = {\n hProperties: {\n id,\n },\n }\n\n if (transform) {\n return transform(node)\n }\n\n return node\n}\n\nconst html = computed(() => {\n return htmlFromMarkdown(value ?? '', {\n removeTags: withImages ? [] : ['img', 'picture'],\n transform:\n withAnchors && transformType === 'heading' ? transformHeading : transform,\n transformType,\n })\n})\n</script>\n<template>\n <div\n ref=\"div\"\n v-bind=\"cx('markdown', { 'line-clamp-(--markdown-clamp)': !!clamp })\"\n :style=\"{ '--markdown-clamp': clamp }\"\n v-html=\"html\" />\n</template>\n<style>\n@import '@scalar/code-highlight/css/code.css';\n\n.scalar-app {\n /* Base container and variables */\n .markdown {\n --scalar-refs-heading-spacing: 24px;\n --markdown-border: var(--scalar-border-width) solid\n var(--scalar-border-color);\n --markdown-spacing-sm: 12px;\n --markdown-spacing-md: 16px;\n --markdown-line-height: 1.625;\n --markdown-heading-line-height: 1.15;\n\n font-family: var(--scalar-font);\n word-break: break-word;\n line-height: var(--markdown-line-height);\n }\n\n .markdown > * {\n margin-bottom: var(--markdown-spacing-md);\n }\n\n /* margin gets doubled between heading + non heading elements if we don't do this*/\n .markdown > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):last-child {\n margin-bottom: 0;\n }\n /* Headings */\n .markdown h1,\n .markdown h2,\n .markdown h3,\n .markdown h4,\n .markdown h5,\n .markdown h6 {\n display: block;\n font-weight: var(--scalar-bold);\n margin-top: var(--scalar-refs-heading-spacing);\n margin-bottom: var(--markdown-spacing-sm);\n line-height: var(--markdown-heading-line-height, 1.15);\n scroll-margin-top: 1rem;\n }\n .markdown h1 {\n font-size: 1.5rem;\n }\n .markdown h2,\n .markdown h3 {\n font-size: 1.25rem;\n }\n .markdown h4,\n .markdown h5,\n .markdown h6 {\n font-size: 1rem;\n }\n\n /* Text formatting and paragraphs */\n .markdown b,\n .markdown strong {\n font-weight: var(--scalar-bold);\n }\n\n .markdown p {\n color: inherit;\n display: block;\n line-height: var(--markdown-line-height);\n }\n\n /* Images */\n .markdown img {\n /**\n * With `display: block` <a><img></a> will take the whole width.\n *\n * @see https://github.com/scalar/scalar/issues/3961\n */\n display: inline-block;\n overflow: hidden;\n border-radius: var(--scalar-radius);\n max-width: 100%;\n }\n\n /* Lists */\n .markdown ul,\n .markdown ol {\n display: flex;\n flex-direction: column;\n padding-left: 1.6em;\n gap: 2px;\n line-height: var(--markdown-line-height);\n }\n\n .markdown li {\n margin-top: 2px;\n padding-left: 7px;\n }\n\n ol > li::marker,\n ol > * > li::marker {\n font: var(--scalar-font);\n font-variant-numeric: tabular-nums;\n font-weight: var(--scalar-semibold);\n white-space: nowrap;\n }\n\n /* Level 1, 4, 7 → decimal */\n .markdown ol {\n list-style-type: decimal;\n }\n /* Level 2, 5, 8 → lower-alpha */\n .markdown ol ol {\n list-style-type: lower-alpha;\n }\n\n .markdown ol ol ol ol,\n .markdown ol ol ol ol ol ol ol {\n list-style-type: decimal;\n }\n\n .markdown ol ol ol ol ol,\n .markdown ol ol ol ol ol ol ol ol {\n list-style-type: lower-alpha;\n }\n\n /* Level 3, 6, 9 → lower-roman */\n .markdown ol ol ol {\n list-style-type: lower-roman;\n }\n\n .markdown ol ol ol ol ol ol,\n .markdown ol ol ol ol ol ol ol ol ol {\n list-style-type: lower-roman;\n }\n\n .markdown ul > li,\n .markdown ul > * > li {\n list-style-type: disc;\n }\n\n /* Tables */\n .markdown table {\n display: table;\n table-layout: fixed;\n overflow-x: auto;\n position: relative;\n width: max-content;\n max-width: 100%;\n margin: 1em 0;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius);\n border-spacing: 0;\n }\n\n .markdown tbody,\n .markdown thead {\n vertical-align: middle;\n }\n\n .markdown tbody {\n display: table-row-group;\n }\n\n .markdown thead {\n display: table-header-group;\n }\n\n .markdown tr {\n display: table-row;\n border-color: inherit;\n vertical-align: inherit;\n }\n\n .markdown td,\n .markdown th {\n display: table-cell;\n vertical-align: top;\n min-width: 1em;\n padding: 8.5px 16px;\n line-height: var(--markdown-line-height);\n position: relative;\n /** Break long words in tables */\n word-break: break-word;\n font-size: var(--scalar-small);\n color: var(--scalar-color-1);\n border-right: var(--markdown-border);\n border-bottom: var(--markdown-border);\n }\n\n .markdown td > *,\n .markdown th > * {\n margin-bottom: 0;\n }\n\n .markdown th:empty {\n display: none;\n }\n\n .markdown td:first-of-type,\n .markdown th:first-of-type {\n border-left: none;\n }\n\n .markdown td:last-of-type,\n .markdown th:last-of-type {\n border-right: none;\n }\n\n .markdown tr:last-of-type td {\n border-bottom: none;\n }\n\n .markdown th {\n font-weight: var(--scalar-bold);\n text-align: left;\n border-left-color: transparent;\n background: var(--scalar-background-2);\n }\n\n .markdown th:first-of-type {\n border-top-left-radius: var(--scalar-radius);\n }\n\n .markdown th:last-of-type {\n border-top-right-radius: var(--scalar-radius);\n }\n\n .markdown tr > [align='left'] {\n text-align: left;\n }\n\n .markdown tr > [align='right'] {\n text-align: right;\n }\n\n .markdown tr > [align='center'] {\n text-align: center;\n }\n\n /* Details */\n .markdown details {\n border: var(--markdown-border);\n border-radius: var(--scalar-radius-xl);\n color: var(--scalar-color-1);\n }\n\n .markdown details > :not(summary) {\n margin: var(--markdown-spacing-md);\n margin-bottom: 0;\n }\n\n .markdown details > p:has(> strong):not(:has(:not(strong))) {\n margin-bottom: 8px;\n }\n\n .markdown details > p:has(> strong):not(:has(:not(strong))) + * {\n margin-top: 0;\n }\n\n .markdown details > table {\n width: calc(100% - calc(var(--markdown-spacing-md) * 2));\n }\n\n .markdown summary {\n border-radius: 2.5px;\n display: flex;\n align-items: flex-start;\n gap: 8px;\n min-height: 40px;\n padding: 7px 14px;\n position: relative;\n font-weight: var(--scalar-semibold);\n line-height: var(--markdown-line-height);\n cursor: pointer;\n user-select: none;\n }\n\n .markdown summary:hover {\n background-color: var(--scalar-background-2);\n }\n\n .markdown details[open] {\n padding-bottom: var(--markdown-spacing-md);\n }\n\n .markdown details[open] > summary {\n border-bottom: var(--markdown-border);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .markdown summary::before {\n display: block;\n content: '';\n flex-shrink: 0;\n width: var(--markdown-spacing-md);\n height: var(--markdown-spacing-md);\n background-color: var(--scalar-color-3);\n mask-image: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" fill=\"currentColor\" width=\"1em\" height=\"1em\"><path d=\"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\"></path></svg>');\n margin-top: 5px;\n }\n\n .markdown summary:hover::before {\n background-color: var(--scalar-color-1);\n }\n\n .markdown details[open] > summary::before {\n transform: rotate(90deg);\n transition: transform 0.1s ease-in-out;\n }\n\n .markdown details:has(+ details) {\n border-bottom: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-bottom: 0;\n }\n\n .markdown details:has(+ details) + details,\n .markdown details:has(+ details) + details > summary {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n /* Links */\n .markdown a {\n --font-color: var(--scalar-link-color, var(--scalar-color-accent));\n --font-visited: var(--scalar-link-color-visited, var(--scalar-color-2));\n text-decoration: var(--scalar-text-decoration);\n\n color: var(--font-color);\n font-weight: var(--scalar-link-font-weight, var(--scalar-semibold));\n text-underline-offset: 0.25rem;\n text-decoration-thickness: 1px;\n text-decoration-color: color-mix(\n in srgb,\n var(--font-color) 30%,\n transparent\n );\n }\n\n .markdown a:hover {\n text-decoration-color: var(--scalar-color-1, currentColor);\n color: var(--scalar-link-color-hover, var(--scalar-color-accent));\n -webkit-text-decoration: var(--scalar-text-decoration-hover);\n text-decoration: var(--scalar-text-decoration-hover);\n }\n\n .markdown a:visited {\n color: var(--font-visited);\n }\n\n /* Text effects and formatting */\n .markdown em {\n font-style: italic;\n }\n\n .markdown sup,\n .markdown sub {\n font-size: var(--scalar-micro);\n font-weight: 450;\n }\n\n .markdown sup {\n vertical-align: super;\n }\n\n .markdown sub {\n vertical-align: sub;\n }\n\n .markdown del {\n text-decoration: line-through;\n }\n\n /* Code blocks and inline code */\n .markdown code {\n font-family: var(--scalar-font-code);\n background-color: var(--scalar-background-2);\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n font-size: var(--scalar-micro);\n border-radius: 2px;\n padding: 0 3px;\n }\n\n .markdown .hljs {\n font-size: var(--scalar-small);\n }\n\n .markdown pre code {\n display: block;\n white-space: pre;\n padding: var(--markdown-spacing-sm);\n line-height: 1.5;\n margin: var(--markdown-spacing-sm) 0;\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n max-width: 100%;\n min-width: 100px;\n }\n\n /* Horizontal rules */\n .markdown hr {\n border: none;\n border-bottom: var(--markdown-border);\n }\n\n /* Blockquotes */\n .markdown blockquote {\n border-left: 2px solid var(--scalar-border-color);\n padding-left: var(--markdown-spacing-sm);\n }\n\n .markdown blockquote > * {\n margin-bottom: var(--markdown-spacing-sm);\n }\n\n /* Markdown Checklist */\n .markdown li.task-list-item {\n position: relative;\n list-style: none;\n }\n\n .markdown li.task-list-item > input {\n display: inline;\n position: absolute;\n top: 0.225em;\n left: -1.4em;\n appearance: none;\n width: var(--markdown-spacing-md);\n height: var(--markdown-spacing-md);\n border: 1px solid var(--scalar-color-3);\n border-radius: var(--scalar-radius);\n }\n\n .markdown li.task-list-item > input[type='checkbox']:checked {\n background-color: var(--scalar-color-1);\n border-color: var(--scalar-color-1);\n }\n\n .markdown li.task-list-item > input[type='checkbox']::before {\n content: '';\n position: absolute;\n left: 5px;\n top: 1px;\n width: 5px;\n height: 10px;\n border: solid var(--scalar-background-1);\n border-width: 0 1.5px 1.5px 0;\n transform: rotate(45deg);\n opacity: 0;\n }\n\n .markdown li.task-list-item > input[type='checkbox']:checked::before {\n opacity: 1;\n }\n\n /* Markdown Alert */\n .markdown .markdown-alert {\n align-items: stretch;\n border-radius: var(--scalar-radius);\n background-color: color-mix(\n in srgb,\n var(--scalar-background-2),\n transparent\n );\n border: var(--markdown-border);\n display: flex;\n gap: var(--markdown-spacing-sm);\n padding: 10px 14px;\n position: relative;\n }\n\n .markdown .markdown-alert .markdown-alert-icon::before {\n content: '';\n display: block;\n width: 18px;\n height: 18px;\n background-color: currentColor;\n flex-shrink: 0;\n margin-top: 3px;\n mask-repeat: no-repeat;\n mask-size: contain;\n mask-position: center;\n }\n\n .markdown .markdown-alert.markdown-alert-note {\n background-color: color-mix(\n in srgb,\n var(--scalar-color-blue),\n transparent 97%\n );\n border: var(--scalar-border-width) solid\n color-mix(in srgb, var(--scalar-color-blue), transparent 50%);\n }\n\n .markdown .markdown-alert.markdown-alert-tip {\n background-color: color-mix(\n in srgb,\n var(--scalar-color-2),\n transparent 97%\n );\n border: var(--scalar-border-width) solid\n color-mix(in srgb, var(--scalar-color-2), transparent 50%);\n }\n\n .markdown .markdown-alert.markdown-alert-note .markdown-alert-icon::before,\n .markdown .markdown-alert.markdown-alert-tip .markdown-alert-icon::before {\n mask-image: url('data:image/svg+xml,<svg data-v-852d534d=\"\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" fill=\"currentColor\" class=\"icon-placeholder\"><path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z\"></path></svg>');\n color: var(--scalar-color-blue);\n }\n\n .markdown .markdown-alert.markdown-alert-important,\n .markdown .markdown-alert.markdown-alert-warning {\n background-color: color-mix(\n in srgb,\n var(--scalar-color-orange),\n transparent 97%\n );\n border: var(--scalar-border-width) solid\n color-mix(in srgb, var(--scalar-color-orange), transparent 50%);\n }\n\n .markdown\n .markdown-alert.markdown-alert-important\n .markdown-alert-icon::before,\n .markdown\n .markdown-alert.markdown-alert-warning\n .markdown-alert-icon::before {\n mask-image: url('data:image/svg+xml,<svg data-v-852d534d=\"\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" fill=\"currentColor\" class=\"icon-placeholder\"><path d=\"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z\"></path></svg>');\n }\n\n .markdown .markdown-alert.markdown-alert-caution {\n background-color: color-mix(\n in srgb,\n var(--scalar-color-red),\n transparent 97%\n );\n border: var(--scalar-border-width) solid\n color-mix(in srgb, var(--scalar-color-red), transparent 50%);\n }\n\n .markdown\n .markdown-alert.markdown-alert-caution\n .markdown-alert-icon::before {\n mask-image: url('data:image/svg+xml,<svg data-v-852d534d=\"\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" fill=\"currentColor\" class=\"icon-placeholder\"><path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z\"></path></svg>');\n color: var(--scalar-color-red);\n }\n\n .markdown .markdown-alert.markdown-alert-success {\n background-color: color-mix(\n in srgb,\n var(--scalar-color-green),\n transparent 97%\n );\n border: var(--scalar-border-width) solid\n color-mix(in srgb, var(--scalar-color-green), transparent 50%);\n }\n\n .markdown\n .markdown-alert.markdown-alert-success\n .markdown-alert-icon::before {\n mask-image: url('data:image/svg+xml,<svg data-v-852d534d=\"\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" fill=\"currentColor\" class=\"icon-placeholder\"><path d=\"M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z\"></path></svg>');\n color: var(--scalar-color-green);\n }\n\n .markdown .markdown-alert.markdown-alert-note .markdown-alert-icon::before {\n color: var(--scalar-color-blue);\n }\n\n .markdown .markdown-alert.markdown-alert-tip .markdown-alert-icon::before {\n color: var(--scalar-color-2);\n }\n\n .markdown\n .markdown-alert.markdown-alert-important\n .markdown-alert-icon::before {\n color: var(--scalar-color-purple);\n }\n\n .markdown\n .markdown-alert.markdown-alert-warning\n .markdown-alert-icon::before {\n color: var(--scalar-color-orange);\n }\n\n .markdown .markdown-alert .markdown-alert-content {\n margin: 0;\n line-height: var(--markdown-line-height);\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EAkCA,MAAM,EAAE,OAAO,WAAU;AAKzB,WAAa,EAAE,IADK,eAAe,MAAK,EACR,CAAA;EAEhC,MAAM,oBAAoB,SAAe;AACvC,OAAI,CAAC,QAAA,YACH,QAAO,QAAA,YAAY,KAAK,IAAI;AAG9B,OAAI,CAAC,UAAU,KAAK,CAClB,QAAO;;GAMT,MAAM,OAHc,aAAa,KAAI,CAGZ,aAAa,CAAC,QAAQ,QAAQ,IAAG;AAM1D,QAAK,OAAO,EACV,aAAa,EACX,IALO,QAAA,eAAe,GAAG,QAAA,aAAa,eAAe,SAAS,MAM/D,EACH;AAEA,OAAI,QAAA,UACF,QAAO,QAAA,UAAU,KAAI;AAGvB,UAAO;;EAGT,MAAM,OAAO,eAAe;AAC1B,UAAO,iBAAiB,QAAA,SAAS,IAAI;IACnC,YAAY,QAAA,aAAa,EAAE,GAAG,CAAC,OAAO,UAAU;IAChD,WACE,QAAA,eAAe,QAAA,kBAAkB,YAAY,mBAAmB,QAAA;IAClE,eAAY,QAAA;IACb,CAAA;IACF;;uBAGC,mBAIkB,OAJlB,WAIkB,EAHhB,KAAI,OAAK,EACD,MAAA,GAAE,CAAA,YAAA,EAAA,iCAAA,CAAA,CAAkD,QAAA,OAAK,CAAA,EAAA;IAChE,OAAK,EAAA,oBAAwB,QAAA,OAAK;IACnC,WAAQ,KAAA"}
|
|
@@ -1,24 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Scalar Markdown Summary component
|
|
3
|
+
*
|
|
4
|
+
* Displays a truncated preview of markdown content with
|
|
5
|
+
* a "More" / "Show Less" toggle to expand and collapse.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* <ScalarMarkdownSummary value="Long markdown text..." :clamp="2" />
|
|
9
|
+
*/
|
|
10
|
+
declare const _default: typeof __VLS_export;
|
|
11
|
+
export default _default;
|
|
12
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<import("./types").ScalarMarkdownProps & {
|
|
13
|
+
controlled?: boolean;
|
|
14
|
+
} & {
|
|
4
15
|
/** * Whether the summary is open. */
|
|
5
16
|
modelValue?: boolean;
|
|
6
|
-
}
|
|
7
|
-
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
8
|
-
declare var __VLS_8: {
|
|
9
|
-
open: boolean;
|
|
10
|
-
};
|
|
11
|
-
type __VLS_Slots = {} & {
|
|
12
|
-
button?: (props: typeof __VLS_8) => any;
|
|
13
|
-
};
|
|
14
|
-
declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
17
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
15
18
|
"update:modelValue": (value: boolean) => any;
|
|
16
|
-
}, string, import("vue").PublicProps, Readonly<
|
|
19
|
+
}, string, import("vue").PublicProps, Readonly<import("./types").ScalarMarkdownProps & {
|
|
20
|
+
controlled?: boolean;
|
|
21
|
+
} & {
|
|
22
|
+
/** * Whether the summary is open. */
|
|
23
|
+
modelValue?: boolean;
|
|
24
|
+
}> & Readonly<{
|
|
17
25
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
|
18
|
-
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
26
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
27
|
+
button?: (props: {
|
|
28
|
+
open: boolean;
|
|
29
|
+
}) => any;
|
|
30
|
+
}>;
|
|
22
31
|
type __VLS_WithSlots<T, S> = T & {
|
|
23
32
|
new (): {
|
|
24
33
|
$slots: S;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMarkdownSummary.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMarkdown/ScalarMarkdownSummary.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMarkdownSummary.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMarkdown/ScalarMarkdownSummary.vue"],"names":[],"mappings":"AA0HA;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;;;IAqClB,qCAAqC;iBACxB,OAAO;;;;;;IADpB,qCAAqC;iBACxB,OAAO;;;;aAiFP,CAAC,KAAK;;KAAgB,KAAK,GAAG;EAYvC,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMarkdownSummary.vue.js","names":[],"sources":["../../../src/components/ScalarMarkdown/ScalarMarkdownSummary.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { useResizeObserver } from '@vueuse/core'\nimport { onMounted, ref, useId, useTemplateRef } from 'vue'\n\nimport ScalarMarkdown from './ScalarMarkdown.vue'\nimport type { ScalarMarkdownSummaryProps } from './types'\n\nconst { clamp = 1, ...props } = defineProps<ScalarMarkdownSummaryProps>()\n\nconst id = useId()\n\n/** * Whether the summary is open. */\nconst open = defineModel<boolean>({ default: false })\n\nconst markdown = useTemplateRef('scalar-markdown')\n\n/** Whether the markdown is being truncated */\nconst isTruncated = ref(false)\n\nuseResizeObserver(() => markdown.value?.el, checkTruncation)\n\n/** Check if the markdown is being truncated */\nfunction checkTruncation() {\n const el = markdown.value?.el\n if (!el) {\n return\n }\n isTruncated.value =\n el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth\n}\n\nonMounted(checkTruncation)\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <div\n v-bind=\"\n cx(\n 'group/summary flex gap-0.5',\n open ? 'flex-col' : 'flex-row items-baseline',\n )\n \">\n <ScalarMarkdown\n v-bind=\"props\"\n :id=\"id\"\n ref=\"scalar-markdown\"\n :clamp=\"open ? undefined : clamp\"\n :class=\"{ 'markdown-summary truncate': !open }\" />\n <button\n v-if=\"!controlled && (isTruncated || open)\"\n :aria-controls=\"id\"\n :aria-expanded=\"open\"\n class=\"whitespace-nowrap font-medium hover:underline\"\n :class=\"{ 'self-end': open }\"\n type=\"button\"\n @click=\"open = !open\">\n <slot\n name=\"button\"\n :open=\"open\">\n {{ open ? ' Show Less' : 'More' }}\n </slot>\n </button>\n </div>\n</template>\n<style>\n.scalar-app {\n /*\n Summarized markdown styles\n Doubled up to bump specificity\n */\n .markdown.markdown-summary.markdown-summary {\n /* Hide the before and after pseudo-elements for all elements */\n *:before,\n *:after {\n content: none;\n }\n\n *:not(strong, em, a) {\n /* Disable formatting for non-inline elements */\n display: contents;\n font-size: inherit;\n font-weight: inherit;\n line-height: var(--markdown-line-height);\n }\n\n /* Hide elements that don't make sense in the summary */\n img,\n svg,\n hr,\n pre {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScalarMarkdownSummary.vue.js","names":[],"sources":["../../../src/components/ScalarMarkdown/ScalarMarkdownSummary.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Markdown Summary component\n *\n * Displays a truncated preview of markdown content with\n * a \"More\" / \"Show Less\" toggle to expand and collapse.\n *\n * @example\n * <ScalarMarkdownSummary value=\"Long markdown text...\" :clamp=\"2\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { useResizeObserver } from '@vueuse/core'\nimport { onMounted, ref, useId, useTemplateRef } from 'vue'\n\nimport ScalarMarkdown from './ScalarMarkdown.vue'\nimport type { ScalarMarkdownSummaryProps } from './types'\n\nconst { clamp = 1, ...props } = defineProps<ScalarMarkdownSummaryProps>()\n\nconst id = useId()\n\n/** * Whether the summary is open. */\nconst open = defineModel<boolean>({ default: false })\n\nconst markdown = useTemplateRef('scalar-markdown')\n\n/** Whether the markdown is being truncated */\nconst isTruncated = ref(false)\n\nuseResizeObserver(() => markdown.value?.el, checkTruncation)\n\n/** Check if the markdown is being truncated */\nfunction checkTruncation() {\n const el = markdown.value?.el\n if (!el) {\n return\n }\n isTruncated.value =\n el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth\n}\n\nonMounted(checkTruncation)\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <div\n v-bind=\"\n cx(\n 'group/summary flex gap-0.5',\n open ? 'flex-col' : 'flex-row items-baseline',\n )\n \">\n <ScalarMarkdown\n v-bind=\"props\"\n :id=\"id\"\n ref=\"scalar-markdown\"\n :clamp=\"open ? undefined : clamp\"\n :class=\"{ 'markdown-summary truncate': !open }\" />\n <button\n v-if=\"!controlled && (isTruncated || open)\"\n :aria-controls=\"id\"\n :aria-expanded=\"open\"\n class=\"whitespace-nowrap font-medium hover:underline\"\n :class=\"{ 'self-end': open }\"\n type=\"button\"\n @click=\"open = !open\">\n <slot\n name=\"button\"\n :open=\"open\">\n {{ open ? ' Show Less' : 'More' }}\n </slot>\n </button>\n </div>\n</template>\n<style>\n.scalar-app {\n /*\n Summarized markdown styles\n Doubled up to bump specificity\n */\n .markdown.markdown-summary.markdown-summary {\n /* Hide the before and after pseudo-elements for all elements */\n *:before,\n *:after {\n content: none;\n }\n\n *:not(strong, em, a) {\n /* Disable formatting for non-inline elements */\n display: contents;\n font-size: inherit;\n font-weight: inherit;\n line-height: var(--markdown-line-height);\n }\n\n /* Hide elements that don't make sense in the summary */\n img,\n svg,\n hr,\n pre {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMarkdownSummary.vue.script.js","names":[],"sources":["../../../src/components/ScalarMarkdown/ScalarMarkdownSummary.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { useResizeObserver } from '@vueuse/core'\nimport { onMounted, ref, useId, useTemplateRef } from 'vue'\n\nimport ScalarMarkdown from './ScalarMarkdown.vue'\nimport type { ScalarMarkdownSummaryProps } from './types'\n\nconst { clamp = 1, ...props } = defineProps<ScalarMarkdownSummaryProps>()\n\nconst id = useId()\n\n/** * Whether the summary is open. */\nconst open = defineModel<boolean>({ default: false })\n\nconst markdown = useTemplateRef('scalar-markdown')\n\n/** Whether the markdown is being truncated */\nconst isTruncated = ref(false)\n\nuseResizeObserver(() => markdown.value?.el, checkTruncation)\n\n/** Check if the markdown is being truncated */\nfunction checkTruncation() {\n const el = markdown.value?.el\n if (!el) {\n return\n }\n isTruncated.value =\n el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth\n}\n\nonMounted(checkTruncation)\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <div\n v-bind=\"\n cx(\n 'group/summary flex gap-0.5',\n open ? 'flex-col' : 'flex-row items-baseline',\n )\n \">\n <ScalarMarkdown\n v-bind=\"props\"\n :id=\"id\"\n ref=\"scalar-markdown\"\n :clamp=\"open ? undefined : clamp\"\n :class=\"{ 'markdown-summary truncate': !open }\" />\n <button\n v-if=\"!controlled && (isTruncated || open)\"\n :aria-controls=\"id\"\n :aria-expanded=\"open\"\n class=\"whitespace-nowrap font-medium hover:underline\"\n :class=\"{ 'self-end': open }\"\n type=\"button\"\n @click=\"open = !open\">\n <slot\n name=\"button\"\n :open=\"open\">\n {{ open ? ' Show Less' : 'More' }}\n </slot>\n </button>\n </div>\n</template>\n<style>\n.scalar-app {\n /*\n Summarized markdown styles\n Doubled up to bump specificity\n */\n .markdown.markdown-summary.markdown-summary {\n /* Hide the before and after pseudo-elements for all elements */\n *:before,\n *:after {\n content: none;\n }\n\n *:not(strong, em, a) {\n /* Disable formatting for non-inline elements */\n display: contents;\n font-size: inherit;\n font-weight: inherit;\n line-height: var(--markdown-line-height);\n }\n\n /* Hide elements that don't make sense in the summary */\n img,\n svg,\n hr,\n pre {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ScalarMarkdownSummary.vue.script.js","names":[],"sources":["../../../src/components/ScalarMarkdown/ScalarMarkdownSummary.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Markdown Summary component\n *\n * Displays a truncated preview of markdown content with\n * a \"More\" / \"Show Less\" toggle to expand and collapse.\n *\n * @example\n * <ScalarMarkdownSummary value=\"Long markdown text...\" :clamp=\"2\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { useResizeObserver } from '@vueuse/core'\nimport { onMounted, ref, useId, useTemplateRef } from 'vue'\n\nimport ScalarMarkdown from './ScalarMarkdown.vue'\nimport type { ScalarMarkdownSummaryProps } from './types'\n\nconst { clamp = 1, ...props } = defineProps<ScalarMarkdownSummaryProps>()\n\nconst id = useId()\n\n/** * Whether the summary is open. */\nconst open = defineModel<boolean>({ default: false })\n\nconst markdown = useTemplateRef('scalar-markdown')\n\n/** Whether the markdown is being truncated */\nconst isTruncated = ref(false)\n\nuseResizeObserver(() => markdown.value?.el, checkTruncation)\n\n/** Check if the markdown is being truncated */\nfunction checkTruncation() {\n const el = markdown.value?.el\n if (!el) {\n return\n }\n isTruncated.value =\n el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth\n}\n\nonMounted(checkTruncation)\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <div\n v-bind=\"\n cx(\n 'group/summary flex gap-0.5',\n open ? 'flex-col' : 'flex-row items-baseline',\n )\n \">\n <ScalarMarkdown\n v-bind=\"props\"\n :id=\"id\"\n ref=\"scalar-markdown\"\n :clamp=\"open ? undefined : clamp\"\n :class=\"{ 'markdown-summary truncate': !open }\" />\n <button\n v-if=\"!controlled && (isTruncated || open)\"\n :aria-controls=\"id\"\n :aria-expanded=\"open\"\n class=\"whitespace-nowrap font-medium hover:underline\"\n :class=\"{ 'self-end': open }\"\n type=\"button\"\n @click=\"open = !open\">\n <slot\n name=\"button\"\n :open=\"open\">\n {{ open ? ' Show Less' : 'More' }}\n </slot>\n </button>\n </div>\n</template>\n<style>\n.scalar-app {\n /*\n Summarized markdown styles\n Doubled up to bump specificity\n */\n .markdown.markdown-summary.markdown-summary {\n /* Hide the before and after pseudo-elements for all elements */\n *:before,\n *:after {\n content: none;\n }\n\n *:not(strong, em, a) {\n /* Disable formatting for non-inline elements */\n display: contents;\n font-size: inherit;\n font-weight: inherit;\n line-height: var(--markdown-line-height);\n }\n\n /* Hide elements that don't make sense in the summary */\n img,\n svg,\n hr,\n pre {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBA,MAAM,QAA0B,qBAAA,SAAA,CAAA,QAAA,CAAA;EAEhC,MAAM,KAAK,OAAM;;EAGjB,MAAM,OAAO,SAAoB,SAAA,aAAmB;EAEpD,MAAM,WAAW,eAAe,kBAAiB;;EAGjD,MAAM,cAAc,IAAI,MAAK;AAE7B,0BAAwB,SAAS,OAAO,IAAI,gBAAe;;EAG3D,SAAS,kBAAkB;GACzB,MAAM,KAAK,SAAS,OAAO;AAC3B,OAAI,CAAC,GACH;AAEF,eAAY,QACV,GAAG,eAAe,GAAG,gBAAgB,GAAG,cAAc,GAAG;;AAG7D,YAAU,gBAAe;EAEzB,MAAM,EAAE,OAAO,WAAU;;uBAIvB,mBA2BM,OAAA,eAAA,mBA1BW,MAAA,GAAE,CAAA,8BAAgD,KAAA,QAAI,aAAA,0BAAA,CAAA,CAAA,EAAA,CAMrE,YAKoD,wBALpD,WACU,OAAK;IACZ,IAAI,MAAA,GAAE;IACP,KAAI;IACH,OAAO,KAAA,QAAO,KAAA,IAAY,QAAA;IAC1B,OAAK,EAAA,6BAAA,CAAkC,KAAA,OAAI;;;;;QAErC,QAAA,eAAe,YAAA,SAAe,KAAA,UAAA,WAAA,EADvC,mBAaS,UAAA;;IAXN,iBAAe,MAAA,GAAE;IACjB,iBAAe,KAAA;IAChB,OAAK,eAAA,CAAC,iDAA+C,EAAA,YAC/B,KAAA,OAAI,CAAA,CAAA;IAC1B,MAAK;IACJ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAA,QAAI,CAAI,KAAA;OAChB,WAIO,KAAA,QAAA,UAAA,EAFJ,MAAM,KAAA,OAAI,QAEN,CAAA,gBAAA,gBADF,KAAA,QAAI,eAAA,OAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,IAAA,WAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,GAAA"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import type { ScalarMenuButtonProps, ScalarMenuButtonSlots, ScalarMenuSlotProps } from './types';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Scalar Menu component
|
|
4
|
+
*
|
|
5
|
+
* A dropdown menu triggered by a logo button, containing product links,
|
|
6
|
+
* team/workspace pickers, and resource sections.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* <ScalarMenu>
|
|
10
|
+
* <template #products="{ close }">Custom products</template>
|
|
11
|
+
* </ScalarMenu>
|
|
12
|
+
*/
|
|
13
|
+
declare const _default: typeof __VLS_export;
|
|
14
|
+
export default _default;
|
|
15
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
|
|
3
16
|
/** Overrides the entire menu button */
|
|
4
17
|
button?(p: ScalarMenuButtonProps): unknown;
|
|
5
18
|
/** Overrides the products list */
|
|
@@ -8,11 +21,7 @@ type __VLS_Slots = {
|
|
|
8
21
|
profile?(p: ScalarMenuSlotProps): unknown;
|
|
9
22
|
/** Overrides the resources section */
|
|
10
23
|
sections?(p: ScalarMenuSlotProps): unknown;
|
|
11
|
-
} & ScalarMenuButtonSlots
|
|
12
|
-
declare const __VLS_base: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
13
|
-
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
14
|
-
declare const _default: typeof __VLS_export;
|
|
15
|
-
export default _default;
|
|
24
|
+
} & ScalarMenuButtonSlots>;
|
|
16
25
|
type __VLS_WithSlots<T, S> = T & {
|
|
17
26
|
new (): {
|
|
18
27
|
$slots: S;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenu.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenu.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenu.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenu.vue"],"names":[],"mappings":"AA6GA,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,SAAS,CAAA;AAGhB;;;;;;;;;;GAUG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;IAEd,uCAAuC;eAC5B,qBAAqB,GAAG,OAAO;IAC1C,kCAAkC;iBACrB,mBAAmB,GAAG,OAAO;IAC1C,0DAA0D;gBAC9C,mBAAmB,GAAG,OAAO;IACzC,sCAAsC;iBACzB,mBAAmB,GAAG,OAAO;0BA+I1C,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenu.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { DropdownMenu } from 'radix-vue/namespaced'\nimport { ref } from 'vue'\n\nimport { ScalarDropdownMenu } from '../ScalarDropdown'\nimport ScalarMenuButton from './ScalarMenuButton.vue'\nimport ScalarMenuProducts from './ScalarMenuProducts.vue'\nimport ScalarMenuResources from './ScalarMenuResources.vue'\nimport type {\n ScalarMenuButtonProps,\n ScalarMenuButtonSlots,\n ScalarMenuSlotProps,\n} from './types'\n\ndefineSlots<\n {\n /** Overrides the entire menu button */\n button?(p: ScalarMenuButtonProps): unknown\n /** Overrides the products list */\n products?(p: ScalarMenuSlotProps): unknown\n /** Adds items the profile section (e.g. a team picker) */\n profile?(p: ScalarMenuSlotProps): unknown\n /** Overrides the resources section */\n sections?(p: ScalarMenuSlotProps): unknown\n } & ScalarMenuButtonSlots\n>()\n\ndefineOptions({ inheritAttrs: false })\n\n/** Whether the menu is open */\nconst open = ref(false)\n\n/** Close the menu */\nfunction close() {\n open.value = false\n}\n</script>\n<template>\n <DropdownMenu.Root v-model:open=\"open\">\n <DropdownMenu.Trigger asChild>\n <!-- Logo Button to open the popover -->\n <slot\n name=\"button\"\n :open=\"open\">\n <ScalarMenuButton\n class=\"min-w-0\"\n :open=\"open\">\n <template\n v-if=\"$slots.logo\"\n #logo>\n <slot name=\"logo\" />\n </template>\n <template\n v-if=\"$slots.label\"\n #label>\n <slot name=\"label\" />\n </template>\n </ScalarMenuButton>\n </slot>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content\n align=\"start\"\n :as=\"ScalarDropdownMenu\"\n class=\"max-h-radix-popper z-context\"\n :sideOffset=\"5\"\n v-bind=\"$attrs\">\n <!-- Menu content -->\n <!-- Base Product List (can be overridden by slot) -->\n <slot\n :close=\"close\"\n name=\"products\">\n <ScalarMenuProducts />\n </slot>\n <slot\n :close=\"close\"\n name=\"profile\" />\n <slot\n :close=\"close\"\n name=\"sections\">\n <ScalarMenuResources />\n </slot>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScalarMenu.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenu.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu component\n *\n * A dropdown menu triggered by a logo button, containing product links,\n * team/workspace pickers, and resource sections.\n *\n * @example\n * <ScalarMenu>\n * <template #products=\"{ close }\">Custom products</template>\n * </ScalarMenu>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { DropdownMenu } from 'radix-vue/namespaced'\nimport { ref } from 'vue'\n\nimport { ScalarDropdownMenu } from '../ScalarDropdown'\nimport ScalarMenuButton from './ScalarMenuButton.vue'\nimport ScalarMenuProducts from './ScalarMenuProducts.vue'\nimport ScalarMenuResources from './ScalarMenuResources.vue'\nimport type {\n ScalarMenuButtonProps,\n ScalarMenuButtonSlots,\n ScalarMenuSlotProps,\n} from './types'\n\ndefineSlots<\n {\n /** Overrides the entire menu button */\n button?(p: ScalarMenuButtonProps): unknown\n /** Overrides the products list */\n products?(p: ScalarMenuSlotProps): unknown\n /** Adds items the profile section (e.g. a team picker) */\n profile?(p: ScalarMenuSlotProps): unknown\n /** Overrides the resources section */\n sections?(p: ScalarMenuSlotProps): unknown\n } & ScalarMenuButtonSlots\n>()\n\ndefineOptions({ inheritAttrs: false })\n\n/** Whether the menu is open */\nconst open = ref(false)\n\n/** Close the menu */\nfunction close() {\n open.value = false\n}\n</script>\n<template>\n <DropdownMenu.Root v-model:open=\"open\">\n <DropdownMenu.Trigger asChild>\n <!-- Logo Button to open the popover -->\n <slot\n name=\"button\"\n :open=\"open\">\n <ScalarMenuButton\n class=\"min-w-0\"\n :open=\"open\">\n <template\n v-if=\"$slots.logo\"\n #logo>\n <slot name=\"logo\" />\n </template>\n <template\n v-if=\"$slots.label\"\n #label>\n <slot name=\"label\" />\n </template>\n </ScalarMenuButton>\n </slot>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content\n align=\"start\"\n :as=\"ScalarDropdownMenu\"\n class=\"max-h-radix-popper z-context\"\n :sideOffset=\"5\"\n v-bind=\"$attrs\">\n <!-- Menu content -->\n <!-- Base Product List (can be overridden by slot) -->\n <slot\n :close=\"close\"\n name=\"products\">\n <ScalarMenuProducts />\n </slot>\n <slot\n :close=\"close\"\n name=\"profile\" />\n <slot\n :close=\"close\"\n name=\"sections\">\n <ScalarMenuResources />\n </slot>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n</template>\n"],"mappings":""}
|
|
@@ -4,7 +4,6 @@ import ScalarMenuProducts_default from "./ScalarMenuProducts.vue.js";
|
|
|
4
4
|
import ScalarMenuResources_default from "./ScalarMenuResources.vue.js";
|
|
5
5
|
import { createBlock, createSlots, createVNode, defineComponent, mergeProps, openBlock, ref, renderSlot, unref, withCtx } from "vue";
|
|
6
6
|
import { DropdownMenu } from "radix-vue/namespaced";
|
|
7
|
-
//#region src/components/ScalarMenu/ScalarMenu.vue?vue&type=script&setup=true&lang.ts
|
|
8
7
|
var ScalarMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
9
8
|
inheritAttrs: false,
|
|
10
9
|
__name: "ScalarMenu",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenu.vue.script.js","names":["$slots","$attrs"],"sources":["../../../src/components/ScalarMenu/ScalarMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { DropdownMenu } from 'radix-vue/namespaced'\nimport { ref } from 'vue'\n\nimport { ScalarDropdownMenu } from '../ScalarDropdown'\nimport ScalarMenuButton from './ScalarMenuButton.vue'\nimport ScalarMenuProducts from './ScalarMenuProducts.vue'\nimport ScalarMenuResources from './ScalarMenuResources.vue'\nimport type {\n ScalarMenuButtonProps,\n ScalarMenuButtonSlots,\n ScalarMenuSlotProps,\n} from './types'\n\ndefineSlots<\n {\n /** Overrides the entire menu button */\n button?(p: ScalarMenuButtonProps): unknown\n /** Overrides the products list */\n products?(p: ScalarMenuSlotProps): unknown\n /** Adds items the profile section (e.g. a team picker) */\n profile?(p: ScalarMenuSlotProps): unknown\n /** Overrides the resources section */\n sections?(p: ScalarMenuSlotProps): unknown\n } & ScalarMenuButtonSlots\n>()\n\ndefineOptions({ inheritAttrs: false })\n\n/** Whether the menu is open */\nconst open = ref(false)\n\n/** Close the menu */\nfunction close() {\n open.value = false\n}\n</script>\n<template>\n <DropdownMenu.Root v-model:open=\"open\">\n <DropdownMenu.Trigger asChild>\n <!-- Logo Button to open the popover -->\n <slot\n name=\"button\"\n :open=\"open\">\n <ScalarMenuButton\n class=\"min-w-0\"\n :open=\"open\">\n <template\n v-if=\"$slots.logo\"\n #logo>\n <slot name=\"logo\" />\n </template>\n <template\n v-if=\"$slots.label\"\n #label>\n <slot name=\"label\" />\n </template>\n </ScalarMenuButton>\n </slot>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content\n align=\"start\"\n :as=\"ScalarDropdownMenu\"\n class=\"max-h-radix-popper z-context\"\n :sideOffset=\"5\"\n v-bind=\"$attrs\">\n <!-- Menu content -->\n <!-- Base Product List (can be overridden by slot) -->\n <slot\n :close=\"close\"\n name=\"products\">\n <ScalarMenuProducts />\n </slot>\n <slot\n :close=\"close\"\n name=\"profile\" />\n <slot\n :close=\"close\"\n name=\"sections\">\n <ScalarMenuResources />\n </slot>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenu.vue.script.js","names":["$slots","$attrs"],"sources":["../../../src/components/ScalarMenu/ScalarMenu.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu component\n *\n * A dropdown menu triggered by a logo button, containing product links,\n * team/workspace pickers, and resource sections.\n *\n * @example\n * <ScalarMenu>\n * <template #products=\"{ close }\">Custom products</template>\n * </ScalarMenu>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { DropdownMenu } from 'radix-vue/namespaced'\nimport { ref } from 'vue'\n\nimport { ScalarDropdownMenu } from '../ScalarDropdown'\nimport ScalarMenuButton from './ScalarMenuButton.vue'\nimport ScalarMenuProducts from './ScalarMenuProducts.vue'\nimport ScalarMenuResources from './ScalarMenuResources.vue'\nimport type {\n ScalarMenuButtonProps,\n ScalarMenuButtonSlots,\n ScalarMenuSlotProps,\n} from './types'\n\ndefineSlots<\n {\n /** Overrides the entire menu button */\n button?(p: ScalarMenuButtonProps): unknown\n /** Overrides the products list */\n products?(p: ScalarMenuSlotProps): unknown\n /** Adds items the profile section (e.g. a team picker) */\n profile?(p: ScalarMenuSlotProps): unknown\n /** Overrides the resources section */\n sections?(p: ScalarMenuSlotProps): unknown\n } & ScalarMenuButtonSlots\n>()\n\ndefineOptions({ inheritAttrs: false })\n\n/** Whether the menu is open */\nconst open = ref(false)\n\n/** Close the menu */\nfunction close() {\n open.value = false\n}\n</script>\n<template>\n <DropdownMenu.Root v-model:open=\"open\">\n <DropdownMenu.Trigger asChild>\n <!-- Logo Button to open the popover -->\n <slot\n name=\"button\"\n :open=\"open\">\n <ScalarMenuButton\n class=\"min-w-0\"\n :open=\"open\">\n <template\n v-if=\"$slots.logo\"\n #logo>\n <slot name=\"logo\" />\n </template>\n <template\n v-if=\"$slots.label\"\n #label>\n <slot name=\"label\" />\n </template>\n </ScalarMenuButton>\n </slot>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content\n align=\"start\"\n :as=\"ScalarDropdownMenu\"\n class=\"max-h-radix-popper z-context\"\n :sideOffset=\"5\"\n v-bind=\"$attrs\">\n <!-- Menu content -->\n <!-- Base Product List (can be overridden by slot) -->\n <slot\n :close=\"close\"\n name=\"products\">\n <ScalarMenuProducts />\n </slot>\n <slot\n :close=\"close\"\n name=\"profile\" />\n <slot\n :close=\"close\"\n name=\"sections\">\n <ScalarMenuResources />\n </slot>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n</template>\n"],"mappings":";;;;;;;;;;;EA6CA,MAAM,OAAO,IAAI,MAAK;;EAGtB,SAAS,QAAQ;AACf,QAAK,QAAQ;;;uBAIb,YA4CoB,MAAA,aAAA,CAAA,MAAA;IA5CO,MAAM,KAAA;gEAAI,QAAA;;2BAqBZ,CApBvB,YAoBuB,MAAA,aAAA,CAAA,SAAA,EApBD,SAAA,IAAO,EAAA;4BAmBpB,CAjBP,WAiBO,KAAA,QAAA,UAAA,EAfJ,MAAM,KAAA,OAAI,QAeN,CAdL,YAamB,0BAAA;MAZjB,OAAM;MACL,MAAM,KAAA;+BAECA,KAAAA,OAAO,OAAA;YACZ;wBACmB,CAApB,WAAoB,KAAA,QAAA,OAAA,CAAA,CAAA;;iBAGdA,KAAAA,OAAO,QAAA;YACZ;wBACoB,CAArB,WAAqB,KAAA,QAAA,QAAA,CAAA,CAAA;;;;QAK7B,YAqBuB,MAAA,aAAA,CAAA,SArBvB,WAqBuB;KApBrB,OAAM;KACL,IAAI,MAAA,2BAAkB;KACvB,OAAM;KACL,YAAY;OACLC,KAAAA,OAAM,EAAA;4BAOP;MAJP,WAIO,KAAA,QAAA,YAAA,EAHG,OAAK,QAGR,CADL,YAAsB,2BAAA,CAAA,CAAA;MAExB,WAEmB,KAAA,QAAA,WAAA,EADT,OAAK,CAAA;MAEf,WAIO,KAAA,QAAA,YAAA,EAHG,OAAK,QAGR,CADL,YAAuB,4BAAA,CAAA,CAAA"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import type { ScalarMenuButtonProps, ScalarMenuButtonSlots } from './types';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Scalar Menu Button component
|
|
4
|
+
*
|
|
5
|
+
* The trigger button for the ScalarMenu dropdown.
|
|
6
|
+
* Displays a logo icon and a caret indicator.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* <ScalarMenuButton :open="false" />
|
|
10
|
+
*/
|
|
5
11
|
declare const _default: typeof __VLS_export;
|
|
6
12
|
export default _default;
|
|
13
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ScalarMenuButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ScalarMenuButtonProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ScalarMenuButtonSlots>;
|
|
7
14
|
type __VLS_WithSlots<T, S> = T & {
|
|
8
15
|
new (): {
|
|
9
16
|
$slots: S;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuButton.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuButton.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuButton.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuButton.vue"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAG3E;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY,8VA6Fd,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuButton.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconCaretDown } from '@scalar/icons'\n\nimport { ScalarHeaderButton } from '../ScalarHeader'\nimport { ScalarIcon } from '../ScalarIcon'\nimport type { ScalarMenuButtonProps, ScalarMenuButtonSlots } from './types'\n\ndefineProps<ScalarMenuButtonProps>()\n\ndefineSlots<ScalarMenuButtonSlots>()\n</script>\n<template>\n <ScalarHeaderButton class=\"gap-0.75 px-2\">\n <div class=\"h-5 w-auto\">\n <slot name=\"logo\">\n <ScalarIcon icon=\"Logo\" />\n </slot>\n </div>\n <span class=\"sr-only\">\n <slot name=\"label\">{{ open ? 'Close Menu' : 'Open Menu' }}</slot>\n </span>\n <ScalarIconCaretDown\n class=\"shrink-0 text-c-3 group-hover/button:text-c-1 size-3.5\"\n :class=\"open ? 'rotate-180' : ''\"\n weight=\"bold\" />\n </ScalarHeaderButton>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScalarMenuButton.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuButton.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Button component\n *\n * The trigger button for the ScalarMenu dropdown.\n * Displays a logo icon and a caret indicator.\n *\n * @example\n * <ScalarMenuButton :open=\"false\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ScalarIconCaretDown } from '@scalar/icons'\n\nimport { ScalarHeaderButton } from '../ScalarHeader'\nimport { ScalarIcon } from '../ScalarIcon'\nimport type { ScalarMenuButtonProps, ScalarMenuButtonSlots } from './types'\n\ndefineProps<ScalarMenuButtonProps>()\n\ndefineSlots<ScalarMenuButtonSlots>()\n</script>\n<template>\n <ScalarHeaderButton class=\"gap-0.75 px-2\">\n <div class=\"h-5 w-auto\">\n <slot name=\"logo\">\n <ScalarIcon icon=\"Logo\" />\n </slot>\n </div>\n <span class=\"sr-only\">\n <slot name=\"label\">{{ open ? 'Close Menu' : 'Open Menu' }}</slot>\n </span>\n <ScalarIconCaretDown\n class=\"shrink-0 text-c-3 group-hover/button:text-c-1 size-3.5\"\n :class=\"open ? 'rotate-180' : ''\"\n weight=\"bold\" />\n </ScalarHeaderButton>\n</template>\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuButton.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconCaretDown } from '@scalar/icons'\n\nimport { ScalarHeaderButton } from '../ScalarHeader'\nimport { ScalarIcon } from '../ScalarIcon'\nimport type { ScalarMenuButtonProps, ScalarMenuButtonSlots } from './types'\n\ndefineProps<ScalarMenuButtonProps>()\n\ndefineSlots<ScalarMenuButtonSlots>()\n</script>\n<template>\n <ScalarHeaderButton class=\"gap-0.75 px-2\">\n <div class=\"h-5 w-auto\">\n <slot name=\"logo\">\n <ScalarIcon icon=\"Logo\" />\n </slot>\n </div>\n <span class=\"sr-only\">\n <slot name=\"label\">{{ open ? 'Close Menu' : 'Open Menu' }}</slot>\n </span>\n <ScalarIconCaretDown\n class=\"shrink-0 text-c-3 group-hover/button:text-c-1 size-3.5\"\n :class=\"open ? 'rotate-180' : ''\"\n weight=\"bold\" />\n </ScalarHeaderButton>\n</template>\n"],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ScalarMenuButton.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuButton.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Button component\n *\n * The trigger button for the ScalarMenu dropdown.\n * Displays a logo icon and a caret indicator.\n *\n * @example\n * <ScalarMenuButton :open=\"false\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ScalarIconCaretDown } from '@scalar/icons'\n\nimport { ScalarHeaderButton } from '../ScalarHeader'\nimport { ScalarIcon } from '../ScalarIcon'\nimport type { ScalarMenuButtonProps, ScalarMenuButtonSlots } from './types'\n\ndefineProps<ScalarMenuButtonProps>()\n\ndefineSlots<ScalarMenuButtonSlots>()\n</script>\n<template>\n <ScalarHeaderButton class=\"gap-0.75 px-2\">\n <div class=\"h-5 w-auto\">\n <slot name=\"logo\">\n <ScalarIcon icon=\"Logo\" />\n </slot>\n </div>\n <span class=\"sr-only\">\n <slot name=\"label\">{{ open ? 'Close Menu' : 'Open Menu' }}</slot>\n </span>\n <ScalarIconCaretDown\n class=\"shrink-0 text-c-3 group-hover/button:text-c-1 size-3.5\"\n :class=\"open ? 'rotate-180' : ''\"\n weight=\"bold\" />\n </ScalarHeaderButton>\n</template>\n"],"mappings":";;;;;;;;;;;;uBAyBE,YAaqB,MAAA,2BAAA,EAAA,EAbD,OAAM,iBAAe,EAAA;2BAKjC;KAJN,mBAIM,OAJN,YAIM,CAHJ,WAEO,KAAA,QAAA,QAAA,EAAA,QAAA,CADL,YAA0B,MAAA,mBAAA,EAAA,EAAd,MAAK,QAAM,CAAA,CAAA,CAAA,CAAA,CAAA;KAG3B,mBAEO,QAFP,YAEO,CADL,WAAiE,KAAA,QAAA,SAAA,EAAA,QAAA,CAAA,gBAAA,gBAA3C,QAAA,OAAI,eAAA,YAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;KAE5B,YAGkB,MAAA,oBAAA,EAAA;MAFhB,OAAK,eAAA,CAAC,0DACE,QAAA,OAAI,eAAA,GAAA,CAAA;MACZ,QAAO"}
|
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
import type { ScalarIconComponent } from '@scalar/icons/types';
|
|
2
2
|
import type { Component } from 'vue';
|
|
3
3
|
import { type Icon } from '../ScalarIcon';
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Scalar Menu Link component
|
|
6
|
+
*
|
|
7
|
+
* A menu item that renders as a link with an optional icon.
|
|
8
|
+
* Used within ScalarMenu sections.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <ScalarMenuLink href="https://example.com" :icon="ScalarIconBook">
|
|
12
|
+
* Documentation
|
|
13
|
+
* </ScalarMenuLink>
|
|
14
|
+
*/
|
|
15
|
+
declare const _default: typeof __VLS_export;
|
|
16
|
+
export default _default;
|
|
17
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
5
18
|
is?: string | Component;
|
|
6
19
|
icon?: Icon | ScalarIconComponent;
|
|
7
20
|
strong?: boolean;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
declare const _default: typeof __VLS_export;
|
|
16
|
-
export default _default;
|
|
21
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
|
|
22
|
+
is?: string | Component;
|
|
23
|
+
icon?: Icon | ScalarIconComponent;
|
|
24
|
+
strong?: boolean;
|
|
25
|
+
}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
26
|
+
default?: (props: {}) => any;
|
|
27
|
+
}>;
|
|
17
28
|
type __VLS_WithSlots<T, S> = T & {
|
|
18
29
|
new (): {
|
|
19
30
|
$slots: S;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuLink.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuLink.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuLink.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuLink.vue"],"names":[],"mappings":"AA4DA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAG9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAGpC,OAAO,EAAE,KAAK,IAAI,EAA2B,MAAM,eAAe,CAAA;AAGlE;;;;;;;;;;GAUG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;SAEX,MAAM,GAAG,SAAS;WAChB,IAAI,GAAG,mBAAmB;aACxB,OAAO;;SAFX,MAAM,GAAG,SAAS;WAChB,IAAI,GAAG,mBAAmB;aACxB,OAAO;;cA0FJ,CAAC,KAAK,IAAiB,KAAK,GAAG;EASzC,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuLink.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuLink.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ScalarIconComponent } from '@scalar/icons/types'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { DropdownMenu } from 'radix-vue/namespaced'\nimport type { Component } from 'vue'\n\nimport { ScalarDropdownButton } from '../ScalarDropdown'\nimport { type Icon, ScalarIconLegacyAdapter } from '../ScalarIcon'\n\nconst { is = DropdownMenu.Item } = defineProps<{\n is?: string | Component\n icon?: Icon | ScalarIconComponent\n strong?: boolean\n}>()\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <ScalarDropdownButton\n v-bind=\"cx('flex items-center')\"\n :is=\"is\"\n as=\"a\">\n <ScalarIconLegacyAdapter\n v-if=\"icon\"\n :class=\"[\n strong ? 'text-c-1' : 'text-c-2',\n typeof icon === 'string' ? 'size-3' : 'size-3.5 -mx-0.25',\n ]\"\n :icon=\"icon\"\n :thickness=\"strong ? '2.5' : '2'\"\n :weight=\"strong ? 'bold' : 'regular'\" />\n <div\n v-else\n class=\"size-3\" />\n <div\n class=\"flex items-center flex-1 min-w-0 truncate\"\n :class=\"strong ? 'font-medium' : 'font-normal'\">\n <slot />\n </div>\n </ScalarDropdownButton>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScalarMenuLink.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuLink.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Link component\n *\n * A menu item that renders as a link with an optional icon.\n * Used within ScalarMenu sections.\n *\n * @example\n * <ScalarMenuLink href=\"https://example.com\" :icon=\"ScalarIconBook\">\n * Documentation\n * </ScalarMenuLink>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport type { ScalarIconComponent } from '@scalar/icons/types'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { DropdownMenu } from 'radix-vue/namespaced'\nimport type { Component } from 'vue'\n\nimport { ScalarDropdownButton } from '../ScalarDropdown'\nimport { type Icon, ScalarIconLegacyAdapter } from '../ScalarIcon'\n\nconst { is = DropdownMenu.Item } = defineProps<{\n is?: string | Component\n icon?: Icon | ScalarIconComponent\n strong?: boolean\n}>()\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <ScalarDropdownButton\n v-bind=\"cx('flex items-center')\"\n :is=\"is\"\n as=\"a\">\n <ScalarIconLegacyAdapter\n v-if=\"icon\"\n :class=\"[\n strong ? 'text-c-1' : 'text-c-2',\n typeof icon === 'string' ? 'size-3' : 'size-3.5 -mx-0.25',\n ]\"\n :icon=\"icon\"\n :thickness=\"strong ? '2.5' : '2'\"\n :weight=\"strong ? 'bold' : 'regular'\" />\n <div\n v-else\n class=\"size-3\" />\n <div\n class=\"flex items-center flex-1 min-w-0 truncate\"\n :class=\"strong ? 'font-medium' : 'font-normal'\">\n <slot />\n </div>\n </ScalarDropdownButton>\n</template>\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuLink.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuLink.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ScalarIconComponent } from '@scalar/icons/types'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { DropdownMenu } from 'radix-vue/namespaced'\nimport type { Component } from 'vue'\n\nimport { ScalarDropdownButton } from '../ScalarDropdown'\nimport { type Icon, ScalarIconLegacyAdapter } from '../ScalarIcon'\n\nconst { is = DropdownMenu.Item } = defineProps<{\n is?: string | Component\n icon?: Icon | ScalarIconComponent\n strong?: boolean\n}>()\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <ScalarDropdownButton\n v-bind=\"cx('flex items-center')\"\n :is=\"is\"\n as=\"a\">\n <ScalarIconLegacyAdapter\n v-if=\"icon\"\n :class=\"[\n strong ? 'text-c-1' : 'text-c-2',\n typeof icon === 'string' ? 'size-3' : 'size-3.5 -mx-0.25',\n ]\"\n :icon=\"icon\"\n :thickness=\"strong ? '2.5' : '2'\"\n :weight=\"strong ? 'bold' : 'regular'\" />\n <div\n v-else\n class=\"size-3\" />\n <div\n class=\"flex items-center flex-1 min-w-0 truncate\"\n :class=\"strong ? 'font-medium' : 'font-normal'\">\n <slot />\n </div>\n </ScalarDropdownButton>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ScalarMenuLink.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuLink.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Link component\n *\n * A menu item that renders as a link with an optional icon.\n * Used within ScalarMenu sections.\n *\n * @example\n * <ScalarMenuLink href=\"https://example.com\" :icon=\"ScalarIconBook\">\n * Documentation\n * </ScalarMenuLink>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport type { ScalarIconComponent } from '@scalar/icons/types'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { DropdownMenu } from 'radix-vue/namespaced'\nimport type { Component } from 'vue'\n\nimport { ScalarDropdownButton } from '../ScalarDropdown'\nimport { type Icon, ScalarIconLegacyAdapter } from '../ScalarIcon'\n\nconst { is = DropdownMenu.Item } = defineProps<{\n is?: string | Component\n icon?: Icon | ScalarIconComponent\n strong?: boolean\n}>()\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <ScalarDropdownButton\n v-bind=\"cx('flex items-center')\"\n :is=\"is\"\n as=\"a\">\n <ScalarIconLegacyAdapter\n v-if=\"icon\"\n :class=\"[\n strong ? 'text-c-1' : 'text-c-2',\n typeof icon === 'string' ? 'size-3' : 'size-3.5 -mx-0.25',\n ]\"\n :icon=\"icon\"\n :thickness=\"strong ? '2.5' : '2'\"\n :weight=\"strong ? 'bold' : 'regular'\" />\n <div\n v-else\n class=\"size-3\" />\n <div\n class=\"flex items-center flex-1 min-w-0 truncate\"\n :class=\"strong ? 'font-medium' : 'font-normal'\">\n <slot />\n </div>\n </ScalarDropdownButton>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EA8BA,MAAM,EAAE,OAAO,WAAU;;uBAIvB,YAqBuB,MAAA,6BAAA,EArBvB,WACU,MAoBa,GApBX,CAAA,oBAAA,EAAA;IACT,IAAI,QAAA;IACL,IAAG;;2BASuC,CAPlC,QAAA,QAAA,WAAA,EADR,YAQ0C,MAAA,gCAAA,EAAA;;KANvC,OAAK,eAAA,CAAY,QAAA,SAAM,aAAA,YAAA,OAA2C,QAAA,SAAI,WAAA,WAAA,oBAAA,CAAA;KAItE,MAAM,QAAA;KACN,WAAW,QAAA,SAAM,QAAA;KACjB,QAAQ,QAAA,SAAM,SAAA;;;;;;wBACjB,mBAEmB,OAFnB,WAEmB,GACnB,mBAIM,OAAA,EAHJ,OAAK,eAAA,CAAC,6CACE,QAAA,SAAM,gBAAA,cAAA,CAAA,EAAA,EAAA,CACd,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,CAAA,CAAA"}
|
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
import type { ScalarIconComponent } from '@scalar/icons/types';
|
|
2
2
|
import type { Component } from 'vue';
|
|
3
3
|
import type { Icon } from '../../index.js';
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Scalar Menu Product component
|
|
6
|
+
*
|
|
7
|
+
* A selectable product entry within the ScalarMenu products list.
|
|
8
|
+
* Highlights the currently active product.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <ScalarMenuProduct :icon="ScalarIconHouse" :selected="true">
|
|
12
|
+
* Dashboard
|
|
13
|
+
* </ScalarMenuProduct>
|
|
14
|
+
*/
|
|
15
|
+
declare const _default: typeof __VLS_export;
|
|
16
|
+
export default _default;
|
|
17
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
5
18
|
is?: string | Component;
|
|
6
19
|
selected?: boolean;
|
|
7
20
|
icon: Icon | ScalarIconComponent;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
declare const _default: typeof __VLS_export;
|
|
16
|
-
export default _default;
|
|
21
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
|
|
22
|
+
is?: string | Component;
|
|
23
|
+
selected?: boolean;
|
|
24
|
+
icon: Icon | ScalarIconComponent;
|
|
25
|
+
}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
26
|
+
default?: (props: {}) => any;
|
|
27
|
+
}>;
|
|
17
28
|
type __VLS_WithSlots<T, S> = T & {
|
|
18
29
|
new (): {
|
|
19
30
|
$slots: S;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuProduct.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuProduct.vue"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"ScalarMenuProduct.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuProduct.vue"],"names":[],"mappings":"AAAA,OAuDO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAEpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAIlC;;;;;;;;;;GAUG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;SAEX,MAAM,GAAG,SAAS;eACZ,OAAO;UACZ,IAAI,GAAG,mBAAmB;;SAF3B,MAAM,GAAG,SAAS;eACZ,OAAO;UACZ,IAAI,GAAG,mBAAmB;;cAiEpB,CAAC,KAAK,IAAgB,KAAK,GAAG;EASxC,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuProduct.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuProduct.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ScalarIconComponent } from '@scalar/icons/types'\nimport { cva, useBindCx } from '@scalar/use-hooks/useBindCx'\nimport type { Component } from 'vue'\n\nimport type { Icon } from '../../'\nimport { ScalarMenuLink } from './'\n\nconst { is = 'a' } = defineProps<{\n is?: string | Component\n selected?: boolean\n icon: Icon | ScalarIconComponent\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n\nconst variants = cva({\n base: 'gap-1.5',\n variants: {\n selected: {\n true: 'pointer-events-none bg-b-2 dark:bg-b-3',\n false: 'cursor-pointer hover:bg-b-2 dark:hover:bg-b-3',\n },\n },\n})\n</script>\n<template>\n <ScalarMenuLink\n :is=\"is\"\n :icon=\"icon\"\n strong\n target=\"_blank\"\n v-bind=\"cx(variants({ selected }))\">\n <slot />\n </ScalarMenuLink>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScalarMenuProduct.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuProduct.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Product component\n *\n * A selectable product entry within the ScalarMenu products list.\n * Highlights the currently active product.\n *\n * @example\n * <ScalarMenuProduct :icon=\"ScalarIconHouse\" :selected=\"true\">\n * Dashboard\n * </ScalarMenuProduct>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport type { ScalarIconComponent } from '@scalar/icons/types'\nimport { cva, useBindCx } from '@scalar/use-hooks/useBindCx'\nimport type { Component } from 'vue'\n\nimport type { Icon } from '../../'\nimport { ScalarMenuLink } from './'\n\nconst { is = 'a' } = defineProps<{\n is?: string | Component\n selected?: boolean\n icon: Icon | ScalarIconComponent\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n\nconst variants = cva({\n base: 'gap-1.5',\n variants: {\n selected: {\n true: 'pointer-events-none bg-b-2 dark:bg-b-3',\n false: 'cursor-pointer hover:bg-b-2 dark:hover:bg-b-3',\n },\n },\n})\n</script>\n<template>\n <ScalarMenuLink\n :is=\"is\"\n :icon=\"icon\"\n strong\n target=\"_blank\"\n v-bind=\"cx(variants({ selected }))\">\n <slot />\n </ScalarMenuLink>\n</template>\n"],"mappings":""}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import ScalarMenuLink_default from "./ScalarMenuLink.vue.js";
|
|
2
2
|
import { cva, useBindCx } from "@scalar/use-hooks/useBindCx";
|
|
3
3
|
import { createBlock, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from "vue";
|
|
4
|
-
//#region src/components/ScalarMenu/ScalarMenuProduct.vue?vue&type=script&setup=true&lang.ts
|
|
5
4
|
var ScalarMenuProduct_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
6
5
|
inheritAttrs: false,
|
|
7
6
|
__name: "ScalarMenuProduct",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuProduct.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuProduct.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ScalarIconComponent } from '@scalar/icons/types'\nimport { cva, useBindCx } from '@scalar/use-hooks/useBindCx'\nimport type { Component } from 'vue'\n\nimport type { Icon } from '../../'\nimport { ScalarMenuLink } from './'\n\nconst { is = 'a' } = defineProps<{\n is?: string | Component\n selected?: boolean\n icon: Icon | ScalarIconComponent\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n\nconst variants = cva({\n base: 'gap-1.5',\n variants: {\n selected: {\n true: 'pointer-events-none bg-b-2 dark:bg-b-3',\n false: 'cursor-pointer hover:bg-b-2 dark:hover:bg-b-3',\n },\n },\n})\n</script>\n<template>\n <ScalarMenuLink\n :is=\"is\"\n :icon=\"icon\"\n strong\n target=\"_blank\"\n v-bind=\"cx(variants({ selected }))\">\n <slot />\n </ScalarMenuLink>\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuProduct.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuProduct.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Product component\n *\n * A selectable product entry within the ScalarMenu products list.\n * Highlights the currently active product.\n *\n * @example\n * <ScalarMenuProduct :icon=\"ScalarIconHouse\" :selected=\"true\">\n * Dashboard\n * </ScalarMenuProduct>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport type { ScalarIconComponent } from '@scalar/icons/types'\nimport { cva, useBindCx } from '@scalar/use-hooks/useBindCx'\nimport type { Component } from 'vue'\n\nimport type { Icon } from '../../'\nimport { ScalarMenuLink } from './'\n\nconst { is = 'a' } = defineProps<{\n is?: string | Component\n selected?: boolean\n icon: Icon | ScalarIconComponent\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n\nconst variants = cva({\n base: 'gap-1.5',\n variants: {\n selected: {\n true: 'pointer-events-none bg-b-2 dark:bg-b-3',\n false: 'cursor-pointer hover:bg-b-2 dark:hover:bg-b-3',\n },\n },\n})\n</script>\n<template>\n <ScalarMenuLink\n :is=\"is\"\n :icon=\"icon\"\n strong\n target=\"_blank\"\n v-bind=\"cx(variants({ selected }))\">\n <slot />\n </ScalarMenuLink>\n</template>\n"],"mappings":";;;;;;;;;;;;EA8BA,MAAM,EAAE,OAAO,WAAU;EAEzB,MAAM,WAAW,IAAI;GACnB,MAAM;GACN,UAAU,EACR,UAAU;IACR,MAAM;IACN,OAAO;IACR,EACF;GACF,CAAA;;uBAGC,YAOiB,MAAA,uBAAA,EAPjB,WAOiB;IANd,IAAI,QAAA;IACJ,MAAM,QAAA;IACP,QAAA;IACA,QAAO;MACC,MAAA,GAAE,CAAC,MAAA,SAAQ,CAAA,EAAA,UAAG,QAAA,UAAQ,CAAA,CAAA,CAAA,EAAA;2BACtB,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
|
|
@@ -1,14 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
onOpen?: ((event: Event, product: Product) => any) | undefined;
|
|
11
|
-
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
1
|
+
/**
|
|
2
|
+
* Scalar Menu Products component
|
|
3
|
+
*
|
|
4
|
+
* Displays the list of Scalar product links (Dashboard, Docs, Editor, Client)
|
|
5
|
+
* inside the ScalarMenu dropdown.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* <ScalarMenuProducts selected="dashboard" />
|
|
9
|
+
*/
|
|
12
10
|
declare const _default: typeof __VLS_export;
|
|
13
11
|
export default _default;
|
|
12
|
+
declare const __VLS_export: import("vue").DefineComponent<{
|
|
13
|
+
selected?: "dashboard" | "docs" | "editor" | "client";
|
|
14
|
+
showDocs?: boolean;
|
|
15
|
+
hrefs?: Record<"dashboard" | "docs" | "editor" | "client", string>;
|
|
16
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
17
|
+
open: (event: Event, product: "dashboard" | "docs" | "editor" | "client") => any;
|
|
18
|
+
}, string, import("vue").PublicProps, Readonly<{
|
|
19
|
+
selected?: "dashboard" | "docs" | "editor" | "client";
|
|
20
|
+
showDocs?: boolean;
|
|
21
|
+
hrefs?: Record<"dashboard" | "docs" | "editor" | "client", string>;
|
|
22
|
+
}> & Readonly<{
|
|
23
|
+
onOpen?: ((event: Event, product: "dashboard" | "docs" | "editor" | "client") => any) | undefined;
|
|
24
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
14
25
|
//# sourceMappingURL=ScalarMenuProducts.vue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuProducts.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuProducts.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuProducts.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuProducts.vue"],"names":[],"mappings":"AAsFA;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;;eAKL,OAAO;YACV,MAAM,6CAAU,MAAM,CAAC;;;;;eADpB,OAAO;YACV,MAAM,6CAAU,MAAM,CAAC;;;kFA6J7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuProducts.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuProducts.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n ScalarIconArrowUpRight,\n ScalarIconBook,\n ScalarIconHouse,\n ScalarIconNotepad,\n} from '@scalar/icons'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport ScalarMenuProduct from './ScalarMenuProduct.vue'\n\ntype Product = 'dashboard' | 'docs' | 'editor' | 'client'\n\ndefineProps<{\n selected?: Product\n showDocs?: boolean\n hrefs?: Record<Product, string>\n}>()\n\ndefineEmits<{\n (e: 'open', event: Event, product: Product): void\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('flex flex-col')\">\n <ScalarMenuProduct\n :href=\"hrefs?.dashboard ?? 'https://dashboard.scalar.com'\"\n :icon=\"ScalarIconHouse\"\n :selected=\"selected === 'dashboard'\"\n @click=\"$emit('open', $event, 'dashboard')\">\n Dashboard\n </ScalarMenuProduct>\n <ScalarMenuProduct\n v-if=\"showDocs || selected === 'docs'\"\n :href=\"hrefs?.docs ?? 'https://docs.scalar.com'\"\n :icon=\"ScalarIconBook\"\n :selected=\"selected === 'docs'\"\n @click=\"$emit('open', $event, 'docs')\">\n Docs\n </ScalarMenuProduct>\n <ScalarMenuProduct\n :href=\"hrefs?.editor ?? 'https://editor.scalar.com'\"\n :icon=\"ScalarIconNotepad\"\n :selected=\"selected === 'editor'\"\n @click=\"$emit('open', $event, 'editor')\">\n Editor\n </ScalarMenuProduct>\n <ScalarMenuProduct\n :href=\"hrefs?.client ?? 'https://client.scalar.com'\"\n :icon=\"ScalarIconArrowUpRight\"\n :selected=\"selected === 'client'\"\n @click=\"$emit('open', $event, 'client')\">\n Client\n </ScalarMenuProduct>\n </div>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScalarMenuProducts.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuProducts.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Products component\n *\n * Displays the list of Scalar product links (Dashboard, Docs, Editor, Client)\n * inside the ScalarMenu dropdown.\n *\n * @example\n * <ScalarMenuProducts selected=\"dashboard\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport {\n ScalarIconArrowUpRight,\n ScalarIconBook,\n ScalarIconHouse,\n ScalarIconNotepad,\n} from '@scalar/icons'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport ScalarMenuProduct from './ScalarMenuProduct.vue'\n\ntype Product = 'dashboard' | 'docs' | 'editor' | 'client'\n\ndefineProps<{\n selected?: Product\n showDocs?: boolean\n hrefs?: Record<Product, string>\n}>()\n\ndefineEmits<{\n (e: 'open', event: Event, product: Product): void\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('flex flex-col')\">\n <ScalarMenuProduct\n :href=\"hrefs?.dashboard ?? 'https://dashboard.scalar.com'\"\n :icon=\"ScalarIconHouse\"\n :selected=\"selected === 'dashboard'\"\n @click=\"$emit('open', $event, 'dashboard')\">\n Dashboard\n </ScalarMenuProduct>\n <ScalarMenuProduct\n v-if=\"showDocs || selected === 'docs'\"\n :href=\"hrefs?.docs ?? 'https://docs.scalar.com'\"\n :icon=\"ScalarIconBook\"\n :selected=\"selected === 'docs'\"\n @click=\"$emit('open', $event, 'docs')\">\n Docs\n </ScalarMenuProduct>\n <ScalarMenuProduct\n :href=\"hrefs?.editor ?? 'https://editor.scalar.com'\"\n :icon=\"ScalarIconNotepad\"\n :selected=\"selected === 'editor'\"\n @click=\"$emit('open', $event, 'editor')\">\n Editor\n </ScalarMenuProduct>\n <ScalarMenuProduct\n :href=\"hrefs?.client ?? 'https://client.scalar.com'\"\n :icon=\"ScalarIconArrowUpRight\"\n :selected=\"selected === 'client'\"\n @click=\"$emit('open', $event, 'client')\">\n Client\n </ScalarMenuProduct>\n </div>\n</template>\n"],"mappings":""}
|
|
@@ -2,7 +2,6 @@ import ScalarMenuProduct_default from "./ScalarMenuProduct.vue.js";
|
|
|
2
2
|
import { useBindCx } from "@scalar/use-hooks/useBindCx";
|
|
3
3
|
import { createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, guardReactiveProps, normalizeProps, openBlock, unref, withCtx } from "vue";
|
|
4
4
|
import { ScalarIconArrowUpRight, ScalarIconBook, ScalarIconHouse, ScalarIconNotepad } from "@scalar/icons";
|
|
5
|
-
//#region src/components/ScalarMenu/ScalarMenuProducts.vue?vue&type=script&setup=true&lang.ts
|
|
6
5
|
var ScalarMenuProducts_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
7
6
|
inheritAttrs: false,
|
|
8
7
|
__name: "ScalarMenuProducts",
|