@scalar/components 0.27.11 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/components/ScalarCodeBlock/ScalarCodeBlock.vue.d.ts.map +1 -1
  2. package/dist/components/ScalarCodeBlock/ScalarCodeBlock.vue.js.map +1 -1
  3. package/dist/components/ScalarCodeBlock/ScalarCodeBlock.vue.script.js +10 -2
  4. package/dist/components/ScalarCodeBlock/ScalarCodeBlock.vue.script.js.map +1 -1
  5. package/dist/components/ScalarCodeBlock/constants.d.ts +1 -0
  6. package/dist/components/ScalarCodeBlock/constants.d.ts.map +1 -1
  7. package/dist/components/ScalarCodeBlock/constants.js +1 -0
  8. package/dist/components/ScalarCodeBlock/constants.js.map +1 -1
  9. package/dist/components/ScalarHeader/ScalarHeader.vue.d.ts +21 -17
  10. package/dist/components/ScalarHeader/ScalarHeader.vue.d.ts.map +1 -1
  11. package/dist/components/ScalarHeader/ScalarHeader.vue.js.map +1 -1
  12. package/dist/components/ScalarHeader/ScalarHeader.vue.script.js +9 -13
  13. package/dist/components/ScalarHeader/ScalarHeader.vue.script.js.map +1 -1
  14. package/dist/components/ScalarHeader/ScalarHeaderColumn.vue.d.ts +29 -0
  15. package/dist/components/ScalarHeader/ScalarHeaderColumn.vue.d.ts.map +1 -0
  16. package/dist/components/ScalarHeader/ScalarHeaderColumn.vue.js +7 -0
  17. package/dist/components/ScalarHeader/ScalarHeaderColumn.vue.js.map +1 -0
  18. package/dist/components/ScalarHeader/ScalarHeaderColumn.vue.script.js +16 -0
  19. package/dist/components/ScalarHeader/ScalarHeaderColumn.vue.script.js.map +1 -0
  20. package/dist/components/ScalarHeader/index.d.ts +1 -0
  21. package/dist/components/ScalarHeader/index.d.ts.map +1 -1
  22. package/dist/components/ScalarHeader/index.js +2 -1
  23. package/dist/components/ScalarIcon/icons/index.d.ts +1 -1
  24. package/dist/components/ScalarIcon/icons/index.d.ts.map +1 -1
  25. package/dist/components/ScalarIcon/icons/programming-language-julia.svg.virtual.js +36 -0
  26. package/dist/components/ScalarIcon/icons/programming-language-julia.svg.virtual.js.map +1 -0
  27. package/dist/components/ScalarIcon/utils/index.js +2 -0
  28. package/dist/components/ScalarIcon/utils/index.js.map +1 -1
  29. package/dist/components/ScalarMenu/ScalarMenuButton.vue.d.ts.map +1 -1
  30. package/dist/components/ScalarMenu/ScalarMenuButton.vue.js.map +1 -1
  31. package/dist/components/ScalarMenu/ScalarMenuButton.vue.script.js +4 -1
  32. package/dist/components/ScalarMenu/ScalarMenuButton.vue.script.js.map +1 -1
  33. package/dist/components/ScalarSidebar/ScalarSidebarGroup.vue.d.ts.map +1 -1
  34. package/dist/components/ScalarSidebar/ScalarSidebarGroup.vue.js.map +1 -1
  35. package/dist/components/ScalarSidebar/ScalarSidebarGroup.vue.script.js +15 -16
  36. package/dist/components/ScalarSidebar/ScalarSidebarGroup.vue.script.js.map +1 -1
  37. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue.d.ts +64 -0
  38. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue.d.ts.map +1 -0
  39. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue.js +7 -0
  40. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue.js.map +1 -0
  41. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue.script.js +41 -0
  42. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue.script.js.map +1 -0
  43. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue.d.ts +16 -0
  44. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue.d.ts.map +1 -0
  45. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue.js +7 -0
  46. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue.js.map +1 -0
  47. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue.script.js +16 -0
  48. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue.script.js.map +1 -0
  49. package/dist/components/ScalarSidebar/index.d.ts +2 -0
  50. package/dist/components/ScalarSidebar/index.d.ts.map +1 -1
  51. package/dist/components/ScalarSidebar/index.js +3 -1
  52. package/dist/index.d.ts +2 -2
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +4 -1
  55. package/dist/style.css +5 -8
  56. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarCodeBlock.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCodeBlock/ScalarCodeBlock.vue"],"names":[],"mappings":"AAwKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAGlD;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;cAEN,MAAM,GAAG,MAAM;2BACF,MAAM;WACtB,mBAAmB,GAAG,MAAM;kBACrB,OAAO;sBACH,MAAM,GAAG,MAAM,EAAE;WAC5B,QAAQ,GAAG,OAAO,GAAG,KAAK;;IAWzB,+CAA+C;aACtC,MAAM,GAAG,MAAM;;cAjBtB,MAAM,GAAG,MAAM;2BACF,MAAM;WACtB,mBAAmB,GAAG,MAAM;kBACrB,OAAO;sBACH,MAAM,GAAG,MAAM,EAAE;WAC5B,QAAQ,GAAG,OAAO,GAAG,KAAK;;IAezB;;;;OAIG;0BACmB,MAAM;;cAzB1B,MAAM,GAAG,MAAM;2BACF,MAAM;WACtB,mBAAmB,GAAG,MAAM;kBACrB,OAAO;sBACH,MAAM,GAAG,MAAM,EAAE;WAC5B,QAAQ,GAAG,OAAO,GAAG,KAAK;;IAWzB,+CAA+C;aACtC,MAAM,GAAG,MAAM;;cAjBtB,MAAM,GAAG,MAAM;2BACF,MAAM;WACtB,mBAAmB,GAAG,MAAM;kBACrB,OAAO;sBACH,MAAM,GAAG,MAAM,EAAE;WAC5B,QAAQ,GAAG,OAAO,GAAG,KAAK;;IAezB;;;;OAIG;0BACmB,MAAM;kGA4KlC,CAAC"}
1
+ {"version":3,"file":"ScalarCodeBlock.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCodeBlock/ScalarCodeBlock.vue"],"names":[],"mappings":"AAmLA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAGlD;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;cAEN,MAAM,GAAG,MAAM;2BACF,MAAM;WACtB,mBAAmB,GAAG,MAAM;kBACrB,OAAO;sBACH,MAAM,GAAG,MAAM,EAAE;WAC5B,QAAQ,GAAG,OAAO,GAAG,KAAK;;IAWzB,+CAA+C;aACtC,MAAM,GAAG,MAAM;;cAjBtB,MAAM,GAAG,MAAM;2BACF,MAAM;WACtB,mBAAmB,GAAG,MAAM;kBACrB,OAAO;sBACH,MAAM,GAAG,MAAM,EAAE;WAC5B,QAAQ,GAAG,OAAO,GAAG,KAAK;;IAezB;;;;OAIG;0BACmB,MAAM;;cAzB1B,MAAM,GAAG,MAAM;2BACF,MAAM;WACtB,mBAAmB,GAAG,MAAM;kBACrB,OAAO;sBACH,MAAM,GAAG,MAAM,EAAE;WAC5B,QAAQ,GAAG,OAAO,GAAG,KAAK;;IAWzB,+CAA+C;aACtC,MAAM,GAAG,MAAM;;cAjBtB,MAAM,GAAG,MAAM;2BACF,MAAM;WACtB,mBAAmB,GAAG,MAAM;kBACrB,OAAO;sBACH,MAAM,GAAG,MAAM,EAAE;WAC5B,QAAQ,GAAG,OAAO,GAAG,KAAK;;IAezB;;;;OAIG;0BACmB,MAAM;kGAyLlC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarCodeBlock.vue.js","names":[],"sources":["../../../src/components/ScalarCodeBlock/ScalarCodeBlock.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Code Block component\n *\n * Renders syntax-highlighted code using highlight.js.\n * Supports line numbers, credential masking, and an optional copy button.\n *\n * @example\n * <ScalarCodeBlock content=\"const x = 1\" lang=\"javascript\" />\n */\nexport default {}\n</script>\n<script lang=\"ts\" setup>\nimport ScalarCopyBackdrop from '@/components/ScalarCopy/ScalarCopyBackdrop.vue'\nimport { standardLanguages, syntaxHighlight } from '@scalar/code-highlight'\nimport { prettyPrintJson } from '@scalar/helpers/json/pretty-print-json'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { computed, useId } from 'vue'\n\nimport { ScalarCodeBlockCopy } from '../ScalarCodeBlock'\nimport type { StandardLanguageKey } from './types'\n\ntype BaseProps = {\n content?: string | object\n prettyPrintedContent?: string\n lang?: StandardLanguageKey | string\n lineNumbers?: boolean\n hideCredentials?: string | string[]\n copy?: 'always' | 'hover' | false\n}\n\n/**\n * Uses highlight.js for syntax highlighting\n *\n * Requires at least one of content or prettyPrintedContent\n */\nconst {\n lang = 'plaintext',\n lineNumbers = false,\n copy = 'hover',\n content,\n prettyPrintedContent,\n hideCredentials,\n} = defineProps<\n BaseProps &\n (\n | {\n /** Raw unformatted object or string content */\n content: string | object\n }\n | {\n /**\n * Pre-pretty printed content string for better performance\n *\n * Avoids unnecessary costly re-serialization of large content\n */\n prettyPrintedContent: string\n }\n )\n>()\n\n/** Base id for the code block */\nconst id = useId()\n\n/** Formatted the content into an indented json string */\nconst prettyContent = computed(\n () => prettyPrintedContent || prettyPrintJson(content ?? ''),\n)\n\nconst highlightedCode = computed(() => {\n const html = syntaxHighlight(prettyContent.value, {\n lang: lang.trim(),\n languages: standardLanguages,\n lineNumbers: lineNumbers,\n maskCredentials: hideCredentials,\n })\n\n // Need to remove the wrapping <pre> element so we can use v-html without another wrapper\n return html.slice(5, -6)\n})\n\n/** Determine if the content is a single line */\nconst isOneLine = computed(() => !prettyContent.value.includes('\\n'))\n\nconst isContentValid = computed(() => {\n return (\n prettyContent.value !== null &&\n prettyContent.value !== 'null' &&\n prettyContent.value !== '404 Not Found'\n )\n})\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div\n v-bind=\"\n cx(\n 'scalar-code-block group/code-block flex flex-col',\n 'relative bg-b-1 min-h-0 min-w-0 focus-visible:outline',\n )\n \">\n <!-- Inherits the corners so the inset focus ring follows a rounded code block -->\n <div\n tabindex=\"0\"\n class=\"custom-scroll overflow-x-auto p-2 -outline-offset-2 rounded-[inherit] min-h-0 min-w-0 flex-1\">\n <pre\n :id=\"id\"\n class=\"m-0 bg-transparent text-nowrap whitespace-pre w-fit\"\n v-html=\"highlightedCode\" />\n </div>\n <ScalarCodeBlockCopy\n v-if=\"copy && isContentValid\"\n class=\"scalar-code-copy absolute\"\n :class=\"[\n isOneLine\n ? 'top-1/2 -translate-y-1/2 m-0 right-1'\n : 'top-2.5 right-2.5',\n { 'opacity-100': copy === 'always' },\n ]\"\n :content=\"prettyContent\"\n :showLang=\"!isOneLine\"\n :lang=\"lang\"\n :aria-controls=\"id\">\n <template #backdrop>\n <ScalarCopyBackdrop\n class=\"scalar-code-copy-backdrop\"\n :class=\"[\n isOneLine\n ? '-inset-y-0.75 -right-1 group-hocus-within/code-block:-left-0.5 left-3'\n : '-right-1.5 -top-1',\n ]\" />\n </template>\n </ScalarCodeBlockCopy>\n </div>\n</template>\n<style>\n@reference '../../style.css';\n@import '@scalar/code-highlight/css/code.css';\n\n/** Disable font ligatures so code renders with literal characters */\n.scalar-code-block pre {\n font-variant-ligatures: none;\n}\n\n/** Make the copy button label backdrop match the background */\n.scalar-code-block.bg-b-1 .scalar-code-copy-backdrop {\n @apply bg-b-1;\n}\n.scalar-code-block.bg-b-2 .scalar-code-copy-backdrop {\n @apply bg-b-2;\n}\n/** Make the copy button one shade darker than the background */\n.scalar-code-block.bg-b-2 .scalar-code-copy {\n @apply bg-b-3;\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ScalarCodeBlock.vue.js","names":[],"sources":["../../../src/components/ScalarCodeBlock/ScalarCodeBlock.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Code Block component\n *\n * Renders syntax-highlighted code using highlight.js.\n * Supports line numbers, credential masking, and an optional copy button.\n *\n * @example\n * <ScalarCodeBlock content=\"const x = 1\" lang=\"javascript\" />\n */\nexport default {}\n</script>\n<script lang=\"ts\" setup>\nimport ScalarCopyBackdrop from '@/components/ScalarCopy/ScalarCopyBackdrop.vue'\nimport { standardLanguages, syntaxHighlight } from '@scalar/code-highlight'\nimport { prettyPrintJson } from '@scalar/helpers/json/pretty-print-json'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { computed, useId } from 'vue'\n\nimport { ScalarCodeBlockCopy } from '../ScalarCodeBlock'\nimport type { StandardLanguageKey } from './types'\n\ntype BaseProps = {\n content?: string | object\n prettyPrintedContent?: string\n lang?: StandardLanguageKey | string\n lineNumbers?: boolean\n hideCredentials?: string | string[]\n copy?: 'always' | 'hover' | false\n}\n\n/**\n * Uses highlight.js for syntax highlighting\n *\n * Requires at least one of content or prettyPrintedContent\n */\nconst {\n lang = 'plaintext',\n lineNumbers = false,\n copy = 'hover',\n content,\n prettyPrintedContent,\n hideCredentials,\n} = defineProps<\n BaseProps &\n (\n | {\n /** Raw unformatted object or string content */\n content: string | object\n }\n | {\n /**\n * Pre-pretty printed content string for better performance\n *\n * Avoids unnecessary costly re-serialization of large content\n */\n prettyPrintedContent: string\n }\n )\n>()\n\n/** Base id for the code block */\nconst id = useId()\n\n/** Formatted the content into an indented json string */\nconst prettyContent = computed(\n () => prettyPrintedContent || prettyPrintJson(content ?? ''),\n)\n\nconst highlightedCode = computed(() => {\n const html = syntaxHighlight(prettyContent.value, {\n lang: lang.trim(),\n languages: standardLanguages,\n lineNumbers: lineNumbers,\n maskCredentials: hideCredentials,\n })\n\n // Need to remove the wrapping <pre> element so we can use v-html without another wrapper\n return html.slice(5, -6)\n})\n\n/** Determine if the content is a single line */\nconst isOneLine = computed(() => !prettyContent.value.includes('\\n'))\n\nconst isContentValid = computed(() => {\n return (\n prettyContent.value !== null &&\n prettyContent.value !== 'null' &&\n prettyContent.value !== '404 Not Found'\n )\n})\n\n/** Whether the copy button is rendered on top of the code */\nconst showCopy = computed(() => copy && isContentValid.value)\n\n/**\n * A one-liner has the copy button floating over the end of the line, so the line needs room to\n * scroll clear of the button. The padding goes on the `w-fit` <pre> because browsers disagree about\n * whether trailing padding on an `overflow-x` container is scrollable.\n */\nconst reserveCopySpace = computed(() => isOneLine.value && showCopy.value)\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div\n v-bind=\"\n cx(\n 'scalar-code-block group/code-block flex flex-col',\n 'relative bg-b-1 min-h-0 min-w-0 focus-visible:outline',\n )\n \">\n <!-- Inherits the corners so the inset focus ring follows a rounded code block -->\n <div\n tabindex=\"0\"\n class=\"custom-scroll overflow-x-auto p-2 -outline-offset-2 rounded-[inherit] min-h-0 min-w-0 flex-1\">\n <pre\n :id=\"id\"\n class=\"m-0 bg-transparent text-nowrap whitespace-pre w-fit\"\n :class=\"{ 'pr-6': reserveCopySpace }\"\n v-html=\"highlightedCode\" />\n </div>\n <ScalarCodeBlockCopy\n v-if=\"showCopy\"\n class=\"scalar-code-copy absolute\"\n :class=\"[\n isOneLine\n ? 'top-1/2 -translate-y-1/2 m-0 right-1'\n : 'top-2.5 right-2.5',\n { 'opacity-100': copy === 'always' },\n ]\"\n :content=\"prettyContent\"\n :showLang=\"!isOneLine\"\n :lang=\"lang\"\n :aria-controls=\"id\">\n <template #backdrop>\n <ScalarCopyBackdrop\n class=\"scalar-code-copy-backdrop\"\n :class=\"[\n isOneLine\n ? '-inset-y-0.75 -right-1 group-hocus-within/code-block:-left-0.5 left-3'\n : '-right-1.5 -top-1',\n ]\" />\n </template>\n </ScalarCodeBlockCopy>\n </div>\n</template>\n<style>\n@reference '../../style.css';\n@import '@scalar/code-highlight/css/code.css';\n\n/** Disable font ligatures so code renders with literal characters */\n.scalar-code-block pre {\n font-variant-ligatures: none;\n}\n\n/** Make the copy button label backdrop match the background */\n.scalar-code-block.bg-b-1 .scalar-code-copy-backdrop {\n @apply bg-b-1;\n}\n.scalar-code-block.bg-b-2 .scalar-code-copy-backdrop {\n @apply bg-b-2;\n}\n/** Make the copy button one shade darker than the background */\n.scalar-code-block.bg-b-2 .scalar-code-copy {\n @apply bg-b-3;\n}\n</style>\n"],"mappings":""}
@@ -45,13 +45,21 @@ var ScalarCodeBlock_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
45
45
  const isContentValid = computed(() => {
46
46
  return prettyContent.value !== null && prettyContent.value !== "null" && prettyContent.value !== "404 Not Found";
47
47
  });
48
+ /** Whether the copy button is rendered on top of the code */
49
+ const showCopy = computed(() => __props.copy && isContentValid.value);
50
+ /**
51
+ * A one-liner has the copy button floating over the end of the line, so the line needs room to
52
+ * scroll clear of the button. The padding goes on the `w-fit` <pre> because browsers disagree about
53
+ * whether trailing padding on an `overflow-x` container is scrollable.
54
+ */
55
+ const reserveCopySpace = computed(() => isOneLine.value && showCopy.value);
48
56
  const { cx } = useBindCx();
49
57
  return (_ctx, _cache) => {
50
58
  return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(unref(cx)("scalar-code-block group/code-block flex flex-col", "relative bg-b-1 min-h-0 min-w-0 focus-visible:outline"))), [createElementVNode("div", _hoisted_1, [createElementVNode("pre", {
51
59
  id: unref(id),
52
- class: "m-0 bg-transparent text-nowrap whitespace-pre w-fit",
60
+ class: normalizeClass(["m-0 bg-transparent text-nowrap whitespace-pre w-fit", { "pr-6": reserveCopySpace.value }]),
53
61
  innerHTML: highlightedCode.value
54
- }, null, 8, _hoisted_2)]), __props.copy && isContentValid.value ? (openBlock(), createBlock(unref(ScalarCodeBlockCopy_default), {
62
+ }, null, 10, _hoisted_2)]), showCopy.value ? (openBlock(), createBlock(unref(ScalarCodeBlockCopy_default), {
55
63
  key: 0,
56
64
  class: normalizeClass(["scalar-code-copy absolute", [isOneLine.value ? "top-1/2 -translate-y-1/2 m-0 right-1" : "top-2.5 right-2.5", { "opacity-100": __props.copy === "always" }]]),
57
65
  content: prettyContent.value,
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarCodeBlock.vue.script.js","names":[],"sources":["../../../src/components/ScalarCodeBlock/ScalarCodeBlock.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Code Block component\n *\n * Renders syntax-highlighted code using highlight.js.\n * Supports line numbers, credential masking, and an optional copy button.\n *\n * @example\n * <ScalarCodeBlock content=\"const x = 1\" lang=\"javascript\" />\n */\nexport default {}\n</script>\n<script lang=\"ts\" setup>\nimport ScalarCopyBackdrop from '@/components/ScalarCopy/ScalarCopyBackdrop.vue'\nimport { standardLanguages, syntaxHighlight } from '@scalar/code-highlight'\nimport { prettyPrintJson } from '@scalar/helpers/json/pretty-print-json'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { computed, useId } from 'vue'\n\nimport { ScalarCodeBlockCopy } from '../ScalarCodeBlock'\nimport type { StandardLanguageKey } from './types'\n\ntype BaseProps = {\n content?: string | object\n prettyPrintedContent?: string\n lang?: StandardLanguageKey | string\n lineNumbers?: boolean\n hideCredentials?: string | string[]\n copy?: 'always' | 'hover' | false\n}\n\n/**\n * Uses highlight.js for syntax highlighting\n *\n * Requires at least one of content or prettyPrintedContent\n */\nconst {\n lang = 'plaintext',\n lineNumbers = false,\n copy = 'hover',\n content,\n prettyPrintedContent,\n hideCredentials,\n} = defineProps<\n BaseProps &\n (\n | {\n /** Raw unformatted object or string content */\n content: string | object\n }\n | {\n /**\n * Pre-pretty printed content string for better performance\n *\n * Avoids unnecessary costly re-serialization of large content\n */\n prettyPrintedContent: string\n }\n )\n>()\n\n/** Base id for the code block */\nconst id = useId()\n\n/** Formatted the content into an indented json string */\nconst prettyContent = computed(\n () => prettyPrintedContent || prettyPrintJson(content ?? ''),\n)\n\nconst highlightedCode = computed(() => {\n const html = syntaxHighlight(prettyContent.value, {\n lang: lang.trim(),\n languages: standardLanguages,\n lineNumbers: lineNumbers,\n maskCredentials: hideCredentials,\n })\n\n // Need to remove the wrapping <pre> element so we can use v-html without another wrapper\n return html.slice(5, -6)\n})\n\n/** Determine if the content is a single line */\nconst isOneLine = computed(() => !prettyContent.value.includes('\\n'))\n\nconst isContentValid = computed(() => {\n return (\n prettyContent.value !== null &&\n prettyContent.value !== 'null' &&\n prettyContent.value !== '404 Not Found'\n )\n})\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div\n v-bind=\"\n cx(\n 'scalar-code-block group/code-block flex flex-col',\n 'relative bg-b-1 min-h-0 min-w-0 focus-visible:outline',\n )\n \">\n <!-- Inherits the corners so the inset focus ring follows a rounded code block -->\n <div\n tabindex=\"0\"\n class=\"custom-scroll overflow-x-auto p-2 -outline-offset-2 rounded-[inherit] min-h-0 min-w-0 flex-1\">\n <pre\n :id=\"id\"\n class=\"m-0 bg-transparent text-nowrap whitespace-pre w-fit\"\n v-html=\"highlightedCode\" />\n </div>\n <ScalarCodeBlockCopy\n v-if=\"copy && isContentValid\"\n class=\"scalar-code-copy absolute\"\n :class=\"[\n isOneLine\n ? 'top-1/2 -translate-y-1/2 m-0 right-1'\n : 'top-2.5 right-2.5',\n { 'opacity-100': copy === 'always' },\n ]\"\n :content=\"prettyContent\"\n :showLang=\"!isOneLine\"\n :lang=\"lang\"\n :aria-controls=\"id\">\n <template #backdrop>\n <ScalarCopyBackdrop\n class=\"scalar-code-copy-backdrop\"\n :class=\"[\n isOneLine\n ? '-inset-y-0.75 -right-1 group-hocus-within/code-block:-left-0.5 left-3'\n : '-right-1.5 -top-1',\n ]\" />\n </template>\n </ScalarCodeBlockCopy>\n </div>\n</template>\n<style>\n@reference '../../style.css';\n@import '@scalar/code-highlight/css/code.css';\n\n/** Disable font ligatures so code renders with literal characters */\n.scalar-code-block pre {\n font-variant-ligatures: none;\n}\n\n/** Make the copy button label backdrop match the background */\n.scalar-code-block.bg-b-1 .scalar-code-copy-backdrop {\n @apply bg-b-1;\n}\n.scalar-code-block.bg-b-2 .scalar-code-copy-backdrop {\n @apply bg-b-2;\n}\n/** Make the copy button one shade darker than the background */\n.scalar-code-block.bg-b-2 .scalar-code-copy {\n @apply bg-b-3;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8DA,MAAM,KAAK,MAAM;;EAGjB,MAAM,gBAAgB,eACd,QAAA,wBAAwB,gBAAgB,QAAA,WAAW,EAAE,CAC7D;EAEA,MAAM,kBAAkB,eAAe;GASrC,OARa,gBAAgB,cAAc,OAAO;IAChD,MAAM,QAAA,KAAK,KAAK;IAChB,WAAW;IACX,aAAa,QAAA;IACb,iBAAiB,QAAA;GACnB,CAGO,CAAA,CAAK,MAAM,GAAG,EAAE;EACzB,CAAC;;EAGD,MAAM,YAAY,eAAe,CAAC,cAAc,MAAM,SAAS,IAAI,CAAC;EAEpE,MAAM,iBAAiB,eAAe;GACpC,OACE,cAAc,UAAU,QACxB,cAAc,UAAU,UACxB,cAAc,UAAU;EAE5B,CAAC;EAGD,MAAM,EAAE,OAAO,UAAU;;uBAGvB,mBAuCM,OAAA,eAAA,mBAtCW,MAAA,EAAA,CAAE,CAAA,oDAAA,uDAAA,CAAA,CAAA,GAAA,CAOjB,mBAOM,OAPN,YAOM,CAJJ,mBAG6B,OAAA;IAF1B,IAAI,MAAA,EAAA;IACL,OAAM;IACN,WAAQ,gBAAA;8BAGJ,QAAA,QAAQ,eAAA,SAAA,UAAA,GADhB,YAsBsB,MAAA,2BAAA,GAAA;;IApBpB,OAAK,eAAA,CAAC,6BAA2B,CACf,UAAA,QAAA,yCAAA,qBAAA,EAAA,eAAuH,QAAA,SAAI,SAAA,CAAA,CAAA,CAAA;IAM5I,SAAS,cAAA;IACT,UAAQ,CAAG,UAAA;IACX,MAAM,QAAA;IACN,iBAAe,MAAA,EAAA;;IACL,UAAQ,cAOV,CANP,YAMO,4BAAA,EALL,OAAK,eAAA,CAAC,6BAA2B,CACX,UAAA,QAAA,0EAAA,mBAAA,CAAA,CAAA,EAAA,GAAA,MAAA,GAAA,CAAA,OAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ScalarCodeBlock.vue.script.js","names":[],"sources":["../../../src/components/ScalarCodeBlock/ScalarCodeBlock.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Code Block component\n *\n * Renders syntax-highlighted code using highlight.js.\n * Supports line numbers, credential masking, and an optional copy button.\n *\n * @example\n * <ScalarCodeBlock content=\"const x = 1\" lang=\"javascript\" />\n */\nexport default {}\n</script>\n<script lang=\"ts\" setup>\nimport ScalarCopyBackdrop from '@/components/ScalarCopy/ScalarCopyBackdrop.vue'\nimport { standardLanguages, syntaxHighlight } from '@scalar/code-highlight'\nimport { prettyPrintJson } from '@scalar/helpers/json/pretty-print-json'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { computed, useId } from 'vue'\n\nimport { ScalarCodeBlockCopy } from '../ScalarCodeBlock'\nimport type { StandardLanguageKey } from './types'\n\ntype BaseProps = {\n content?: string | object\n prettyPrintedContent?: string\n lang?: StandardLanguageKey | string\n lineNumbers?: boolean\n hideCredentials?: string | string[]\n copy?: 'always' | 'hover' | false\n}\n\n/**\n * Uses highlight.js for syntax highlighting\n *\n * Requires at least one of content or prettyPrintedContent\n */\nconst {\n lang = 'plaintext',\n lineNumbers = false,\n copy = 'hover',\n content,\n prettyPrintedContent,\n hideCredentials,\n} = defineProps<\n BaseProps &\n (\n | {\n /** Raw unformatted object or string content */\n content: string | object\n }\n | {\n /**\n * Pre-pretty printed content string for better performance\n *\n * Avoids unnecessary costly re-serialization of large content\n */\n prettyPrintedContent: string\n }\n )\n>()\n\n/** Base id for the code block */\nconst id = useId()\n\n/** Formatted the content into an indented json string */\nconst prettyContent = computed(\n () => prettyPrintedContent || prettyPrintJson(content ?? ''),\n)\n\nconst highlightedCode = computed(() => {\n const html = syntaxHighlight(prettyContent.value, {\n lang: lang.trim(),\n languages: standardLanguages,\n lineNumbers: lineNumbers,\n maskCredentials: hideCredentials,\n })\n\n // Need to remove the wrapping <pre> element so we can use v-html without another wrapper\n return html.slice(5, -6)\n})\n\n/** Determine if the content is a single line */\nconst isOneLine = computed(() => !prettyContent.value.includes('\\n'))\n\nconst isContentValid = computed(() => {\n return (\n prettyContent.value !== null &&\n prettyContent.value !== 'null' &&\n prettyContent.value !== '404 Not Found'\n )\n})\n\n/** Whether the copy button is rendered on top of the code */\nconst showCopy = computed(() => copy && isContentValid.value)\n\n/**\n * A one-liner has the copy button floating over the end of the line, so the line needs room to\n * scroll clear of the button. The padding goes on the `w-fit` <pre> because browsers disagree about\n * whether trailing padding on an `overflow-x` container is scrollable.\n */\nconst reserveCopySpace = computed(() => isOneLine.value && showCopy.value)\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div\n v-bind=\"\n cx(\n 'scalar-code-block group/code-block flex flex-col',\n 'relative bg-b-1 min-h-0 min-w-0 focus-visible:outline',\n )\n \">\n <!-- Inherits the corners so the inset focus ring follows a rounded code block -->\n <div\n tabindex=\"0\"\n class=\"custom-scroll overflow-x-auto p-2 -outline-offset-2 rounded-[inherit] min-h-0 min-w-0 flex-1\">\n <pre\n :id=\"id\"\n class=\"m-0 bg-transparent text-nowrap whitespace-pre w-fit\"\n :class=\"{ 'pr-6': reserveCopySpace }\"\n v-html=\"highlightedCode\" />\n </div>\n <ScalarCodeBlockCopy\n v-if=\"showCopy\"\n class=\"scalar-code-copy absolute\"\n :class=\"[\n isOneLine\n ? 'top-1/2 -translate-y-1/2 m-0 right-1'\n : 'top-2.5 right-2.5',\n { 'opacity-100': copy === 'always' },\n ]\"\n :content=\"prettyContent\"\n :showLang=\"!isOneLine\"\n :lang=\"lang\"\n :aria-controls=\"id\">\n <template #backdrop>\n <ScalarCopyBackdrop\n class=\"scalar-code-copy-backdrop\"\n :class=\"[\n isOneLine\n ? '-inset-y-0.75 -right-1 group-hocus-within/code-block:-left-0.5 left-3'\n : '-right-1.5 -top-1',\n ]\" />\n </template>\n </ScalarCodeBlockCopy>\n </div>\n</template>\n<style>\n@reference '../../style.css';\n@import '@scalar/code-highlight/css/code.css';\n\n/** Disable font ligatures so code renders with literal characters */\n.scalar-code-block pre {\n font-variant-ligatures: none;\n}\n\n/** Make the copy button label backdrop match the background */\n.scalar-code-block.bg-b-1 .scalar-code-copy-backdrop {\n @apply bg-b-1;\n}\n.scalar-code-block.bg-b-2 .scalar-code-copy-backdrop {\n @apply bg-b-2;\n}\n/** Make the copy button one shade darker than the background */\n.scalar-code-block.bg-b-2 .scalar-code-copy {\n @apply bg-b-3;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8DA,MAAM,KAAK,MAAM;;EAGjB,MAAM,gBAAgB,eACd,QAAA,wBAAwB,gBAAgB,QAAA,WAAW,EAAE,CAC7D;EAEA,MAAM,kBAAkB,eAAe;GASrC,OARa,gBAAgB,cAAc,OAAO;IAChD,MAAM,QAAA,KAAK,KAAK;IAChB,WAAW;IACX,aAAa,QAAA;IACb,iBAAiB,QAAA;GACnB,CAGO,CAAA,CAAK,MAAM,GAAG,EAAE;EACzB,CAAC;;EAGD,MAAM,YAAY,eAAe,CAAC,cAAc,MAAM,SAAS,IAAI,CAAC;EAEpE,MAAM,iBAAiB,eAAe;GACpC,OACE,cAAc,UAAU,QACxB,cAAc,UAAU,UACxB,cAAc,UAAU;EAE5B,CAAC;;EAGD,MAAM,WAAW,eAAe,QAAA,QAAQ,eAAe,KAAK;;;;;;EAO5D,MAAM,mBAAmB,eAAe,UAAU,SAAS,SAAS,KAAK;EAGzE,MAAM,EAAE,OAAO,UAAU;;uBAGvB,mBAwCM,OAAA,eAAA,mBAvCW,MAAA,EAAA,CAAE,CAAA,oDAAA,uDAAA,CAAA,CAAA,GAAA,CAOjB,mBAQM,OARN,YAQM,CALJ,mBAI6B,OAAA;IAH1B,IAAI,MAAA,EAAA;IACL,OAAK,eAAA,CAAC,uDAAqD,EAAA,QACzC,iBAAA,MAAgB,CAAA,CAAA;IAClC,WAAQ,gBAAA;+BAGJ,SAAA,SAAA,UAAA,GADR,YAsBsB,MAAA,2BAAA,GAAA;;IApBpB,OAAK,eAAA,CAAC,6BAA2B,CACf,UAAA,QAAA,yCAAA,qBAAA,EAAA,eAAuH,QAAA,SAAI,SAAA,CAAA,CAAA,CAAA;IAM5I,SAAS,cAAA;IACT,UAAQ,CAAG,UAAA;IACX,MAAM,QAAA;IACN,iBAAe,MAAA,EAAA;;IACL,UAAQ,cAOV,CANP,YAMO,4BAAA,EALL,OAAK,eAAA,CAAC,6BAA2B,CACX,UAAA,QAAA,0EAAA,mBAAA,CAAA,CAAA,EAAA,GAAA,MAAA,GAAA,CAAA,OAAA,CAAA,CAAA,CAAA"}
@@ -22,6 +22,7 @@ export declare const LANGUAGE_LABELS: {
22
22
  readonly java: "Java";
23
23
  readonly javascript: "JavaScript";
24
24
  readonly json: "JSON";
25
+ readonly julia: "Julia";
25
26
  readonly kotlin: "Kotlin";
26
27
  readonly less: "Less";
27
28
  readonly lua: "Lua";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCodeBlock/constants.ts"],"names":[],"mappings":"AAEA,wCAAwC;AACxC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmD4B,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCodeBlock/constants.ts"],"names":[],"mappings":"AAEA,wCAAwC;AACxC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoD4B,CAAA"}
@@ -23,6 +23,7 @@ var LANGUAGE_LABELS = {
23
23
  java: "Java",
24
24
  javascript: "JavaScript",
25
25
  json: "JSON",
26
+ julia: "Julia",
26
27
  kotlin: "Kotlin",
27
28
  less: "Less",
28
29
  lua: "Lua",
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":[],"sources":["../../../src/components/ScalarCodeBlock/constants.ts"],"sourcesContent":["import type { StandardLanguageKey } from './types'\n\n/** Labels for the standard languages */\nexport const LANGUAGE_LABELS = {\n bash: 'Bash',\n c: 'C',\n clojure: 'Clojure',\n cpp: 'C++',\n csharp: 'C#',\n css: 'CSS',\n curl: 'cURL',\n dart: 'Dart',\n diff: 'Diff',\n docker: 'Docker',\n dockerfile: 'Dockerfile',\n elixir: 'Elixir',\n fsharp: 'F#',\n go: 'Go',\n graphql: 'GraphQL',\n haskell: 'Haskell',\n html: 'HTML',\n http: 'HTTP',\n ini: 'INI',\n java: 'Java',\n javascript: 'JavaScript',\n json: 'JSON',\n kotlin: 'Kotlin',\n less: 'Less',\n lua: 'Lua',\n makefile: 'Makefile',\n markdown: 'Markdown',\n matlab: 'MATLAB',\n mojo: 'Mojo',\n nginx: 'Nginx',\n objectivec: 'Objective-C',\n ocaml: 'OCaml',\n perl: 'Perl',\n php: 'PHP',\n plaintext: 'Plain Text',\n powershell: 'PowerShell',\n properties: 'Properties',\n python: 'Python',\n r: 'R',\n ruby: 'Ruby',\n rust: 'Rust',\n scala: 'Scala',\n scss: 'SCSS',\n shell: 'Shell',\n sql: 'SQL',\n swift: 'Swift',\n toml: 'TOML',\n typescript: 'TypeScript',\n xml: 'XML',\n yaml: 'YAML',\n} as const satisfies Record<StandardLanguageKey, string>\n"],"mappings":";;AAGA,IAAa,kBAAkB;CAC7B,MAAM;CACN,GAAG;CACH,SAAS;CACT,KAAK;CACL,QAAQ;CACR,KAAK;CACL,MAAM;CACN,MAAM;CACN,MAAM;CACN,QAAQ;CACR,YAAY;CACZ,QAAQ;CACR,QAAQ;CACR,IAAI;CACJ,SAAS;CACT,SAAS;CACT,MAAM;CACN,MAAM;CACN,KAAK;CACL,MAAM;CACN,YAAY;CACZ,MAAM;CACN,QAAQ;CACR,MAAM;CACN,KAAK;CACL,UAAU;CACV,UAAU;CACV,QAAQ;CACR,MAAM;CACN,OAAO;CACP,YAAY;CACZ,OAAO;CACP,MAAM;CACN,KAAK;CACL,WAAW;CACX,YAAY;CACZ,YAAY;CACZ,QAAQ;CACR,GAAG;CACH,MAAM;CACN,MAAM;CACN,OAAO;CACP,MAAM;CACN,OAAO;CACP,KAAK;CACL,OAAO;CACP,MAAM;CACN,YAAY;CACZ,KAAK;CACL,MAAM;AACR"}
1
+ {"version":3,"file":"constants.js","names":[],"sources":["../../../src/components/ScalarCodeBlock/constants.ts"],"sourcesContent":["import type { StandardLanguageKey } from './types'\n\n/** Labels for the standard languages */\nexport const LANGUAGE_LABELS = {\n bash: 'Bash',\n c: 'C',\n clojure: 'Clojure',\n cpp: 'C++',\n csharp: 'C#',\n css: 'CSS',\n curl: 'cURL',\n dart: 'Dart',\n diff: 'Diff',\n docker: 'Docker',\n dockerfile: 'Dockerfile',\n elixir: 'Elixir',\n fsharp: 'F#',\n go: 'Go',\n graphql: 'GraphQL',\n haskell: 'Haskell',\n html: 'HTML',\n http: 'HTTP',\n ini: 'INI',\n java: 'Java',\n javascript: 'JavaScript',\n json: 'JSON',\n julia: 'Julia',\n kotlin: 'Kotlin',\n less: 'Less',\n lua: 'Lua',\n makefile: 'Makefile',\n markdown: 'Markdown',\n matlab: 'MATLAB',\n mojo: 'Mojo',\n nginx: 'Nginx',\n objectivec: 'Objective-C',\n ocaml: 'OCaml',\n perl: 'Perl',\n php: 'PHP',\n plaintext: 'Plain Text',\n powershell: 'PowerShell',\n properties: 'Properties',\n python: 'Python',\n r: 'R',\n ruby: 'Ruby',\n rust: 'Rust',\n scala: 'Scala',\n scss: 'SCSS',\n shell: 'Shell',\n sql: 'SQL',\n swift: 'Swift',\n toml: 'TOML',\n typescript: 'TypeScript',\n xml: 'XML',\n yaml: 'YAML',\n} as const satisfies Record<StandardLanguageKey, string>\n"],"mappings":";;AAGA,IAAa,kBAAkB;CAC7B,MAAM;CACN,GAAG;CACH,SAAS;CACT,KAAK;CACL,QAAQ;CACR,KAAK;CACL,MAAM;CACN,MAAM;CACN,MAAM;CACN,QAAQ;CACR,YAAY;CACZ,QAAQ;CACR,QAAQ;CACR,IAAI;CACJ,SAAS;CACT,SAAS;CACT,MAAM;CACN,MAAM;CACN,KAAK;CACL,MAAM;CACN,YAAY;CACZ,MAAM;CACN,OAAO;CACP,QAAQ;CACR,MAAM;CACN,KAAK;CACL,UAAU;CACV,UAAU;CACV,QAAQ;CACR,MAAM;CACN,OAAO;CACP,YAAY;CACZ,OAAO;CACP,MAAM;CACN,KAAK;CACL,WAAW;CACX,YAAY;CACZ,YAAY;CACZ,QAAQ;CACR,GAAG;CACH,MAAM;CACN,MAAM;CACN,OAAO;CACP,MAAM;CACN,OAAO;CACP,KAAK;CACL,OAAO;CACP,MAAM;CACN,YAAY;CACZ,KAAK;CACL,MAAM;AACR"}
@@ -1,34 +1,38 @@
1
+ import { type Component } from 'vue';
1
2
  /**
2
3
  * Scalar header component
3
4
  *
4
- * Used to create a standardized header for Scalar applications
5
+ * Provides the header chrome; layout is left to the consumer. Columns hug their
6
+ * content, so give the content-bearing one `flex-1` to take the free space - that
7
+ * is also the column that absorbs the shrinking when space runs out.
8
+ *
9
+ * Headers that used the old middle slot are no longer centred: wrap that content
10
+ * in a `ScalarHeaderColumn` with `justify-center` and give both side columns
11
+ * `flex-1`.
5
12
  *
6
13
  * @example
7
14
  * ```html
8
15
  * <ScalarHeader>
9
- * <template #start>
16
+ * <ScalarHeaderColumn class="flex-1">
10
17
  * <ScalarMenu />
11
- * <ScalarHeaderButton>Login</ScalarHeaderButton>
12
- * <ScalarHeaderButton>Register</ScalarHeaderButton>
13
- * </template>
14
- * <template #default>
15
- * <ScalarHeaderButton>Middle thing</ScalarHeaderButton>
16
- * </template>
17
- * <template #end>
18
- * <ScalarHeaderButton>Call to Action</ScalarHeaderButton>
19
- * </template>
18
+ * </ScalarHeaderColumn>
19
+ * <ScalarHeaderColumn class="justify-end">
20
+ * <ScalarHeaderButton cta>Register</ScalarHeaderButton>
21
+ * </ScalarHeaderColumn>
20
22
  * </ScalarHeader>
21
23
  * ```
22
24
  */
23
25
  declare const _default: typeof __VLS_export;
24
26
  export default _default;
25
- 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>, {
26
- /** The first section of the header, typically on the left */
27
- start?(): unknown;
28
- /** The middle section of the header */
27
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
28
+ /** Render as a `div` when nested inside an existing `header` landmark */
29
+ is?: string | Component;
30
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
31
+ /** Render as a `div` when nested inside an existing `header` landmark */
32
+ is?: string | Component;
33
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
34
+ /** The contents of the header, typically `ScalarHeaderColumn` children */
29
35
  default?(): unknown;
30
- /** The last section of the header, typically on the right */
31
- end?(): unknown;
32
36
  }>;
33
37
  type __VLS_WithSlots<T, S> = T & {
34
38
  new (): {
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarHeader.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarHeader/ScalarHeader.vue"],"names":[],"mappings":"AA+DA;;;;;;;;;;;;;;;;;;;;;GAqBG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;IAIhB,6DAA6D;cACnD,OAAO;IACjB,uCAAuC;gBAC3B,OAAO;IACnB,6DAA6D;YACrD,OAAO;EAsDb,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"ScalarHeader.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarHeader/ScalarHeader.vue"],"names":[],"mappings":"AAoEA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,KAAK,CAAA;AAG9C;;;;;;;;;;;;;;;;;;;;;;GAsBG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;IAEhB,yEAAyE;SACpE,MAAM,GAAG,SAAS;;IADvB,yEAAyE;SACpE,MAAM,GAAG,SAAS;;IAMvB,0EAA0E;gBAC9D,OAAO;EAkEjB,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":"ScalarHeader.vue.js","names":[],"sources":["../../../src/components/ScalarHeader/ScalarHeader.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar header component\n *\n * Used to create a standardized header for Scalar applications\n *\n * @example\n * ```html\n * <ScalarHeader>\n * <template #start>\n * <ScalarMenu />\n * <ScalarHeaderButton>Login</ScalarHeaderButton>\n * <ScalarHeaderButton>Register</ScalarHeaderButton>\n * </template>\n * <template #default>\n * <ScalarHeaderButton>Middle thing</ScalarHeaderButton>\n * </template>\n * <template #end>\n * <ScalarHeaderButton>Call to Action</ScalarHeaderButton>\n * </template>\n * </ScalarHeader>\n * ```\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nconst { cx } = useBindCx()\n\ndefineSlots<{\n /** The first section of the header, typically on the left */\n start?(): unknown\n /** The middle section of the header */\n default?(): unknown\n /** The last section of the header, typically on the right */\n end?(): unknown\n}>()\n</script>\n<template>\n <header\n v-bind=\"\n cx(\n 'flex min-h-header items-center justify-between gap-2 border-b px-3 min-w-min',\n '*:flex *:flex-1 *:items-center *:gap-1',\n 'bg-b-header-1 text-c-header border-border-header',\n )\n \">\n <div class=\"justify-start\"><slot name=\"start\" /></div>\n <div\n v-if=\"$slots.default\"\n class=\"justify-center\">\n <slot />\n </div>\n <div class=\"justify-end\"><slot name=\"end\" /></div>\n </header>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ScalarHeader.vue.js","names":[],"sources":["../../../src/components/ScalarHeader/ScalarHeader.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar header component\n *\n * Provides the header chrome; layout is left to the consumer. Columns hug their\n * content, so give the content-bearing one `flex-1` to take the free space - that\n * is also the column that absorbs the shrinking when space runs out.\n *\n * Headers that used the old middle slot are no longer centred: wrap that content\n * in a `ScalarHeaderColumn` with `justify-center` and give both side columns\n * `flex-1`.\n *\n * @example\n * ```html\n * <ScalarHeader>\n * <ScalarHeaderColumn class=\"flex-1\">\n * <ScalarMenu />\n * </ScalarHeaderColumn>\n * <ScalarHeaderColumn class=\"justify-end\">\n * <ScalarHeaderButton cta>Register</ScalarHeaderButton>\n * </ScalarHeaderColumn>\n * </ScalarHeader>\n * ```\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { type Component, useSlots } from 'vue'\n\nconst { is = 'header' } = defineProps<{\n /** Render as a `div` when nested inside an existing `header` landmark */\n is?: string | Component\n}>()\n\ndefineSlots<{\n /** The contents of the header, typically `ScalarHeaderColumn` children */\n default?(): unknown\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\nconst slots = useSlots()\n\n// Vue drops content for slots we no longer render, so an unmigrated consumer\n// would otherwise just get an empty header.\nif (slots.start || slots.end) {\n console.warn(\n 'ScalarHeader: the `start` and `end` slots have been removed. Compose `ScalarHeaderColumn` children in the default slot instead.',\n )\n}\n</script>\n<template>\n <component\n :is\n v-bind=\"\n cx(\n 'flex min-h-header min-w-0 items-center justify-between gap-2 border-b px-3',\n 'bg-b-header-1 text-c-header border-border-header',\n )\n \">\n <slot />\n </component>\n</template>\n"],"mappings":""}
@@ -1,22 +1,18 @@
1
1
  import { useBindCx } from "@scalar/use-hooks/useBindCx";
2
- import { createCommentVNode, createElementBlock, createElementVNode, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref } from "vue";
3
- //#region src/components/ScalarHeader/ScalarHeader.vue?vue&type=script&setup=true&lang.ts
4
- var _hoisted_1 = { class: "justify-start" };
5
- var _hoisted_2 = {
6
- key: 0,
7
- class: "justify-center"
8
- };
9
- var _hoisted_3 = { class: "justify-end" };
2
+ import { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, resolveDynamicComponent, unref, useSlots, withCtx } from "vue";
10
3
  var ScalarHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
4
+ inheritAttrs: false,
11
5
  __name: "ScalarHeader",
6
+ props: { is: { default: "header" } },
12
7
  setup(__props) {
13
8
  const { cx } = useBindCx();
9
+ const slots = useSlots();
10
+ if (slots.start || slots.end) console.warn("ScalarHeader: the `start` and `end` slots have been removed. Compose `ScalarHeaderColumn` children in the default slot instead.");
14
11
  return (_ctx, _cache) => {
15
- return openBlock(), createElementBlock("header", normalizeProps(guardReactiveProps(unref(cx)("flex min-h-header items-center justify-between gap-2 border-b px-3 min-w-min", "*:flex *:flex-1 *:items-center *:gap-1", "bg-b-header-1 text-c-header border-border-header"))), [
16
- createElementVNode("div", _hoisted_1, [renderSlot(_ctx.$slots, "start")]),
17
- _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_2, [renderSlot(_ctx.$slots, "default")])) : createCommentVNode("", true),
18
- createElementVNode("div", _hoisted_3, [renderSlot(_ctx.$slots, "end")])
19
- ], 16);
12
+ return openBlock(), createBlock(resolveDynamicComponent(__props.is), normalizeProps(guardReactiveProps(unref(cx)("flex min-h-header min-w-0 items-center justify-between gap-2 border-b px-3", "bg-b-header-1 text-c-header border-border-header"))), {
13
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
14
+ _: 3
15
+ }, 16);
20
16
  };
21
17
  }
22
18
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarHeader.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarHeader/ScalarHeader.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar header component\n *\n * Used to create a standardized header for Scalar applications\n *\n * @example\n * ```html\n * <ScalarHeader>\n * <template #start>\n * <ScalarMenu />\n * <ScalarHeaderButton>Login</ScalarHeaderButton>\n * <ScalarHeaderButton>Register</ScalarHeaderButton>\n * </template>\n * <template #default>\n * <ScalarHeaderButton>Middle thing</ScalarHeaderButton>\n * </template>\n * <template #end>\n * <ScalarHeaderButton>Call to Action</ScalarHeaderButton>\n * </template>\n * </ScalarHeader>\n * ```\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nconst { cx } = useBindCx()\n\ndefineSlots<{\n /** The first section of the header, typically on the left */\n start?(): unknown\n /** The middle section of the header */\n default?(): unknown\n /** The last section of the header, typically on the right */\n end?(): unknown\n}>()\n</script>\n<template>\n <header\n v-bind=\"\n cx(\n 'flex min-h-header items-center justify-between gap-2 border-b px-3 min-w-min',\n '*:flex *:flex-1 *:items-center *:gap-1',\n 'bg-b-header-1 text-c-header border-border-header',\n )\n \">\n <div class=\"justify-start\"><slot name=\"start\" /></div>\n <div\n v-if=\"$slots.default\"\n class=\"justify-center\">\n <slot />\n </div>\n <div class=\"justify-end\"><slot name=\"end\" /></div>\n </header>\n</template>\n"],"mappings":";;;;;;;;;;;;EA4BA,MAAM,EAAE,OAAO,UAAU;;uBAYvB,mBAeS,UAAA,eAAA,mBAdQ,MAAA,EAAA,CAAE,CAAA,gFAAA,0CAAA,kDAAA,CAAA,CAAA,GAAA;IAOjB,mBAAsD,OAAtD,YAAsD,CAA3B,WAAqB,KAAA,QAAA,OAAA,CAAA,CAAA;IAExCA,KAAAA,OAAO,WAAA,UAAA,GADf,mBAIM,OAJN,YAIM,CADJ,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;IAEV,mBAAkD,OAAlD,YAAkD,CAAzB,WAAmB,KAAA,QAAA,KAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ScalarHeader.vue.script.js","names":[],"sources":["../../../src/components/ScalarHeader/ScalarHeader.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar header component\n *\n * Provides the header chrome; layout is left to the consumer. Columns hug their\n * content, so give the content-bearing one `flex-1` to take the free space - that\n * is also the column that absorbs the shrinking when space runs out.\n *\n * Headers that used the old middle slot are no longer centred: wrap that content\n * in a `ScalarHeaderColumn` with `justify-center` and give both side columns\n * `flex-1`.\n *\n * @example\n * ```html\n * <ScalarHeader>\n * <ScalarHeaderColumn class=\"flex-1\">\n * <ScalarMenu />\n * </ScalarHeaderColumn>\n * <ScalarHeaderColumn class=\"justify-end\">\n * <ScalarHeaderButton cta>Register</ScalarHeaderButton>\n * </ScalarHeaderColumn>\n * </ScalarHeader>\n * ```\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { type Component, useSlots } from 'vue'\n\nconst { is = 'header' } = defineProps<{\n /** Render as a `div` when nested inside an existing `header` landmark */\n is?: string | Component\n}>()\n\ndefineSlots<{\n /** The contents of the header, typically `ScalarHeaderColumn` children */\n default?(): unknown\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\nconst slots = useSlots()\n\n// Vue drops content for slots we no longer render, so an unmigrated consumer\n// would otherwise just get an empty header.\nif (slots.start || slots.end) {\n console.warn(\n 'ScalarHeader: the `start` and `end` slots have been removed. Compose `ScalarHeaderColumn` children in the default slot instead.',\n )\n}\n</script>\n<template>\n <component\n :is\n v-bind=\"\n cx(\n 'flex min-h-header min-w-0 items-center justify-between gap-2 border-b px-3',\n 'bg-b-header-1 text-c-header border-border-header',\n )\n \">\n <slot />\n </component>\n</template>\n"],"mappings":";;;;;;;EAyCA,MAAM,EAAE,OAAO,UAAU;EACzB,MAAM,QAAQ,SAAS;EAIvB,IAAI,MAAM,SAAS,MAAM,KACvB,QAAQ,KACN,iIACF;;uBAIA,YASY,wBART,QAAA,EAAE,GAAA,eAAA,mBACY,MAAA,EAAA,CAAE,CAAA,8EAAA,kDAAA,CAAA,CAAA,GAAA;2BAMT,CAAR,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Scalar header column component
3
+ *
4
+ * A section of a `ScalarHeader`. Columns hug their content, so pass `flex-1` to
5
+ * take the free space and `justify-center` / `justify-end` to place the contents.
6
+ *
7
+ * Carries `min-w-0`, which lets a `flex-1` column shrink below its contents so a
8
+ * long title ellipsizes rather than widening the header. Hug columns do not
9
+ * shrink, so keep a trailing action cluster narrow enough to fit on its own.
10
+ *
11
+ * @example
12
+ * ```html
13
+ * <ScalarHeaderColumn class="flex-1">
14
+ * <ScalarMenu />
15
+ * </ScalarHeaderColumn>
16
+ * ```
17
+ */
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
20
+ 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>, {
21
+ /** The contents of the column */
22
+ default?(): unknown;
23
+ }>;
24
+ type __VLS_WithSlots<T, S> = T & {
25
+ new (): {
26
+ $slots: S;
27
+ };
28
+ };
29
+ //# sourceMappingURL=ScalarHeaderColumn.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScalarHeaderColumn.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarHeader/ScalarHeaderColumn.vue"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;;;;;GAgBG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;IAEhB,iCAAiC;gBACrB,OAAO;EAiCjB,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -0,0 +1,7 @@
1
+ import ScalarHeaderColumn_vue_vue_type_script_setup_true_lang_default from "./ScalarHeaderColumn.vue.script.js";
2
+ //#region src/components/ScalarHeader/ScalarHeaderColumn.vue
3
+ var ScalarHeaderColumn_default = ScalarHeaderColumn_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { ScalarHeaderColumn_default as default };
6
+
7
+ //# sourceMappingURL=ScalarHeaderColumn.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScalarHeaderColumn.vue.js","names":[],"sources":["../../../src/components/ScalarHeader/ScalarHeaderColumn.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar header column component\n *\n * A section of a `ScalarHeader`. Columns hug their content, so pass `flex-1` to\n * take the free space and `justify-center` / `justify-end` to place the contents.\n *\n * Carries `min-w-0`, which lets a `flex-1` column shrink below its contents so a\n * long title ellipsizes rather than widening the header. Hug columns do not\n * shrink, so keep a trailing action cluster narrow enough to fit on its own.\n *\n * @example\n * ```html\n * <ScalarHeaderColumn class=\"flex-1\">\n * <ScalarMenu />\n * </ScalarHeaderColumn>\n * ```\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\ndefineSlots<{\n /** The contents of the column */\n default?(): unknown\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('flex min-w-0 shrink-0 items-center justify-start gap-1')\">\n <slot />\n </div>\n</template>\n"],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { useBindCx } from "@scalar/use-hooks/useBindCx";
2
+ import { createElementBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref } from "vue";
3
+ var ScalarHeaderColumn_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
4
+ inheritAttrs: false,
5
+ __name: "ScalarHeaderColumn",
6
+ setup(__props) {
7
+ const { cx } = useBindCx();
8
+ return (_ctx, _cache) => {
9
+ return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(unref(cx)("flex min-w-0 shrink-0 items-center justify-start gap-1"))), [renderSlot(_ctx.$slots, "default")], 16);
10
+ };
11
+ }
12
+ });
13
+ //#endregion
14
+ export { ScalarHeaderColumn_vue_vue_type_script_setup_true_lang_default as default };
15
+
16
+ //# sourceMappingURL=ScalarHeaderColumn.vue.script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScalarHeaderColumn.vue.script.js","names":[],"sources":["../../../src/components/ScalarHeader/ScalarHeaderColumn.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar header column component\n *\n * A section of a `ScalarHeader`. Columns hug their content, so pass `flex-1` to\n * take the free space and `justify-center` / `justify-end` to place the contents.\n *\n * Carries `min-w-0`, which lets a `flex-1` column shrink below its contents so a\n * long title ellipsizes rather than widening the header. Hug columns do not\n * shrink, so keep a trailing action cluster narrow enough to fit on its own.\n *\n * @example\n * ```html\n * <ScalarHeaderColumn class=\"flex-1\">\n * <ScalarMenu />\n * </ScalarHeaderColumn>\n * ```\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\ndefineSlots<{\n /** The contents of the column */\n default?(): unknown\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('flex min-w-0 shrink-0 items-center justify-start gap-1')\">\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;EA6BA,MAAM,EAAE,OAAO,UAAU;;uBAGvB,mBAEM,OAAA,eAAA,mBAFO,MAAA,EAAA,CAAE,CAAA,wDAAA,CAAA,CAAA,GAAA,CACb,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,EAAA"}
@@ -1,3 +1,4 @@
1
1
  export { default as ScalarHeader } from './ScalarHeader.vue.js';
2
2
  export { default as ScalarHeaderButton } from './ScalarHeaderButton.vue.js';
3
+ export { default as ScalarHeaderColumn } from './ScalarHeaderColumn.vue.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarHeader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarHeader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAA"}
@@ -1,3 +1,4 @@
1
1
  import ScalarHeader_default from "./ScalarHeader.vue.js";
2
2
  import ScalarHeaderButton_default from "./ScalarHeaderButton.vue.js";
3
- export { ScalarHeader_default as ScalarHeader, ScalarHeaderButton_default as ScalarHeaderButton };
3
+ import ScalarHeaderColumn_default from "./ScalarHeaderColumn.vue.js";
4
+ export { ScalarHeader_default as ScalarHeader, ScalarHeaderButton_default as ScalarHeaderButton, ScalarHeaderColumn_default as ScalarHeaderColumn };
@@ -1,2 +1,2 @@
1
- export declare const ICONS: readonly ["Add", "AddTab", "Alert", "ArrowLeft", "ArrowRight", "Brackets", "Branch", "Changelog", "Checkmark", "ChevronDown", "ChevronLeft", "ChevronRight", "ChevronUp", "Clipboard", "Close", "CloseTab", "CloseTabs", "Cloud", "CodeFolder", "Cog", "Collection", "Cookie", "DarkMode", "Delete", "Discord", "DocsPage", "Download", "Duplicate", "Edit", "Ellipses", "Email", "Error", "Example", "ExternalLink", "FilterList", "Folder", "GitHub", "GitHubLine", "Globe", "Google", "Help", "Hide", "History", "House", "Import", "Info", "Key", "Leave", "LightDarkModeToggle", "LightMode", "Link", "Lock", "Logo", "Magic", "Markdown", "Menu", "NotAllowed", "Page", "Pencil", "Play", "Refresh", "Roadmap", "Scribble", "Search", "Server", "Settings", "Show", "Sort", "Terminal", "Trash", "Unlock", "Unwatch", "Upload", "User", "UserSwitch", "Users", "Versions", "Wallet", "Watch", "Workspace", "programming-framework-angular", "programming-framework-astro", "programming-framework-laravel", "programming-framework-nextdotjs", "programming-framework-react", "programming-framework-vuedotjs", "programming-language-c", "programming-language-clojure", "programming-language-csharp", "programming-language-css3", "programming-language-dart", "programming-language-fsharp", "programming-language-go", "programming-language-html5", "programming-language-http", "programming-language-java", "programming-language-javascript", "programming-language-json", "programming-language-kotlin", "programming-language-node", "programming-language-objc", "programming-language-ocaml", "programming-language-php", "programming-language-powershell", "programming-language-python", "programming-language-r", "programming-language-ruby", "programming-language-rust", "programming-language-scala", "programming-language-shell", "programming-language-swift", "programming-language-typescript", "programming-script-code", "programming-tool-git", "programming-tool-tailwindcss"];
1
+ export declare const ICONS: readonly ["Add", "AddTab", "Alert", "ArrowLeft", "ArrowRight", "Brackets", "Branch", "Changelog", "Checkmark", "ChevronDown", "ChevronLeft", "ChevronRight", "ChevronUp", "Clipboard", "Close", "CloseTab", "CloseTabs", "Cloud", "CodeFolder", "Cog", "Collection", "Cookie", "DarkMode", "Delete", "Discord", "DocsPage", "Download", "Duplicate", "Edit", "Ellipses", "Email", "Error", "Example", "ExternalLink", "FilterList", "Folder", "GitHub", "GitHubLine", "Globe", "Google", "Help", "Hide", "History", "House", "Import", "Info", "Key", "Leave", "LightDarkModeToggle", "LightMode", "Link", "Lock", "Logo", "Magic", "Markdown", "Menu", "NotAllowed", "Page", "Pencil", "Play", "Refresh", "Roadmap", "Scribble", "Search", "Server", "Settings", "Show", "Sort", "Terminal", "Trash", "Unlock", "Unwatch", "Upload", "User", "UserSwitch", "Users", "Versions", "Wallet", "Watch", "Workspace", "programming-framework-angular", "programming-framework-astro", "programming-framework-laravel", "programming-framework-nextdotjs", "programming-framework-react", "programming-framework-vuedotjs", "programming-language-c", "programming-language-clojure", "programming-language-csharp", "programming-language-css3", "programming-language-dart", "programming-language-fsharp", "programming-language-go", "programming-language-html5", "programming-language-http", "programming-language-java", "programming-language-javascript", "programming-language-json", "programming-language-julia", "programming-language-kotlin", "programming-language-node", "programming-language-objc", "programming-language-ocaml", "programming-language-php", "programming-language-powershell", "programming-language-python", "programming-language-r", "programming-language-ruby", "programming-language-rust", "programming-language-scala", "programming-language-shell", "programming-language-swift", "programming-language-typescript", "programming-script-code", "programming-tool-git", "programming-tool-tailwindcss"];
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ScalarIcon/icons/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,q5DAoHR,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ScalarIcon/icons/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,m7DAqHR,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { __exportAll } from "../../../_virtual/_rolldown/runtime.js";
2
+ import { createElementBlock, createElementVNode, openBlock } from "vue";
3
+ //#region src/components/ScalarIcon/icons/programming-language-julia.svg?component
4
+ var programming_language_julia_exports = /* @__PURE__ */ __exportAll({
5
+ default: () => programming_language_julia_default,
6
+ render: () => render$1
7
+ });
8
+ var _hoisted_1 = {
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ fill: "currentColor",
11
+ viewBox: "0 0 128 128"
12
+ };
13
+ function render$1(_ctx, _cache) {
14
+ return openBlock(), createElementBlock("svg", _hoisted_1, [..._cache[0] || (_cache[0] = [
15
+ createElementVNode("circle", {
16
+ cx: "64",
17
+ cy: "36.57",
18
+ r: "27.43"
19
+ }, null, -1),
20
+ createElementVNode("circle", {
21
+ cx: "32.32",
22
+ cy: "91.43",
23
+ r: "27.43"
24
+ }, null, -1),
25
+ createElementVNode("circle", {
26
+ cx: "95.68",
27
+ cy: "91.43",
28
+ r: "27.43"
29
+ }, null, -1)
30
+ ])]);
31
+ }
32
+ var programming_language_julia_default = { render: render$1 };
33
+ //#endregion
34
+ export { programming_language_julia_default as default, programming_language_julia_exports, render$1 as render };
35
+
36
+ //# sourceMappingURL=programming-language-julia.svg.virtual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"programming-language-julia.svg.virtual.js","names":["render","_openBlock","_createElementBlock","_createElementVNode"],"sources":["../../../../src/components/ScalarIcon/icons/programming-language-julia.svg?component"],"sourcesContent":["import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"currentColor\",\n viewBox: \"0 0 128 128\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [\n _createElementVNode(\"circle\", {\n cx: \"64\",\n cy: \"36.57\",\n r: \"27.43\"\n }, null, -1),\n _createElementVNode(\"circle\", {\n cx: \"32.32\",\n cy: \"91.43\",\n r: \"27.43\"\n }, null, -1),\n _createElementVNode(\"circle\", {\n cx: \"95.68\",\n cy: \"91.43\",\n r: \"27.43\"\n }, null, -1)\n ]))]))\n}\nexport default { render: render }"],"mappings":";;;;;;;AAEA,IAAM,aAAa;CACjB,OAAO;CACP,MAAM;CACN,SAAS;AACX;AAEA,SAAgBA,SAAO,MAAM,QAAQ;CACnC,OAAQC,UAAW,GAAGC,mBAAoB,OAAO,YAAY,CAAC,GAAI,OAAO,OAAO,OAAO,KAAK;EAC1FC,mBAAoB,UAAU;GAC5B,IAAI;GACJ,IAAI;GACJ,GAAG;EACL,GAAG,MAAM,EAAE;EACXA,mBAAoB,UAAU;GAC5B,IAAI;GACJ,IAAI;GACJ,GAAG;EACL,GAAG,MAAM,EAAE;EACXA,mBAAoB,UAAU;GAC5B,IAAI;GACJ,IAAI;GACJ,GAAG;EACL,GAAG,MAAM,EAAE;CACb,EAAG,CAAC;AACN;AACA,IAAA,qCAAe,EAAE,QAAQH,SAAO"}
@@ -96,6 +96,7 @@ import { programming_language_http_exports } from "../icons/programming-language
96
96
  import { programming_language_java_exports } from "../icons/programming-language-java.svg.virtual.js";
97
97
  import { programming_language_javascript_exports } from "../icons/programming-language-javascript.svg.virtual.js";
98
98
  import { programming_language_json_exports } from "../icons/programming-language-json.svg.virtual.js";
99
+ import { programming_language_julia_exports } from "../icons/programming-language-julia.svg.virtual.js";
99
100
  import { programming_language_kotlin_exports } from "../icons/programming-language-kotlin.svg.virtual.js";
100
101
  import { programming_language_node_exports } from "../icons/programming-language-node.svg.virtual.js";
101
102
  import { programming_language_objc_exports } from "../icons/programming-language-objc.svg.virtual.js";
@@ -235,6 +236,7 @@ var icons = /* #__PURE__ */ Object.assign({
235
236
  "../icons/programming-language-java.svg": programming_language_java_exports,
236
237
  "../icons/programming-language-javascript.svg": programming_language_javascript_exports,
237
238
  "../icons/programming-language-json.svg": programming_language_json_exports,
239
+ "../icons/programming-language-julia.svg": programming_language_julia_exports,
238
240
  "../icons/programming-language-kotlin.svg": programming_language_kotlin_exports,
239
241
  "../icons/programming-language-node.svg": programming_language_node_exports,
240
242
  "../icons/programming-language-objc.svg": programming_language_objc_exports,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ScalarIcon/utils/index.ts"],"sourcesContent":["import type { ICONS } from '../icons'\nimport type { LOGOS } from '../logos'\n\n/** @deprecated Use the icons from the `@scalar/icons` package instead. */\nexport type Icon = (typeof ICONS)[number]\n\n/** @deprecated Use the icons from the `@scalar/icons` package instead. */\nexport type Logo = (typeof LOGOS)[number]\n\nconst icons = import.meta.glob<SVGElement>('../icons/*.svg', {\n query: 'component',\n eager: true,\n})\n\nconst logos = import.meta.glob<SVGElement>('../logos/*.svg', {\n query: 'component',\n eager: true,\n})\n\n/**\n * Generate a Vue component from the icon SVGs\n *\n * For any changes to this file, please ensure it works with SSR\n */\nexport const getIcon = (name: Icon) => {\n const filename = `../icons/${name}.svg`\n\n if (!icons[filename]) {\n console.warn(`Could not find icon: ${name}`)\n return null\n }\n\n return icons[filename]\n}\n\n/**\n * Generate a Vue component from the logo SVGs\n *\n * For any changes to this file, please ensure it works with SSR\n */\nexport const getLogo = (name: Logo) => {\n const filename = `../logos/${name}.svg`\n\n if (!logos[filename]) {\n console.warn(`Could not find icon: ${name}`)\n return null\n }\n return logos[filename]\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAM,QAAQ,uBAAA,OAAA;CAAA,oBAAA;CAAA,uBAAA;CAAA,sBAAA;CAAA,0BAAA;CAAA,2BAAA;CAAA,yBAAA;CAAA,uBAAA;CAAA,0BAAA;CAAA,0BAAA;CAAA,4BAAA;CAAA,4BAAA;CAAA,6BAAA;CAAA,0BAAA;CAAA,0BAAA;CAAA,sBAAA;CAAA,yBAAA;CAAA,0BAAA;CAAA,sBAAA;CAAA,2BAAA;CAAA,oBAAA;CAAA,2BAAA;CAAA,uBAAA;CAAA,yBAAA;CAAA,uBAAA;CAAA,wBAAA;CAAA,yBAAA;CAAA,yBAAA;CAAA,0BAAA;CAAA,qBAAA;CAAA,yBAAA;CAAA,sBAAA;CAAA,sBAAA;CAAA,wBAAA;CAAA,6BAAA;CAAA,2BAAA;CAAA,uBAAA;CAAA,uBAAA;CAAA,2BAAA;CAAA,sBAAA;CAAA,uBAAA;CAAA,qBAAA;CAAA,qBAAA;CAAA,wBAAA;CAAA,sBAAA;CAAA,uBAAA;CAAA,qBAAA;CAAA,oBAAA;CAAA,sBAAA;CAAA,oCAAA;CAAA,0BAAA;CAAA,qBAAA;CAAA,qBAAA;CAAA,qBAAA;CAAA,sBAAA;CAAA,yBAAA;CAAA,qBAAA;CAAA,2BAAA;CAAA,qBAAA;CAAA,uBAAA;CAAA,qBAAA;CAAA,wBAAA;CAAA,wBAAA;CAAA,yBAAA;CAAA,uBAAA;CAAA,uBAAA;CAAA,yBAAA;CAAA,qBAAA;CAAA,qBAAA;CAAA,yBAAA;CAAA,sBAAA;CAAA,uBAAA;CAAA,wBAAA;CAAA,uBAAA;CAAA,qBAAA;CAAA,2BAAA;CAAA,sBAAA;CAAA,yBAAA;CAAA,uBAAA;CAAA,sBAAA;CAAA,0BAAA;CAAA,8CAAA;CAAA,4CAAA;CAAA,8CAAA;CAAA,gDAAA;CAAA,4CAAA;CAAA,+CAAA;CAAA,uCAAA;CAAA,6CAAA;CAAA,4CAAA;CAAA,0CAAA;CAAA,0CAAA;CAAA,4CAAA;CAAA,wCAAA;CAAA,2CAAA;CAAA,0CAAA;CAAA,0CAAA;CAAA,gDAAA;CAAA,0CAAA;CAAA,4CAAA;CAAA,0CAAA;CAAA,0CAAA;CAAA,2CAAA;CAAA,yCAAA;CAAA,gDAAA;CAAA,4CAAA;CAAA,uCAAA;CAAA,0CAAA;CAAA,0CAAA;CAAA,2CAAA;CAAA,2CAAA;CAAA,2CAAA;CAAA,gDAAA;CAAA,wCAAA;CAAA,qCAAA;CAAA,6CAAA;;AAKd,IAAM,QAAQ,uBAAA,OAAA;CAAA,yBAAA;CAAA,sBAAA;CAAA,2BAAA;CAAA,uBAAA;CAAA,yBAAA;CAAA,wBAAA;CAAA,wBAAA;CAAA,wBAAA;CAAA,mBAAA;CAAA,qBAAA;CAAA,wBAAA;CAAA,yBAAA;CAAA,uBAAA;CAAA,uBAAA;CAAA,sBAAA;CAAA,qBAAA;CAAA,wBAAA;CAAA,6BAAA;CAAA,sBAAA;CAAA,qBAAA;CAAA,uBAAA;CAAA,oBAAA;;;;;;;AAUd,IAAa,WAAW,SAAe;CACrC,MAAM,WAAW,YAAY,KAAK;CAElC,IAAI,CAAC,MAAM,WAAW;EACpB,QAAQ,KAAK,wBAAwB,MAAM;EAC3C,OAAO;CACT;CAEA,OAAO,MAAM;AACf;;;;;;AAOA,IAAa,WAAW,SAAe;CACrC,MAAM,WAAW,YAAY,KAAK;CAElC,IAAI,CAAC,MAAM,WAAW;EACpB,QAAQ,KAAK,wBAAwB,MAAM;EAC3C,OAAO;CACT;CACA,OAAO,MAAM;AACf"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ScalarIcon/utils/index.ts"],"sourcesContent":["import type { ICONS } from '../icons'\nimport type { LOGOS } from '../logos'\n\n/** @deprecated Use the icons from the `@scalar/icons` package instead. */\nexport type Icon = (typeof ICONS)[number]\n\n/** @deprecated Use the icons from the `@scalar/icons` package instead. */\nexport type Logo = (typeof LOGOS)[number]\n\nconst icons = import.meta.glob<SVGElement>('../icons/*.svg', {\n query: 'component',\n eager: true,\n})\n\nconst logos = import.meta.glob<SVGElement>('../logos/*.svg', {\n query: 'component',\n eager: true,\n})\n\n/**\n * Generate a Vue component from the icon SVGs\n *\n * For any changes to this file, please ensure it works with SSR\n */\nexport const getIcon = (name: Icon) => {\n const filename = `../icons/${name}.svg`\n\n if (!icons[filename]) {\n console.warn(`Could not find icon: ${name}`)\n return null\n }\n\n return icons[filename]\n}\n\n/**\n * Generate a Vue component from the logo SVGs\n *\n * For any changes to this file, please ensure it works with SSR\n */\nexport const getLogo = (name: Logo) => {\n const filename = `../logos/${name}.svg`\n\n if (!logos[filename]) {\n console.warn(`Could not find icon: ${name}`)\n return null\n }\n return logos[filename]\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAM,QAAQ,uBAAA,OAAA;CAAA,oBAAA;CAAA,uBAAA;CAAA,sBAAA;CAAA,0BAAA;CAAA,2BAAA;CAAA,yBAAA;CAAA,uBAAA;CAAA,0BAAA;CAAA,0BAAA;CAAA,4BAAA;CAAA,4BAAA;CAAA,6BAAA;CAAA,0BAAA;CAAA,0BAAA;CAAA,sBAAA;CAAA,yBAAA;CAAA,0BAAA;CAAA,sBAAA;CAAA,2BAAA;CAAA,oBAAA;CAAA,2BAAA;CAAA,uBAAA;CAAA,yBAAA;CAAA,uBAAA;CAAA,wBAAA;CAAA,yBAAA;CAAA,yBAAA;CAAA,0BAAA;CAAA,qBAAA;CAAA,yBAAA;CAAA,sBAAA;CAAA,sBAAA;CAAA,wBAAA;CAAA,6BAAA;CAAA,2BAAA;CAAA,uBAAA;CAAA,uBAAA;CAAA,2BAAA;CAAA,sBAAA;CAAA,uBAAA;CAAA,qBAAA;CAAA,qBAAA;CAAA,wBAAA;CAAA,sBAAA;CAAA,uBAAA;CAAA,qBAAA;CAAA,oBAAA;CAAA,sBAAA;CAAA,oCAAA;CAAA,0BAAA;CAAA,qBAAA;CAAA,qBAAA;CAAA,qBAAA;CAAA,sBAAA;CAAA,yBAAA;CAAA,qBAAA;CAAA,2BAAA;CAAA,qBAAA;CAAA,uBAAA;CAAA,qBAAA;CAAA,wBAAA;CAAA,wBAAA;CAAA,yBAAA;CAAA,uBAAA;CAAA,uBAAA;CAAA,yBAAA;CAAA,qBAAA;CAAA,qBAAA;CAAA,yBAAA;CAAA,sBAAA;CAAA,uBAAA;CAAA,wBAAA;CAAA,uBAAA;CAAA,qBAAA;CAAA,2BAAA;CAAA,sBAAA;CAAA,yBAAA;CAAA,uBAAA;CAAA,sBAAA;CAAA,0BAAA;CAAA,8CAAA;CAAA,4CAAA;CAAA,8CAAA;CAAA,gDAAA;CAAA,4CAAA;CAAA,+CAAA;CAAA,uCAAA;CAAA,6CAAA;CAAA,4CAAA;CAAA,0CAAA;CAAA,0CAAA;CAAA,4CAAA;CAAA,wCAAA;CAAA,2CAAA;CAAA,0CAAA;CAAA,0CAAA;CAAA,gDAAA;CAAA,0CAAA;CAAA,2CAAA;CAAA,4CAAA;CAAA,0CAAA;CAAA,0CAAA;CAAA,2CAAA;CAAA,yCAAA;CAAA,gDAAA;CAAA,4CAAA;CAAA,uCAAA;CAAA,0CAAA;CAAA,0CAAA;CAAA,2CAAA;CAAA,2CAAA;CAAA,2CAAA;CAAA,gDAAA;CAAA,wCAAA;CAAA,qCAAA;CAAA,6CAAA;;AAKd,IAAM,QAAQ,uBAAA,OAAA;CAAA,yBAAA;CAAA,sBAAA;CAAA,2BAAA;CAAA,uBAAA;CAAA,yBAAA;CAAA,wBAAA;CAAA,wBAAA;CAAA,wBAAA;CAAA,mBAAA;CAAA,qBAAA;CAAA,wBAAA;CAAA,yBAAA;CAAA,uBAAA;CAAA,uBAAA;CAAA,sBAAA;CAAA,qBAAA;CAAA,wBAAA;CAAA,6BAAA;CAAA,sBAAA;CAAA,qBAAA;CAAA,uBAAA;CAAA,oBAAA;;;;;;;AAUd,IAAa,WAAW,SAAe;CACrC,MAAM,WAAW,YAAY,KAAK;CAElC,IAAI,CAAC,MAAM,WAAW;EACpB,QAAQ,KAAK,wBAAwB,MAAM;EAC3C,OAAO;CACT;CAEA,OAAO,MAAM;AACf;;;;;;AAOA,IAAa,WAAW,SAAe;CACrC,MAAM,WAAW,YAAY,KAAK;CAElC,IAAI,CAAC,MAAM,WAAW;EACpB,QAAQ,KAAK,wBAAwB,MAAM;EAC3C,OAAO;CACT;CACA,OAAO,MAAM;AACf"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarMenuButton.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuButton.vue"],"names":[],"mappings":"AAqDA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAG3E;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY,8VA2Gd,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"ScalarMenuButton.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMenu/ScalarMenuButton.vue"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAG3E;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY,8VA6Gd,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarMenuButton.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuButton.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Button component\n *\n * The trigger button for the ScalarMenu dropdown.\n * Displays a logo icon and a caret indicator.\n *\n * @example\n * <ScalarMenuButton :open=\"false\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ScalarIconCaretDown } from '@scalar/icons'\n\nimport { ScalarHeaderButton } from '../ScalarHeader'\nimport { ScalarIcon } from '../ScalarIcon'\nimport type { ScalarMenuButtonProps, ScalarMenuButtonSlots } from './types'\n\ndefineProps<ScalarMenuButtonProps>()\n\ndefineSlots<ScalarMenuButtonSlots>()\n</script>\n<template>\n <ScalarHeaderButton\n class=\"gap-0.75 px-2 py-1.5 text-c-header-1 hover:bg-b-header-2\">\n <div class=\"h-5 w-auto\">\n <slot name=\"logo\">\n <ScalarIcon icon=\"Logo\" />\n </slot>\n </div>\n <span\n v-if=\"$slots.title\"\n class=\"ml-1 truncate text-sm font-medium\">\n <slot name=\"title\" />\n </span>\n <span class=\"sr-only\">\n <slot name=\"label\">{{ open ? 'Close Menu' : 'Open Menu' }}</slot>\n </span>\n <ScalarIconCaretDown\n class=\"shrink-0 text-c-header-2 group-hover/button:text-c-header-1 size-3.5\"\n :class=\"open ? 'rotate-180' : ''\"\n weight=\"bold\" />\n </ScalarHeaderButton>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ScalarMenuButton.vue.js","names":[],"sources":["../../../src/components/ScalarMenu/ScalarMenuButton.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Button component\n *\n * The trigger button for the ScalarMenu dropdown.\n * Displays a logo icon and a caret indicator.\n *\n * @example\n * <ScalarMenuButton :open=\"false\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ScalarIconCaretDown } from '@scalar/icons'\n\nimport { ScalarHeaderButton } from '../ScalarHeader'\nimport { ScalarIcon } from '../ScalarIcon'\nimport type { ScalarMenuButtonProps, ScalarMenuButtonSlots } from './types'\n\ndefineProps<ScalarMenuButtonProps>()\n\ndefineSlots<ScalarMenuButtonSlots>()\n</script>\n<template>\n <ScalarHeaderButton\n class=\"gap-0.75 px-2 py-1.5 text-c-header-1 hover:bg-b-header-2\">\n <div class=\"h-5 w-auto\">\n <slot name=\"logo\">\n <ScalarIcon\n icon=\"Logo\"\n size=\"lg\" />\n </slot>\n </div>\n <span\n v-if=\"$slots.title\"\n class=\"ml-1 truncate text-sm font-medium\">\n <slot name=\"title\" />\n </span>\n <span class=\"sr-only\">\n <slot name=\"label\">{{ open ? 'Close Menu' : 'Open Menu' }}</slot>\n </span>\n <ScalarIconCaretDown\n class=\"shrink-0 text-c-header-2 group-hover/button:text-c-header-1 size-3.5\"\n :class=\"open ? 'rotate-180' : ''\"\n weight=\"bold\" />\n </ScalarHeaderButton>\n</template>\n"],"mappings":""}
@@ -16,7 +16,10 @@ var ScalarMenuButton_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
16
16
  return (_ctx, _cache) => {
17
17
  return openBlock(), createBlock(unref(ScalarHeaderButton_default), { class: "gap-0.75 px-2 py-1.5 text-c-header-1 hover:bg-b-header-2" }, {
18
18
  default: withCtx(() => [
19
- createElementVNode("div", _hoisted_1, [renderSlot(_ctx.$slots, "logo", {}, () => [createVNode(unref(ScalarIcon_default), { icon: "Logo" })])]),
19
+ createElementVNode("div", _hoisted_1, [renderSlot(_ctx.$slots, "logo", {}, () => [createVNode(unref(ScalarIcon_default), {
20
+ icon: "Logo",
21
+ size: "lg"
22
+ })])]),
20
23
  _ctx.$slots.title ? (openBlock(), createElementBlock("span", _hoisted_2, [renderSlot(_ctx.$slots, "title")])) : createCommentVNode("", true),
21
24
  createElementVNode("span", _hoisted_3, [renderSlot(_ctx.$slots, "label", {}, () => [createTextVNode(toDisplayString(__props.open ? "Close Menu" : "Open Menu"), 1)])]),
22
25
  createVNode(unref(ScalarIconCaretDown), {
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarMenuButton.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarMenu/ScalarMenuButton.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Button component\n *\n * The trigger button for the ScalarMenu dropdown.\n * Displays a logo icon and a caret indicator.\n *\n * @example\n * <ScalarMenuButton :open=\"false\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ScalarIconCaretDown } from '@scalar/icons'\n\nimport { ScalarHeaderButton } from '../ScalarHeader'\nimport { ScalarIcon } from '../ScalarIcon'\nimport type { ScalarMenuButtonProps, ScalarMenuButtonSlots } from './types'\n\ndefineProps<ScalarMenuButtonProps>()\n\ndefineSlots<ScalarMenuButtonSlots>()\n</script>\n<template>\n <ScalarHeaderButton\n class=\"gap-0.75 px-2 py-1.5 text-c-header-1 hover:bg-b-header-2\">\n <div class=\"h-5 w-auto\">\n <slot name=\"logo\">\n <ScalarIcon icon=\"Logo\" />\n </slot>\n </div>\n <span\n v-if=\"$slots.title\"\n class=\"ml-1 truncate text-sm font-medium\">\n <slot name=\"title\" />\n </span>\n <span class=\"sr-only\">\n <slot name=\"label\">{{ open ? 'Close Menu' : 'Open Menu' }}</slot>\n </span>\n <ScalarIconCaretDown\n class=\"shrink-0 text-c-header-2 group-hover/button:text-c-header-1 size-3.5\"\n :class=\"open ? 'rotate-180' : ''\"\n weight=\"bold\" />\n </ScalarHeaderButton>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;uBAyBE,YAmBqB,MAAA,0BAAA,GAAA,EAlBnB,OAAM,2DAA0D,GAAA;2BAK1D;KAJN,mBAIM,OAJN,YAIM,CAHJ,WAEO,KAAA,QAAA,QAAA,CAAA,SAAA,CADL,YAA0B,MAAA,kBAAA,GAAA,EAAd,MAAK,OAAM,CAAA,CAAA,CAAA,CAAA,CAAA;KAInBA,KAAAA,OAAO,SAAA,UAAA,GADf,mBAIO,QAJP,YAIO,CADL,WAAqB,KAAA,QAAA,OAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;KAEvB,mBAEO,QAFP,YAEO,CADL,WAAiE,KAAA,QAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,gBAA3C,QAAA,OAAI,eAAA,WAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA;KAE5B,YAGkB,MAAA,mBAAA,GAAA;MAFhB,OAAK,eAAA,CAAC,wEACE,QAAA,OAAI,eAAA,EAAA,CAAA;MACZ,QAAO"}
1
+ {"version":3,"file":"ScalarMenuButton.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarMenu/ScalarMenuButton.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Menu Button component\n *\n * The trigger button for the ScalarMenu dropdown.\n * Displays a logo icon and a caret indicator.\n *\n * @example\n * <ScalarMenuButton :open=\"false\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ScalarIconCaretDown } from '@scalar/icons'\n\nimport { ScalarHeaderButton } from '../ScalarHeader'\nimport { ScalarIcon } from '../ScalarIcon'\nimport type { ScalarMenuButtonProps, ScalarMenuButtonSlots } from './types'\n\ndefineProps<ScalarMenuButtonProps>()\n\ndefineSlots<ScalarMenuButtonSlots>()\n</script>\n<template>\n <ScalarHeaderButton\n class=\"gap-0.75 px-2 py-1.5 text-c-header-1 hover:bg-b-header-2\">\n <div class=\"h-5 w-auto\">\n <slot name=\"logo\">\n <ScalarIcon\n icon=\"Logo\"\n size=\"lg\" />\n </slot>\n </div>\n <span\n v-if=\"$slots.title\"\n class=\"ml-1 truncate text-sm font-medium\">\n <slot name=\"title\" />\n </span>\n <span class=\"sr-only\">\n <slot name=\"label\">{{ open ? 'Close Menu' : 'Open Menu' }}</slot>\n </span>\n <ScalarIconCaretDown\n class=\"shrink-0 text-c-header-2 group-hover/button:text-c-header-1 size-3.5\"\n :class=\"open ? 'rotate-180' : ''\"\n weight=\"bold\" />\n </ScalarHeaderButton>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;uBAyBE,YAqBqB,MAAA,0BAAA,GAAA,EApBnB,OAAM,2DAA0D,GAAA;2BAO1D;KANN,mBAMM,OANN,YAMM,CALJ,WAIO,KAAA,QAAA,QAAA,CAAA,SAAA,CAHL,YAEc,MAAA,kBAAA,GAAA;MADZ,MAAK;MACL,MAAK;;KAIHA,KAAAA,OAAO,SAAA,UAAA,GADf,mBAIO,QAJP,YAIO,CADL,WAAqB,KAAA,QAAA,OAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;KAEvB,mBAEO,QAFP,YAEO,CADL,WAAiE,KAAA,QAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,gBAA3C,QAAA,OAAI,eAAA,WAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA;KAE5B,YAGkB,MAAA,mBAAA,GAAA;MAFhB,OAAK,eAAA,CAAC,wEACE,QAAA,OAAI,eAAA,EAAA,CAAA;MACZ,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarSidebarGroup.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarSidebar/ScalarSidebarGroup.vue"],"names":[],"mappings":"AAsLA,OAAO,KAAK,EAA2B,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAI/E;;;;;;;;;;;;;;;;;;;;;;GAsBG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;;;;;WAwDT,OAAO;;;;;;;;;;;WAAP,OAAO;;;;;4GAoOZ,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"ScalarSidebarGroup.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarSidebar/ScalarSidebarGroup.vue"],"names":[],"mappings":"AAgLA,OAAO,KAAK,EAA2B,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAI/E;;;;;;;;;;;;;;;;;;;;;;GAsBG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;;;;;WAwDT,OAAO;;;;;;;;;;;WAAP,OAAO;;;;;4GA0OZ,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":"ScalarSidebarGroup.vue.js","names":[],"sources":["../../../src/components/ScalarSidebar/ScalarSidebarGroup.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Sidebar Group component\n *\n * A collapsible ScalarSidebarItem that can contain subitems.\n *\n * Classes applied to the component are passed to the inner list element.\n * Other attributes (like click event) are passed to the toggle button.\n *\n * @example\n * <ScalarSidebarGroup>\n * <!-- Group toggle text -->\n * <template #items>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * </template>\n * </ScalarSidebarGroup>\n *\n *\n * By default the component has it's own internal open state, but this can be\n * controlled by passing the `controlled` prop and using binding the :open prop.\n *\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport ScalarSidebarButton from './ScalarSidebarButton.vue'\nimport ScalarSidebarGroupToggle from './ScalarSidebarGroupToggle.vue'\nimport ScalarSidebarIndent from './ScalarSidebarIndent.vue'\nimport ScalarSidebarLoading from './ScalarSidebarLoading.vue'\nimport type { ScalarSidebarGroupProps, ScalarSidebarGroupSlots } from './types'\nimport { useSidebarGroups } from './useSidebarGroups'\n\nconst {\n controlled,\n discrete,\n is = 'li',\n} = defineProps<ScalarSidebarGroupProps>()\n\nconst emit = defineEmits<{\n /** Emitted when the group label is clicked */\n (e: 'click', event: MouseEvent): void\n /**\n * Emitted when _only_ the group toggle button (caret) is clicked\n *\n * Note: This is only emitted if the group is discrete\n */\n (e: 'toggle', event: MouseEvent): void\n}>()\n\nconst open = defineModel<boolean>('open', { default: false })\n\ndefineSlots<ScalarSidebarGroupSlots>()\n\nconst { level } = useSidebarGroups({ increment: true })\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n\n/** Handle the click event for the group toggle */\nconst handleClick = (event: MouseEvent) => {\n // Bubble up the click event\n emit('click', event)\n if (!controlled && !discrete) {\n // Only toggle the open state if the group is uncontrolled and not discrete\n open.value = !open.value\n }\n}\n\n/** Handle the click event for the group toggle */\nconst handleToggle = (event: MouseEvent) => {\n // Bubble up the toggle event\n emit('toggle', event)\n if (!controlled && discrete) {\n // Only toggle the open state if the group is uncontrolled and not discrete\n open.value = !open.value\n }\n}\n</script>\n<template>\n <component\n v-bind=\"cx('group/item flex flex-col gap-px')\"\n :is=\"is\">\n <div class=\"group/group-button relative flex flex-col text-base\">\n <slot\n name=\"before\"\n :open />\n <slot\n :level=\"level\"\n name=\"button\"\n :open>\n <ScalarSidebarButton\n is=\"button\"\n :active\n :aria-expanded=\"open\"\n :disabled\n :icon\n :indent=\"level\"\n :selected\n @click=\"handleClick\">\n <template #indent>\n <ScalarSidebarIndent\n class=\"mr-0 -my-2\"\n :indent=\"level\"\n :selected />\n </template>\n <template\n v-if=\"$slots.icon\"\n #icon>\n <slot\n name=\"icon\"\n :open />\n </template>\n <template #aside>\n <slot\n name=\"aside\"\n :open />\n <div\n v-if=\"discrete\"\n class=\"size-4\">\n <!-- Placeholder for discrete group toggle -->\n </div>\n <slot\n v-else\n name=\"toggle\"\n :open>\n <ScalarSidebarGroupToggle\n class=\"text-sidebar-c-2\"\n :open />\n </slot>\n </template>\n <slot :open />\n </ScalarSidebarButton>\n <button\n v-if=\"discrete\"\n :aria-expanded=\"open\"\n class=\"absolute top-[1lh] -translate-y-1/2 p-0.75 rounded right-1.25 text-sidebar-c-2\"\n :class=\"\n selected\n ? 'hover:bg-sidebar-b-1 hover:text-sidebar-c-1'\n : 'hover:bg-sidebar-b-hover hover:text-sidebar-c-hover'\n \"\n type=\"button\"\n @click=\"handleToggle\">\n <slot\n name=\"toggle\"\n :open>\n <ScalarSidebarGroupToggle :open>\n <template #label>\n {{ open ? 'Close' : 'Open' }} <slot :open=\"open\" />\n </template>\n </ScalarSidebarGroupToggle>\n </slot>\n </button>\n </slot>\n <slot\n name=\"after\"\n :open />\n </div>\n <ul\n v-if=\"open\"\n class=\"group/items flex flex-col gap-px\">\n <ScalarSidebarLoading v-if=\"loading\" />\n <slot\n v-else\n name=\"items\"\n :open />\n </ul>\n </component>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ScalarSidebarGroup.vue.js","names":[],"sources":["../../../src/components/ScalarSidebar/ScalarSidebarGroup.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Sidebar Group component\n *\n * A collapsible ScalarSidebarItem that can contain subitems.\n *\n * Classes applied to the component are passed to the inner list element.\n * Other attributes (like click event) are passed to the toggle button.\n *\n * @example\n * <ScalarSidebarGroup>\n * <!-- Group toggle text -->\n * <template #items>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * </template>\n * </ScalarSidebarGroup>\n *\n *\n * By default the component has it's own internal open state, but this can be\n * controlled by passing the `controlled` prop and using binding the :open prop.\n *\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport ScalarSidebarButton from './ScalarSidebarButton.vue'\nimport ScalarSidebarGroupToggle from './ScalarSidebarGroupToggle.vue'\nimport ScalarSidebarGroupToggleButton from './ScalarSidebarGroupToggleButton.vue'\nimport ScalarSidebarGroupToggleSpacer from './ScalarSidebarGroupToggleSpacer.vue'\nimport ScalarSidebarIndent from './ScalarSidebarIndent.vue'\nimport ScalarSidebarLoading from './ScalarSidebarLoading.vue'\nimport type { ScalarSidebarGroupProps, ScalarSidebarGroupSlots } from './types'\nimport { useSidebarGroups } from './useSidebarGroups'\n\nconst {\n controlled,\n discrete,\n is = 'li',\n} = defineProps<ScalarSidebarGroupProps>()\n\nconst emit = defineEmits<{\n /** Emitted when the group label is clicked */\n (e: 'click', event: MouseEvent): void\n /**\n * Emitted when _only_ the group toggle button (caret) is clicked\n *\n * Note: This is only emitted if the group is discrete\n */\n (e: 'toggle', event: MouseEvent): void\n}>()\n\nconst open = defineModel<boolean>('open', { default: false })\n\ndefineSlots<ScalarSidebarGroupSlots>()\n\nconst { level } = useSidebarGroups({ increment: true })\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n\n/** Handle the click event for the group toggle */\nconst handleClick = (event: MouseEvent) => {\n // Bubble up the click event\n emit('click', event)\n if (!controlled && !discrete) {\n // Only toggle the open state if the group is uncontrolled and not discrete\n open.value = !open.value\n }\n}\n\n/** Handle the click event for the group toggle */\nconst handleToggle = (event: MouseEvent) => {\n // Bubble up the toggle event\n emit('toggle', event)\n if (!controlled && discrete) {\n // Only toggle the open state if the group is uncontrolled and not discrete\n open.value = !open.value\n }\n}\n</script>\n<template>\n <component\n v-bind=\"cx('group/item flex flex-col gap-px')\"\n :is=\"is\">\n <div class=\"group/group-button relative flex flex-col text-base\">\n <slot\n name=\"before\"\n :open />\n <slot\n :level=\"level\"\n name=\"button\"\n :open>\n <ScalarSidebarButton\n is=\"button\"\n :active\n :aria-expanded=\"discrete ? undefined : open\"\n :disabled\n :icon\n :indent=\"level\"\n :selected\n @click=\"handleClick\">\n <template #indent>\n <ScalarSidebarIndent\n class=\"mr-0 -my-2\"\n :indent=\"level\"\n :selected />\n </template>\n <template\n v-if=\"$slots.icon\"\n #icon>\n <slot\n name=\"icon\"\n :open />\n </template>\n <template #aside>\n <slot\n name=\"aside\"\n :open />\n <ScalarSidebarGroupToggleSpacer v-if=\"discrete\" />\n <slot\n v-else\n name=\"toggle\"\n :open>\n <ScalarSidebarGroupToggle\n class=\"text-sidebar-c-2\"\n :open />\n </slot>\n </template>\n <slot :open />\n </ScalarSidebarButton>\n <ScalarSidebarGroupToggleButton\n v-if=\"discrete\"\n :open\n :selected\n @click=\"handleToggle\">\n <slot\n name=\"toggle\"\n :open>\n <ScalarSidebarGroupToggle :open>\n <template #label>\n {{ open ? 'Close' : 'Open' }} <slot :open=\"open\" />\n </template>\n </ScalarSidebarGroupToggle>\n </slot>\n </ScalarSidebarGroupToggleButton>\n </slot>\n <slot\n name=\"after\"\n :open />\n </div>\n <ul\n v-if=\"open\"\n class=\"group/items flex flex-col gap-px\">\n <ScalarSidebarLoading v-if=\"loading\" />\n <slot\n v-else\n name=\"items\"\n :open />\n </ul>\n </component>\n</template>\n"],"mappings":""}
@@ -1,18 +1,15 @@
1
1
  import ScalarSidebarIndent_default from "./ScalarSidebarIndent.vue.js";
2
2
  import ScalarSidebarButton_default from "./ScalarSidebarButton.vue.js";
3
3
  import ScalarSidebarGroupToggle_default from "./ScalarSidebarGroupToggle.vue.js";
4
+ import ScalarSidebarGroupToggleButton_default from "./ScalarSidebarGroupToggleButton.vue.js";
5
+ import ScalarSidebarGroupToggleSpacer_default from "./ScalarSidebarGroupToggleSpacer.vue.js";
4
6
  import { useSidebarGroups } from "./useSidebarGroups.js";
5
7
  import ScalarSidebarLoading_default from "./ScalarSidebarLoading.vue.js";
6
8
  import { useBindCx } from "@scalar/use-hooks/useBindCx";
7
- import { createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeModels, normalizeClass, normalizeProps, openBlock, renderSlot, resolveDynamicComponent, toDisplayString, unref, useModel, withCtx } from "vue";
9
+ import { createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeModels, normalizeProps, openBlock, renderSlot, resolveDynamicComponent, toDisplayString, unref, useModel, withCtx } from "vue";
8
10
  //#region src/components/ScalarSidebar/ScalarSidebarGroup.vue?vue&type=script&setup=true&lang.ts
9
11
  var _hoisted_1 = { class: "group/group-button relative flex flex-col text-base" };
10
12
  var _hoisted_2 = {
11
- key: 0,
12
- class: "size-4"
13
- };
14
- var _hoisted_3 = ["aria-expanded"];
15
- var _hoisted_4 = {
16
13
  key: 0,
17
14
  class: "group/items flex flex-col gap-px"
18
15
  };
@@ -62,7 +59,7 @@ var ScalarSidebarGroup_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
62
59
  }, () => [createVNode(ScalarSidebarButton_default, {
63
60
  is: "button",
64
61
  active: __props.active,
65
- "aria-expanded": open.value,
62
+ "aria-expanded": __props.discrete ? void 0 : open.value,
66
63
  disabled: __props.disabled,
67
64
  icon: __props.icon,
68
65
  indent: unref(level),
@@ -74,7 +71,7 @@ var ScalarSidebarGroup_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
74
71
  indent: unref(level),
75
72
  selected: __props.selected
76
73
  }, null, 8, ["indent", "selected"])]),
77
- aside: withCtx(() => [renderSlot(_ctx.$slots, "aside", { open: open.value }), __props.discrete ? (openBlock(), createElementBlock("div", _hoisted_2)) : renderSlot(_ctx.$slots, "toggle", { open: open.value }, () => [createVNode(ScalarSidebarGroupToggle_default, {
74
+ aside: withCtx(() => [renderSlot(_ctx.$slots, "aside", { open: open.value }), __props.discrete ? (openBlock(), createBlock(ScalarSidebarGroupToggleSpacer_default, { key: 0 })) : renderSlot(_ctx.$slots, "toggle", { open: open.value }, () => [createVNode(ScalarSidebarGroupToggle_default, {
78
75
  class: "text-sidebar-c-2",
79
76
  open: open.value
80
77
  }, null, 8, ["open"])], void 0, 1)]),
@@ -91,18 +88,20 @@ var ScalarSidebarGroup_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
91
88
  "icon",
92
89
  "indent",
93
90
  "selected"
94
- ]), __props.discrete ? (openBlock(), createElementBlock("button", {
91
+ ]), __props.discrete ? (openBlock(), createBlock(ScalarSidebarGroupToggleButton_default, {
95
92
  key: 0,
96
- "aria-expanded": open.value,
97
- class: normalizeClass(["absolute top-[1lh] -translate-y-1/2 p-0.75 rounded right-1.25 text-sidebar-c-2", __props.selected ? "hover:bg-sidebar-b-1 hover:text-sidebar-c-1" : "hover:bg-sidebar-b-hover hover:text-sidebar-c-hover"]),
98
- type: "button",
93
+ open: open.value,
94
+ selected: __props.selected,
99
95
  onClick: handleToggle
100
- }, [renderSlot(_ctx.$slots, "toggle", { open: open.value }, () => [createVNode(ScalarSidebarGroupToggle_default, { open: open.value }, {
101
- label: withCtx(() => [createTextVNode(toDisplayString(open.value ? "Close" : "Open") + " ", 1), renderSlot(_ctx.$slots, "default", { open: open.value })]),
96
+ }, {
97
+ default: withCtx(() => [renderSlot(_ctx.$slots, "toggle", { open: open.value }, () => [createVNode(ScalarSidebarGroupToggle_default, { open: open.value }, {
98
+ label: withCtx(() => [createTextVNode(toDisplayString(open.value ? "Close" : "Open") + " ", 1), renderSlot(_ctx.$slots, "default", { open: open.value })]),
99
+ _: 3
100
+ }, 8, ["open"])])]),
102
101
  _: 3
103
- }, 8, ["open"])])], 10, _hoisted_3)) : createCommentVNode("", true)]),
102
+ }, 8, ["open", "selected"])) : createCommentVNode("", true)]),
104
103
  renderSlot(_ctx.$slots, "after", { open: open.value })
105
- ]), open.value ? (openBlock(), createElementBlock("ul", _hoisted_4, [__props.loading ? (openBlock(), createBlock(ScalarSidebarLoading_default, { key: 0 })) : renderSlot(_ctx.$slots, "items", { open: open.value }, void 0, void 0, 1)])) : createCommentVNode("", true)]),
104
+ ]), open.value ? (openBlock(), createElementBlock("ul", _hoisted_2, [__props.loading ? (openBlock(), createBlock(ScalarSidebarLoading_default, { key: 0 })) : renderSlot(_ctx.$slots, "items", { open: open.value }, void 0, void 0, 1)])) : createCommentVNode("", true)]),
106
105
  _: 3
107
106
  }, 16);
108
107
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarSidebarGroup.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarSidebar/ScalarSidebarGroup.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Sidebar Group component\n *\n * A collapsible ScalarSidebarItem that can contain subitems.\n *\n * Classes applied to the component are passed to the inner list element.\n * Other attributes (like click event) are passed to the toggle button.\n *\n * @example\n * <ScalarSidebarGroup>\n * <!-- Group toggle text -->\n * <template #items>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * </template>\n * </ScalarSidebarGroup>\n *\n *\n * By default the component has it's own internal open state, but this can be\n * controlled by passing the `controlled` prop and using binding the :open prop.\n *\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport ScalarSidebarButton from './ScalarSidebarButton.vue'\nimport ScalarSidebarGroupToggle from './ScalarSidebarGroupToggle.vue'\nimport ScalarSidebarIndent from './ScalarSidebarIndent.vue'\nimport ScalarSidebarLoading from './ScalarSidebarLoading.vue'\nimport type { ScalarSidebarGroupProps, ScalarSidebarGroupSlots } from './types'\nimport { useSidebarGroups } from './useSidebarGroups'\n\nconst {\n controlled,\n discrete,\n is = 'li',\n} = defineProps<ScalarSidebarGroupProps>()\n\nconst emit = defineEmits<{\n /** Emitted when the group label is clicked */\n (e: 'click', event: MouseEvent): void\n /**\n * Emitted when _only_ the group toggle button (caret) is clicked\n *\n * Note: This is only emitted if the group is discrete\n */\n (e: 'toggle', event: MouseEvent): void\n}>()\n\nconst open = defineModel<boolean>('open', { default: false })\n\ndefineSlots<ScalarSidebarGroupSlots>()\n\nconst { level } = useSidebarGroups({ increment: true })\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n\n/** Handle the click event for the group toggle */\nconst handleClick = (event: MouseEvent) => {\n // Bubble up the click event\n emit('click', event)\n if (!controlled && !discrete) {\n // Only toggle the open state if the group is uncontrolled and not discrete\n open.value = !open.value\n }\n}\n\n/** Handle the click event for the group toggle */\nconst handleToggle = (event: MouseEvent) => {\n // Bubble up the toggle event\n emit('toggle', event)\n if (!controlled && discrete) {\n // Only toggle the open state if the group is uncontrolled and not discrete\n open.value = !open.value\n }\n}\n</script>\n<template>\n <component\n v-bind=\"cx('group/item flex flex-col gap-px')\"\n :is=\"is\">\n <div class=\"group/group-button relative flex flex-col text-base\">\n <slot\n name=\"before\"\n :open />\n <slot\n :level=\"level\"\n name=\"button\"\n :open>\n <ScalarSidebarButton\n is=\"button\"\n :active\n :aria-expanded=\"open\"\n :disabled\n :icon\n :indent=\"level\"\n :selected\n @click=\"handleClick\">\n <template #indent>\n <ScalarSidebarIndent\n class=\"mr-0 -my-2\"\n :indent=\"level\"\n :selected />\n </template>\n <template\n v-if=\"$slots.icon\"\n #icon>\n <slot\n name=\"icon\"\n :open />\n </template>\n <template #aside>\n <slot\n name=\"aside\"\n :open />\n <div\n v-if=\"discrete\"\n class=\"size-4\">\n <!-- Placeholder for discrete group toggle -->\n </div>\n <slot\n v-else\n name=\"toggle\"\n :open>\n <ScalarSidebarGroupToggle\n class=\"text-sidebar-c-2\"\n :open />\n </slot>\n </template>\n <slot :open />\n </ScalarSidebarButton>\n <button\n v-if=\"discrete\"\n :aria-expanded=\"open\"\n class=\"absolute top-[1lh] -translate-y-1/2 p-0.75 rounded right-1.25 text-sidebar-c-2\"\n :class=\"\n selected\n ? 'hover:bg-sidebar-b-1 hover:text-sidebar-c-1'\n : 'hover:bg-sidebar-b-hover hover:text-sidebar-c-hover'\n \"\n type=\"button\"\n @click=\"handleToggle\">\n <slot\n name=\"toggle\"\n :open>\n <ScalarSidebarGroupToggle :open>\n <template #label>\n {{ open ? 'Close' : 'Open' }} <slot :open=\"open\" />\n </template>\n </ScalarSidebarGroupToggle>\n </slot>\n </button>\n </slot>\n <slot\n name=\"after\"\n :open />\n </div>\n <ul\n v-if=\"open\"\n class=\"group/items flex flex-col gap-px\">\n <ScalarSidebarLoading v-if=\"loading\" />\n <slot\n v-else\n name=\"items\"\n :open />\n </ul>\n </component>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CA,MAAM,OAAO;EAWb,MAAM,OAAO,SAAoB,SAAC,MAA0B;EAI5D,MAAM,EAAE,UAAU,iBAAiB,EAAE,WAAW,KAAK,CAAC;EAGtD,MAAM,EAAE,OAAO,UAAU;;EAGzB,MAAM,eAAe,UAAsB;GAEzC,KAAK,SAAS,KAAK;GACnB,IAAI,CAAC,QAAA,cAAc,CAAC,QAAA,UAElB,KAAK,QAAQ,CAAC,KAAK;EAEvB;;EAGA,MAAM,gBAAgB,UAAsB;GAE1C,KAAK,UAAU,KAAK;GACpB,IAAI,CAAC,QAAA,cAAc,QAAA,UAEjB,KAAK,QAAQ,CAAC,KAAK;EAEvB;;uBAGE,YAwFY,wBAtFL,QAAA,EAAE,GAAA,eAAA,mBADC,MAAA,EAAA,CAAE,CAAA,iCAAA,CAAA,CAAA,GAAA;2BA6EJ,CA3EN,mBA2EM,OA3EN,YA2EM;KA1EJ,WAEU,KAAA,QAAA,UAAA,EAAP,MAAA,KAAA,MAAI,CAAA;KACP,WAmEO,KAAA,QAAA,UAAA;MAlEJ,OAAO,MAAA,KAAA;MAEP,MAAA,KAAA;cAgEI,CA/DL,YAyCsB,6BAAA;MAxCpB,IAAG;MACF,QAAA,QAAA;MACA,iBAAe,KAAA;MACf,UAAA,QAAA;MACA,MAAA,QAAA;MACA,QAAQ,MAAA,KAAA;MACR,UAAA,QAAA;MACA,SAAO;;MACG,QAAM,cAID,CAHd,YAGc,6BAAA;OAFZ,OAAM;OACL,QAAQ,MAAA,KAAA;OACR,UAAA,QAAA;;MASM,OAAK,cAGJ,CAFV,WAEU,KAAA,QAAA,SAAA,EAAP,MAAA,KAAA,MAAI,CAAA,GAEC,QAAA,YAAA,UAAA,GADR,mBAIM,OAJN,UAIM,KACN,WAOO,KAAA,QAAA,UAAA,EAJJ,MAAA,KAAA,MAAI,SAIA,CAHL,YAEU,kCAAA;OADR,OAAM;OACL,MAAA,KAAA;;6BAGO,CAAd,WAAc,KAAA,QAAA,WAAA,EAAP,MAAA,KAAA,MAAI,CAAA,CAAA,CAAA;;SAxBHA,KAAAA,OAAO,OAAA;YACZ;wBAGS,CAFV,WAEU,KAAA,QAAA,QAAA,EAAP,MAAA,KAAA,MAAI,CAAA,CAAA,CAAA;;;;;;;;;SAuBH,QAAA,YAAA,UAAA,GADR,mBAoBS,UAAA;;MAlBN,iBAAe,KAAA;MAChB,OAAK,eAAA,CAAC,kFACe,QAAA,WAAA,gDAAA,qDAAA,CAAA;MAKrB,MAAK;MACJ,SAAO;SACR,WAQO,KAAA,QAAA,UAAA,EANJ,MAAA,KAAA,MAAI,SAMA,CALL,YAI2B,kCAAA,EAJA,MAAA,KAAA,MAAI,GAAA;MAClB,OAAK,cACe,CAAA,gBAAA,gBAA1B,KAAA,QAAI,UAAA,MAAA,IAAsB,KAAC,CAAA,GAAA,WAAqB,KAAA,QAAA,WAAA,EAAd,MAAM,KAAA,MAAI,CAAA,CAAA,CAAA;;;KAMzD,WAEU,KAAA,QAAA,SAAA,EAAP,MAAA,KAAA,MAAI,CAAA;QAGD,KAAA,SAAA,UAAA,GADR,mBAQK,MARL,YAQK,CALyB,QAAA,WAAA,UAAA,GAA5B,YAAuC,8BAAA,EAAA,KAAA,EAAA,CAAA,KACvC,WAGU,KAAA,QAAA,SAAA,EAAP,MAAA,KAAA,MAAI,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ScalarSidebarGroup.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarSidebar/ScalarSidebarGroup.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Sidebar Group component\n *\n * A collapsible ScalarSidebarItem that can contain subitems.\n *\n * Classes applied to the component are passed to the inner list element.\n * Other attributes (like click event) are passed to the toggle button.\n *\n * @example\n * <ScalarSidebarGroup>\n * <!-- Group toggle text -->\n * <template #items>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * </template>\n * </ScalarSidebarGroup>\n *\n *\n * By default the component has it's own internal open state, but this can be\n * controlled by passing the `controlled` prop and using binding the :open prop.\n *\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport ScalarSidebarButton from './ScalarSidebarButton.vue'\nimport ScalarSidebarGroupToggle from './ScalarSidebarGroupToggle.vue'\nimport ScalarSidebarGroupToggleButton from './ScalarSidebarGroupToggleButton.vue'\nimport ScalarSidebarGroupToggleSpacer from './ScalarSidebarGroupToggleSpacer.vue'\nimport ScalarSidebarIndent from './ScalarSidebarIndent.vue'\nimport ScalarSidebarLoading from './ScalarSidebarLoading.vue'\nimport type { ScalarSidebarGroupProps, ScalarSidebarGroupSlots } from './types'\nimport { useSidebarGroups } from './useSidebarGroups'\n\nconst {\n controlled,\n discrete,\n is = 'li',\n} = defineProps<ScalarSidebarGroupProps>()\n\nconst emit = defineEmits<{\n /** Emitted when the group label is clicked */\n (e: 'click', event: MouseEvent): void\n /**\n * Emitted when _only_ the group toggle button (caret) is clicked\n *\n * Note: This is only emitted if the group is discrete\n */\n (e: 'toggle', event: MouseEvent): void\n}>()\n\nconst open = defineModel<boolean>('open', { default: false })\n\ndefineSlots<ScalarSidebarGroupSlots>()\n\nconst { level } = useSidebarGroups({ increment: true })\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n\n/** Handle the click event for the group toggle */\nconst handleClick = (event: MouseEvent) => {\n // Bubble up the click event\n emit('click', event)\n if (!controlled && !discrete) {\n // Only toggle the open state if the group is uncontrolled and not discrete\n open.value = !open.value\n }\n}\n\n/** Handle the click event for the group toggle */\nconst handleToggle = (event: MouseEvent) => {\n // Bubble up the toggle event\n emit('toggle', event)\n if (!controlled && discrete) {\n // Only toggle the open state if the group is uncontrolled and not discrete\n open.value = !open.value\n }\n}\n</script>\n<template>\n <component\n v-bind=\"cx('group/item flex flex-col gap-px')\"\n :is=\"is\">\n <div class=\"group/group-button relative flex flex-col text-base\">\n <slot\n name=\"before\"\n :open />\n <slot\n :level=\"level\"\n name=\"button\"\n :open>\n <ScalarSidebarButton\n is=\"button\"\n :active\n :aria-expanded=\"discrete ? undefined : open\"\n :disabled\n :icon\n :indent=\"level\"\n :selected\n @click=\"handleClick\">\n <template #indent>\n <ScalarSidebarIndent\n class=\"mr-0 -my-2\"\n :indent=\"level\"\n :selected />\n </template>\n <template\n v-if=\"$slots.icon\"\n #icon>\n <slot\n name=\"icon\"\n :open />\n </template>\n <template #aside>\n <slot\n name=\"aside\"\n :open />\n <ScalarSidebarGroupToggleSpacer v-if=\"discrete\" />\n <slot\n v-else\n name=\"toggle\"\n :open>\n <ScalarSidebarGroupToggle\n class=\"text-sidebar-c-2\"\n :open />\n </slot>\n </template>\n <slot :open />\n </ScalarSidebarButton>\n <ScalarSidebarGroupToggleButton\n v-if=\"discrete\"\n :open\n :selected\n @click=\"handleToggle\">\n <slot\n name=\"toggle\"\n :open>\n <ScalarSidebarGroupToggle :open>\n <template #label>\n {{ open ? 'Close' : 'Open' }} <slot :open=\"open\" />\n </template>\n </ScalarSidebarGroupToggle>\n </slot>\n </ScalarSidebarGroupToggleButton>\n </slot>\n <slot\n name=\"after\"\n :open />\n </div>\n <ul\n v-if=\"open\"\n class=\"group/items flex flex-col gap-px\">\n <ScalarSidebarLoading v-if=\"loading\" />\n <slot\n v-else\n name=\"items\"\n :open />\n </ul>\n </component>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4CA,MAAM,OAAO;EAWb,MAAM,OAAO,SAAoB,SAAC,MAA0B;EAI5D,MAAM,EAAE,UAAU,iBAAiB,EAAE,WAAW,KAAK,CAAC;EAGtD,MAAM,EAAE,OAAO,UAAU;;EAGzB,MAAM,eAAe,UAAsB;GAEzC,KAAK,SAAS,KAAK;GACnB,IAAI,CAAC,QAAA,cAAc,CAAC,QAAA,UAElB,KAAK,QAAQ,CAAC,KAAK;EAEvB;;EAGA,MAAM,gBAAgB,UAAsB;GAE1C,KAAK,UAAU,KAAK;GACpB,IAAI,CAAC,QAAA,cAAc,QAAA,UAEjB,KAAK,QAAQ,CAAC,KAAK;EAEvB;;uBAGE,YA8EY,wBA5EL,QAAA,EAAE,GAAA,eAAA,mBADC,MAAA,EAAA,CAAE,CAAA,iCAAA,CAAA,CAAA,GAAA;2BAmEJ,CAjEN,mBAiEM,OAjEN,YAiEM;KAhEJ,WAEU,KAAA,QAAA,UAAA,EAAP,MAAA,KAAA,MAAI,CAAA;KACP,WAyDO,KAAA,QAAA,UAAA;MAxDJ,OAAO,MAAA,KAAA;MAEP,MAAA,KAAA;cAsDI,CArDL,YAqCsB,6BAAA;MApCpB,IAAG;MACF,QAAA,QAAA;MACA,iBAAe,QAAA,WAAW,KAAA,IAAY,KAAA;MACtC,UAAA,QAAA;MACA,MAAA,QAAA;MACA,QAAQ,MAAA,KAAA;MACR,UAAA,QAAA;MACA,SAAO;;MACG,QAAM,cAID,CAHd,YAGc,6BAAA;OAFZ,OAAM;OACL,QAAQ,MAAA,KAAA;OACR,UAAA,QAAA;;MASM,OAAK,cAGJ,CAFV,WAEU,KAAA,QAAA,SAAA,EAAP,MAAA,KAAA,MAAI,CAAA,GAC+B,QAAA,YAAA,UAAA,GAAtC,YAAkD,wCAAA,EAAA,KAAA,EAAA,CAAA,KAClD,WAOO,KAAA,QAAA,UAAA,EAJJ,MAAA,KAAA,MAAI,SAIA,CAHL,YAEU,kCAAA;OADR,OAAM;OACL,MAAA,KAAA;;6BAGO,CAAd,WAAc,KAAA,QAAA,WAAA,EAAP,MAAA,KAAA,MAAI,CAAA,CAAA,CAAA;;SApBHA,KAAAA,OAAO,OAAA;YACZ;wBAGS,CAFV,WAEU,KAAA,QAAA,QAAA,EAAP,MAAA,KAAA,MAAI,CAAA,CAAA,CAAA;;;;;;;;;SAmBH,QAAA,YAAA,UAAA,GADR,YAciC,wCAAA;;MAZ9B,MAAA,KAAA;MACA,UAAA,QAAA;MACA,SAAO;;6BASD,CARP,WAQO,KAAA,QAAA,UAAA,EANJ,MAAA,KAAA,MAAI,SAMA,CALL,YAI2B,kCAAA,EAJA,MAAA,KAAA,MAAI,GAAA;OAClB,OAAK,cACe,CAAA,gBAAA,gBAA1B,KAAA,QAAI,UAAA,MAAA,IAAsB,KAAC,CAAA,GAAA,WAAqB,KAAA,QAAA,WAAA,EAAd,MAAM,KAAA,MAAI,CAAA,CAAA,CAAA;;;;;KAMzD,WAEU,KAAA,QAAA,SAAA,EAAP,MAAA,KAAA,MAAI,CAAA;QAGD,KAAA,SAAA,UAAA,GADR,mBAQK,MARL,YAQK,CALyB,QAAA,WAAA,UAAA,GAA5B,YAAuC,8BAAA,EAAA,KAAA,EAAA,CAAA,KACvC,WAGU,KAAA,QAAA,SAAA,EAAP,MAAA,KAAA,MAAI,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,CAAA"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Scalar Sidebar Group Toggle Button component
3
+ *
4
+ * Provides the standalone expand and collapse control for a discrete
5
+ * ScalarSidebarGroup, where the group label is a control of its own
6
+ * (usually a link) and therefore cannot also own the open state.
7
+ *
8
+ * The button is positioned over the end of the group label, so it needs a
9
+ * positioned ancestor and a ScalarSidebarGroupToggleSpacer inside the label
10
+ * to reserve room for it.
11
+ *
12
+ * @example
13
+ * <ScalarSidebarGroupToggleButton
14
+ * :open="open"
15
+ * @click="open = !open">
16
+ * <template #label>{{ open ? 'Close' : 'Open' }} Authentication</template>
17
+ * </ScalarSidebarGroupToggleButton>
18
+ *
19
+ * @see ScalarSidebarGroup
20
+ */
21
+ declare const _default: typeof __VLS_export;
22
+ export default _default;
23
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
24
+ /**
25
+ * Whether or not the group is open
26
+ *
27
+ * @default false
28
+ */
29
+ open?: boolean;
30
+ /**
31
+ * Whether or not the group label underneath the button is selected
32
+ *
33
+ * Matches the hover styles of the button to the label it sits on top of.
34
+ */
35
+ selected?: boolean;
36
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
37
+ /**
38
+ * Whether or not the group is open
39
+ *
40
+ * @default false
41
+ */
42
+ open?: boolean;
43
+ /**
44
+ * Whether or not the group label underneath the button is selected
45
+ *
46
+ * Matches the hover styles of the button to the label it sits on top of.
47
+ */
48
+ selected?: boolean;
49
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
50
+ /** Override the toggle icon */
51
+ default?(props: {
52
+ open: boolean;
53
+ }): unknown;
54
+ /** Override the screen reader label */
55
+ label?(props: {
56
+ open: boolean;
57
+ }): unknown;
58
+ }>;
59
+ type __VLS_WithSlots<T, S> = T & {
60
+ new (): {
61
+ $slots: S;
62
+ };
63
+ };
64
+ //# sourceMappingURL=ScalarSidebarGroupToggleButton.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScalarSidebarGroupToggleButton.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue"],"names":[],"mappings":"AA+FA;;;;;;;;;;;;;;;;;;;GAmBG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;IAEhB;;;;OAIG;WACI,OAAO;IACd;;;;OAIG;eACQ,OAAO;;IAXlB;;;;OAIG;WACI,OAAO;IACd;;;;OAIG;eACQ,OAAO;;IAMlB,+BAA+B;oBACf;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;IAC3C,uCAAuC;kBACzB;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;EA+EvC,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -0,0 +1,7 @@
1
+ import ScalarSidebarGroupToggleButton_vue_vue_type_script_setup_true_lang_default from "./ScalarSidebarGroupToggleButton.vue.script.js";
2
+ //#region src/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue
3
+ var ScalarSidebarGroupToggleButton_default = ScalarSidebarGroupToggleButton_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { ScalarSidebarGroupToggleButton_default as default };
6
+
7
+ //# sourceMappingURL=ScalarSidebarGroupToggleButton.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScalarSidebarGroupToggleButton.vue.js","names":[],"sources":["../../../src/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Sidebar Group Toggle Button component\n *\n * Provides the standalone expand and collapse control for a discrete\n * ScalarSidebarGroup, where the group label is a control of its own\n * (usually a link) and therefore cannot also own the open state.\n *\n * The button is positioned over the end of the group label, so it needs a\n * positioned ancestor and a ScalarSidebarGroupToggleSpacer inside the label\n * to reserve room for it.\n *\n * @example\n * <ScalarSidebarGroupToggleButton\n * :open=\"open\"\n * @click=\"open = !open\">\n * <template #label>{{ open ? 'Close' : 'Open' }} Authentication</template>\n * </ScalarSidebarGroupToggleButton>\n *\n * @see ScalarSidebarGroup\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { cva, useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport ScalarSidebarGroupToggle from './ScalarSidebarGroupToggle.vue'\n\nconst { open = false } = defineProps<{\n /**\n * Whether or not the group is open\n *\n * @default false\n */\n open?: boolean\n /**\n * Whether or not the group label underneath the button is selected\n *\n * Matches the hover styles of the button to the label it sits on top of.\n */\n selected?: boolean\n}>()\n\ndefineSlots<{\n /** Override the toggle icon */\n default?(props: { open: boolean }): unknown\n /** Override the screen reader label */\n label?(props: { open: boolean }): unknown\n}>()\n\nconst variants = cva({\n base: [\n // Position the button over the end of the group label\n 'absolute top-[1lh] right-1.25 -translate-y-1/2',\n // Sizing and color\n 'rounded p-0.75 text-sidebar-c-2',\n ],\n variants: {\n selected: {\n true: 'hover:bg-sidebar-b-1 hover:text-sidebar-c-1',\n false: 'hover:bg-sidebar-b-hover hover:text-sidebar-c-hover',\n },\n },\n defaultVariants: { selected: false },\n})\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <button\n :aria-expanded=\"open\"\n type=\"button\"\n v-bind=\"cx(variants({ selected }))\">\n <slot :open>\n <ScalarSidebarGroupToggle :open>\n <template\n v-if=\"$slots.label\"\n #label>\n <slot\n name=\"label\"\n :open />\n </template>\n </ScalarSidebarGroupToggle>\n </slot>\n </button>\n</template>\n"],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import ScalarSidebarGroupToggle_default from "./ScalarSidebarGroupToggle.vue.js";
2
+ import { cva, useBindCx } from "@scalar/use-hooks/useBindCx";
3
+ import { createElementBlock, createSlots, createVNode, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from "vue";
4
+ //#region src/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = ["aria-expanded"];
6
+ var ScalarSidebarGroupToggleButton_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
7
+ inheritAttrs: false,
8
+ __name: "ScalarSidebarGroupToggleButton",
9
+ props: {
10
+ open: {
11
+ type: Boolean,
12
+ default: false
13
+ },
14
+ selected: { type: Boolean }
15
+ },
16
+ setup(__props) {
17
+ const variants = cva({
18
+ base: ["absolute top-[1lh] right-1.25 -translate-y-1/2", "rounded p-0.75 text-sidebar-c-2"],
19
+ variants: { selected: {
20
+ true: "hover:bg-sidebar-b-1 hover:text-sidebar-c-1",
21
+ false: "hover:bg-sidebar-b-hover hover:text-sidebar-c-hover"
22
+ } },
23
+ defaultVariants: { selected: false }
24
+ });
25
+ const { cx } = useBindCx();
26
+ return (_ctx, _cache) => {
27
+ return openBlock(), createElementBlock("button", mergeProps({
28
+ "aria-expanded": __props.open,
29
+ type: "button"
30
+ }, unref(cx)(unref(variants)({ selected: __props.selected }))), [renderSlot(_ctx.$slots, "default", { open: __props.open }, () => [createVNode(ScalarSidebarGroupToggle_default, { open: __props.open }, createSlots({ _: 2 }, [_ctx.$slots.label ? {
31
+ name: "label",
32
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "label", { open: __props.open })]),
33
+ key: "0"
34
+ } : void 0]), 1032, ["open"])])], 16, _hoisted_1);
35
+ };
36
+ }
37
+ });
38
+ //#endregion
39
+ export { ScalarSidebarGroupToggleButton_vue_vue_type_script_setup_true_lang_default as default };
40
+
41
+ //# sourceMappingURL=ScalarSidebarGroupToggleButton.vue.script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScalarSidebarGroupToggleButton.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Sidebar Group Toggle Button component\n *\n * Provides the standalone expand and collapse control for a discrete\n * ScalarSidebarGroup, where the group label is a control of its own\n * (usually a link) and therefore cannot also own the open state.\n *\n * The button is positioned over the end of the group label, so it needs a\n * positioned ancestor and a ScalarSidebarGroupToggleSpacer inside the label\n * to reserve room for it.\n *\n * @example\n * <ScalarSidebarGroupToggleButton\n * :open=\"open\"\n * @click=\"open = !open\">\n * <template #label>{{ open ? 'Close' : 'Open' }} Authentication</template>\n * </ScalarSidebarGroupToggleButton>\n *\n * @see ScalarSidebarGroup\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { cva, useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport ScalarSidebarGroupToggle from './ScalarSidebarGroupToggle.vue'\n\nconst { open = false } = defineProps<{\n /**\n * Whether or not the group is open\n *\n * @default false\n */\n open?: boolean\n /**\n * Whether or not the group label underneath the button is selected\n *\n * Matches the hover styles of the button to the label it sits on top of.\n */\n selected?: boolean\n}>()\n\ndefineSlots<{\n /** Override the toggle icon */\n default?(props: { open: boolean }): unknown\n /** Override the screen reader label */\n label?(props: { open: boolean }): unknown\n}>()\n\nconst variants = cva({\n base: [\n // Position the button over the end of the group label\n 'absolute top-[1lh] right-1.25 -translate-y-1/2',\n // Sizing and color\n 'rounded p-0.75 text-sidebar-c-2',\n ],\n variants: {\n selected: {\n true: 'hover:bg-sidebar-b-1 hover:text-sidebar-c-1',\n false: 'hover:bg-sidebar-b-hover hover:text-sidebar-c-hover',\n },\n },\n defaultVariants: { selected: false },\n})\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <button\n :aria-expanded=\"open\"\n type=\"button\"\n v-bind=\"cx(variants({ selected }))\">\n <slot :open>\n <ScalarSidebarGroupToggle :open>\n <template\n v-if=\"$slots.label\"\n #label>\n <slot\n name=\"label\"\n :open />\n </template>\n </ScalarSidebarGroupToggle>\n </slot>\n </button>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAkDA,MAAM,WAAW,IAAI;GACnB,MAAM,CAEJ,kDAEA,iCACF;GACA,UAAU,EACR,UAAU;IACR,MAAM;IACN,OAAO;GACT,EACF;GACA,iBAAiB,EAAE,UAAU,MAAM;EACrC,CAAC;EAGD,MAAM,EAAE,OAAO,UAAU;;uBAGvB,mBAeS,UAfT,WAeS;IAdN,iBAAe,QAAA;IAChB,MAAK;MACG,MAAA,EAAA,CAAE,CAAC,MAAA,QAAA,CAAQ,CAAA,EAAA,UAAG,QAAA,SAAQ,CAAA,CAAA,CAAA,GAAA,CAC9B,WAUO,KAAA,QAAA,WAAA,EAVA,MAAA,QAAA,KAAI,SAUJ,CATL,YAQ2B,kCAAA,EARA,MAAA,QAAA,KAAI,GAAA,YAAA,EAAA,GAAA,EAAA,GAAA,CAErBA,KAAAA,OAAO,QAAA;UACZ;sBAGS,CAFV,WAEU,KAAA,QAAA,SAAA,EAAP,MAAA,QAAA,KAAI,CAAA,CAAA,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Scalar Sidebar Group Toggle Spacer component
3
+ *
4
+ * Reserves room at the end of a discrete group label for the
5
+ * ScalarSidebarGroupToggleButton, which is positioned on top of the label
6
+ * and therefore takes up no space of its own.
7
+ *
8
+ * Render it in the label's aside slot so long labels wrap before they run
9
+ * underneath the toggle button.
10
+ *
11
+ * @see ScalarSidebarGroupToggleButton
12
+ */
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;
15
+ 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>;
16
+ //# sourceMappingURL=ScalarSidebarGroupToggleSpacer.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScalarSidebarGroupToggleSpacer.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue"],"names":[],"mappings":"AA8BA;;;;;;;;;;;GAWG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY,+QA2Bd,CAAC"}
@@ -0,0 +1,7 @@
1
+ import ScalarSidebarGroupToggleSpacer_vue_vue_type_script_setup_true_lang_default from "./ScalarSidebarGroupToggleSpacer.vue.script.js";
2
+ //#region src/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue
3
+ var ScalarSidebarGroupToggleSpacer_default = ScalarSidebarGroupToggleSpacer_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { ScalarSidebarGroupToggleSpacer_default as default };
6
+
7
+ //# sourceMappingURL=ScalarSidebarGroupToggleSpacer.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScalarSidebarGroupToggleSpacer.vue.js","names":[],"sources":["../../../src/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Sidebar Group Toggle Spacer component\n *\n * Reserves room at the end of a discrete group label for the\n * ScalarSidebarGroupToggleButton, which is positioned on top of the label\n * and therefore takes up no space of its own.\n *\n * Render it in the label's aside slot so long labels wrap before they run\n * underneath the toggle button.\n *\n * @see ScalarSidebarGroupToggleButton\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('size-4')\" />\n</template>\n"],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { useBindCx } from "@scalar/use-hooks/useBindCx";
2
+ import { createElementBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, unref } from "vue";
3
+ var ScalarSidebarGroupToggleSpacer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
4
+ inheritAttrs: false,
5
+ __name: "ScalarSidebarGroupToggleSpacer",
6
+ setup(__props) {
7
+ const { cx } = useBindCx();
8
+ return (_ctx, _cache) => {
9
+ return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(unref(cx)("size-4"))), null, 16);
10
+ };
11
+ }
12
+ });
13
+ //#endregion
14
+ export { ScalarSidebarGroupToggleSpacer_vue_vue_type_script_setup_true_lang_default as default };
15
+
16
+ //# sourceMappingURL=ScalarSidebarGroupToggleSpacer.vue.script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScalarSidebarGroupToggleSpacer.vue.script.js","names":[],"sources":["../../../src/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Sidebar Group Toggle Spacer component\n *\n * Reserves room at the end of a discrete group label for the\n * ScalarSidebarGroupToggleButton, which is positioned on top of the label\n * and therefore takes up no space of its own.\n *\n * Render it in the label's aside slot so long labels wrap before they run\n * underneath the toggle button.\n *\n * @see ScalarSidebarGroupToggleButton\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('size-4')\" />\n</template>\n"],"mappings":";;;;;;EAmBA,MAAM,EAAE,OAAO,UAAU;;uBAGvB,mBAA6B,OAAA,eAAA,mBAAhB,MAAA,EAAA,CAAE,CAAA,QAAA,CAAA,CAAA,GAAA,MAAA,EAAA"}
@@ -3,6 +3,8 @@ export { default as ScalarSidebarButton } from './ScalarSidebarButton.vue.js';
3
3
  export { default as ScalarSidebarFooter } from './ScalarSidebarFooter.vue.js';
4
4
  export { default as ScalarSidebarGroup } from './ScalarSidebarGroup.vue.js';
5
5
  export { default as ScalarSidebarGroupToggle } from './ScalarSidebarGroupToggle.vue.js';
6
+ export { default as ScalarSidebarGroupToggleButton } from './ScalarSidebarGroupToggleButton.vue.js';
7
+ export { default as ScalarSidebarGroupToggleSpacer } from './ScalarSidebarGroupToggleSpacer.vue.js';
6
8
  export { default as ScalarSidebarIndent } from './ScalarSidebarIndent.vue.js';
7
9
  export { default as ScalarSidebarItem } from './ScalarSidebarItem.vue.js';
8
10
  export { default as ScalarSidebarItems } from './ScalarSidebarItems.vue.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarSidebar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AACtF,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAC5E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarSidebar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,OAAO,IAAI,8BAA8B,EAAE,MAAM,sCAAsC,CAAA;AAChG,OAAO,EAAE,OAAO,IAAI,8BAA8B,EAAE,MAAM,sCAAsC,CAAA;AAChG,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AACtF,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAC5E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAA"}
@@ -3,6 +3,8 @@ import ScalarSidebarIndent_default from "./ScalarSidebarIndent.vue.js";
3
3
  import ScalarSidebarButton_default from "./ScalarSidebarButton.vue.js";
4
4
  import ScalarSidebarFooter_default from "./ScalarSidebarFooter.vue.js";
5
5
  import ScalarSidebarGroupToggle_default from "./ScalarSidebarGroupToggle.vue.js";
6
+ import ScalarSidebarGroupToggleButton_default from "./ScalarSidebarGroupToggleButton.vue.js";
7
+ import ScalarSidebarGroupToggleSpacer_default from "./ScalarSidebarGroupToggleSpacer.vue.js";
6
8
  import ScalarSidebarItem_default from "./ScalarSidebarItem.vue.js";
7
9
  import ScalarSidebarGroup_default from "./ScalarSidebarGroup.vue.js";
8
10
  import ScalarSidebarItems_default from "./ScalarSidebarItems.vue.js";
@@ -11,4 +13,4 @@ import ScalarSidebarNestedItems_default from "./ScalarSidebarNestedItems.vue.js"
11
13
  import ScalarSidebarSearchButton_default from "./ScalarSidebarSearchButton.vue.js";
12
14
  import ScalarSidebarSearchInput_default from "./ScalarSidebarSearchInput.vue.js";
13
15
  import ScalarSidebarSection_default from "./ScalarSidebarSection.vue.js";
14
- export { ScalarSidebar_default as ScalarSidebar, ScalarSidebarButton_default as ScalarSidebarButton, ScalarSidebarFooter_default as ScalarSidebarFooter, ScalarSidebarGroup_default as ScalarSidebarGroup, ScalarSidebarGroupToggle_default as ScalarSidebarGroupToggle, ScalarSidebarIndent_default as ScalarSidebarIndent, ScalarSidebarItem_default as ScalarSidebarItem, ScalarSidebarItems_default as ScalarSidebarItems, ScalarSidebarNestedItems_default as ScalarSidebarNestedItems, ScalarSidebarSearchButton_default as ScalarSidebarSearchButton, ScalarSidebarSearchInput_default as ScalarSidebarSearchInput, ScalarSidebarSection_default as ScalarSidebarSection, ScalarSidebarSpacer_default as ScalarSidebarSpacer };
16
+ export { ScalarSidebar_default as ScalarSidebar, ScalarSidebarButton_default as ScalarSidebarButton, ScalarSidebarFooter_default as ScalarSidebarFooter, ScalarSidebarGroup_default as ScalarSidebarGroup, ScalarSidebarGroupToggle_default as ScalarSidebarGroupToggle, ScalarSidebarGroupToggleButton_default as ScalarSidebarGroupToggleButton, ScalarSidebarGroupToggleSpacer_default as ScalarSidebarGroupToggleSpacer, ScalarSidebarIndent_default as ScalarSidebarIndent, ScalarSidebarItem_default as ScalarSidebarItem, ScalarSidebarItems_default as ScalarSidebarItems, ScalarSidebarNestedItems_default as ScalarSidebarNestedItems, ScalarSidebarSearchButton_default as ScalarSidebarSearchButton, ScalarSidebarSearchInput_default as ScalarSidebarSearchInput, ScalarSidebarSection_default as ScalarSidebarSection, ScalarSidebarSpacer_default as ScalarSidebarSpacer };
package/dist/index.d.ts CHANGED
@@ -15,7 +15,7 @@ export { ScalarFileUpload, ScalarFileUploadDropTarget, ScalarFileUploadError, Sc
15
15
  export type { ScalarFloatingOptions } from './components/ScalarFloating/index.js';
16
16
  export { ScalarFloating, ScalarFloatingBackdrop } from './components/ScalarFloating/index.js';
17
17
  export { ScalarForm, ScalarFormError, ScalarFormField, ScalarFormInput, ScalarFormInputGroup, ScalarFormSection, } from './components/ScalarForm/index.js';
18
- export { ScalarHeader, ScalarHeaderButton } from './components/ScalarHeader/index.js';
18
+ export { ScalarHeader, ScalarHeaderButton, ScalarHeaderColumn } from './components/ScalarHeader/index.js';
19
19
  export type { ScalarHotkeyModifier } from './components/ScalarHotkey/index.js';
20
20
  export { ScalarHotkey, formatHotkeySymbols } from './components/ScalarHotkey/index.js';
21
21
  export type { Icon } from './components/ScalarIcon/index.js';
@@ -35,7 +35,7 @@ export { ScalarPopover } from './components/ScalarPopover/index.js';
35
35
  export { ScalarSavePrompt } from './components/ScalarSavePrompt/index.js';
36
36
  export { ScalarSearchInput } from './components/ScalarSearchInput/index.js';
37
37
  export { ScalarSearchResultItem, ScalarSearchResultList } from './components/ScalarSearchResults/index.js';
38
- export { ScalarSidebar, ScalarSidebarButton, ScalarSidebarFooter, ScalarSidebarGroup, ScalarSidebarGroupToggle, ScalarSidebarIndent, ScalarSidebarItem, ScalarSidebarItems, ScalarSidebarNestedItems, ScalarSidebarSearchButton, ScalarSidebarSearchInput, ScalarSidebarSection, ScalarSidebarSpacer, } from './components/ScalarSidebar/index.js';
38
+ export { ScalarSidebar, ScalarSidebarButton, ScalarSidebarFooter, ScalarSidebarGroup, ScalarSidebarGroupToggle, ScalarSidebarGroupToggleButton, ScalarSidebarGroupToggleSpacer, ScalarSidebarIndent, ScalarSidebarItem, ScalarSidebarItems, ScalarSidebarNestedItems, ScalarSidebarSearchButton, ScalarSidebarSearchInput, ScalarSidebarSection, ScalarSidebarSpacer, } from './components/ScalarSidebar/index.js';
39
39
  export { ScalarTeleport, ScalarTeleportRoot, TELEPORT_SYMBOL, useProvideTeleport, useTeleport, } from './components/ScalarTeleport/index.js';
40
40
  export { ScalarTextArea } from './components/ScalarTextArea/index.js';
41
41
  export { ScalarTextInput, ScalarTextInputCopy } from './components/ScalarTextInput/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -50,6 +50,7 @@ import ScalarFileUpload_default from "./components/ScalarFileUpload/ScalarFileUp
50
50
  import ScalarFileUploadFileList_default from "./components/ScalarFileUpload/ScalarFileUploadFileList.vue.js";
51
51
  import ScalarHeader_default from "./components/ScalarHeader/ScalarHeader.vue.js";
52
52
  import ScalarHeaderButton_default from "./components/ScalarHeader/ScalarHeaderButton.vue.js";
53
+ import ScalarHeaderColumn_default from "./components/ScalarHeader/ScalarHeaderColumn.vue.js";
53
54
  import { formatHotkeySymbols } from "./components/ScalarHotkey/formatHotkey.js";
54
55
  import ScalarHotkey_default from "./components/ScalarHotkey/ScalarHotkey.vue.js";
55
56
  import ScalarIcon_default from "./components/ScalarIcon/ScalarIcon.vue.js";
@@ -83,6 +84,8 @@ import ScalarSidebarIndent_default from "./components/ScalarSidebar/ScalarSideba
83
84
  import ScalarSidebarButton_default from "./components/ScalarSidebar/ScalarSidebarButton.vue.js";
84
85
  import ScalarSidebarFooter_default from "./components/ScalarSidebar/ScalarSidebarFooter.vue.js";
85
86
  import ScalarSidebarGroupToggle_default from "./components/ScalarSidebar/ScalarSidebarGroupToggle.vue.js";
87
+ import ScalarSidebarGroupToggleButton_default from "./components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue.js";
88
+ import ScalarSidebarGroupToggleSpacer_default from "./components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue.js";
86
89
  import ScalarSidebarItem_default from "./components/ScalarSidebar/ScalarSidebarItem.vue.js";
87
90
  import ScalarSidebarGroup_default from "./components/ScalarSidebar/ScalarSidebarGroup.vue.js";
88
91
  import ScalarSidebarItems_default from "./components/ScalarSidebar/ScalarSidebarItems.vue.js";
@@ -107,4 +110,4 @@ import ScalarVirtualCodeBlock_default from "./components/ScalarVirtualCodeBlock/
107
110
  import ScalarWrappingText_default from "./components/ScalarWrappingText/ScalarWrappingText.vue.js";
108
111
  import { addScalarClassesToHeadless } from "./helpers/add-scalar-classes.js";
109
112
  import { compose, cva, cx, tw, useBindCx } from "@scalar/use-hooks/useBindCx";
110
- export { ScalarButton_default as ScalarButton, ScalarCard_default as ScalarCard, ScalarCardFooter_default as ScalarCardFooter, ScalarCardHeader_default as ScalarCardHeader, ScalarCardSection_default as ScalarCardSection, ScalarCheckbox_default as ScalarCheckbox, ScalarCheckboxGroup_default as ScalarCheckboxGroup, ScalarCheckboxInput_default as ScalarCheckboxInput, ScalarCheckboxRadioGroup_default as ScalarCheckboxRadioGroup, ScalarCodeBlock_default as ScalarCodeBlock, ScalarCodeBlockCopy_default as ScalarCodeBlockCopy, ScalarColorModeToggle_default as ScalarColorModeToggle, ScalarColorModeToggleButton_default as ScalarColorModeToggleButton, ScalarColorModeToggleIcon_default as ScalarColorModeToggleIcon, ScalarCombobox_default as ScalarCombobox, ScalarComboboxMultiselect_default as ScalarComboboxMultiselect, ScalarCopy_default as ScalarCopy, ScalarCopyBackdrop_default as ScalarCopyBackdrop, ScalarCopyButton_default as ScalarCopyButton, ScalarDropdown_default as ScalarDropdown, ScalarDropdownButton_default as ScalarDropdownButton, ScalarDropdownDivider_default as ScalarDropdownDivider, ScalarDropdownItem_default as ScalarDropdownItem, ScalarDropdownMenu_default as ScalarDropdownMenu, ScalarErrorBoundary_default as ScalarErrorBoundary, ScalarFileUpload_default as ScalarFileUpload, ScalarFileUploadDropTarget_default as ScalarFileUploadDropTarget, ScalarFileUploadError_default as ScalarFileUploadError, ScalarFileUploadFileList_default as ScalarFileUploadFileList, ScalarFileUploadInput_default as ScalarFileUploadInput, ScalarFileUploadInputCompact_default as ScalarFileUploadInputCompact, ScalarFileUploadLoading_default as ScalarFileUploadLoading, ScalarFloating_default as ScalarFloating, ScalarFloatingBackdrop_default as ScalarFloatingBackdrop, ScalarForm_default as ScalarForm, ScalarFormError_default as ScalarFormError, ScalarFormField_default as ScalarFormField, ScalarFormInput_default as ScalarFormInput, ScalarFormInputGroup_default as ScalarFormInputGroup, ScalarFormSection_default as ScalarFormSection, ScalarHeader_default as ScalarHeader, ScalarHeaderButton_default as ScalarHeaderButton, ScalarHotkey_default as ScalarHotkey, ScalarHotkeyTooltip_default as ScalarHotkeyTooltip, ScalarIcon_default as ScalarIcon, ScalarIconButton_default as ScalarIconButton, ScalarIconLegacyAdapter_default as ScalarIconLegacyAdapter, ScalarListbox_default as ScalarListbox, ScalarListboxCheckbox_default as ScalarListboxCheckbox, ScalarListboxInput_default as ScalarListboxInput, ScalarListboxItem_default as ScalarListboxItem, ScalarLoading_default as ScalarLoading, ScalarMarkdown_default as ScalarMarkdown, ScalarMarkdownSummary_default as ScalarMarkdownSummary, ScalarMenu_default as ScalarMenu, ScalarMenuButton_default as ScalarMenuButton, ScalarMenuLink_default as ScalarMenuLink, ScalarMenuProduct_default as ScalarMenuProduct, ScalarMenuProducts_default as ScalarMenuProducts, ScalarMenuResources_default as ScalarMenuResources, ScalarMenuSection_default as ScalarMenuSection, ScalarMenuSupport_default as ScalarMenuSupport, ScalarMenuTeamPicker_default as ScalarMenuTeamPicker, ScalarMenuTeamProfile_default as ScalarMenuTeamProfile, ScalarMenuWorkspacePicker_default as ScalarMenuWorkspacePicker, ScalarModal_default as ScalarModal, ScalarPopover_default as ScalarPopover, ScalarSavePrompt_default as ScalarSavePrompt, ScalarSearchInput_default as ScalarSearchInput, ScalarSearchResultItem_default as ScalarSearchResultItem, ScalarSearchResultList_default as ScalarSearchResultList, ScalarSidebar_default as ScalarSidebar, ScalarSidebarButton_default as ScalarSidebarButton, ScalarSidebarFooter_default as ScalarSidebarFooter, ScalarSidebarGroup_default as ScalarSidebarGroup, ScalarSidebarGroupToggle_default as ScalarSidebarGroupToggle, ScalarSidebarIndent_default as ScalarSidebarIndent, ScalarSidebarItem_default as ScalarSidebarItem, ScalarSidebarItems_default as ScalarSidebarItems, ScalarSidebarNestedItems_default as ScalarSidebarNestedItems, ScalarSidebarSearchButton_default as ScalarSidebarSearchButton, ScalarSidebarSearchInput_default as ScalarSidebarSearchInput, ScalarSidebarSection_default as ScalarSidebarSection, ScalarSidebarSpacer_default as ScalarSidebarSpacer, ScalarTeleport_default as ScalarTeleport, ScalarTeleportRoot_default as ScalarTeleportRoot, ScalarTextArea_default as ScalarTextArea, ScalarTextInput_default as ScalarTextInput, ScalarTextInputCopy_default as ScalarTextInputCopy, ScalarThemeSwatches_default as ScalarThemeSwatches, ScalarToggle_default as ScalarToggle, ScalarToggleGroup_default as ScalarToggleGroup, ScalarToggleInput_default as ScalarToggleInput, ScalarTooltip_default as ScalarTooltip, ScalarTristateToggle_default as ScalarTristateToggle, ScalarTristateToggleGroup_default as ScalarTristateToggleGroup, ScalarTristateToggleInput_default as ScalarTristateToggleInput, ScalarVirtualCodeBlock_default as ScalarVirtualCodeBlock, ScalarVirtualText_default as ScalarVirtualText, ScalarWrappingText_default as ScalarWrappingText, TELEPORT_SYMBOL, addScalarClassesToHeadless, compose, cva, cx, formatHotkeySymbols, isGroups as isScalarComboboxGroups, tw, useBindCx, useLoadingState, useModal, useProvideTeleport, useTeleport, useThemeSwatches, useTooltip };
113
+ export { ScalarButton_default as ScalarButton, ScalarCard_default as ScalarCard, ScalarCardFooter_default as ScalarCardFooter, ScalarCardHeader_default as ScalarCardHeader, ScalarCardSection_default as ScalarCardSection, ScalarCheckbox_default as ScalarCheckbox, ScalarCheckboxGroup_default as ScalarCheckboxGroup, ScalarCheckboxInput_default as ScalarCheckboxInput, ScalarCheckboxRadioGroup_default as ScalarCheckboxRadioGroup, ScalarCodeBlock_default as ScalarCodeBlock, ScalarCodeBlockCopy_default as ScalarCodeBlockCopy, ScalarColorModeToggle_default as ScalarColorModeToggle, ScalarColorModeToggleButton_default as ScalarColorModeToggleButton, ScalarColorModeToggleIcon_default as ScalarColorModeToggleIcon, ScalarCombobox_default as ScalarCombobox, ScalarComboboxMultiselect_default as ScalarComboboxMultiselect, ScalarCopy_default as ScalarCopy, ScalarCopyBackdrop_default as ScalarCopyBackdrop, ScalarCopyButton_default as ScalarCopyButton, ScalarDropdown_default as ScalarDropdown, ScalarDropdownButton_default as ScalarDropdownButton, ScalarDropdownDivider_default as ScalarDropdownDivider, ScalarDropdownItem_default as ScalarDropdownItem, ScalarDropdownMenu_default as ScalarDropdownMenu, ScalarErrorBoundary_default as ScalarErrorBoundary, ScalarFileUpload_default as ScalarFileUpload, ScalarFileUploadDropTarget_default as ScalarFileUploadDropTarget, ScalarFileUploadError_default as ScalarFileUploadError, ScalarFileUploadFileList_default as ScalarFileUploadFileList, ScalarFileUploadInput_default as ScalarFileUploadInput, ScalarFileUploadInputCompact_default as ScalarFileUploadInputCompact, ScalarFileUploadLoading_default as ScalarFileUploadLoading, ScalarFloating_default as ScalarFloating, ScalarFloatingBackdrop_default as ScalarFloatingBackdrop, ScalarForm_default as ScalarForm, ScalarFormError_default as ScalarFormError, ScalarFormField_default as ScalarFormField, ScalarFormInput_default as ScalarFormInput, ScalarFormInputGroup_default as ScalarFormInputGroup, ScalarFormSection_default as ScalarFormSection, ScalarHeader_default as ScalarHeader, ScalarHeaderButton_default as ScalarHeaderButton, ScalarHeaderColumn_default as ScalarHeaderColumn, ScalarHotkey_default as ScalarHotkey, ScalarHotkeyTooltip_default as ScalarHotkeyTooltip, ScalarIcon_default as ScalarIcon, ScalarIconButton_default as ScalarIconButton, ScalarIconLegacyAdapter_default as ScalarIconLegacyAdapter, ScalarListbox_default as ScalarListbox, ScalarListboxCheckbox_default as ScalarListboxCheckbox, ScalarListboxInput_default as ScalarListboxInput, ScalarListboxItem_default as ScalarListboxItem, ScalarLoading_default as ScalarLoading, ScalarMarkdown_default as ScalarMarkdown, ScalarMarkdownSummary_default as ScalarMarkdownSummary, ScalarMenu_default as ScalarMenu, ScalarMenuButton_default as ScalarMenuButton, ScalarMenuLink_default as ScalarMenuLink, ScalarMenuProduct_default as ScalarMenuProduct, ScalarMenuProducts_default as ScalarMenuProducts, ScalarMenuResources_default as ScalarMenuResources, ScalarMenuSection_default as ScalarMenuSection, ScalarMenuSupport_default as ScalarMenuSupport, ScalarMenuTeamPicker_default as ScalarMenuTeamPicker, ScalarMenuTeamProfile_default as ScalarMenuTeamProfile, ScalarMenuWorkspacePicker_default as ScalarMenuWorkspacePicker, ScalarModal_default as ScalarModal, ScalarPopover_default as ScalarPopover, ScalarSavePrompt_default as ScalarSavePrompt, ScalarSearchInput_default as ScalarSearchInput, ScalarSearchResultItem_default as ScalarSearchResultItem, ScalarSearchResultList_default as ScalarSearchResultList, ScalarSidebar_default as ScalarSidebar, ScalarSidebarButton_default as ScalarSidebarButton, ScalarSidebarFooter_default as ScalarSidebarFooter, ScalarSidebarGroup_default as ScalarSidebarGroup, ScalarSidebarGroupToggle_default as ScalarSidebarGroupToggle, ScalarSidebarGroupToggleButton_default as ScalarSidebarGroupToggleButton, ScalarSidebarGroupToggleSpacer_default as ScalarSidebarGroupToggleSpacer, ScalarSidebarIndent_default as ScalarSidebarIndent, ScalarSidebarItem_default as ScalarSidebarItem, ScalarSidebarItems_default as ScalarSidebarItems, ScalarSidebarNestedItems_default as ScalarSidebarNestedItems, ScalarSidebarSearchButton_default as ScalarSidebarSearchButton, ScalarSidebarSearchInput_default as ScalarSidebarSearchInput, ScalarSidebarSection_default as ScalarSidebarSection, ScalarSidebarSpacer_default as ScalarSidebarSpacer, ScalarTeleport_default as ScalarTeleport, ScalarTeleportRoot_default as ScalarTeleportRoot, ScalarTextArea_default as ScalarTextArea, ScalarTextInput_default as ScalarTextInput, ScalarTextInputCopy_default as ScalarTextInputCopy, ScalarThemeSwatches_default as ScalarThemeSwatches, ScalarToggle_default as ScalarToggle, ScalarToggleGroup_default as ScalarToggleGroup, ScalarToggleInput_default as ScalarToggleInput, ScalarTooltip_default as ScalarTooltip, ScalarTristateToggle_default as ScalarTristateToggle, ScalarTristateToggleGroup_default as ScalarTristateToggleGroup, ScalarTristateToggleInput_default as ScalarTristateToggleInput, ScalarVirtualCodeBlock_default as ScalarVirtualCodeBlock, ScalarVirtualText_default as ScalarVirtualText, ScalarWrappingText_default as ScalarWrappingText, TELEPORT_SYMBOL, addScalarClassesToHeadless, compose, cva, cx, formatHotkeySymbols, isGroups as isScalarComboboxGroups, tw, useBindCx, useLoadingState, useModal, useProvideTeleport, useTeleport, useThemeSwatches, useTooltip };
package/dist/style.css CHANGED
@@ -489,6 +489,7 @@
489
489
  }
490
490
 
491
491
  :where(.scalar-app) input:-webkit-autofill {
492
+ -webkit-text-fill-color: var(--scalar-color-1);
492
493
  -webkit-background-clip: text !important;
493
494
  background-clip: text !important;
494
495
  }
@@ -1421,10 +1422,6 @@
1421
1422
  min-width: 160px;
1422
1423
  }
1423
1424
 
1424
- .scalar-app .min-w-min {
1425
- min-width: min-content;
1426
- }
1427
-
1428
1425
  .scalar-app .flex-1 {
1429
1426
  flex: 1;
1430
1427
  }
@@ -2182,6 +2179,10 @@
2182
2179
  padding-right: 12px;
2183
2180
  }
2184
2181
 
2182
+ .scalar-app .pr-6 {
2183
+ padding-right: 24px;
2184
+ }
2185
+
2185
2186
  .scalar-app .pr-\[100\%\] {
2186
2187
  padding-right: 100%;
2187
2188
  }
@@ -2642,10 +2643,6 @@
2642
2643
  justify-content: center;
2643
2644
  }
2644
2645
 
2645
- :is(.scalar-app .\*\:gap-1 > *) {
2646
- gap: 4px;
2647
- }
2648
-
2649
2646
  :is(.scalar-app .\*\:rounded > *) {
2650
2647
  border-radius: var(--scalar-radius-md);
2651
2648
  }
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "url": "git+https://github.com/scalar/scalar.git",
11
11
  "directory": "packages/components"
12
12
  },
13
- "version": "0.27.11",
13
+ "version": "0.29.0",
14
14
  "engines": {
15
15
  "node": ">=22"
16
16
  },
@@ -221,14 +221,14 @@
221
221
  "radix-vue": "^1.9.17",
222
222
  "vue": "^3.5.40",
223
223
  "vue-component-type-helpers": "^3.2.6",
224
- "@scalar/code-highlight": "0.4.3",
225
- "@scalar/helpers": "0.10.0",
226
- "@scalar/themes": "0.17.2",
227
- "@scalar/icons": "0.7.5",
228
- "@scalar/use-hooks": "0.4.9"
224
+ "@scalar/code-highlight": "0.4.5",
225
+ "@scalar/icons": "0.7.6",
226
+ "@scalar/themes": "0.17.4",
227
+ "@scalar/use-hooks": "0.4.10",
228
+ "@scalar/helpers": "0.11.2"
229
229
  },
230
230
  "devDependencies": {
231
- "@playwright/test": "1.59.1",
231
+ "@playwright/test": "1.62.1",
232
232
  "@storybook/addon-docs": "10.3.5",
233
233
  "@storybook/addon-links": "10.3.5",
234
234
  "@storybook/vue3-vite": "10.3.5",