@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":"ScalarMenuProducts.vue.script.js","names":["$emit"],"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.script.js","names":["$emit"],"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":";;;;;;;;;;;;;;EAqCA,MAAM,EAAE,OAAO,WAAU;;uBAGvB,mBA8BM,OAAA,eAAA,mBA9BO,MAAA,GAAE,CAAA,gBAAA,CAAA,CAAA,EAAA;IACb,YAMoB,2BAAA;KALjB,MAAM,QAAA,OAAO,aAAS;KACtB,MAAM,MAAA,gBAAe;KACrB,UAAU,QAAA,aAAQ;KAClB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,QAAS,QAAM,YAAA;;4BAE9B,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAF8C,eAE9C,GAAA,CAAA,EAAA,CAAA;;;;;;;IAEQ,QAAA,YAAY,QAAA,aAAQ,UAAA,WAAA,EAD5B,YAOoB,2BAAA;;KALjB,MAAM,QAAA,OAAO,QAAI;KACjB,MAAM,MAAA,eAAc;KACpB,UAAU,QAAA,aAAQ;KAClB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,QAAS,QAAM,OAAA;;4BAE9B,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAFyC,UAEzC,GAAA,CAAA,EAAA,CAAA;;;;;;;IACA,YAMoB,2BAAA;KALjB,MAAM,QAAA,OAAO,UAAM;KACnB,MAAM,MAAA,kBAAiB;KACvB,UAAU,QAAA,aAAQ;KAClB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,QAAS,QAAM,SAAA;;4BAE9B,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAF2C,YAE3C,GAAA,CAAA,EAAA,CAAA;;;;;;;IACA,YAMoB,2BAAA;KALjB,MAAM,QAAA,OAAO,UAAM;KACnB,MAAM,MAAA,uBAAsB;KAC5B,UAAU,QAAA,aAAQ;KAClB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,QAAS,QAAM,SAAA;;4BAE9B,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAF2C,YAE3C,GAAA,CAAA,EAAA,CAAA"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Scalar Menu Resources component
|
|
3
|
+
*
|
|
4
|
+
* Displays resource links (Terms, Privacy, Sales) inside the ScalarMenu dropdown.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* <ScalarMenuResources />
|
|
8
|
+
*/
|
|
2
9
|
declare const _default: typeof __VLS_export;
|
|
3
10
|
export default _default;
|
|
11
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
4
12
|
//# sourceMappingURL=ScalarMenuResources.vue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuResources.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuResources.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuResources.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuResources.vue"],"names":[],"mappings":"AAyDA;;;;;;;GAOG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY,+QAsFd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuResources.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuResources.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n ScalarIconBookOpenText,\n ScalarIconEnvelopeSimple,\n ScalarIconFileText,\n} from '@scalar/icons'\n\nimport ScalarMenuLink from './ScalarMenuLink.vue'\nimport ScalarMenuSection from './ScalarMenuSection.vue'\n</script>\n<template>\n <ScalarMenuSection>\n <template #title>Resources</template>\n <ScalarMenuLink\n href=\"mailto:support@scalar.com\"\n :icon=\"ScalarIconEnvelopeSimple\"\n target=\"_blank\">\n Sales & Support\n </ScalarMenuLink>\n <ScalarMenuLink\n href=\"https://scalar.com/terms-and-conditions\"\n :icon=\"ScalarIconFileText\"\n target=\"_blank\">\n Terms & Conditions\n </ScalarMenuLink>\n <ScalarMenuLink\n href=\"https://scalar.com/privacy-policy\"\n :icon=\"ScalarIconBookOpenText\"\n target=\"_blank\">\n Privacy Policy\n </ScalarMenuLink>\n </ScalarMenuSection>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScalarMenuResources.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuResources.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Resources component\n *\n * Displays resource links (Terms, Privacy, Sales) inside the ScalarMenu dropdown.\n *\n * @example\n * <ScalarMenuResources />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport {\n ScalarIconBookOpenText,\n ScalarIconEnvelopeSimple,\n ScalarIconFileText,\n} from '@scalar/icons'\n\nimport ScalarMenuLink from './ScalarMenuLink.vue'\nimport ScalarMenuSection from './ScalarMenuSection.vue'\n</script>\n<template>\n <ScalarMenuSection>\n <template #title>Resources</template>\n <ScalarMenuLink\n href=\"mailto:support@scalar.com\"\n :icon=\"ScalarIconEnvelopeSimple\"\n target=\"_blank\">\n Sales & Support\n </ScalarMenuLink>\n <ScalarMenuLink\n href=\"https://scalar.com/terms-and-conditions\"\n :icon=\"ScalarIconFileText\"\n target=\"_blank\">\n Terms & Conditions\n </ScalarMenuLink>\n <ScalarMenuLink\n href=\"https://scalar.com/privacy-policy\"\n :icon=\"ScalarIconBookOpenText\"\n target=\"_blank\">\n Privacy Policy\n </ScalarMenuLink>\n </ScalarMenuSection>\n</template>\n"],"mappings":""}
|
|
@@ -2,7 +2,6 @@ import ScalarMenuLink_default from "./ScalarMenuLink.vue.js";
|
|
|
2
2
|
import ScalarMenuSection_default from "./ScalarMenuSection.vue.js";
|
|
3
3
|
import { createBlock, createTextVNode, createVNode, defineComponent, openBlock, unref, withCtx } from "vue";
|
|
4
4
|
import { ScalarIconBookOpenText, ScalarIconEnvelopeSimple, ScalarIconFileText } from "@scalar/icons";
|
|
5
|
-
//#region src/components/ScalarMenu/ScalarMenuResources.vue?vue&type=script&setup=true&lang.ts
|
|
6
5
|
var ScalarMenuResources_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
7
6
|
__name: "ScalarMenuResources",
|
|
8
7
|
setup(__props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuResources.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuResources.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n ScalarIconBookOpenText,\n ScalarIconEnvelopeSimple,\n ScalarIconFileText,\n} from '@scalar/icons'\n\nimport ScalarMenuLink from './ScalarMenuLink.vue'\nimport ScalarMenuSection from './ScalarMenuSection.vue'\n</script>\n<template>\n <ScalarMenuSection>\n <template #title>Resources</template>\n <ScalarMenuLink\n href=\"mailto:support@scalar.com\"\n :icon=\"ScalarIconEnvelopeSimple\"\n target=\"_blank\">\n Sales & Support\n </ScalarMenuLink>\n <ScalarMenuLink\n href=\"https://scalar.com/terms-and-conditions\"\n :icon=\"ScalarIconFileText\"\n target=\"_blank\">\n Terms & Conditions\n </ScalarMenuLink>\n <ScalarMenuLink\n href=\"https://scalar.com/privacy-policy\"\n :icon=\"ScalarIconBookOpenText\"\n target=\"_blank\">\n Privacy Policy\n </ScalarMenuLink>\n </ScalarMenuSection>\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuResources.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuResources.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Resources component\n *\n * Displays resource links (Terms, Privacy, Sales) inside the ScalarMenu dropdown.\n *\n * @example\n * <ScalarMenuResources />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport {\n ScalarIconBookOpenText,\n ScalarIconEnvelopeSimple,\n ScalarIconFileText,\n} from '@scalar/icons'\n\nimport ScalarMenuLink from './ScalarMenuLink.vue'\nimport ScalarMenuSection from './ScalarMenuSection.vue'\n</script>\n<template>\n <ScalarMenuSection>\n <template #title>Resources</template>\n <ScalarMenuLink\n href=\"mailto:support@scalar.com\"\n :icon=\"ScalarIconEnvelopeSimple\"\n target=\"_blank\">\n Sales & Support\n </ScalarMenuLink>\n <ScalarMenuLink\n href=\"https://scalar.com/terms-and-conditions\"\n :icon=\"ScalarIconFileText\"\n target=\"_blank\">\n Terms & Conditions\n </ScalarMenuLink>\n <ScalarMenuLink\n href=\"https://scalar.com/privacy-policy\"\n :icon=\"ScalarIconBookOpenText\"\n target=\"_blank\">\n Privacy Policy\n </ScalarMenuLink>\n </ScalarMenuSection>\n</template>\n"],"mappings":";;;;;;;;uBAuBE,YAoBoB,2BAAA,MAAA;IAnBP,OAAK,cAAU,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAAT,aAAS,GAAA,CAAA,EAAA,CAAA;2BAMT;KALjB,YAKiB,wBAAA;MAJf,MAAK;MACJ,MAAM,MAAA,yBAAwB;MAC/B,QAAO;;6BAET,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAFkB,qBAElB,GAAA,CAAA,EAAA,CAAA;;;KACA,YAKiB,wBAAA;MAJf,MAAK;MACJ,MAAM,MAAA,mBAAkB;MACzB,QAAO;;6BAET,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAFkB,wBAElB,GAAA,CAAA,EAAA,CAAA;;;KACA,YAKiB,wBAAA;MAJf,MAAK;MACJ,MAAM,MAAA,uBAAsB;MAC7B,QAAO;;6BAET,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAFkB,oBAElB,GAAA,CAAA,EAAA,CAAA"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Scalar Menu Section component
|
|
3
|
+
*
|
|
4
|
+
* Groups menu items under a divider with an optional title slot.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* <ScalarMenuSection>
|
|
8
|
+
* <template #title>Section Title</template>
|
|
9
|
+
* <!-- menu items -->
|
|
10
|
+
* </ScalarMenuSection>
|
|
11
|
+
*/
|
|
7
12
|
declare const _default: typeof __VLS_export;
|
|
8
13
|
export default _default;
|
|
14
|
+
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>, {
|
|
15
|
+
default?: (props: {}) => any;
|
|
16
|
+
}>;
|
|
9
17
|
type __VLS_WithSlots<T, S> = T & {
|
|
10
18
|
new (): {
|
|
11
19
|
$slots: S;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuSection.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuSection.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuSection.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuSection.vue"],"names":[],"mappings":"AA8BA;;;;;;;;;;GAUG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;cA8BJ,CAAC,KAAK,IAAgB,KAAK,GAAG;EAIxC,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":"ScalarMenuSection.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarDropdownDivider } from '../ScalarDropdown'\n\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <ScalarDropdownDivider />\n <slot />\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScalarMenuSection.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuSection.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Section component\n *\n * Groups menu items under a divider with an optional title slot.\n *\n * @example\n * <ScalarMenuSection>\n * <template #title>Section Title</template>\n * <!-- menu items -->\n * </ScalarMenuSection>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ScalarDropdownDivider } from '../ScalarDropdown'\n\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <ScalarDropdownDivider />\n <slot />\n</template>\n"],"mappings":""}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import ScalarDropdownDivider_default from "../ScalarDropdown/ScalarDropdownDivider.vue.js";
|
|
2
2
|
import { Fragment, createElementBlock, createVNode, defineComponent, openBlock, renderSlot, unref } from "vue";
|
|
3
|
-
//#region src/components/ScalarMenu/ScalarMenuSection.vue?vue&type=script&setup=true&lang.ts
|
|
4
3
|
var ScalarMenuSection_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
5
4
|
inheritAttrs: false,
|
|
6
5
|
__name: "ScalarMenuSection",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuSection.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarDropdownDivider } from '../ScalarDropdown'\n\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <ScalarDropdownDivider />\n <slot />\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuSection.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuSection.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Section component\n *\n * Groups menu items under a divider with an optional title slot.\n *\n * @example\n * <ScalarMenuSection>\n * <template #title>Section Title</template>\n * <!-- menu items -->\n * </ScalarMenuSection>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ScalarDropdownDivider } from '../ScalarDropdown'\n\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <ScalarDropdownDivider />\n <slot />\n</template>\n"],"mappings":";;;;;;;2DAqBE,YAAyB,MAAA,8BAAA,CAAA,EACzB,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,GAAA"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Scalar Menu Support component
|
|
3
|
+
*
|
|
4
|
+
* Displays community and social links (Discord, GitHub) inside the ScalarMenu dropdown.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* <ScalarMenuSupport />
|
|
8
|
+
*/
|
|
2
9
|
declare const _default: typeof __VLS_export;
|
|
3
10
|
export default _default;
|
|
11
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
4
12
|
//# sourceMappingURL=ScalarMenuSupport.vue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuSupport.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuSupport.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuSupport.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuSupport.vue"],"names":[],"mappings":"AA2CA;;;;;;;GAOG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY,+QAqEd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuSupport.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuSupport.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconDiscordLogo, ScalarIconGithubLogo } from '@scalar/icons'\n\nimport ScalarMenuLink from './ScalarMenuLink.vue'\nimport ScalarMenuSection from './ScalarMenuSection.vue'\n</script>\n<template>\n <ScalarMenuSection>\n <template #title>Resources</template>\n <ScalarMenuLink\n href=\"https://discord.gg/scalar\"\n :icon=\"ScalarIconDiscordLogo\"\n target=\"_blank\">\n Discord\n </ScalarMenuLink>\n <ScalarMenuLink\n href=\"https://github.com/scalar/scalar\"\n :icon=\"ScalarIconGithubLogo\"\n target=\"_blank\">\n GitHub\n </ScalarMenuLink>\n </ScalarMenuSection>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScalarMenuSupport.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuSupport.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Support component\n *\n * Displays community and social links (Discord, GitHub) inside the ScalarMenu dropdown.\n *\n * @example\n * <ScalarMenuSupport />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ScalarIconDiscordLogo, ScalarIconGithubLogo } from '@scalar/icons'\n\nimport ScalarMenuLink from './ScalarMenuLink.vue'\nimport ScalarMenuSection from './ScalarMenuSection.vue'\n</script>\n<template>\n <ScalarMenuSection>\n <template #title>Resources</template>\n <ScalarMenuLink\n href=\"https://discord.gg/scalar\"\n :icon=\"ScalarIconDiscordLogo\"\n target=\"_blank\">\n Discord\n </ScalarMenuLink>\n <ScalarMenuLink\n href=\"https://github.com/scalar/scalar\"\n :icon=\"ScalarIconGithubLogo\"\n target=\"_blank\">\n GitHub\n </ScalarMenuLink>\n </ScalarMenuSection>\n</template>\n"],"mappings":""}
|
|
@@ -2,7 +2,6 @@ import ScalarMenuLink_default from "./ScalarMenuLink.vue.js";
|
|
|
2
2
|
import ScalarMenuSection_default from "./ScalarMenuSection.vue.js";
|
|
3
3
|
import { createBlock, createTextVNode, createVNode, defineComponent, openBlock, unref, withCtx } from "vue";
|
|
4
4
|
import { ScalarIconDiscordLogo, ScalarIconGithubLogo } from "@scalar/icons";
|
|
5
|
-
//#region src/components/ScalarMenu/ScalarMenuSupport.vue?vue&type=script&setup=true&lang.ts
|
|
6
5
|
var ScalarMenuSupport_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
7
6
|
__name: "ScalarMenuSupport",
|
|
8
7
|
setup(__props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuSupport.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuSupport.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconDiscordLogo, ScalarIconGithubLogo } from '@scalar/icons'\n\nimport ScalarMenuLink from './ScalarMenuLink.vue'\nimport ScalarMenuSection from './ScalarMenuSection.vue'\n</script>\n<template>\n <ScalarMenuSection>\n <template #title>Resources</template>\n <ScalarMenuLink\n href=\"https://discord.gg/scalar\"\n :icon=\"ScalarIconDiscordLogo\"\n target=\"_blank\">\n Discord\n </ScalarMenuLink>\n <ScalarMenuLink\n href=\"https://github.com/scalar/scalar\"\n :icon=\"ScalarIconGithubLogo\"\n target=\"_blank\">\n GitHub\n </ScalarMenuLink>\n </ScalarMenuSection>\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuSupport.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuSupport.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Support component\n *\n * Displays community and social links (Discord, GitHub) inside the ScalarMenu dropdown.\n *\n * @example\n * <ScalarMenuSupport />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ScalarIconDiscordLogo, ScalarIconGithubLogo } from '@scalar/icons'\n\nimport ScalarMenuLink from './ScalarMenuLink.vue'\nimport ScalarMenuSection from './ScalarMenuSection.vue'\n</script>\n<template>\n <ScalarMenuSection>\n <template #title>Resources</template>\n <ScalarMenuLink\n href=\"https://discord.gg/scalar\"\n :icon=\"ScalarIconDiscordLogo\"\n target=\"_blank\">\n Discord\n </ScalarMenuLink>\n <ScalarMenuLink\n href=\"https://github.com/scalar/scalar\"\n :icon=\"ScalarIconGithubLogo\"\n target=\"_blank\">\n GitHub\n </ScalarMenuLink>\n </ScalarMenuSection>\n</template>\n"],"mappings":";;;;;;;;uBAmBE,YAcoB,2BAAA,MAAA;IAbP,OAAK,cAAU,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAAT,aAAS,GAAA,CAAA,EAAA,CAAA;2BAMT,CALjB,YAKiB,wBAAA;KAJf,MAAK;KACJ,MAAM,MAAA,sBAAqB;KAC5B,QAAO;;4BAET,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAFkB,aAElB,GAAA,CAAA,EAAA,CAAA;;qBACA,YAKiB,wBAAA;KAJf,MAAK;KACJ,MAAM,MAAA,qBAAoB;KAC3B,QAAO;;4BAET,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAFkB,YAElB,GAAA,CAAA,EAAA,CAAA"}
|
|
@@ -1,17 +1,30 @@
|
|
|
1
1
|
import { type ScalarMenuTeamOption } from '.';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Scalar Menu Team Picker component
|
|
4
|
+
*
|
|
5
|
+
* A sub-menu within ScalarMenu that lets users switch between teams
|
|
6
|
+
* or create a new team.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* <ScalarMenuTeamPicker :teams="teams" :team="currentTeam" @update:team="setTeam" />
|
|
10
|
+
*/
|
|
11
|
+
declare const _default: typeof __VLS_export;
|
|
12
|
+
export default _default;
|
|
13
|
+
declare const __VLS_export: import("vue").DefineComponent<{
|
|
3
14
|
/** The currently selected team */
|
|
4
15
|
team?: ScalarMenuTeamOption | undefined;
|
|
5
16
|
/** The list of teams to choose from */
|
|
6
17
|
teams: ScalarMenuTeamOption[];
|
|
7
|
-
}
|
|
8
|
-
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
18
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
9
19
|
add: () => any;
|
|
10
20
|
"update:team": (value: ScalarMenuTeamOption | undefined) => any;
|
|
11
|
-
}, string, import("vue").PublicProps, Readonly<
|
|
21
|
+
}, string, import("vue").PublicProps, Readonly<{
|
|
22
|
+
/** The currently selected team */
|
|
23
|
+
team?: ScalarMenuTeamOption | undefined;
|
|
24
|
+
/** The list of teams to choose from */
|
|
25
|
+
teams: ScalarMenuTeamOption[];
|
|
26
|
+
}> & Readonly<{
|
|
12
27
|
onAdd?: (() => any) | undefined;
|
|
13
28
|
"onUpdate:team"?: ((value: ScalarMenuTeamOption | undefined) => any) | undefined;
|
|
14
29
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
15
|
-
declare const _default: typeof __VLS_export;
|
|
16
|
-
export default _default;
|
|
17
30
|
//# sourceMappingURL=ScalarMenuTeamPicker.vue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuTeamPicker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuTeamPicker.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuTeamPicker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuTeamPicker.vue"],"names":[],"mappings":"AAsHA,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,IAAI,CAAA;AAI9D;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;IAEhB,kCAAkC;WAC3B,oBAAoB,GAAG,SAAS;IACvC,uCAAuC;WAChC,oBAAoB,EAAE;;;;;IAH7B,kCAAkC;WAC3B,oBAAoB,GAAG,SAAS;IACvC,uCAAuC;WAChC,oBAAoB,EAAE;;;;kFAuP3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuTeamPicker.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuTeamPicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n ScalarIconCaretRight,\n ScalarIconPlus,\n ScalarIconUserSwitch,\n} from '@scalar/icons'\nimport { DropdownMenu } from 'radix-vue/namespaced'\nimport { computed } from 'vue'\n\nimport {\n ScalarDropdownButton,\n ScalarDropdownMenu,\n ScalarListboxCheckbox,\n} from '../..'\nimport { ScalarMenuLink, type ScalarMenuTeamOption } from './'\nimport ScalarMenuTeamProfile from './ScalarMenuTeamProfile.vue'\n\nconst props = defineProps<{\n /** The currently selected team */\n team?: ScalarMenuTeamOption | undefined\n /** The list of teams to choose from */\n teams: ScalarMenuTeamOption[]\n}>()\n\nconst emit = defineEmits<{\n /** Emitted when the selected team changes */\n (e: 'update:team', value: ScalarMenuTeamOption | undefined): void\n /** Emitted when the user clicks the \"Create new team\" button */\n (e: 'add'): void\n}>()\n\n/** A model that tracks the team id */\nconst model = computed<string | undefined>({\n get: () => props.team?.id,\n set: (v) =>\n emit(\n 'update:team',\n props.teams.find((t) => t.id === v),\n ),\n})\n\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <DropdownMenu.Sub>\n <ScalarMenuLink\n :is=\"DropdownMenu.SubTrigger\"\n :icon=\"ScalarIconUserSwitch\"\n v-bind=\"$attrs\">\n <div>Change team</div>\n <ScalarIconCaretRight\n class=\"ml-auto text-c-2 -mr-0.25 size-3\"\n weight=\"bold\" />\n </ScalarMenuLink>\n <DropdownMenu.Portal>\n <DropdownMenu.SubContent\n :as=\"ScalarDropdownMenu\"\n class=\"max-h-radix-popper z-context-plus\"\n :sideOffset=\"3\">\n <DropdownMenu.RadioGroup\n v-model=\"model\"\n class=\"contents\">\n <DropdownMenu.RadioItem\n v-for=\"t in teams\"\n :key=\"t.id\"\n :as=\"ScalarDropdownButton\"\n class=\"group/item flex items-center\"\n :value=\"t.id\">\n <ScalarMenuTeamProfile\n class=\"-ml-0.75 flex-1 min-w-0\"\n :label=\"t.label\"\n :src=\"t.src\" />\n <ScalarListboxCheckbox\n class=\"ml-auto\"\n :selected=\"t.id === model\" />\n </DropdownMenu.RadioItem>\n </DropdownMenu.RadioGroup>\n <DropdownMenu.Item\n :as=\"ScalarDropdownButton\"\n class=\"flex items-center\"\n @click=\"emit('add')\">\n <ScalarIconPlus\n class=\"bg-b-3 -ml-0.75 rounded p-1 size-5 text-c-3\"\n weight=\"bold\" />\n Create new team\n </DropdownMenu.Item>\n </DropdownMenu.SubContent>\n </DropdownMenu.Portal>\n </DropdownMenu.Sub>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScalarMenuTeamPicker.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuTeamPicker.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Team Picker component\n *\n * A sub-menu within ScalarMenu that lets users switch between teams\n * or create a new team.\n *\n * @example\n * <ScalarMenuTeamPicker :teams=\"teams\" :team=\"currentTeam\" @update:team=\"setTeam\" />\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport {\n ScalarIconCaretRight,\n ScalarIconPlus,\n ScalarIconUserSwitch,\n} from '@scalar/icons'\nimport { DropdownMenu } from 'radix-vue/namespaced'\nimport { computed } from 'vue'\n\nimport {\n ScalarDropdownButton,\n ScalarDropdownMenu,\n ScalarListboxCheckbox,\n} from '../..'\nimport { ScalarMenuLink, type ScalarMenuTeamOption } from './'\nimport ScalarMenuTeamProfile from './ScalarMenuTeamProfile.vue'\n\nconst props = defineProps<{\n /** The currently selected team */\n team?: ScalarMenuTeamOption | undefined\n /** The list of teams to choose from */\n teams: ScalarMenuTeamOption[]\n}>()\n\nconst emit = defineEmits<{\n /** Emitted when the selected team changes */\n (e: 'update:team', value: ScalarMenuTeamOption | undefined): void\n /** Emitted when the user clicks the \"Create new team\" button */\n (e: 'add'): void\n}>()\n\n/** A model that tracks the team id */\nconst model = computed<string | undefined>({\n get: () => props.team?.id,\n set: (v) =>\n emit(\n 'update:team',\n props.teams.find((t) => t.id === v),\n ),\n})\n\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <DropdownMenu.Sub>\n <ScalarMenuLink\n :is=\"DropdownMenu.SubTrigger\"\n :icon=\"ScalarIconUserSwitch\"\n v-bind=\"$attrs\">\n <div>Change team</div>\n <ScalarIconCaretRight\n class=\"ml-auto text-c-2 -mr-0.25 size-3\"\n weight=\"bold\" />\n </ScalarMenuLink>\n <DropdownMenu.Portal>\n <DropdownMenu.SubContent\n :as=\"ScalarDropdownMenu\"\n class=\"max-h-radix-popper z-context-plus\"\n :sideOffset=\"3\">\n <DropdownMenu.RadioGroup\n v-model=\"model\"\n class=\"contents\">\n <DropdownMenu.RadioItem\n v-for=\"t in teams\"\n :key=\"t.id\"\n :as=\"ScalarDropdownButton\"\n class=\"group/item flex items-center\"\n :value=\"t.id\">\n <ScalarMenuTeamProfile\n class=\"-ml-0.75 flex-1 min-w-0\"\n :label=\"t.label\"\n :src=\"t.src\" />\n <ScalarListboxCheckbox\n class=\"ml-auto\"\n :selected=\"t.id === model\" />\n </DropdownMenu.RadioItem>\n </DropdownMenu.RadioGroup>\n <DropdownMenu.Item\n :as=\"ScalarDropdownButton\"\n class=\"flex items-center\"\n @click=\"emit('add')\">\n <ScalarIconPlus\n class=\"bg-b-3 -ml-0.75 rounded p-1 size-5 text-c-3\"\n weight=\"bold\" />\n Create new team\n </DropdownMenu.Item>\n </DropdownMenu.SubContent>\n </DropdownMenu.Portal>\n </DropdownMenu.Sub>\n</template>\n"],"mappings":""}
|
|
@@ -6,7 +6,6 @@ import ScalarMenuTeamProfile_default from "./ScalarMenuTeamProfile.vue.js";
|
|
|
6
6
|
import { Fragment, computed, createBlock, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, openBlock, renderList, unref, withCtx } from "vue";
|
|
7
7
|
import { ScalarIconCaretRight, ScalarIconPlus, ScalarIconUserSwitch } from "@scalar/icons";
|
|
8
8
|
import { DropdownMenu } from "radix-vue/namespaced";
|
|
9
|
-
//#region src/components/ScalarMenu/ScalarMenuTeamPicker.vue?vue&type=script&setup=true&lang.ts
|
|
10
9
|
var ScalarMenuTeamPicker_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
11
10
|
inheritAttrs: false,
|
|
12
11
|
__name: "ScalarMenuTeamPicker",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuTeamPicker.vue.script.js","names":["$attrs"],"sources":["../../../src/components/ScalarMenu/ScalarMenuTeamPicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n ScalarIconCaretRight,\n ScalarIconPlus,\n ScalarIconUserSwitch,\n} from '@scalar/icons'\nimport { DropdownMenu } from 'radix-vue/namespaced'\nimport { computed } from 'vue'\n\nimport {\n ScalarDropdownButton,\n ScalarDropdownMenu,\n ScalarListboxCheckbox,\n} from '../..'\nimport { ScalarMenuLink, type ScalarMenuTeamOption } from './'\nimport ScalarMenuTeamProfile from './ScalarMenuTeamProfile.vue'\n\nconst props = defineProps<{\n /** The currently selected team */\n team?: ScalarMenuTeamOption | undefined\n /** The list of teams to choose from */\n teams: ScalarMenuTeamOption[]\n}>()\n\nconst emit = defineEmits<{\n /** Emitted when the selected team changes */\n (e: 'update:team', value: ScalarMenuTeamOption | undefined): void\n /** Emitted when the user clicks the \"Create new team\" button */\n (e: 'add'): void\n}>()\n\n/** A model that tracks the team id */\nconst model = computed<string | undefined>({\n get: () => props.team?.id,\n set: (v) =>\n emit(\n 'update:team',\n props.teams.find((t) => t.id === v),\n ),\n})\n\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <DropdownMenu.Sub>\n <ScalarMenuLink\n :is=\"DropdownMenu.SubTrigger\"\n :icon=\"ScalarIconUserSwitch\"\n v-bind=\"$attrs\">\n <div>Change team</div>\n <ScalarIconCaretRight\n class=\"ml-auto text-c-2 -mr-0.25 size-3\"\n weight=\"bold\" />\n </ScalarMenuLink>\n <DropdownMenu.Portal>\n <DropdownMenu.SubContent\n :as=\"ScalarDropdownMenu\"\n class=\"max-h-radix-popper z-context-plus\"\n :sideOffset=\"3\">\n <DropdownMenu.RadioGroup\n v-model=\"model\"\n class=\"contents\">\n <DropdownMenu.RadioItem\n v-for=\"t in teams\"\n :key=\"t.id\"\n :as=\"ScalarDropdownButton\"\n class=\"group/item flex items-center\"\n :value=\"t.id\">\n <ScalarMenuTeamProfile\n class=\"-ml-0.75 flex-1 min-w-0\"\n :label=\"t.label\"\n :src=\"t.src\" />\n <ScalarListboxCheckbox\n class=\"ml-auto\"\n :selected=\"t.id === model\" />\n </DropdownMenu.RadioItem>\n </DropdownMenu.RadioGroup>\n <DropdownMenu.Item\n :as=\"ScalarDropdownButton\"\n class=\"flex items-center\"\n @click=\"emit('add')\">\n <ScalarIconPlus\n class=\"bg-b-3 -ml-0.75 rounded p-1 size-5 text-c-3\"\n weight=\"bold\" />\n Create new team\n </DropdownMenu.Item>\n </DropdownMenu.SubContent>\n </DropdownMenu.Portal>\n </DropdownMenu.Sub>\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuTeamPicker.vue.script.js","names":["$attrs"],"sources":["../../../src/components/ScalarMenu/ScalarMenuTeamPicker.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Team Picker component\n *\n * A sub-menu within ScalarMenu that lets users switch between teams\n * or create a new team.\n *\n * @example\n * <ScalarMenuTeamPicker :teams=\"teams\" :team=\"currentTeam\" @update:team=\"setTeam\" />\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport {\n ScalarIconCaretRight,\n ScalarIconPlus,\n ScalarIconUserSwitch,\n} from '@scalar/icons'\nimport { DropdownMenu } from 'radix-vue/namespaced'\nimport { computed } from 'vue'\n\nimport {\n ScalarDropdownButton,\n ScalarDropdownMenu,\n ScalarListboxCheckbox,\n} from '../..'\nimport { ScalarMenuLink, type ScalarMenuTeamOption } from './'\nimport ScalarMenuTeamProfile from './ScalarMenuTeamProfile.vue'\n\nconst props = defineProps<{\n /** The currently selected team */\n team?: ScalarMenuTeamOption | undefined\n /** The list of teams to choose from */\n teams: ScalarMenuTeamOption[]\n}>()\n\nconst emit = defineEmits<{\n /** Emitted when the selected team changes */\n (e: 'update:team', value: ScalarMenuTeamOption | undefined): void\n /** Emitted when the user clicks the \"Create new team\" button */\n (e: 'add'): void\n}>()\n\n/** A model that tracks the team id */\nconst model = computed<string | undefined>({\n get: () => props.team?.id,\n set: (v) =>\n emit(\n 'update:team',\n props.teams.find((t) => t.id === v),\n ),\n})\n\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <DropdownMenu.Sub>\n <ScalarMenuLink\n :is=\"DropdownMenu.SubTrigger\"\n :icon=\"ScalarIconUserSwitch\"\n v-bind=\"$attrs\">\n <div>Change team</div>\n <ScalarIconCaretRight\n class=\"ml-auto text-c-2 -mr-0.25 size-3\"\n weight=\"bold\" />\n </ScalarMenuLink>\n <DropdownMenu.Portal>\n <DropdownMenu.SubContent\n :as=\"ScalarDropdownMenu\"\n class=\"max-h-radix-popper z-context-plus\"\n :sideOffset=\"3\">\n <DropdownMenu.RadioGroup\n v-model=\"model\"\n class=\"contents\">\n <DropdownMenu.RadioItem\n v-for=\"t in teams\"\n :key=\"t.id\"\n :as=\"ScalarDropdownButton\"\n class=\"group/item flex items-center\"\n :value=\"t.id\">\n <ScalarMenuTeamProfile\n class=\"-ml-0.75 flex-1 min-w-0\"\n :label=\"t.label\"\n :src=\"t.src\" />\n <ScalarListboxCheckbox\n class=\"ml-auto\"\n :selected=\"t.id === model\" />\n </DropdownMenu.RadioItem>\n </DropdownMenu.RadioGroup>\n <DropdownMenu.Item\n :as=\"ScalarDropdownButton\"\n class=\"flex items-center\"\n @click=\"emit('add')\">\n <ScalarIconPlus\n class=\"bg-b-3 -ml-0.75 rounded p-1 size-5 text-c-3\"\n weight=\"bold\" />\n Create new team\n </DropdownMenu.Item>\n </DropdownMenu.SubContent>\n </DropdownMenu.Portal>\n </DropdownMenu.Sub>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;EA6BA,MAAM,QAAQ;EAOd,MAAM,OAAO;;EAQb,MAAM,QAAQ,SAA6B;GACzC,WAAW,MAAM,MAAM;GACvB,MAAM,MACJ,KACE,eACA,MAAM,MAAM,MAAM,MAAM,EAAE,OAAO,EAAE,CACpC;GACJ,CAAA;;uBAKC,YA4CmB,MAAA,aAAA,CAAA,KAAA,MAAA;2BAnCA,CARjB,YAQiB,MAAA,uBAAA,EARjB,WAQiB;KAPd,IAAI,MAAA,aAAY,CAAC;KACjB,MAAM,MAAA,qBAAoB;OACnBA,KAAAA,OAAM,EAAA;4BACQ,CAAA,OAAA,OAAA,OAAA,KAAtB,mBAAsB,OAAA,MAAjB,eAAW,GAAA,GAChB,YAEkB,MAAA,qBAAA,EAAA;MADhB,OAAM;MACN,QAAO;;;4BAEX,YAiCsB,MAAA,aAAA,CAAA,QAAA,MAAA;4BADM,CA/B1B,YA+B0B,MAAA,aAAA,CAAA,YAAA;MA9BvB,IAAI,MAAA,2BAAkB;MACvB,OAAM;MACL,YAAY;;6BAkBa,CAjB1B,YAiB0B,MAAA,aAAA,CAAA,YAAA;mBAhBf,MAAA;0EAAK,QAAA;OACd,OAAM;;8BAEc,EAAA,UAAA,KAAA,EADpB,mBAayB,UAAA,MAAA,WAZX,QAAA,QAAL,MAAC;4BADV,YAayB,MAAA,aAAA,CAAA,WAAA;SAXtB,KAAK,EAAE;SACP,IAAI,MAAA,6BAAoB;SACzB,OAAM;SACL,OAAO,EAAE;;gCAIO,CAHjB,YAGiB,+BAAA;UAFf,OAAM;UACL,OAAO,EAAE;UACT,KAAK,EAAE;wCACV,YAE+B,MAAA,8BAAA,EAAA;UAD7B,OAAM;UACL,UAAU,EAAE,OAAO,MAAA;;;;;;6BAG1B,YAQoB,MAAA,aAAA,CAAA,MAAA;OAPjB,IAAI,MAAA,6BAAoB;OACzB,OAAM;OACL,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,MAAA;;8BAGM,CAFlB,YAEkB,MAAA,eAAA,EAAA;QADhB,OAAM;QACN,QAAO;qDAAS,qBAEpB,GAAA,EAAA,CAAA"}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Scalar Menu Team Profile component
|
|
3
|
+
*
|
|
4
|
+
* Displays a team avatar and label. Shows the team image if available,
|
|
5
|
+
* otherwise falls back to the first letter of the label or a default icon.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* <ScalarMenuTeamProfile label="My Team" src="/avatar.png" />
|
|
9
|
+
*/
|
|
6
10
|
declare const _default: typeof __VLS_export;
|
|
7
11
|
export default _default;
|
|
12
|
+
declare const __VLS_export: import("vue").DefineComponent<{
|
|
13
|
+
src?: string;
|
|
14
|
+
label?: string;
|
|
15
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
|
|
16
|
+
src?: string;
|
|
17
|
+
label?: string;
|
|
18
|
+
}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
8
19
|
//# sourceMappingURL=ScalarMenuTeamProfile.vue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuTeamProfile.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuTeamProfile.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuTeamProfile.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuTeamProfile.vue"],"names":[],"mappings":"AAyDA;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;UAEV,MAAM;YACJ,MAAM;;UADR,MAAM;YACJ,MAAM;iGAqFZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuTeamProfile.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuTeamProfile.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconUsers } from '@scalar/icons'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\ndefineProps<{\n src?: string\n label?: string\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('flex h-full items-center gap-1')\">\n <img\n v-if=\"src\"\n class=\"size-5 rounded\"\n role=\"presentation\"\n :src=\"src\" />\n <div\n v-else\n aria-hidden=\"true\"\n class=\"flex items-center justify-center text-3xs font-medium text-c-3 size-5 bg-b-3 rounded\">\n <template v-if=\"label && label.length > 0\">\n {{ label[0] }}\n </template>\n <ScalarIconUsers\n v-else\n class=\"size-3\"\n weight=\"bold\" />\n </div>\n <div\n v-if=\"label && label.length > 0\"\n class=\"flex-1 truncate\">\n {{ label }}\n </div>\n </div>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScalarMenuTeamProfile.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuTeamProfile.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Team Profile component\n *\n * Displays a team avatar and label. Shows the team image if available,\n * otherwise falls back to the first letter of the label or a default icon.\n *\n * @example\n * <ScalarMenuTeamProfile label=\"My Team\" src=\"/avatar.png\" />\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { ScalarIconUsers } from '@scalar/icons'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\ndefineProps<{\n src?: string\n label?: string\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('flex h-full items-center gap-1')\">\n <img\n v-if=\"src\"\n class=\"size-5 rounded\"\n role=\"presentation\"\n :src=\"src\" />\n <div\n v-else\n aria-hidden=\"true\"\n class=\"flex items-center justify-center text-3xs font-medium text-c-3 size-5 bg-b-3 rounded\">\n <template v-if=\"label && label.length > 0\">\n {{ label[0] }}\n </template>\n <ScalarIconUsers\n v-else\n class=\"size-3\"\n weight=\"bold\" />\n </div>\n <div\n v-if=\"label && label.length > 0\"\n class=\"flex-1 truncate\">\n {{ label }}\n </div>\n </div>\n</template>\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuTeamProfile.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuTeamProfile.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconUsers } from '@scalar/icons'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\ndefineProps<{\n src?: string\n label?: string\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('flex h-full items-center gap-1')\">\n <img\n v-if=\"src\"\n class=\"size-5 rounded\"\n role=\"presentation\"\n :src=\"src\" />\n <div\n v-else\n aria-hidden=\"true\"\n class=\"flex items-center justify-center text-3xs font-medium text-c-3 size-5 bg-b-3 rounded\">\n <template v-if=\"label && label.length > 0\">\n {{ label[0] }}\n </template>\n <ScalarIconUsers\n v-else\n class=\"size-3\"\n weight=\"bold\" />\n </div>\n <div\n v-if=\"label && label.length > 0\"\n class=\"flex-1 truncate\">\n {{ label }}\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ScalarMenuTeamProfile.vue.script.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuTeamProfile.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Team Profile component\n *\n * Displays a team avatar and label. Shows the team image if available,\n * otherwise falls back to the first letter of the label or a default icon.\n *\n * @example\n * <ScalarMenuTeamProfile label=\"My Team\" src=\"/avatar.png\" />\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { ScalarIconUsers } from '@scalar/icons'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\ndefineProps<{\n src?: string\n label?: string\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('flex h-full items-center gap-1')\">\n <img\n v-if=\"src\"\n class=\"size-5 rounded\"\n role=\"presentation\"\n :src=\"src\" />\n <div\n v-else\n aria-hidden=\"true\"\n class=\"flex items-center justify-center text-3xs font-medium text-c-3 size-5 bg-b-3 rounded\">\n <template v-if=\"label && label.length > 0\">\n {{ label[0] }}\n </template>\n <ScalarIconUsers\n v-else\n class=\"size-3\"\n weight=\"bold\" />\n </div>\n <div\n v-if=\"label && label.length > 0\"\n class=\"flex-1 truncate\">\n {{ label }}\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EAsBA,MAAM,EAAE,OAAO,WAAU;;uBAGvB,mBAuBM,OAAA,eAAA,mBAvBO,MAAA,GAAE,CAAA,iCAAA,CAAA,CAAA,EAAA,CAEL,QAAA,OAAA,WAAA,EADR,mBAIe,OAAA;;IAFb,OAAM;IACN,MAAK;IACJ,KAAK,QAAA;4CACR,mBAWM,OAXN,YAWM,CAPY,QAAA,SAAS,QAAA,MAAM,SAAM,KAAA,WAAA,EAArC,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,QAAA,MAAK,GAAA,EAAA,EAAA,CAAA,EAAA,GAAA,KAAA,WAAA,EAEV,YAGkB,MAAA,gBAAA,EAAA;;IADhB,OAAM;IACN,QAAO;WAGH,QAAA,SAAS,QAAA,MAAM,SAAM,KAAA,WAAA,EAD7B,mBAIM,OAJN,YAIM,gBADD,QAAA,MAAK,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,GAAA"}
|
|
@@ -5,22 +5,33 @@ export type WorkspaceGroup = {
|
|
|
5
5
|
/** Options within the group */
|
|
6
6
|
options: ScalarListboxOption[];
|
|
7
7
|
};
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Scalar Menu Workspace Picker component
|
|
10
|
+
*
|
|
11
|
+
* A sub-menu within ScalarMenu that lets users switch between
|
|
12
|
+
* workspaces or create a new one.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* <ScalarMenuWorkspacePicker v-model="workspaceId" :workspaceOptions="groups" />
|
|
16
|
+
*/
|
|
17
|
+
declare const _default: typeof __VLS_export;
|
|
18
|
+
export default _default;
|
|
19
|
+
declare const __VLS_export: import("vue").DefineComponent<{
|
|
9
20
|
/** The list of workspaces to choose from */
|
|
10
21
|
workspaceOptions: WorkspaceGroup[];
|
|
11
|
-
}
|
|
12
|
-
type __VLS_ModelProps = {
|
|
22
|
+
} & {
|
|
13
23
|
modelValue?: string | undefined;
|
|
14
|
-
}
|
|
15
|
-
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
16
|
-
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
24
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
17
25
|
"update:modelValue": (value: string | undefined) => any;
|
|
18
26
|
} & {
|
|
19
27
|
createWorkspace: () => any;
|
|
20
|
-
}, string, import("vue").PublicProps, Readonly<
|
|
28
|
+
}, string, import("vue").PublicProps, Readonly<{
|
|
29
|
+
/** The list of workspaces to choose from */
|
|
30
|
+
workspaceOptions: WorkspaceGroup[];
|
|
31
|
+
} & {
|
|
32
|
+
modelValue?: string | undefined;
|
|
33
|
+
}> & Readonly<{
|
|
21
34
|
"onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
|
|
22
35
|
onCreateWorkspace?: (() => any) | undefined;
|
|
23
36
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
24
|
-
declare const _default: typeof __VLS_export;
|
|
25
|
-
export default _default;
|
|
26
37
|
//# sourceMappingURL=ScalarMenuWorkspacePicker.vue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuWorkspacePicker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuWorkspacePicker.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarMenuWorkspacePicker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuWorkspacePicker.vue"],"names":[],"mappings":"AA4HA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAA;AAGzB,MAAM,MAAM,cAAc,GAAG;IAC3B,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+BAA+B;IAC/B,OAAO,EAAE,mBAAmB,EAAE,CAAA;CAC/B,CAAA;AAGD;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;IAEhB,4CAA4C;sBAC1B,cAAc,EAAE;;iBAiBvB,MAAM,GAAG,SAAS;;;;;;IAlB7B,4CAA4C;sBAC1B,cAAc,EAAE;;iBAiBvB,MAAM,GAAG,SAAS;;;;kFAmQ3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuWorkspacePicker.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuWorkspacePicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n ScalarIconCaretRight,\n ScalarIconPlus,\n ScalarIconSwap,\n} from '@scalar/icons'\nimport { DropdownMenu } from 'radix-vue/namespaced'\n\nimport { ScalarDropdownButton, ScalarDropdownMenu } from '../ScalarDropdown'\nimport {\n ScalarListboxCheckbox,\n type ScalarListboxOption,\n} from '../ScalarListbox'\nimport ScalarMenuLink from './ScalarMenuLink.vue'\n\nexport type WorkspaceGroup = {\n /** Label for the group */\n label?: string\n /** Options within the group */\n options: ScalarListboxOption[]\n}\n\nconst { workspaceOptions } = defineProps<{\n /** The list of workspaces to choose from */\n workspaceOptions: WorkspaceGroup[]\n}>()\n\nconst emit = defineEmits<{\n /** Create a new workspace */\n (e: 'createWorkspace'): void\n}>()\n\nconst model = defineModel<string | undefined>()\n\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <DropdownMenu.Sub>\n <ScalarMenuLink\n :is=\"DropdownMenu.SubTrigger\"\n :icon=\"ScalarIconSwap\"\n v-bind=\"$attrs\">\n <div>Change workspace</div>\n <ScalarIconCaretRight\n class=\"ml-auto text-c-2 -mr-0.25 size-3\"\n weight=\"bold\" />\n </ScalarMenuLink>\n\n <DropdownMenu.Portal>\n <DropdownMenu.SubContent\n :as=\"ScalarDropdownMenu\"\n class=\"max-h-radix-popper z-context-plus\"\n :sideOffset=\"3\">\n <DropdownMenu.RadioGroup\n v-model=\"model\"\n class=\"contents\">\n <template\n v-for=\"(group, groupIndex) in workspaceOptions\"\n :key=\"groupIndex\">\n <!-- Group label (only shown if there's a label) -->\n <DropdownMenu.Label\n v-if=\"group.label\"\n class=\"px-3 py-1.5 text-xs font-medium text-c-3 select-none\">\n {{ group.label }}\n </DropdownMenu.Label>\n\n <!-- Group items -->\n <DropdownMenu.RadioItem\n v-for=\"w in group.options\"\n :key=\"w.id\"\n :as=\"ScalarDropdownButton\"\n class=\"group/item flex items-center\"\n :value=\"w.id\">\n <div class=\"flex h-full items-center gap-1 flex-1 truncate\">\n {{ w.label }}\n </div>\n <ScalarListboxCheckbox\n class=\"ml-auto\"\n :selected=\"w.id === model\" />\n </DropdownMenu.RadioItem>\n\n <!-- Group separator (only between groups, not after the last one) -->\n <DropdownMenu.Separator\n v-if=\"groupIndex < workspaceOptions.length - 1\"\n class=\"h-px bg-b-3 my-1.5\" />\n </template>\n </DropdownMenu.RadioGroup>\n\n <DropdownMenu.Item\n :as=\"ScalarDropdownButton\"\n class=\"flex items-center\"\n @click=\"emit('createWorkspace')\">\n <ScalarIconPlus\n class=\"bg-b-3 -ml-0.75 rounded p-1 size-5 text-c-3\"\n weight=\"bold\" />\n Create workspace\n </DropdownMenu.Item>\n </DropdownMenu.SubContent>\n </DropdownMenu.Portal>\n </DropdownMenu.Sub>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScalarMenuWorkspacePicker.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuWorkspacePicker.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Workspace Picker component\n *\n * A sub-menu within ScalarMenu that lets users switch between\n * workspaces or create a new one.\n *\n * @example\n * <ScalarMenuWorkspacePicker v-model=\"workspaceId\" :workspaceOptions=\"groups\" />\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport {\n ScalarIconCaretRight,\n ScalarIconPlus,\n ScalarIconSwap,\n} from '@scalar/icons'\nimport { DropdownMenu } from 'radix-vue/namespaced'\n\nimport { ScalarDropdownButton, ScalarDropdownMenu } from '../ScalarDropdown'\nimport {\n ScalarListboxCheckbox,\n type ScalarListboxOption,\n} from '../ScalarListbox'\nimport ScalarMenuLink from './ScalarMenuLink.vue'\n\nexport type WorkspaceGroup = {\n /** Label for the group */\n label?: string\n /** Options within the group */\n options: ScalarListboxOption[]\n}\n\nconst { workspaceOptions } = defineProps<{\n /** The list of workspaces to choose from */\n workspaceOptions: WorkspaceGroup[]\n}>()\n\nconst emit = defineEmits<{\n /** Create a new workspace */\n (e: 'createWorkspace'): void\n}>()\n\nconst model = defineModel<string | undefined>()\n\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <DropdownMenu.Sub>\n <ScalarMenuLink\n :is=\"DropdownMenu.SubTrigger\"\n :icon=\"ScalarIconSwap\"\n v-bind=\"$attrs\">\n <div>Change workspace</div>\n <ScalarIconCaretRight\n class=\"ml-auto text-c-2 -mr-0.25 size-3\"\n weight=\"bold\" />\n </ScalarMenuLink>\n\n <DropdownMenu.Portal>\n <DropdownMenu.SubContent\n :as=\"ScalarDropdownMenu\"\n class=\"max-h-radix-popper z-context-plus\"\n :sideOffset=\"3\">\n <DropdownMenu.RadioGroup\n v-model=\"model\"\n class=\"contents\">\n <template\n v-for=\"(group, groupIndex) in workspaceOptions\"\n :key=\"groupIndex\">\n <!-- Group label (only shown if there's a label) -->\n <DropdownMenu.Label\n v-if=\"group.label\"\n class=\"px-3 py-1.5 text-xs font-medium text-c-3 select-none\">\n {{ group.label }}\n </DropdownMenu.Label>\n\n <!-- Group items -->\n <DropdownMenu.RadioItem\n v-for=\"w in group.options\"\n :key=\"w.id\"\n :as=\"ScalarDropdownButton\"\n class=\"group/item flex items-center\"\n :value=\"w.id\">\n <div class=\"flex h-full items-center gap-1 flex-1 truncate\">\n {{ w.label }}\n </div>\n <ScalarListboxCheckbox\n class=\"ml-auto\"\n :selected=\"w.id === model\" />\n </DropdownMenu.RadioItem>\n\n <!-- Group separator (only between groups, not after the last one) -->\n <DropdownMenu.Separator\n v-if=\"groupIndex < workspaceOptions.length - 1\"\n class=\"h-px bg-b-3 my-1.5\" />\n </template>\n </DropdownMenu.RadioGroup>\n\n <DropdownMenu.Item\n :as=\"ScalarDropdownButton\"\n class=\"flex items-center\"\n @click=\"emit('createWorkspace')\">\n <ScalarIconPlus\n class=\"bg-b-3 -ml-0.75 rounded p-1 size-5 text-c-3\"\n weight=\"bold\" />\n Create workspace\n </DropdownMenu.Item>\n </DropdownMenu.SubContent>\n </DropdownMenu.Portal>\n </DropdownMenu.Sub>\n</template>\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarMenuWorkspacePicker.vue.script.js","names":["$attrs"],"sources":["../../../src/components/ScalarMenu/ScalarMenuWorkspacePicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n ScalarIconCaretRight,\n ScalarIconPlus,\n ScalarIconSwap,\n} from '@scalar/icons'\nimport { DropdownMenu } from 'radix-vue/namespaced'\n\nimport { ScalarDropdownButton, ScalarDropdownMenu } from '../ScalarDropdown'\nimport {\n ScalarListboxCheckbox,\n type ScalarListboxOption,\n} from '../ScalarListbox'\nimport ScalarMenuLink from './ScalarMenuLink.vue'\n\nexport type WorkspaceGroup = {\n /** Label for the group */\n label?: string\n /** Options within the group */\n options: ScalarListboxOption[]\n}\n\nconst { workspaceOptions } = defineProps<{\n /** The list of workspaces to choose from */\n workspaceOptions: WorkspaceGroup[]\n}>()\n\nconst emit = defineEmits<{\n /** Create a new workspace */\n (e: 'createWorkspace'): void\n}>()\n\nconst model = defineModel<string | undefined>()\n\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <DropdownMenu.Sub>\n <ScalarMenuLink\n :is=\"DropdownMenu.SubTrigger\"\n :icon=\"ScalarIconSwap\"\n v-bind=\"$attrs\">\n <div>Change workspace</div>\n <ScalarIconCaretRight\n class=\"ml-auto text-c-2 -mr-0.25 size-3\"\n weight=\"bold\" />\n </ScalarMenuLink>\n\n <DropdownMenu.Portal>\n <DropdownMenu.SubContent\n :as=\"ScalarDropdownMenu\"\n class=\"max-h-radix-popper z-context-plus\"\n :sideOffset=\"3\">\n <DropdownMenu.RadioGroup\n v-model=\"model\"\n class=\"contents\">\n <template\n v-for=\"(group, groupIndex) in workspaceOptions\"\n :key=\"groupIndex\">\n <!-- Group label (only shown if there's a label) -->\n <DropdownMenu.Label\n v-if=\"group.label\"\n class=\"px-3 py-1.5 text-xs font-medium text-c-3 select-none\">\n {{ group.label }}\n </DropdownMenu.Label>\n\n <!-- Group items -->\n <DropdownMenu.RadioItem\n v-for=\"w in group.options\"\n :key=\"w.id\"\n :as=\"ScalarDropdownButton\"\n class=\"group/item flex items-center\"\n :value=\"w.id\">\n <div class=\"flex h-full items-center gap-1 flex-1 truncate\">\n {{ w.label }}\n </div>\n <ScalarListboxCheckbox\n class=\"ml-auto\"\n :selected=\"w.id === model\" />\n </DropdownMenu.RadioItem>\n\n <!-- Group separator (only between groups, not after the last one) -->\n <DropdownMenu.Separator\n v-if=\"groupIndex < workspaceOptions.length - 1\"\n class=\"h-px bg-b-3 my-1.5\" />\n </template>\n </DropdownMenu.RadioGroup>\n\n <DropdownMenu.Item\n :as=\"ScalarDropdownButton\"\n class=\"flex items-center\"\n @click=\"emit('createWorkspace')\">\n <ScalarIconPlus\n class=\"bg-b-3 -ml-0.75 rounded p-1 size-5 text-c-3\"\n weight=\"bold\" />\n Create workspace\n </DropdownMenu.Item>\n </DropdownMenu.SubContent>\n </DropdownMenu.Portal>\n </DropdownMenu.Sub>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ScalarMenuWorkspacePicker.vue.script.js","names":["$attrs"],"sources":["../../../src/components/ScalarMenu/ScalarMenuWorkspacePicker.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Workspace Picker component\n *\n * A sub-menu within ScalarMenu that lets users switch between\n * workspaces or create a new one.\n *\n * @example\n * <ScalarMenuWorkspacePicker v-model=\"workspaceId\" :workspaceOptions=\"groups\" />\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport {\n ScalarIconCaretRight,\n ScalarIconPlus,\n ScalarIconSwap,\n} from '@scalar/icons'\nimport { DropdownMenu } from 'radix-vue/namespaced'\n\nimport { ScalarDropdownButton, ScalarDropdownMenu } from '../ScalarDropdown'\nimport {\n ScalarListboxCheckbox,\n type ScalarListboxOption,\n} from '../ScalarListbox'\nimport ScalarMenuLink from './ScalarMenuLink.vue'\n\nexport type WorkspaceGroup = {\n /** Label for the group */\n label?: string\n /** Options within the group */\n options: ScalarListboxOption[]\n}\n\nconst { workspaceOptions } = defineProps<{\n /** The list of workspaces to choose from */\n workspaceOptions: WorkspaceGroup[]\n}>()\n\nconst emit = defineEmits<{\n /** Create a new workspace */\n (e: 'createWorkspace'): void\n}>()\n\nconst model = defineModel<string | undefined>()\n\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <DropdownMenu.Sub>\n <ScalarMenuLink\n :is=\"DropdownMenu.SubTrigger\"\n :icon=\"ScalarIconSwap\"\n v-bind=\"$attrs\">\n <div>Change workspace</div>\n <ScalarIconCaretRight\n class=\"ml-auto text-c-2 -mr-0.25 size-3\"\n weight=\"bold\" />\n </ScalarMenuLink>\n\n <DropdownMenu.Portal>\n <DropdownMenu.SubContent\n :as=\"ScalarDropdownMenu\"\n class=\"max-h-radix-popper z-context-plus\"\n :sideOffset=\"3\">\n <DropdownMenu.RadioGroup\n v-model=\"model\"\n class=\"contents\">\n <template\n v-for=\"(group, groupIndex) in workspaceOptions\"\n :key=\"groupIndex\">\n <!-- Group label (only shown if there's a label) -->\n <DropdownMenu.Label\n v-if=\"group.label\"\n class=\"px-3 py-1.5 text-xs font-medium text-c-3 select-none\">\n {{ group.label }}\n </DropdownMenu.Label>\n\n <!-- Group items -->\n <DropdownMenu.RadioItem\n v-for=\"w in group.options\"\n :key=\"w.id\"\n :as=\"ScalarDropdownButton\"\n class=\"group/item flex items-center\"\n :value=\"w.id\">\n <div class=\"flex h-full items-center gap-1 flex-1 truncate\">\n {{ w.label }}\n </div>\n <ScalarListboxCheckbox\n class=\"ml-auto\"\n :selected=\"w.id === model\" />\n </DropdownMenu.RadioItem>\n\n <!-- Group separator (only between groups, not after the last one) -->\n <DropdownMenu.Separator\n v-if=\"groupIndex < workspaceOptions.length - 1\"\n class=\"h-px bg-b-3 my-1.5\" />\n </template>\n </DropdownMenu.RadioGroup>\n\n <DropdownMenu.Item\n :as=\"ScalarDropdownButton\"\n class=\"flex items-center\"\n @click=\"emit('createWorkspace')\">\n <ScalarIconPlus\n class=\"bg-b-3 -ml-0.75 rounded p-1 size-5 text-c-3\"\n weight=\"bold\" />\n Create workspace\n </DropdownMenu.Item>\n </DropdownMenu.SubContent>\n </DropdownMenu.Portal>\n </DropdownMenu.Sub>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAuCA,MAAM,OAAO;EAKb,MAAM,QAAQ,SAA+B,SAAA,aAAC;;uBAK5C,YA8DmB,MAAA,aAAA,CAAA,KAAA,MAAA;2BArDA,CARjB,YAQiB,wBARjB,WAQiB;KAPd,IAAI,MAAA,aAAY,CAAC;KACjB,MAAM,MAAA,eAAc;OACbA,KAAAA,OAAM,EAAA;4BACa,CAAA,OAAA,OAAA,OAAA,KAA3B,mBAA2B,OAAA,MAAtB,oBAAgB,GAAA,GACrB,YAEkB,MAAA,qBAAA,EAAA;MADhB,OAAM;MACN,QAAO;;;4BAGX,YAkDsB,MAAA,aAAA,CAAA,QAAA,MAAA;4BADM,CAhD1B,YAgD0B,MAAA,aAAA,CAAA,YAAA;MA/CvB,IAAI,MAAA,2BAAkB;MACvB,OAAM;MACL,YAAY;;6BAkCa,CAjC1B,YAiC0B,MAAA,aAAA,CAAA,YAAA;mBAhCf,MAAA;0EAAK,QAAA;OACd,OAAM;;8BAE2C,EAAA,UAAA,KAAA,EADjD,mBA6BW,UAAA,MAAA,WA5BqB,QAAA,mBAAtB,OAAO,eAAU;gEACnB,YAAU,EAAA;SAGR,MAAM,SAAA,WAAA,EADd,YAIqB,MAAA,aAAA,CAAA,OAAA;;UAFnB,OAAM;;iCACW,CAAA,gBAAA,gBAAd,MAAM,MAAK,EAAA,EAAA,CAAA,CAAA;;;2BAIhB,mBAYyB,UAAA,MAAA,WAXX,MAAM,UAAX,MAAC;8BADV,YAYyB,MAAA,aAAA,CAAA,WAAA;WAVtB,KAAK,EAAE;WACP,IAAI,MAAA,6BAAoB;WACzB,OAAM;WACL,OAAO,EAAE;;kCAGJ,CAFN,mBAEM,OAFN,YAEM,gBADD,EAAE,MAAK,EAAA,EAAA,EAEZ,YAE+B,MAAA,8BAAA,EAAA;YAD7B,OAAM;YACL,UAAU,EAAE,OAAO,MAAA;;;;;SAKhB,aAAa,QAAA,iBAAiB,SAAM,KAAA,WAAA,EAD5C,YAE+B,MAAA,aAAA,CAAA,WAAA;;UAA7B,OAAM;;;;;6BAIZ,YAQoB,MAAA,aAAA,CAAA,MAAA;OAPjB,IAAI,MAAA,6BAAoB;OACzB,OAAM;OACL,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,kBAAA;;8BAGM,CAFlB,YAEkB,MAAA,eAAA,EAAA;QADhB,OAAM;QACN,QAAO;qDAAS,sBAEpB,GAAA,EAAA,CAAA"}
|
|
@@ -1,11 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scalar Modal component
|
|
3
|
+
*
|
|
4
|
+
* A dialog overlay with configurable size and variant.
|
|
5
|
+
* Use the {@link useModal} hook to control the open state.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* <ScalarModal :state="modal" title="My Modal">
|
|
9
|
+
* Modal content
|
|
10
|
+
* </ScalarModal>
|
|
11
|
+
*/
|
|
12
|
+
declare const _default: typeof __VLS_export;
|
|
13
|
+
export default _default;
|
|
1
14
|
/** Hook for creating a reactive modal state */
|
|
2
15
|
export declare function useModal(): {
|
|
3
16
|
open: boolean;
|
|
4
17
|
show: () => void;
|
|
5
18
|
hide: () => void;
|
|
6
19
|
};
|
|
7
|
-
declare const _default: typeof __VLS_export;
|
|
8
|
-
export default _default;
|
|
9
20
|
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
10
21
|
state: ReturnType<typeof useModal>;
|
|
11
22
|
title?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarModal.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarModal/ScalarModal.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarModal.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarModal/ScalarModal.vue"],"names":[],"mappings":"AAyOA;;;;;;;;;;GAUG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAIzC,+CAA+C;AAC/C,wBAAgB,QAAQ;;;;EAUvB;AACD,QAAA,MAAM,YAAY;WAIT,UAAU,CAAC,OAAO,QAAQ,CAAC;YAC1B,MAAM;gBACF,MAAM;eACP,MAAM;;;;;;WAHV,UAAU,CAAC,OAAO,QAAQ,CAAC;YAC1B,MAAM;gBACF,MAAM;eACP,MAAM;;;;;;cAqOL,CAAC,KAAK,IAAiB,KAAK,GAAG;;cAC/B,CAAC,KAAK,IAAiB,KAAK,GAAG;EAUzC,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export
|
|
|
2
2
|
import ScalarModal_vue_vue_type_script_setup_true_lang_default from "./ScalarModal.vue.script.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
//#region src/components/ScalarModal/ScalarModal.vue
|
|
5
|
-
var ScalarModal_default = /* @__PURE__ */ _plugin_vue_export_helper_default(ScalarModal_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-
|
|
5
|
+
var ScalarModal_default = /* @__PURE__ */ _plugin_vue_export_helper_default(ScalarModal_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-5bb1dcc2"]]);
|
|
6
6
|
//#endregion
|
|
7
7
|
export { ScalarModal_default as default };
|
|
8
8
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarModal.vue.js","names":[],"sources":["../../../src/components/ScalarModal/ScalarModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Dialog, DialogPanel, DialogTitle } from '@headlessui/vue'\nimport { ScalarIconX } from '@scalar/icons'\nimport { cva, cx } from '@scalar/use-hooks/useBindCx'\nimport type { VariantProps } from 'cva'\nimport { reactive } from 'vue'\n\nimport { ScalarIconButton } from '../ScalarIconButton'\n\ntype ModalVariants = VariantProps<typeof modal>\n\nconst { size = 'md' } = defineProps<{\n state: ReturnType<typeof useModal>\n title?: string\n bodyClass?: string\n maxWidth?: string\n size?: ModalVariants['size']\n variant?: ModalVariants['variant']\n}>()\n\nconst emit = defineEmits<{\n (event: 'close'): void\n}>()\n\nconst modal = cva({\n base: [\n 'scalar-modal',\n 'flex flex-col relative mb-0 rounded-lg bg-b-1 p-0 text-left leading-snug text-c-1 opacity-0 w-[calc(100vw-12px)] md:w-[calc(100vw-16px)] lg:w-[calc(100vw-32px)]',\n ].join(' '),\n variants: {\n size: {\n xxs: 'mt-[20svh] max-h-[60svh] max-w-[360px]',\n xs: 'mt-[20svh] max-h-[60svh] max-w-[480px]',\n sm: 'mt-[20svh] max-h-[60svh] max-w-[540px]',\n md: 'mt-[20svh] max-h-[60svh] max-w-[640px]',\n lg: 'm-auto max-h-[80svh] max-w-[800px]',\n xl: 'm-auto max-h-[90svh] max-w-[1000px]',\n full: 'full-size-styles max-h-dvh mt-0 lg:w-full',\n },\n variant: {\n form: 'scalar-modal-form',\n search: 'scalar-modal-search mt-[15svh] max-h-[60svh] max-w-[540px]',\n error: 'scalar-modal-error',\n },\n },\n})\nconst body = cva({\n base: ['scalar-modal-body', 'relative flex-1 min-h-0 p-3'].join(' '),\n variants: {\n variant: {\n form: 'overflow-visible',\n search: 'flex flex-col !m-0 overflow-hidden p-0',\n error: 'overflow-y-scroll',\n },\n size: {\n xxs: '',\n xs: '',\n sm: '',\n md: '',\n lg: '',\n xl: 'm-0 p-0',\n full: ' rounded-none',\n },\n },\n})\n</script>\n<script lang=\"ts\">\n/** Hook for creating a reactive modal state */\nexport function useModal() {\n return reactive({\n open: false,\n show() {\n this.open = true\n },\n hide() {\n this.open = false\n },\n })\n}\n</script>\n<template>\n <Dialog\n :open=\"state.open\"\n @close=\"\n () => {\n state.hide()\n emit('close')\n }\n \">\n <div\n :class=\"\n cx(\n size === 'full' ? 'scalar-modal-layout-full' : 'scalar-modal-layout',\n 'fixed left-0 top-0 flex items-start justify-center',\n 'z-overlay h-dvh w-dvw',\n 'bg-backdrop opacity-0 dark:bg-backdrop-dark',\n size === 'full' && 'flex',\n )\n \">\n <DialogPanel\n :class=\"modal({ size, variant })\"\n :style=\"{ maxWidth }\">\n <DialogTitle\n v-if=\"title\"\n class=\"scalar-modal-header m-0 -mb-1 rounded-lg pt-3 px-3 text-left text-sm font-medium text-c-1\">\n {{ title }}\n </DialogTitle>\n <div\n v-if=\"size === 'full'\"\n :class=\"bodyClass\">\n <slot />\n </div>\n <div\n v-else\n :class=\"cx(body({ size, variant }), bodyClass)\">\n <slot />\n </div>\n </DialogPanel>\n <div\n v-if=\"size === 'full'\"\n class=\"close-button z-10 fixed right-2 top-2\">\n <ScalarIconButton\n class=\"hover:bg-b-3 focus:outline-none\"\n :icon=\"ScalarIconX\"\n label=\"Close modal\"\n @click=\"state.hide()\" />\n </div>\n </div>\n </Dialog>\n</template>\n<style scoped>\n@reference '../../style.css';\n\n.scalar-modal-layout {\n animation: fadein-layout ease-in-out 0.3s forwards;\n}\n.scalar-modal {\n animation: fadein-modal ease-in-out 0.3s forwards;\n animation-delay: 0.1s;\n box-shadow: var(--scalar-shadow-2);\n transform: translate3d(0, 10px, 0);\n}\n.scalar-modal-layout-full {\n opacity: 1 !important;\n background: transparent !important;\n}\n.modal-content-search .modal-body {\n padding: 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n max-height: 440px;\n}\n/*\n * Allow the modal to fill more space on\n * very short (or very zoomed in) screens\n */\n@variant zoomed {\n .scalar-modal-layout .scalar-modal {\n margin-top: 5svh;\n max-height: 90svh;\n }\n}\n@keyframes fadein-layout {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes fadein-modal {\n 0% {\n opacity: 0;\n transform: translate3d(0, 10px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n}\n.full-size-styles {\n transform: translate3d(0, 0, 0);\n animation: fadein-layout ease-in-out 0.3s forwards;\n max-height: 100% !important;\n top: 0 !important;\n left: 0;\n position: absolute !important;\n margin: initial;\n border-radius: 0 !important;\n background-color: var(--scalar-background-1) !important;\n box-shadow: none !important;\n border-right: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n@variant md {\n .full-size-styles {\n width: 50dvw !important;\n }\n}\n.full-size-styles:after {\n content: '';\n width: 50dvw;\n height: 100dvh;\n position: absolute;\n right: -50dvw;\n top: 0;\n}\n</style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ScalarModal.vue.js","names":[],"sources":["../../../src/components/ScalarModal/ScalarModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Dialog, DialogPanel, DialogTitle } from '@headlessui/vue'\nimport { ScalarIconX } from '@scalar/icons'\nimport { cva, cx } from '@scalar/use-hooks/useBindCx'\nimport type { VariantProps } from 'cva'\nimport { reactive } from 'vue'\n\nimport { ScalarIconButton } from '../ScalarIconButton'\n\ntype ModalVariants = VariantProps<typeof modal>\n\nconst { size = 'md' } = defineProps<{\n state: ReturnType<typeof useModal>\n title?: string\n bodyClass?: string\n maxWidth?: string\n size?: ModalVariants['size']\n variant?: ModalVariants['variant']\n}>()\n\nconst emit = defineEmits<{\n (event: 'close'): void\n}>()\n\nconst modal = cva({\n base: [\n 'scalar-modal',\n 'flex flex-col relative mb-0 rounded-lg bg-b-1 p-0 text-left leading-snug text-c-1 opacity-0 w-[calc(100vw-12px)] md:w-[calc(100vw-16px)] lg:w-[calc(100vw-32px)]',\n ].join(' '),\n variants: {\n size: {\n xxs: 'mt-[20svh] max-h-[60svh] max-w-[360px]',\n xs: 'mt-[20svh] max-h-[60svh] max-w-[480px]',\n sm: 'mt-[20svh] max-h-[60svh] max-w-[540px]',\n md: 'mt-[20svh] max-h-[60svh] max-w-[640px]',\n lg: 'm-auto max-h-[80svh] max-w-[800px]',\n xl: 'm-auto max-h-[90svh] max-w-[1000px]',\n full: 'full-size-styles max-h-dvh mt-0 lg:w-full',\n },\n variant: {\n form: 'scalar-modal-form',\n search: 'scalar-modal-search mt-[15svh] max-h-[60svh] max-w-[540px]',\n error: 'scalar-modal-error',\n },\n },\n})\nconst body = cva({\n base: ['scalar-modal-body', 'relative flex-1 min-h-0 p-3'].join(' '),\n variants: {\n variant: {\n form: 'overflow-visible',\n search: 'flex flex-col !m-0 overflow-hidden p-0',\n error: 'overflow-y-scroll',\n },\n size: {\n xxs: '',\n xs: '',\n sm: '',\n md: '',\n lg: '',\n xl: 'm-0 p-0',\n full: ' rounded-none',\n },\n },\n})\n</script>\n<script lang=\"ts\">\n/**\n * Scalar Modal component\n *\n * A dialog overlay with configurable size and variant.\n * Use the {@link useModal} hook to control the open state.\n *\n * @example\n * <ScalarModal :state=\"modal\" title=\"My Modal\">\n * Modal content\n * </ScalarModal>\n */\nexport default {}\n\n/** Hook for creating a reactive modal state */\nexport function useModal() {\n return reactive({\n open: false,\n show() {\n this.open = true\n },\n hide() {\n this.open = false\n },\n })\n}\n</script>\n<template>\n <Dialog\n :open=\"state.open\"\n @close=\"\n () => {\n state.hide()\n emit('close')\n }\n \">\n <div\n :class=\"\n cx(\n size === 'full' ? 'scalar-modal-layout-full' : 'scalar-modal-layout',\n 'fixed left-0 top-0 flex items-start justify-center',\n 'z-overlay h-dvh w-dvw',\n 'bg-backdrop opacity-0 dark:bg-backdrop-dark',\n size === 'full' && 'flex',\n )\n \">\n <DialogPanel\n :class=\"modal({ size, variant })\"\n :style=\"{ maxWidth }\">\n <DialogTitle\n v-if=\"title\"\n class=\"scalar-modal-header m-0 -mb-1 rounded-lg pt-3 px-3 text-left text-sm font-medium text-c-1\">\n {{ title }}\n </DialogTitle>\n <div\n v-if=\"size === 'full'\"\n :class=\"bodyClass\">\n <slot />\n </div>\n <div\n v-else\n :class=\"cx(body({ size, variant }), bodyClass)\">\n <slot />\n </div>\n </DialogPanel>\n <div\n v-if=\"size === 'full'\"\n class=\"close-button z-10 fixed right-2 top-2\">\n <ScalarIconButton\n class=\"hover:bg-b-3 focus:outline-none\"\n :icon=\"ScalarIconX\"\n label=\"Close modal\"\n @click=\"state.hide()\" />\n </div>\n </div>\n </Dialog>\n</template>\n<style scoped>\n@reference '../../style.css';\n\n.scalar-modal-layout {\n animation: fadein-layout ease-in-out 0.3s forwards;\n}\n.scalar-modal {\n animation: fadein-modal ease-in-out 0.3s forwards;\n animation-delay: 0.1s;\n box-shadow: var(--scalar-shadow-2);\n transform: translate3d(0, 10px, 0);\n}\n.scalar-modal-layout-full {\n opacity: 1 !important;\n background: transparent !important;\n}\n.modal-content-search .modal-body {\n padding: 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n max-height: 440px;\n}\n/*\n * Allow the modal to fill more space on\n * very short (or very zoomed in) screens\n */\n@variant zoomed {\n .scalar-modal-layout .scalar-modal {\n margin-top: 5svh;\n max-height: 90svh;\n }\n}\n@keyframes fadein-layout {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes fadein-modal {\n 0% {\n opacity: 0;\n transform: translate3d(0, 10px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n}\n.full-size-styles {\n transform: translate3d(0, 0, 0);\n animation: fadein-layout ease-in-out 0.3s forwards;\n max-height: 100% !important;\n top: 0 !important;\n left: 0;\n position: absolute !important;\n margin: initial;\n border-radius: 0 !important;\n background-color: var(--scalar-background-1) !important;\n box-shadow: none !important;\n border-right: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n@variant md {\n .full-size-styles {\n width: 50dvw !important;\n }\n}\n.full-size-styles:after {\n content: '';\n width: 50dvw;\n height: 100dvh;\n position: absolute;\n right: -50dvw;\n top: 0;\n}\n</style>\n"],"mappings":""}
|
|
@@ -8,6 +8,18 @@ var _hoisted_1 = {
|
|
|
8
8
|
key: 0,
|
|
9
9
|
class: "close-button z-10 fixed right-2 top-2"
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Scalar Modal component
|
|
13
|
+
*
|
|
14
|
+
* A dialog overlay with configurable size and variant.
|
|
15
|
+
* Use the {@link useModal} hook to control the open state.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* <ScalarModal :state="modal" title="My Modal">
|
|
19
|
+
* Modal content
|
|
20
|
+
* </ScalarModal>
|
|
21
|
+
*/
|
|
22
|
+
var __default__ = {};
|
|
11
23
|
/** Hook for creating a reactive modal state */
|
|
12
24
|
function useModal() {
|
|
13
25
|
return reactive({
|
|
@@ -21,6 +33,7 @@ function useModal() {
|
|
|
21
33
|
});
|
|
22
34
|
}
|
|
23
35
|
var ScalarModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
36
|
+
...__default__,
|
|
24
37
|
__name: "ScalarModal",
|
|
25
38
|
props: {
|
|
26
39
|
state: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarModal.vue.script.js","names":[],"sources":["../../../src/components/ScalarModal/ScalarModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Dialog, DialogPanel, DialogTitle } from '@headlessui/vue'\nimport { ScalarIconX } from '@scalar/icons'\nimport { cva, cx } from '@scalar/use-hooks/useBindCx'\nimport type { VariantProps } from 'cva'\nimport { reactive } from 'vue'\n\nimport { ScalarIconButton } from '../ScalarIconButton'\n\ntype ModalVariants = VariantProps<typeof modal>\n\nconst { size = 'md' } = defineProps<{\n state: ReturnType<typeof useModal>\n title?: string\n bodyClass?: string\n maxWidth?: string\n size?: ModalVariants['size']\n variant?: ModalVariants['variant']\n}>()\n\nconst emit = defineEmits<{\n (event: 'close'): void\n}>()\n\nconst modal = cva({\n base: [\n 'scalar-modal',\n 'flex flex-col relative mb-0 rounded-lg bg-b-1 p-0 text-left leading-snug text-c-1 opacity-0 w-[calc(100vw-12px)] md:w-[calc(100vw-16px)] lg:w-[calc(100vw-32px)]',\n ].join(' '),\n variants: {\n size: {\n xxs: 'mt-[20svh] max-h-[60svh] max-w-[360px]',\n xs: 'mt-[20svh] max-h-[60svh] max-w-[480px]',\n sm: 'mt-[20svh] max-h-[60svh] max-w-[540px]',\n md: 'mt-[20svh] max-h-[60svh] max-w-[640px]',\n lg: 'm-auto max-h-[80svh] max-w-[800px]',\n xl: 'm-auto max-h-[90svh] max-w-[1000px]',\n full: 'full-size-styles max-h-dvh mt-0 lg:w-full',\n },\n variant: {\n form: 'scalar-modal-form',\n search: 'scalar-modal-search mt-[15svh] max-h-[60svh] max-w-[540px]',\n error: 'scalar-modal-error',\n },\n },\n})\nconst body = cva({\n base: ['scalar-modal-body', 'relative flex-1 min-h-0 p-3'].join(' '),\n variants: {\n variant: {\n form: 'overflow-visible',\n search: 'flex flex-col !m-0 overflow-hidden p-0',\n error: 'overflow-y-scroll',\n },\n size: {\n xxs: '',\n xs: '',\n sm: '',\n md: '',\n lg: '',\n xl: 'm-0 p-0',\n full: ' rounded-none',\n },\n },\n})\n</script>\n<script lang=\"ts\">\n/** Hook for creating a reactive modal state */\nexport function useModal() {\n return reactive({\n open: false,\n show() {\n this.open = true\n },\n hide() {\n this.open = false\n },\n })\n}\n</script>\n<template>\n <Dialog\n :open=\"state.open\"\n @close=\"\n () => {\n state.hide()\n emit('close')\n }\n \">\n <div\n :class=\"\n cx(\n size === 'full' ? 'scalar-modal-layout-full' : 'scalar-modal-layout',\n 'fixed left-0 top-0 flex items-start justify-center',\n 'z-overlay h-dvh w-dvw',\n 'bg-backdrop opacity-0 dark:bg-backdrop-dark',\n size === 'full' && 'flex',\n )\n \">\n <DialogPanel\n :class=\"modal({ size, variant })\"\n :style=\"{ maxWidth }\">\n <DialogTitle\n v-if=\"title\"\n class=\"scalar-modal-header m-0 -mb-1 rounded-lg pt-3 px-3 text-left text-sm font-medium text-c-1\">\n {{ title }}\n </DialogTitle>\n <div\n v-if=\"size === 'full'\"\n :class=\"bodyClass\">\n <slot />\n </div>\n <div\n v-else\n :class=\"cx(body({ size, variant }), bodyClass)\">\n <slot />\n </div>\n </DialogPanel>\n <div\n v-if=\"size === 'full'\"\n class=\"close-button z-10 fixed right-2 top-2\">\n <ScalarIconButton\n class=\"hover:bg-b-3 focus:outline-none\"\n :icon=\"ScalarIconX\"\n label=\"Close modal\"\n @click=\"state.hide()\" />\n </div>\n </div>\n </Dialog>\n</template>\n<style scoped>\n@reference '../../style.css';\n\n.scalar-modal-layout {\n animation: fadein-layout ease-in-out 0.3s forwards;\n}\n.scalar-modal {\n animation: fadein-modal ease-in-out 0.3s forwards;\n animation-delay: 0.1s;\n box-shadow: var(--scalar-shadow-2);\n transform: translate3d(0, 10px, 0);\n}\n.scalar-modal-layout-full {\n opacity: 1 !important;\n background: transparent !important;\n}\n.modal-content-search .modal-body {\n padding: 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n max-height: 440px;\n}\n/*\n * Allow the modal to fill more space on\n * very short (or very zoomed in) screens\n */\n@variant zoomed {\n .scalar-modal-layout .scalar-modal {\n margin-top: 5svh;\n max-height: 90svh;\n }\n}\n@keyframes fadein-layout {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes fadein-modal {\n 0% {\n opacity: 0;\n transform: translate3d(0, 10px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n}\n.full-size-styles {\n transform: translate3d(0, 0, 0);\n animation: fadein-layout ease-in-out 0.3s forwards;\n max-height: 100% !important;\n top: 0 !important;\n left: 0;\n position: absolute !important;\n margin: initial;\n border-radius: 0 !important;\n background-color: var(--scalar-background-1) !important;\n box-shadow: none !important;\n border-right: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n@variant md {\n .full-size-styles {\n width: 50dvw !important;\n }\n}\n.full-size-styles:after {\n content: '';\n width: 50dvw;\n height: 100dvh;\n position: absolute;\n right: -50dvw;\n top: 0;\n}\n</style>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScalarModal.vue.script.js","names":[],"sources":["../../../src/components/ScalarModal/ScalarModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Dialog, DialogPanel, DialogTitle } from '@headlessui/vue'\nimport { ScalarIconX } from '@scalar/icons'\nimport { cva, cx } from '@scalar/use-hooks/useBindCx'\nimport type { VariantProps } from 'cva'\nimport { reactive } from 'vue'\n\nimport { ScalarIconButton } from '../ScalarIconButton'\n\ntype ModalVariants = VariantProps<typeof modal>\n\nconst { size = 'md' } = defineProps<{\n state: ReturnType<typeof useModal>\n title?: string\n bodyClass?: string\n maxWidth?: string\n size?: ModalVariants['size']\n variant?: ModalVariants['variant']\n}>()\n\nconst emit = defineEmits<{\n (event: 'close'): void\n}>()\n\nconst modal = cva({\n base: [\n 'scalar-modal',\n 'flex flex-col relative mb-0 rounded-lg bg-b-1 p-0 text-left leading-snug text-c-1 opacity-0 w-[calc(100vw-12px)] md:w-[calc(100vw-16px)] lg:w-[calc(100vw-32px)]',\n ].join(' '),\n variants: {\n size: {\n xxs: 'mt-[20svh] max-h-[60svh] max-w-[360px]',\n xs: 'mt-[20svh] max-h-[60svh] max-w-[480px]',\n sm: 'mt-[20svh] max-h-[60svh] max-w-[540px]',\n md: 'mt-[20svh] max-h-[60svh] max-w-[640px]',\n lg: 'm-auto max-h-[80svh] max-w-[800px]',\n xl: 'm-auto max-h-[90svh] max-w-[1000px]',\n full: 'full-size-styles max-h-dvh mt-0 lg:w-full',\n },\n variant: {\n form: 'scalar-modal-form',\n search: 'scalar-modal-search mt-[15svh] max-h-[60svh] max-w-[540px]',\n error: 'scalar-modal-error',\n },\n },\n})\nconst body = cva({\n base: ['scalar-modal-body', 'relative flex-1 min-h-0 p-3'].join(' '),\n variants: {\n variant: {\n form: 'overflow-visible',\n search: 'flex flex-col !m-0 overflow-hidden p-0',\n error: 'overflow-y-scroll',\n },\n size: {\n xxs: '',\n xs: '',\n sm: '',\n md: '',\n lg: '',\n xl: 'm-0 p-0',\n full: ' rounded-none',\n },\n },\n})\n</script>\n<script lang=\"ts\">\n/**\n * Scalar Modal component\n *\n * A dialog overlay with configurable size and variant.\n * Use the {@link useModal} hook to control the open state.\n *\n * @example\n * <ScalarModal :state=\"modal\" title=\"My Modal\">\n * Modal content\n * </ScalarModal>\n */\nexport default {}\n\n/** Hook for creating a reactive modal state */\nexport function useModal() {\n return reactive({\n open: false,\n show() {\n this.open = true\n },\n hide() {\n this.open = false\n },\n })\n}\n</script>\n<template>\n <Dialog\n :open=\"state.open\"\n @close=\"\n () => {\n state.hide()\n emit('close')\n }\n \">\n <div\n :class=\"\n cx(\n size === 'full' ? 'scalar-modal-layout-full' : 'scalar-modal-layout',\n 'fixed left-0 top-0 flex items-start justify-center',\n 'z-overlay h-dvh w-dvw',\n 'bg-backdrop opacity-0 dark:bg-backdrop-dark',\n size === 'full' && 'flex',\n )\n \">\n <DialogPanel\n :class=\"modal({ size, variant })\"\n :style=\"{ maxWidth }\">\n <DialogTitle\n v-if=\"title\"\n class=\"scalar-modal-header m-0 -mb-1 rounded-lg pt-3 px-3 text-left text-sm font-medium text-c-1\">\n {{ title }}\n </DialogTitle>\n <div\n v-if=\"size === 'full'\"\n :class=\"bodyClass\">\n <slot />\n </div>\n <div\n v-else\n :class=\"cx(body({ size, variant }), bodyClass)\">\n <slot />\n </div>\n </DialogPanel>\n <div\n v-if=\"size === 'full'\"\n class=\"close-button z-10 fixed right-2 top-2\">\n <ScalarIconButton\n class=\"hover:bg-b-3 focus:outline-none\"\n :icon=\"ScalarIconX\"\n label=\"Close modal\"\n @click=\"state.hide()\" />\n </div>\n </div>\n </Dialog>\n</template>\n<style scoped>\n@reference '../../style.css';\n\n.scalar-modal-layout {\n animation: fadein-layout ease-in-out 0.3s forwards;\n}\n.scalar-modal {\n animation: fadein-modal ease-in-out 0.3s forwards;\n animation-delay: 0.1s;\n box-shadow: var(--scalar-shadow-2);\n transform: translate3d(0, 10px, 0);\n}\n.scalar-modal-layout-full {\n opacity: 1 !important;\n background: transparent !important;\n}\n.modal-content-search .modal-body {\n padding: 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n max-height: 440px;\n}\n/*\n * Allow the modal to fill more space on\n * very short (or very zoomed in) screens\n */\n@variant zoomed {\n .scalar-modal-layout .scalar-modal {\n margin-top: 5svh;\n max-height: 90svh;\n }\n}\n@keyframes fadein-layout {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes fadein-modal {\n 0% {\n opacity: 0;\n transform: translate3d(0, 10px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n}\n.full-size-styles {\n transform: translate3d(0, 0, 0);\n animation: fadein-layout ease-in-out 0.3s forwards;\n max-height: 100% !important;\n top: 0 !important;\n left: 0;\n position: absolute !important;\n margin: initial;\n border-radius: 0 !important;\n background-color: var(--scalar-background-1) !important;\n box-shadow: none !important;\n border-right: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n@variant md {\n .full-size-styles {\n width: 50dvw !important;\n }\n}\n.full-size-styles:after {\n content: '';\n width: 50dvw;\n height: 100dvh;\n position: absolute;\n right: -50dvw;\n top: 0;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA8EA,IAAA,cAAe,EAAC;;AAGhB,SAAgB,WAAW;AACzB,QAAO,SAAS;EACd,MAAM;EACN,OAAO;AACL,QAAK,OAAO;;EAEd,OAAO;AACL,QAAK,OAAO;;EAEf,CAAA;;;;;;;;;;;;;;;EAtEH,MAAM,OAAO;EAIb,MAAM,QAAQ,IAAI;GAChB,MAAM,CACJ,gBACA,mKACD,CAAC,KAAK,IAAI;GACX,UAAU;IACR,MAAM;KACJ,KAAK;KACL,IAAI;KACJ,IAAI;KACJ,IAAI;KACJ,IAAI;KACJ,IAAI;KACJ,MAAM;KACP;IACD,SAAS;KACP,MAAM;KACN,QAAQ;KACR,OAAO;KACR;IACF;GACF,CAAA;EACD,MAAM,OAAO,IAAI;GACf,MAAM,CAAC,qBAAqB,8BAA8B,CAAC,KAAK,IAAI;GACpE,UAAU;IACR,SAAS;KACP,MAAM;KACN,QAAQ;KACR,OAAO;KACR;IACD,MAAM;KACJ,KAAK;KACL,IAAI;KACJ,IAAI;KACJ,IAAI;KACJ,IAAI;KACJ,IAAI;KACJ,MAAM;KACP;IACF;GACF,CAAA;;uBA8BC,YA+CS,MAAA,OAAA,EAAA;IA9CN,MAAM,QAAA,MAAM;IACZ,SAAK,OAAA,OAAA,OAAA,WAAA;AAAyB,aAAA,MAAM,MAAI;AAAW,UAAI,QAAA;;;2BA4ClD,CAtCN,mBAsCM,OAAA,EArCH,OAAK,eAAW,MAAA,GAAE,CAAY,QAAA,SAAI,SAAA,6BAAA,uBAAA,sDAAA,yBAAA,+CAAwO,QAAA,SAAI,UAAA,OAAA,CAAA,EAAA,EAAA,CAS/Q,YAkBc,MAAA,YAAA,EAAA;KAjBX,OAAK,eAAE,MAAA,MAAK,CAAA;MAAA,MAAG,QAAA;MAAI,SAAE,QAAA;MAAO,CAAA,CAAA;KAC5B,OAAK,eAAA,EAAA,UAAI,QAAA,UAAQ,CAAA;;4BAKJ,CAHN,QAAA,SAAA,WAAA,EADR,YAIc,MAAA,YAAA,EAAA;;MAFZ,OAAM;;6BACK,CAAA,gBAAA,gBAAR,QAAA,MAAK,EAAA,EAAA,CAAA,CAAA;;yCAGF,QAAA,SAAI,UAAA,WAAA,EADZ,mBAIM,OAAA;;MAFH,OAAK,eAAE,QAAA,UAAS;SACjB,WAAQ,KAAA,QAAA,WAAA,EAAA,EAAA,KAAA,GAAA,KAAA,CAAA,EAAA,EAAA,KAAA,WAAA,EAEV,mBAIM,OAAA;;MAFH,OAAK,eAAE,MAAA,GAAE,CAAC,MAAA,KAAI,CAAA;OAAA,MAAG,QAAA;OAAI,SAAE,QAAA;OAAO,CAAA,EAAK,QAAA,UAAS,CAAA;SAC7C,WAAQ,KAAA,QAAA,WAAA,EAAA,EAAA,KAAA,GAAA,KAAA,CAAA,EAAA,EAAA,EAAA,CAAA;;+BAIJ,QAAA,SAAI,UAAA,WAAA,EADZ,mBAQM,OARN,YAQM,CALJ,YAI0B,MAAA,yBAAA,EAAA;KAHxB,OAAM;KACL,MAAM,MAAA,YAAW;KAClB,OAAM;KACL,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,QAAA,MAAM,MAAI"}
|