@scalar/components 0.21.2 → 0.21.4

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 (50) hide show
  1. package/dist/components/ScalarButton/ScalarButton.vue.js.map +1 -1
  2. package/dist/components/ScalarButton/ScalarButton.vue.script.js +1 -1
  3. package/dist/components/ScalarButton/ScalarButton.vue.script.js.map +1 -1
  4. package/dist/components/ScalarButton/constants.d.ts +1 -1
  5. package/dist/components/ScalarButton/constants.js +1 -1
  6. package/dist/components/ScalarButton/constants.js.map +1 -1
  7. package/dist/components/ScalarCard/ScalarCard.vue.d.ts.map +1 -1
  8. package/dist/components/ScalarCard/ScalarCard.vue.js.map +1 -1
  9. package/dist/components/ScalarCard/ScalarCard.vue.script.js +1 -1
  10. package/dist/components/ScalarCard/ScalarCard.vue.script.js.map +1 -1
  11. package/dist/components/ScalarCard/ScalarCardSection.vue.d.ts.map +1 -1
  12. package/dist/components/ScalarCard/ScalarCardSection.vue.js.map +1 -1
  13. package/dist/components/ScalarCard/ScalarCardSection.vue.script.js +1 -1
  14. package/dist/components/ScalarCard/ScalarCardSection.vue.script.js.map +1 -1
  15. package/dist/components/ScalarFileUpload/ScalarFileUploadFileList.vue.js.map +1 -1
  16. package/dist/components/ScalarFileUpload/ScalarFileUploadFileList.vue.script.js +2 -2
  17. package/dist/components/ScalarFileUpload/ScalarFileUploadFileList.vue.script.js.map +1 -1
  18. package/dist/components/ScalarMarkdown/ScalarMarkdownSummary.vue.d.ts +6 -0
  19. package/dist/components/ScalarMarkdown/ScalarMarkdownSummary.vue.d.ts.map +1 -1
  20. package/dist/components/ScalarMarkdown/ScalarMarkdownSummary.vue.js.map +1 -1
  21. package/dist/components/ScalarMarkdown/ScalarMarkdownSummary.vue.script.js +12 -7
  22. package/dist/components/ScalarMarkdown/ScalarMarkdownSummary.vue.script.js.map +1 -1
  23. package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.d.ts +38 -0
  24. package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.d.ts.map +1 -0
  25. package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.js +7 -0
  26. package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.js.map +1 -0
  27. package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.script.js +66 -0
  28. package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.script.js.map +1 -0
  29. package/dist/components/ScalarSavePrompt/index.d.ts +2 -0
  30. package/dist/components/ScalarSavePrompt/index.d.ts.map +1 -0
  31. package/dist/components/ScalarSidebar/ScalarSidebarItems.vue.js.map +1 -1
  32. package/dist/components/ScalarSidebar/ScalarSidebarItems.vue.script.js +1 -1
  33. package/dist/components/ScalarSidebar/ScalarSidebarItems.vue.script.js.map +1 -1
  34. package/dist/components/ScalarSidebar/ScalarSidebarNestedItems.vue.d.ts.map +1 -1
  35. package/dist/components/ScalarSidebar/ScalarSidebarNestedItems.vue.js +1 -0
  36. package/dist/components/ScalarSidebar/ScalarSidebarNestedItems.vue.js.map +1 -1
  37. package/dist/components/ScalarSidebar/ScalarSidebarNestedItems.vue.script.js +11 -14
  38. package/dist/components/ScalarSidebar/ScalarSidebarNestedItems.vue.script.js.map +1 -1
  39. package/dist/components/ScalarSidebar/ScalarSidebarPlayground.vue.d.ts +20 -0
  40. package/dist/components/ScalarSidebar/ScalarSidebarPlayground.vue.d.ts.map +1 -1
  41. package/dist/components/ScalarWrappingText/ScalarWrappingText.vue.d.ts.map +1 -1
  42. package/dist/components/ScalarWrappingText/ScalarWrappingText.vue.js.map +1 -1
  43. package/dist/components/ScalarWrappingText/ScalarWrappingText.vue.script.js +4 -2
  44. package/dist/components/ScalarWrappingText/ScalarWrappingText.vue.script.js.map +1 -1
  45. package/dist/index.d.ts +47 -36
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +2 -6
  48. package/dist/style.css +117 -7
  49. package/package.json +12 -10
  50. package/dist/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarButton.vue.js","names":[],"sources":["../../../src/components/ScalarButton/ScalarButton.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Button Component\n *\n * Provides a styled button, if you are looking for\n * an icon only button, use ScalarIconButton instead,\n * it's a helpful wrapper around this component\n *\n * @example\n * <ScalarButton>\n * <!-- Button label -->\n * </ScalarButton>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { cva, useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport { ScalarLoading } from '../ScalarLoading'\nimport { BUTTON_VARIANT_STYLES } from './constants'\nimport type { ButtonSize, ClassList, ScalarButtonProps } from './types'\n\nconst {\n is = 'button',\n size = 'md',\n variant = 'solid',\n} = defineProps<ScalarButtonProps>()\n\n/** Variant styles for the button (wrapper) */\nconst buttonVariants = cva({\n base: 'scalar-button flex cursor-pointer items-center justify-center rounded font-medium -outline-offset-1',\n variants: {\n disabled: { true: 'bg-b-2 text-color-3 shadow-none' },\n size: {\n xs: 'px-2 py-1 text-xs/4',\n sm: 'px-3.5 py-2 text-sm/4',\n md: 'px-5 py-3 text-sm/4',\n } satisfies Record<ButtonSize, ClassList>,\n variant: BUTTON_VARIANT_STYLES,\n },\n compoundVariants: [\n {\n disabled: true,\n variant: ['solid', 'outlined', 'ghost', 'gradient', 'danger'],\n class:\n 'bg-b-2 text-c-3 shadow-none hover:bg-b-[_] cursor-not-allowed active:bg-b-[_] hover:text-c-[_] active:text-c-[_]',\n },\n {\n disabled: true,\n variant: ['gradient'],\n class:\n 'to-b-1.5 bg-linear-to-b hover:bg-linear-to-b dark:hover:bg-linear-to-t',\n },\n ],\n})\n\n/** Variant styles for the button icon */\nconst iconVariants = cva({\n base: 'shrink-0',\n variants: {\n size: {\n xs: 'size-2.75 -ml-0.25 mr-1',\n sm: 'size-3.25 -ml-0.5 mr-1.5',\n md: 'size-3.5 -ml-0.5 mr-1.5',\n } satisfies Record<ButtonSize, ClassList>,\n },\n})\n\n/** Variant styles for the loading icon */\nconst loadingVariants = cva({\n variants: {\n size: {\n xs: 'size-4',\n sm: 'size-5',\n md: 'size-6',\n } satisfies Record<ButtonSize, ClassList>,\n },\n})\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <component\n :is=\"is\"\n :aria-disabled=\"disabled || undefined\"\n :type=\"is === 'button' ? 'button' : undefined\"\n v-bind=\"\n cx(buttonVariants({ disabled, size, variant }), {\n relative: loader?.isActive,\n })\n \">\n <div\n v-if=\"$slots.icon || icon\"\n :class=\"[iconVariants({ size }), { invisible: loader?.isActive }]\">\n <slot name=\"icon\">\n <component\n :is=\"icon\"\n class=\"size-full\" />\n </slot>\n </div>\n <span\n v-if=\"loader\"\n :class=\"{ invisible: loader?.isActive }\">\n <slot />\n </span>\n <slot v-else />\n <div\n v-if=\"loader?.isActive\"\n class=\"centered\">\n <ScalarLoading\n :class=\"loadingVariants({ size })\"\n :loader />\n </div>\n </component>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ScalarButton.vue.js","names":[],"sources":["../../../src/components/ScalarButton/ScalarButton.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Button Component\n *\n * Provides a styled button, if you are looking for\n * an icon only button, use ScalarIconButton instead,\n * it's a helpful wrapper around this component\n *\n * @example\n * <ScalarButton>\n * <!-- Button label -->\n * </ScalarButton>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { cva, useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport { ScalarLoading } from '../ScalarLoading'\nimport { BUTTON_VARIANT_STYLES } from './constants'\nimport type { ButtonSize, ClassList, ScalarButtonProps } from './types'\n\nconst {\n is = 'button',\n size = 'md',\n variant = 'solid',\n} = defineProps<ScalarButtonProps>()\n\n/** Variant styles for the button (wrapper) */\nconst buttonVariants = cva({\n base: 'scalar-button flex cursor-pointer items-center justify-center rounded font-medium -outline-offset-1',\n variants: {\n disabled: { true: 'bg-b-2 text-color-3 shadow-none' },\n size: {\n xs: 'px-2 py-1 text-xs/4',\n sm: 'px-3.5 py-2 text-sm/4',\n md: 'px-5 py-3 text-sm/4',\n } satisfies Record<ButtonSize, ClassList>,\n variant: BUTTON_VARIANT_STYLES,\n },\n compoundVariants: [\n {\n disabled: true,\n variant: ['solid', 'outlined', 'ghost', 'gradient', 'danger'],\n class:\n 'bg-b-2 text-c-3 shadow-none hover:bg-b-[_] cursor-not-allowed active:bg-b-[_] hover:text-c-[_] active:text-c-[_]',\n },\n {\n disabled: true,\n variant: ['gradient'],\n class:\n 'to-b-1.5 bg-linear-to-b hover:bg-linear-to-b dark:hover:bg-linear-to-t',\n },\n ],\n})\n\n/** Variant styles for the button icon */\nconst iconVariants = cva({\n base: 'shrink-0',\n variants: {\n size: {\n xs: 'size-2.75 -ml-0.25 mr-1',\n sm: 'size-3.5 -ml-0.25 mr-1',\n md: 'size-3.5 -ml-0.5 mr-1.5',\n } satisfies Record<ButtonSize, ClassList>,\n },\n})\n\n/** Variant styles for the loading icon */\nconst loadingVariants = cva({\n variants: {\n size: {\n xs: 'size-4',\n sm: 'size-5',\n md: 'size-6',\n } satisfies Record<ButtonSize, ClassList>,\n },\n})\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <component\n :is=\"is\"\n :aria-disabled=\"disabled || undefined\"\n :type=\"is === 'button' ? 'button' : undefined\"\n v-bind=\"\n cx(buttonVariants({ disabled, size, variant }), {\n relative: loader?.isActive,\n })\n \">\n <div\n v-if=\"$slots.icon || icon\"\n :class=\"[iconVariants({ size }), { invisible: loader?.isActive }]\">\n <slot name=\"icon\">\n <component\n :is=\"icon\"\n class=\"size-full\" />\n </slot>\n </div>\n <span\n v-if=\"loader\"\n :class=\"{ invisible: loader?.isActive }\">\n <slot />\n </span>\n <slot v-else />\n <div\n v-if=\"loader?.isActive\"\n class=\"centered\">\n <ScalarLoading\n :class=\"loadingVariants({ size })\"\n :loader />\n </div>\n </component>\n</template>\n"],"mappings":""}
@@ -52,7 +52,7 @@ var ScalarButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
52
52
  base: "shrink-0",
53
53
  variants: { size: {
54
54
  xs: "size-2.75 -ml-0.25 mr-1",
55
- sm: "size-3.25 -ml-0.5 mr-1.5",
55
+ sm: "size-3.5 -ml-0.25 mr-1",
56
56
  md: "size-3.5 -ml-0.5 mr-1.5"
57
57
  } }
58
58
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarButton.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarButton/ScalarButton.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Button Component\n *\n * Provides a styled button, if you are looking for\n * an icon only button, use ScalarIconButton instead,\n * it's a helpful wrapper around this component\n *\n * @example\n * <ScalarButton>\n * <!-- Button label -->\n * </ScalarButton>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { cva, useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport { ScalarLoading } from '../ScalarLoading'\nimport { BUTTON_VARIANT_STYLES } from './constants'\nimport type { ButtonSize, ClassList, ScalarButtonProps } from './types'\n\nconst {\n is = 'button',\n size = 'md',\n variant = 'solid',\n} = defineProps<ScalarButtonProps>()\n\n/** Variant styles for the button (wrapper) */\nconst buttonVariants = cva({\n base: 'scalar-button flex cursor-pointer items-center justify-center rounded font-medium -outline-offset-1',\n variants: {\n disabled: { true: 'bg-b-2 text-color-3 shadow-none' },\n size: {\n xs: 'px-2 py-1 text-xs/4',\n sm: 'px-3.5 py-2 text-sm/4',\n md: 'px-5 py-3 text-sm/4',\n } satisfies Record<ButtonSize, ClassList>,\n variant: BUTTON_VARIANT_STYLES,\n },\n compoundVariants: [\n {\n disabled: true,\n variant: ['solid', 'outlined', 'ghost', 'gradient', 'danger'],\n class:\n 'bg-b-2 text-c-3 shadow-none hover:bg-b-[_] cursor-not-allowed active:bg-b-[_] hover:text-c-[_] active:text-c-[_]',\n },\n {\n disabled: true,\n variant: ['gradient'],\n class:\n 'to-b-1.5 bg-linear-to-b hover:bg-linear-to-b dark:hover:bg-linear-to-t',\n },\n ],\n})\n\n/** Variant styles for the button icon */\nconst iconVariants = cva({\n base: 'shrink-0',\n variants: {\n size: {\n xs: 'size-2.75 -ml-0.25 mr-1',\n sm: 'size-3.25 -ml-0.5 mr-1.5',\n md: 'size-3.5 -ml-0.5 mr-1.5',\n } satisfies Record<ButtonSize, ClassList>,\n },\n})\n\n/** Variant styles for the loading icon */\nconst loadingVariants = cva({\n variants: {\n size: {\n xs: 'size-4',\n sm: 'size-5',\n md: 'size-6',\n } satisfies Record<ButtonSize, ClassList>,\n },\n})\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <component\n :is=\"is\"\n :aria-disabled=\"disabled || undefined\"\n :type=\"is === 'button' ? 'button' : undefined\"\n v-bind=\"\n cx(buttonVariants({ disabled, size, variant }), {\n relative: loader?.isActive,\n })\n \">\n <div\n v-if=\"$slots.icon || icon\"\n :class=\"[iconVariants({ size }), { invisible: loader?.isActive }]\">\n <slot name=\"icon\">\n <component\n :is=\"icon\"\n class=\"size-full\" />\n </slot>\n </div>\n <span\n v-if=\"loader\"\n :class=\"{ invisible: loader?.isActive }\">\n <slot />\n </span>\n <slot v-else />\n <div\n v-if=\"loader?.isActive\"\n class=\"centered\">\n <ScalarLoading\n :class=\"loadingVariants({ size })\"\n :loader />\n </div>\n </component>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA6BA,MAAM,iBAAiB,IAAI;GACzB,MAAM;GACN,UAAU;IACR,UAAU,EAAE,MAAM,mCAAmC;IACrD,MAAM;KACJ,IAAI;KACJ,IAAI;KACJ,IAAI;KACL;IACD,SAAS;IACV;GACD,kBAAkB,CAChB;IACE,UAAU;IACV,SAAS;KAAC;KAAS;KAAY;KAAS;KAAY;KAAS;IAC7D,OACE;IACH,EACD;IACE,UAAU;IACV,SAAS,CAAC,WAAW;IACrB,OACE;IACH,CACF;GACF,CAAA;;EAGD,MAAM,eAAe,IAAI;GACvB,MAAM;GACN,UAAU,EACR,MAAM;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACL,EACF;GACF,CAAA;;EAGD,MAAM,kBAAkB,IAAI,EAC1B,UAAU,EACR,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACF,EACF,CAAA;EAGD,MAAM,EAAE,OAAO,WAAU;;uBAGvB,YA+BY,wBA9BL,QAAA,GAAE,EADT,WA+BY;IA7BT,iBAAe,QAAA,YAAY,KAAA;IAC3B,MAAM,QAAA,OAAE,WAAA,WAA2B,KAAA;MACrB,MAAA,GAAE,CAAC,MAAA,eAAc,CAAA;IAAA,UAAG,QAAA;IAAQ,MAAE,QAAA;IAAI,SAAE,QAAA;IAAO,CAAA,EAAA,EAAA,UAAyB,QAAA,QAAQ,UAAA,CAAA,CAAA,EAAA;2BAarF;KAPEA,KAAAA,OAAO,QAAQ,QAAA,QAAA,WAAA,EADvB,mBAQM,OAAA;;MANH,OAAK,eAAA,CAAG,MAAA,aAAY,CAAA,EAAA,MAAG,QAAA,MAAI,CAAA,EAAA,EAAA,WAAkB,QAAA,QAAQ,UAAQ,CAAA,CAAA;SAC9D,WAIO,KAAA,QAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAHL,YAEsB,wBADf,QAAA,KAAI,EAAA,EACT,OAAM,aAAW,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;KAIf,QAAA,UAAA,WAAA,EADR,mBAIO,QAAA;;MAFJ,OAAK,eAAA,EAAA,WAAe,QAAA,QAAQ,UAAQ,CAAA;SACrC,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,IAEV,WAAe,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA;KAEP,QAAA,QAAQ,YAAA,WAAA,EADhB,mBAMM,OANN,YAMM,CAHJ,YAEY,MAAA,sBAAA,EAAA;MADT,OAAK,eAAE,MAAA,gBAAe,CAAA,EAAA,MAAG,QAAA,MAAI,CAAA,CAAA;MAC7B,QAAA,QAAA"}
1
+ {"version":3,"file":"ScalarButton.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarButton/ScalarButton.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Button Component\n *\n * Provides a styled button, if you are looking for\n * an icon only button, use ScalarIconButton instead,\n * it's a helpful wrapper around this component\n *\n * @example\n * <ScalarButton>\n * <!-- Button label -->\n * </ScalarButton>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { cva, useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport { ScalarLoading } from '../ScalarLoading'\nimport { BUTTON_VARIANT_STYLES } from './constants'\nimport type { ButtonSize, ClassList, ScalarButtonProps } from './types'\n\nconst {\n is = 'button',\n size = 'md',\n variant = 'solid',\n} = defineProps<ScalarButtonProps>()\n\n/** Variant styles for the button (wrapper) */\nconst buttonVariants = cva({\n base: 'scalar-button flex cursor-pointer items-center justify-center rounded font-medium -outline-offset-1',\n variants: {\n disabled: { true: 'bg-b-2 text-color-3 shadow-none' },\n size: {\n xs: 'px-2 py-1 text-xs/4',\n sm: 'px-3.5 py-2 text-sm/4',\n md: 'px-5 py-3 text-sm/4',\n } satisfies Record<ButtonSize, ClassList>,\n variant: BUTTON_VARIANT_STYLES,\n },\n compoundVariants: [\n {\n disabled: true,\n variant: ['solid', 'outlined', 'ghost', 'gradient', 'danger'],\n class:\n 'bg-b-2 text-c-3 shadow-none hover:bg-b-[_] cursor-not-allowed active:bg-b-[_] hover:text-c-[_] active:text-c-[_]',\n },\n {\n disabled: true,\n variant: ['gradient'],\n class:\n 'to-b-1.5 bg-linear-to-b hover:bg-linear-to-b dark:hover:bg-linear-to-t',\n },\n ],\n})\n\n/** Variant styles for the button icon */\nconst iconVariants = cva({\n base: 'shrink-0',\n variants: {\n size: {\n xs: 'size-2.75 -ml-0.25 mr-1',\n sm: 'size-3.5 -ml-0.25 mr-1',\n md: 'size-3.5 -ml-0.5 mr-1.5',\n } satisfies Record<ButtonSize, ClassList>,\n },\n})\n\n/** Variant styles for the loading icon */\nconst loadingVariants = cva({\n variants: {\n size: {\n xs: 'size-4',\n sm: 'size-5',\n md: 'size-6',\n } satisfies Record<ButtonSize, ClassList>,\n },\n})\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <component\n :is=\"is\"\n :aria-disabled=\"disabled || undefined\"\n :type=\"is === 'button' ? 'button' : undefined\"\n v-bind=\"\n cx(buttonVariants({ disabled, size, variant }), {\n relative: loader?.isActive,\n })\n \">\n <div\n v-if=\"$slots.icon || icon\"\n :class=\"[iconVariants({ size }), { invisible: loader?.isActive }]\">\n <slot name=\"icon\">\n <component\n :is=\"icon\"\n class=\"size-full\" />\n </slot>\n </div>\n <span\n v-if=\"loader\"\n :class=\"{ invisible: loader?.isActive }\">\n <slot />\n </span>\n <slot v-else />\n <div\n v-if=\"loader?.isActive\"\n class=\"centered\">\n <ScalarLoading\n :class=\"loadingVariants({ size })\"\n :loader />\n </div>\n </component>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA6BA,MAAM,iBAAiB,IAAI;GACzB,MAAM;GACN,UAAU;IACR,UAAU,EAAE,MAAM,mCAAmC;IACrD,MAAM;KACJ,IAAI;KACJ,IAAI;KACJ,IAAI;KACL;IACD,SAAS;IACV;GACD,kBAAkB,CAChB;IACE,UAAU;IACV,SAAS;KAAC;KAAS;KAAY;KAAS;KAAY;KAAS;IAC7D,OACE;IACH,EACD;IACE,UAAU;IACV,SAAS,CAAC,WAAW;IACrB,OACE;IACH,CACF;GACF,CAAA;;EAGD,MAAM,eAAe,IAAI;GACvB,MAAM;GACN,UAAU,EACR,MAAM;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACL,EACF;GACF,CAAA;;EAGD,MAAM,kBAAkB,IAAI,EAC1B,UAAU,EACR,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACF,EACF,CAAA;EAGD,MAAM,EAAE,OAAO,WAAU;;uBAGvB,YA+BY,wBA9BL,QAAA,GAAE,EADT,WA+BY;IA7BT,iBAAe,QAAA,YAAY,KAAA;IAC3B,MAAM,QAAA,OAAE,WAAA,WAA2B,KAAA;MACrB,MAAA,GAAE,CAAC,MAAA,eAAc,CAAA;IAAA,UAAG,QAAA;IAAQ,MAAE,QAAA;IAAI,SAAE,QAAA;IAAO,CAAA,EAAA,EAAA,UAAyB,QAAA,QAAQ,UAAA,CAAA,CAAA,EAAA;2BAarF;KAPEA,KAAAA,OAAO,QAAQ,QAAA,QAAA,WAAA,EADvB,mBAQM,OAAA;;MANH,OAAK,eAAA,CAAG,MAAA,aAAY,CAAA,EAAA,MAAG,QAAA,MAAI,CAAA,EAAA,EAAA,WAAkB,QAAA,QAAQ,UAAQ,CAAA,CAAA;SAC9D,WAIO,KAAA,QAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAHL,YAEsB,wBADf,QAAA,KAAI,EAAA,EACT,OAAM,aAAW,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;KAIf,QAAA,UAAA,WAAA,EADR,mBAIO,QAAA;;MAFJ,OAAK,eAAA,EAAA,WAAe,QAAA,QAAQ,UAAQ,CAAA;SACrC,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,IAEV,WAAe,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA;KAEP,QAAA,QAAQ,YAAA,WAAA,EADhB,mBAMM,OANN,YAMM,CAHJ,YAEY,MAAA,sBAAA,EAAA;MADT,OAAK,eAAE,MAAA,gBAAe,CAAA,EAAA,MAAG,QAAA,MAAI,CAAA,CAAA;MAC7B,QAAA,QAAA"}
@@ -2,7 +2,7 @@
2
2
  export declare const BUTTON_VARIANT_STYLES: {
3
3
  readonly solid: ["scalar-button-solid", "bg-b-btn text-c-btn focus-visible:border-c-btn active:bg-b-btn hover:bg-h-btn outline-offset-1"];
4
4
  readonly outlined: ["scalar-button-outlined", "active:bg-btn-1 shadow-border bg-b-1 text-c-1 hover:bg-b-2"];
5
- readonly ghost: ["scalar-button-ghost", "bg-transparent text-c-3 active:text-c-1 hover:text-c-1"];
5
+ readonly ghost: ["scalar-button-ghost", "bg-transparent text-c-2 active:text-c-1 hover:text-c-1"];
6
6
  readonly gradient: ["scalar-button-gradient", "shadow-border bg-b-1.5 bg-linear-to-b from-b-1 to-b-2 hover:bg-linear-to-t", "dark:bg-linear-to-t dark:hover:bg-linear-to-b"];
7
7
  readonly danger: ["scalar-button-danger", "bg-c-danger text-white active:brightness-90 hover:brightness-90"];
8
8
  };
@@ -3,7 +3,7 @@
3
3
  var BUTTON_VARIANT_STYLES = {
4
4
  solid: ["scalar-button-solid", "bg-b-btn text-c-btn focus-visible:border-c-btn active:bg-b-btn hover:bg-h-btn outline-offset-1"],
5
5
  outlined: ["scalar-button-outlined", "active:bg-btn-1 shadow-border bg-b-1 text-c-1 hover:bg-b-2"],
6
- ghost: ["scalar-button-ghost", "bg-transparent text-c-3 active:text-c-1 hover:text-c-1"],
6
+ ghost: ["scalar-button-ghost", "bg-transparent text-c-2 active:text-c-1 hover:text-c-1"],
7
7
  gradient: [
8
8
  "scalar-button-gradient",
9
9
  "shadow-border bg-b-1.5 bg-linear-to-b from-b-1 to-b-2 hover:bg-linear-to-t",
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":[],"sources":["../../../src/components/ScalarButton/constants.ts"],"sourcesContent":["import type { ButtonVariant, ClassList } from './types'\n\n/** Styles for the different button variants */\nexport const BUTTON_VARIANT_STYLES = {\n solid: [\n 'scalar-button-solid',\n 'bg-b-btn text-c-btn focus-visible:border-c-btn active:bg-b-btn hover:bg-h-btn outline-offset-1',\n ],\n outlined: ['scalar-button-outlined', 'active:bg-btn-1 shadow-border bg-b-1 text-c-1 hover:bg-b-2'],\n ghost: ['scalar-button-ghost', 'bg-transparent text-c-3 active:text-c-1 hover:text-c-1'],\n gradient: [\n 'scalar-button-gradient',\n 'shadow-border bg-b-1.5 bg-linear-to-b from-b-1 to-b-2 hover:bg-linear-to-t',\n // in dark mode we want to reverse the gradient direction\n 'dark:bg-linear-to-t dark:hover:bg-linear-to-b',\n ],\n danger: ['scalar-button-danger', 'bg-c-danger text-white active:brightness-90 hover:brightness-90'],\n} as const satisfies Record<ButtonVariant, ClassList>\n"],"mappings":";;AAGA,IAAa,wBAAwB;CACnC,OAAO,CACL,uBACA,iGACD;CACD,UAAU,CAAC,0BAA0B,6DAA6D;CAClG,OAAO,CAAC,uBAAuB,yDAAyD;CACxF,UAAU;EACR;EACA;EAEA;EACD;CACD,QAAQ,CAAC,wBAAwB,kEAAkE;CACpG"}
1
+ {"version":3,"file":"constants.js","names":[],"sources":["../../../src/components/ScalarButton/constants.ts"],"sourcesContent":["import type { ButtonVariant, ClassList } from './types'\n\n/** Styles for the different button variants */\nexport const BUTTON_VARIANT_STYLES = {\n solid: [\n 'scalar-button-solid',\n 'bg-b-btn text-c-btn focus-visible:border-c-btn active:bg-b-btn hover:bg-h-btn outline-offset-1',\n ],\n outlined: ['scalar-button-outlined', 'active:bg-btn-1 shadow-border bg-b-1 text-c-1 hover:bg-b-2'],\n ghost: ['scalar-button-ghost', 'bg-transparent text-c-2 active:text-c-1 hover:text-c-1'],\n gradient: [\n 'scalar-button-gradient',\n 'shadow-border bg-b-1.5 bg-linear-to-b from-b-1 to-b-2 hover:bg-linear-to-t',\n // in dark mode we want to reverse the gradient direction\n 'dark:bg-linear-to-t dark:hover:bg-linear-to-b',\n ],\n danger: ['scalar-button-danger', 'bg-c-danger text-white active:brightness-90 hover:brightness-90'],\n} as const satisfies Record<ButtonVariant, ClassList>\n"],"mappings":";;AAGA,IAAa,wBAAwB;CACnC,OAAO,CACL,uBACA,iGACD;CACD,UAAU,CAAC,0BAA0B,6DAA6D;CAClG,OAAO,CAAC,uBAAuB,yDAAyD;CACxF,UAAU;EACR;EACA;EAEA;EACD;CACD,QAAQ,CAAC,wBAAwB,kEAAkE;CACpG"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarCard.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCard/ScalarCard.vue"],"names":[],"mappings":"AAoEA;;;;;;;;;;;;;GAaG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;IAEhB,yCAAyC;YACjC,MAAM;;IADd,yCAAyC;YACjC,MAAM;;cAwDF,CAAC,KAAK,IAAgB,KAAK,GAAG;EASxC,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"ScalarCard.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCard/ScalarCard.vue"],"names":[],"mappings":"AAkEA;;;;;;;;;;;;;GAaG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;IAEhB,yCAAyC;YACjC,MAAM;;IADd,yCAAyC;YACjC,MAAM;;cAsDF,CAAC,KAAK,IAAgB,KAAK,GAAG;EASxC,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarCard.vue.js","names":[],"sources":["../../../src/components/ScalarCard/ScalarCard.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar card component\n *\n * Creates an aria region using the nearest ScalarCardHeader as the label\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/region_role\n *\n * @example\n * <ScalarCard>\n * <ScalarCardHeader>Header</ScalarCardHeader>\n * <ScalarCardSection>Content</ScalarCardSection>\n * <ScalarCardFooter>Footer</ScalarCardFooter>\n * </ScalarCard>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { computed } from 'vue'\n\nimport { useCardRegion } from './useCardHeading'\n\nconst { label } = defineProps<{\n /** The a11y label for the card region */\n label?: string\n}>()\n\n// Get the id for the nearest ScalarCardHeader if it exists\nconst { id } = useCardRegion()\n\nconst labelAttrs = computed(() => {\n if (label) {\n // If a label is provided, use it\n return { 'aria-label': label }\n }\n if (id.value) {\n // If no label is provided, use the heading id\n return { 'aria-labelledby': id.value }\n }\n // If no label or heading id is provided, don't add any aria attributes\n return {}\n})\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div\n role=\"group\"\n v-bind=\"{\n ...labelAttrs,\n ...cx(\n 'scalar-card bg-b-2 flex flex-col divide-y rounded-xl border *:first:rounded-t-[inherit] *:last:rounded-b-[inherit]',\n ),\n }\">\n <slot />\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ScalarCard.vue.js","names":[],"sources":["../../../src/components/ScalarCard/ScalarCard.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar card component\n *\n * Creates an aria region using the nearest ScalarCardHeader as the label\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/region_role\n *\n * @example\n * <ScalarCard>\n * <ScalarCardHeader>Header</ScalarCardHeader>\n * <ScalarCardSection>Content</ScalarCardSection>\n * <ScalarCardFooter>Footer</ScalarCardFooter>\n * </ScalarCard>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { computed } from 'vue'\n\nimport { useCardRegion } from './useCardHeading'\n\nconst { label } = defineProps<{\n /** The a11y label for the card region */\n label?: string\n}>()\n\n// Get the id for the nearest ScalarCardHeader if it exists\nconst { id } = useCardRegion()\n\nconst labelAttrs = computed(() => {\n if (label) {\n // If a label is provided, use it\n return { 'aria-label': label }\n }\n if (id.value) {\n // If no label is provided, use the heading id\n return { 'aria-labelledby': id.value }\n }\n // If no label or heading id is provided, don't add any aria attributes\n return {}\n})\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div\n role=\"group\"\n v-bind=\"{\n ...labelAttrs,\n ...cx('scalar-card bg-b-2 flex flex-col divide-y rounded-xl border'),\n }\">\n <slot />\n </div>\n</template>\n"],"mappings":""}
@@ -16,7 +16,7 @@ var ScalarCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
16
16
  return (_ctx, _cache) => {
17
17
  return openBlock(), createElementBlock("div", mergeProps({ role: "group" }, {
18
18
  ...labelAttrs.value,
19
- ...unref(cx)("scalar-card bg-b-2 flex flex-col divide-y rounded-xl border *:first:rounded-t-[inherit] *:last:rounded-b-[inherit]")
19
+ ...unref(cx)("scalar-card bg-b-2 flex flex-col divide-y rounded-xl border")
20
20
  }), [renderSlot(_ctx.$slots, "default")], 16);
21
21
  };
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarCard.vue.script.js","names":[],"sources":["../../../src/components/ScalarCard/ScalarCard.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar card component\n *\n * Creates an aria region using the nearest ScalarCardHeader as the label\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/region_role\n *\n * @example\n * <ScalarCard>\n * <ScalarCardHeader>Header</ScalarCardHeader>\n * <ScalarCardSection>Content</ScalarCardSection>\n * <ScalarCardFooter>Footer</ScalarCardFooter>\n * </ScalarCard>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { computed } from 'vue'\n\nimport { useCardRegion } from './useCardHeading'\n\nconst { label } = defineProps<{\n /** The a11y label for the card region */\n label?: string\n}>()\n\n// Get the id for the nearest ScalarCardHeader if it exists\nconst { id } = useCardRegion()\n\nconst labelAttrs = computed(() => {\n if (label) {\n // If a label is provided, use it\n return { 'aria-label': label }\n }\n if (id.value) {\n // If no label is provided, use the heading id\n return { 'aria-labelledby': id.value }\n }\n // If no label or heading id is provided, don't add any aria attributes\n return {}\n})\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div\n role=\"group\"\n v-bind=\"{\n ...labelAttrs,\n ...cx(\n 'scalar-card bg-b-2 flex flex-col divide-y rounded-xl border *:first:rounded-t-[inherit] *:last:rounded-b-[inherit]',\n ),\n }\">\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;EA6BA,MAAM,EAAE,OAAO,eAAc;EAE7B,MAAM,aAAa,eAAe;AAChC,OAAI,QAAA,MAEF,QAAO,EAAE,cAAc,QAAA,OAAM;AAE/B,OAAI,GAAG,MAEL,QAAO,EAAE,mBAAmB,GAAG,OAAM;AAGvC,UAAO,EAAC;IACT;EAGD,MAAM,EAAE,OAAO,WAAU;;uBAGvB,mBASM,OATN,WASM,EARJ,MAAK,SAAO,EAAA;OACO,WAAA;OAAqB,MAAA,GAAE,CAAA,qHAAA;QAM1C,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,GAAA"}
1
+ {"version":3,"file":"ScalarCard.vue.script.js","names":[],"sources":["../../../src/components/ScalarCard/ScalarCard.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar card component\n *\n * Creates an aria region using the nearest ScalarCardHeader as the label\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/region_role\n *\n * @example\n * <ScalarCard>\n * <ScalarCardHeader>Header</ScalarCardHeader>\n * <ScalarCardSection>Content</ScalarCardSection>\n * <ScalarCardFooter>Footer</ScalarCardFooter>\n * </ScalarCard>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { computed } from 'vue'\n\nimport { useCardRegion } from './useCardHeading'\n\nconst { label } = defineProps<{\n /** The a11y label for the card region */\n label?: string\n}>()\n\n// Get the id for the nearest ScalarCardHeader if it exists\nconst { id } = useCardRegion()\n\nconst labelAttrs = computed(() => {\n if (label) {\n // If a label is provided, use it\n return { 'aria-label': label }\n }\n if (id.value) {\n // If no label is provided, use the heading id\n return { 'aria-labelledby': id.value }\n }\n // If no label or heading id is provided, don't add any aria attributes\n return {}\n})\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div\n role=\"group\"\n v-bind=\"{\n ...labelAttrs,\n ...cx('scalar-card bg-b-2 flex flex-col divide-y rounded-xl border'),\n }\">\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;EA6BA,MAAM,EAAE,OAAO,eAAc;EAE7B,MAAM,aAAa,eAAe;AAChC,OAAI,QAAA,MAEF,QAAO,EAAE,cAAc,QAAA,OAAM;AAE/B,OAAI,GAAG,MAEL,QAAO,EAAE,mBAAmB,GAAG,OAAM;AAGvC,UAAO,EAAC;IACT;EAGD,MAAM,EAAE,OAAO,WAAU;;uBAGvB,mBAOM,OAPN,WAOM,EANJ,MAAK,SAAO,EAAA;OACO,WAAA;OAAqB,MAAA,GAAE,CAAA,8DAAA;QAI1C,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,GAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarCardSection.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCard/ScalarCardSection.vue"],"names":[],"mappings":"AAgCA;;;;;;;;;;;GAWG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;cA0BJ,CAAC,KAAK,IAAgB,KAAK,GAAG;EAQxC,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":"ScalarCardSection.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCard/ScalarCardSection.vue"],"names":[],"mappings":"AAqCA;;;;;;;;;;;GAWG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;cA8BJ,CAAC,KAAK,IAAgB,KAAK,GAAG;EAQxC,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":"ScalarCardSection.vue.js","names":[],"sources":["../../../src/components/ScalarCard/ScalarCardSection.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar card section component\n *\n * A generic section of a ScalarCard component, provides the base for ScalarCardHeader and ScalarCardFooter\n *\n * @example\n * <ScalarCard>\n * ...\n * <ScalarCardSection>Content</ScalarCardSection>\n * ...\n * </ScalarCard>\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('scalar-card-content flex overflow-auto')\">\n <slot />\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ScalarCardSection.vue.js","names":[],"sources":["../../../src/components/ScalarCard/ScalarCardSection.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar card section component\n *\n * A generic section of a ScalarCard component, provides the base for ScalarCardHeader and ScalarCardFooter\n *\n * @example\n * <ScalarCard>\n * ...\n * <ScalarCardSection>Content</ScalarCardSection>\n * ...\n * </ScalarCard>\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\n v-bind=\"\n cx(\n 'scalar-card-content flex overflow-auto first:rounded-t-[inherit] last:rounded-b-[inherit]',\n )\n \">\n <slot />\n </div>\n</template>\n"],"mappings":""}
@@ -6,7 +6,7 @@ var ScalarCardSection_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
6
6
  setup(__props) {
7
7
  const { cx } = useBindCx();
8
8
  return (_ctx, _cache) => {
9
- return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(unref(cx)("scalar-card-content flex overflow-auto"))), [renderSlot(_ctx.$slots, "default")], 16);
9
+ return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(unref(cx)("scalar-card-content flex overflow-auto first:rounded-t-[inherit] last:rounded-b-[inherit]"))), [renderSlot(_ctx.$slots, "default")], 16);
10
10
  };
11
11
  }
12
12
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarCardSection.vue.script.js","names":[],"sources":["../../../src/components/ScalarCard/ScalarCardSection.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar card section component\n *\n * A generic section of a ScalarCard component, provides the base for ScalarCardHeader and ScalarCardFooter\n *\n * @example\n * <ScalarCard>\n * ...\n * <ScalarCardSection>Content</ScalarCardSection>\n * ...\n * </ScalarCard>\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('scalar-card-content flex overflow-auto')\">\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;EAmBA,MAAM,EAAE,OAAO,WAAU;;uBAGvB,mBAEM,OAAA,eAAA,mBAFO,MAAA,GAAE,CAAA,yCAAA,CAAA,CAAA,EAAA,CACb,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,GAAA"}
1
+ {"version":3,"file":"ScalarCardSection.vue.script.js","names":[],"sources":["../../../src/components/ScalarCard/ScalarCardSection.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar card section component\n *\n * A generic section of a ScalarCard component, provides the base for ScalarCardHeader and ScalarCardFooter\n *\n * @example\n * <ScalarCard>\n * ...\n * <ScalarCardSection>Content</ScalarCardSection>\n * ...\n * </ScalarCard>\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\n v-bind=\"\n cx(\n 'scalar-card-content flex overflow-auto first:rounded-t-[inherit] last:rounded-b-[inherit]',\n )\n \">\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;EAmBA,MAAM,EAAE,OAAO,WAAU;;uBAGvB,mBAOM,OAAA,eAAA,mBANW,MAAA,GAAE,CAAA,4FAAA,CAAA,CAAA,EAAA,CAKjB,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,GAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarFileUploadFileList.vue.js","names":[],"sources":["../../../src/components/ScalarFileUpload/ScalarFileUploadFileList.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar File Upload File List\n *\n * Displays a list of files\n *\n * @example\n * <ScalarFileUploadFileList :files=\"files\" />\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport prettyBytes from 'pretty-bytes'\n\nimport { ScalarButton } from '../ScalarButton'\n\ndefineEmits<{\n /** Emitted when the user clicks the upload button */\n (e: 'upload'): void\n}>()\n\n/** The files to display */\nconst files = defineModel<File[]>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('flex flex-col gap-2 p-4')\">\n <div class=\"text-c-2\">Selected files:</div>\n <ul\n v-for=\"file in files\"\n :key=\"file.name\"\n class=\"flex flex-col gap-0.5\">\n <li class=\"border rounded p-1 text-xs\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex-1 min-w-0 truncate\">\n {{ file.name }}\n </div>\n <div class=\"text-c-3\">{{ prettyBytes(file.size) }}</div>\n </div>\n </li>\n </ul>\n <div class=\"flex items-center gap-1.5\">\n <ScalarButton\n size=\"xs\"\n @click=\"$emit('upload')\">\n Upload\n </ScalarButton>\n <ScalarButton\n size=\"xs\"\n variant=\"outlined\"\n @click=\"files = []\">\n Clear\n </ScalarButton>\n </div>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ScalarFileUploadFileList.vue.js","names":[],"sources":["../../../src/components/ScalarFileUpload/ScalarFileUploadFileList.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar File Upload File List\n *\n * Displays a list of files\n *\n * @example\n * <ScalarFileUploadFileList :files=\"files\" />\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { formatBytes } from '@scalar/helpers/formatters/format-bytes'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport { ScalarButton } from '../ScalarButton'\n\ndefineEmits<{\n /** Emitted when the user clicks the upload button */\n (e: 'upload'): void\n}>()\n\n/** The files to display */\nconst files = defineModel<File[]>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('flex flex-col gap-2 p-4')\">\n <div class=\"text-c-2\">Selected files:</div>\n <ul\n v-for=\"file in files\"\n :key=\"file.name\"\n class=\"flex flex-col gap-0.5\">\n <li class=\"border rounded p-1 text-xs\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex-1 min-w-0 truncate\">\n {{ file.name }}\n </div>\n <div class=\"text-c-3\">{{ formatBytes(file.size) }}</div>\n </div>\n </li>\n </ul>\n <div class=\"flex items-center gap-1.5\">\n <ScalarButton\n size=\"xs\"\n @click=\"$emit('upload')\">\n Upload\n </ScalarButton>\n <ScalarButton\n size=\"xs\"\n variant=\"outlined\"\n @click=\"files = []\">\n Clear\n </ScalarButton>\n </div>\n </div>\n</template>\n"],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import ScalarButton_default from "../ScalarButton/ScalarButton.vue.js";
2
2
  import { useBindCx } from "@scalar/use-hooks/useBindCx";
3
3
  import { Fragment, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeModels, normalizeProps, openBlock, renderList, toDisplayString, unref, useModel, withCtx } from "vue";
4
- import prettyBytes from "pretty-bytes";
4
+ import { formatBytes } from "@scalar/helpers/formatters/format-bytes";
5
5
  //#region src/components/ScalarFileUpload/ScalarFileUploadFileList.vue?vue&type=script&setup=true&lang.ts
6
6
  var _hoisted_1 = { class: "border rounded p-1 text-xs" };
7
7
  var _hoisted_2 = { class: "flex items-center justify-between" };
@@ -27,7 +27,7 @@ var ScalarFileUploadFileList_vue_vue_type_script_setup_true_lang_default = /* @_
27
27
  return openBlock(), createElementBlock("ul", {
28
28
  key: file.name,
29
29
  class: "flex flex-col gap-0.5"
30
- }, [createElementVNode("li", _hoisted_1, [createElementVNode("div", _hoisted_2, [createElementVNode("div", _hoisted_3, toDisplayString(file.name), 1), createElementVNode("div", _hoisted_4, toDisplayString(unref(prettyBytes)(file.size)), 1)])])]);
30
+ }, [createElementVNode("li", _hoisted_1, [createElementVNode("div", _hoisted_2, [createElementVNode("div", _hoisted_3, toDisplayString(file.name), 1), createElementVNode("div", _hoisted_4, toDisplayString(unref(formatBytes)(file.size)), 1)])])]);
31
31
  }), 128)),
32
32
  createElementVNode("div", _hoisted_5, [createVNode(unref(ScalarButton_default), {
33
33
  size: "xs",
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarFileUploadFileList.vue.script.js","names":["$emit"],"sources":["../../../src/components/ScalarFileUpload/ScalarFileUploadFileList.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar File Upload File List\n *\n * Displays a list of files\n *\n * @example\n * <ScalarFileUploadFileList :files=\"files\" />\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport prettyBytes from 'pretty-bytes'\n\nimport { ScalarButton } from '../ScalarButton'\n\ndefineEmits<{\n /** Emitted when the user clicks the upload button */\n (e: 'upload'): void\n}>()\n\n/** The files to display */\nconst files = defineModel<File[]>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('flex flex-col gap-2 p-4')\">\n <div class=\"text-c-2\">Selected files:</div>\n <ul\n v-for=\"file in files\"\n :key=\"file.name\"\n class=\"flex flex-col gap-0.5\">\n <li class=\"border rounded p-1 text-xs\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex-1 min-w-0 truncate\">\n {{ file.name }}\n </div>\n <div class=\"text-c-3\">{{ prettyBytes(file.size) }}</div>\n </div>\n </li>\n </ul>\n <div class=\"flex items-center gap-1.5\">\n <ScalarButton\n size=\"xs\"\n @click=\"$emit('upload')\">\n Upload\n </ScalarButton>\n <ScalarButton\n size=\"xs\"\n variant=\"outlined\"\n @click=\"files = []\">\n Clear\n </ScalarButton>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAuBA,MAAM,QAAQ,SAAmB,SAAA,aAAC;EAGlC,MAAM,EAAE,OAAO,WAAU;;uBAGvB,mBA4BM,OAAA,eAAA,mBA5BO,MAAA,GAAE,CAAA,0BAAA,CAAA,CAAA,EAAA;8BACb,mBAA2C,OAAA,EAAtC,OAAM,YAAU,EAAC,mBAAe,GAAA;sBACrC,mBAYK,UAAA,MAAA,WAXY,MAAA,QAAR,SAAI;yBADb,mBAYK,MAAA;MAVF,KAAK,KAAK;MACX,OAAM;SACN,mBAOK,MAPL,YAOK,CANH,mBAKM,OALN,YAKM,CAJJ,mBAEM,OAFN,YAEM,gBADD,KAAK,KAAI,EAAA,EAAA,EAEd,mBAAwD,OAAxD,YAAwD,gBAA/B,MAAA,YAAW,CAAC,KAAK,KAAI,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;IAIpD,mBAYM,OAZN,YAYM,CAXJ,YAIe,MAAA,qBAAA,EAAA;KAHb,MAAK;KACJ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,SAAA;;4BAEf,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAF2B,YAE3B,GAAA,CAAA,EAAA,CAAA;;QACA,YAKe,MAAA,qBAAA,EAAA;KAJb,MAAK;KACL,SAAQ;KACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,QAAK,EAAA;;4BAEf,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAFsB,WAEtB,GAAA,CAAA,EAAA,CAAA"}
1
+ {"version":3,"file":"ScalarFileUploadFileList.vue.script.js","names":["$emit"],"sources":["../../../src/components/ScalarFileUpload/ScalarFileUploadFileList.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar File Upload File List\n *\n * Displays a list of files\n *\n * @example\n * <ScalarFileUploadFileList :files=\"files\" />\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { formatBytes } from '@scalar/helpers/formatters/format-bytes'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport { ScalarButton } from '../ScalarButton'\n\ndefineEmits<{\n /** Emitted when the user clicks the upload button */\n (e: 'upload'): void\n}>()\n\n/** The files to display */\nconst files = defineModel<File[]>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('flex flex-col gap-2 p-4')\">\n <div class=\"text-c-2\">Selected files:</div>\n <ul\n v-for=\"file in files\"\n :key=\"file.name\"\n class=\"flex flex-col gap-0.5\">\n <li class=\"border rounded p-1 text-xs\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex-1 min-w-0 truncate\">\n {{ file.name }}\n </div>\n <div class=\"text-c-3\">{{ formatBytes(file.size) }}</div>\n </div>\n </li>\n </ul>\n <div class=\"flex items-center gap-1.5\">\n <ScalarButton\n size=\"xs\"\n @click=\"$emit('upload')\">\n Upload\n </ScalarButton>\n <ScalarButton\n size=\"xs\"\n variant=\"outlined\"\n @click=\"files = []\">\n Clear\n </ScalarButton>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAuBA,MAAM,QAAQ,SAAmB,SAAA,aAAC;EAGlC,MAAM,EAAE,OAAO,WAAU;;uBAGvB,mBA4BM,OAAA,eAAA,mBA5BO,MAAA,GAAE,CAAA,0BAAA,CAAA,CAAA,EAAA;8BACb,mBAA2C,OAAA,EAAtC,OAAM,YAAU,EAAC,mBAAe,GAAA;sBACrC,mBAYK,UAAA,MAAA,WAXY,MAAA,QAAR,SAAI;yBADb,mBAYK,MAAA;MAVF,KAAK,KAAK;MACX,OAAM;SACN,mBAOK,MAPL,YAOK,CANH,mBAKM,OALN,YAKM,CAJJ,mBAEM,OAFN,YAEM,gBADD,KAAK,KAAI,EAAA,EAAA,EAEd,mBAAwD,OAAxD,YAAwD,gBAA/B,MAAA,YAAW,CAAC,KAAK,KAAI,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;IAIpD,mBAYM,OAZN,YAYM,CAXJ,YAIe,MAAA,qBAAA,EAAA;KAHb,MAAK;KACJ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,SAAA;;4BAEf,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAF2B,YAE3B,GAAA,CAAA,EAAA,CAAA;;QACA,YAKe,MAAA,qBAAA,EAAA;KAJb,MAAK;KACL,SAAQ;KACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,QAAK,EAAA;;4BAEf,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAFsB,WAEtB,GAAA,CAAA,EAAA,CAAA"}
@@ -14,15 +14,21 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<import
14
14
  } & {
15
15
  /** * Whether the summary is open. */
16
16
  modelValue?: boolean;
17
+ /** Whether the markdown is being truncated */
18
+ truncated?: boolean;
17
19
  }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
18
20
  "update:modelValue": (value: boolean) => any;
21
+ "update:truncated": (value: boolean) => any;
19
22
  }, string, import("vue").PublicProps, Readonly<import("./types").ScalarMarkdownProps & {
20
23
  controlled?: boolean;
21
24
  } & {
22
25
  /** * Whether the summary is open. */
23
26
  modelValue?: boolean;
27
+ /** Whether the markdown is being truncated */
28
+ truncated?: boolean;
24
29
  }> & Readonly<{
25
30
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
31
+ "onUpdate:truncated"?: ((value: boolean) => any) | undefined;
26
32
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
27
33
  button?: (props: {
28
34
  open: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarMarkdownSummary.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMarkdown/ScalarMarkdownSummary.vue"],"names":[],"mappings":"AA0HA;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;;;IAqClB,qCAAqC;iBACxB,OAAO;;;;;;IADpB,qCAAqC;iBACxB,OAAO;;;;aAiFP,CAAC,KAAK;;KAAgB,KAAK,GAAG;EAYvC,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"ScalarMarkdownSummary.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarMarkdown/ScalarMarkdownSummary.vue"],"names":[],"mappings":"AA0HA;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;;;IAsClB,qCAAqC;iBACxB,OAAO;IACpB,8CAA8C;gBAChC,OAAO;;;;;;;IAHrB,qCAAqC;iBACxB,OAAO;IACpB,8CAA8C;gBAChC,OAAO;;;;;aAkFR,CAAC,KAAK;;KAAgB,KAAK,GAAG;EAYvC,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarMarkdownSummary.vue.js","names":[],"sources":["../../../src/components/ScalarMarkdown/ScalarMarkdownSummary.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Markdown Summary component\n *\n * Displays a truncated preview of markdown content with\n * a \"More\" / \"Show Less\" toggle to expand and collapse.\n *\n * @example\n * <ScalarMarkdownSummary value=\"Long markdown text...\" :clamp=\"2\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { useResizeObserver } from '@vueuse/core'\nimport { onMounted, ref, useId, useTemplateRef } from 'vue'\n\nimport ScalarMarkdown from './ScalarMarkdown.vue'\nimport type { ScalarMarkdownSummaryProps } from './types'\n\nconst { clamp = 1, ...props } = defineProps<ScalarMarkdownSummaryProps>()\n\nconst id = useId()\n\n/** * Whether the summary is open. */\nconst open = defineModel<boolean>({ default: false })\n\nconst markdown = useTemplateRef('scalar-markdown')\n\n/** Whether the markdown is being truncated */\nconst isTruncated = ref(false)\n\nuseResizeObserver(() => markdown.value?.el, checkTruncation)\n\n/** Check if the markdown is being truncated */\nfunction checkTruncation() {\n const el = markdown.value?.el\n if (!el) {\n return\n }\n isTruncated.value =\n el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth\n}\n\nonMounted(checkTruncation)\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <div\n v-bind=\"\n cx(\n 'group/summary flex gap-0.5',\n open ? 'flex-col' : 'flex-row items-baseline',\n )\n \">\n <ScalarMarkdown\n v-bind=\"props\"\n :id=\"id\"\n ref=\"scalar-markdown\"\n :clamp=\"open ? undefined : clamp\"\n :class=\"{ 'markdown-summary truncate': !open }\" />\n <button\n v-if=\"!controlled && (isTruncated || open)\"\n :aria-controls=\"id\"\n :aria-expanded=\"open\"\n class=\"whitespace-nowrap font-medium hover:underline\"\n :class=\"{ 'self-end': open }\"\n type=\"button\"\n @click=\"open = !open\">\n <slot\n name=\"button\"\n :open=\"open\">\n {{ open ? ' Show Less' : 'More' }}\n </slot>\n </button>\n </div>\n</template>\n<style>\n.scalar-app {\n /*\n Summarized markdown styles\n Doubled up to bump specificity\n */\n .markdown.markdown-summary.markdown-summary {\n /* Hide the before and after pseudo-elements for all elements */\n *:before,\n *:after {\n content: none;\n }\n\n *:not(strong, em, a) {\n /* Disable formatting for non-inline elements */\n display: contents;\n font-size: inherit;\n font-weight: inherit;\n line-height: var(--markdown-line-height);\n }\n\n /* Hide elements that don't make sense in the summary */\n img,\n svg,\n hr,\n pre {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ScalarMarkdownSummary.vue.js","names":[],"sources":["../../../src/components/ScalarMarkdown/ScalarMarkdownSummary.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Markdown Summary component\n *\n * Displays a truncated preview of markdown content with\n * a \"More\" / \"Show Less\" toggle to expand and collapse.\n *\n * @example\n * <ScalarMarkdownSummary value=\"Long markdown text...\" :clamp=\"2\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { useResizeObserver } from '@vueuse/core'\nimport { onMounted, useId, useTemplateRef } from 'vue'\n\nimport ScalarMarkdown from './ScalarMarkdown.vue'\nimport type { ScalarMarkdownSummaryProps } from './types'\n\nconst { clamp = 1, ...props } = defineProps<ScalarMarkdownSummaryProps>()\n\nconst id = useId()\n\n/** * Whether the summary is open. */\nconst open = defineModel<boolean>({ default: false })\n\n/** Whether the markdown is being truncated */\nconst truncated = defineModel<boolean>('truncated', { default: false })\n\nconst markdown = useTemplateRef('scalar-markdown')\n\nuseResizeObserver(() => markdown.value?.el, checkTruncation)\n\n/** Check if the markdown is being truncated */\nfunction checkTruncation() {\n const el = markdown.value?.el\n if (!el) {\n return\n }\n truncated.value =\n el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth\n}\n\nonMounted(checkTruncation)\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <div\n v-bind=\"\n cx(\n 'group/summary flex gap-0.5',\n open ? 'flex-col' : 'flex-row items-baseline',\n )\n \">\n <ScalarMarkdown\n v-bind=\"props\"\n :id=\"id\"\n ref=\"scalar-markdown\"\n :clamp=\"open ? undefined : clamp\"\n :class=\"{ 'markdown-summary truncate': !open }\" />\n <button\n v-if=\"!controlled && (truncated || open)\"\n :aria-controls=\"id\"\n :aria-expanded=\"open\"\n class=\"whitespace-nowrap font-medium hover:underline\"\n :class=\"{ 'self-end': open }\"\n type=\"button\"\n @click=\"open = !open\">\n <slot\n name=\"button\"\n :open=\"open\">\n {{ open ? ' Show Less' : 'More' }}\n </slot>\n </button>\n </div>\n</template>\n<style>\n.scalar-app {\n /*\n Summarized markdown styles\n Doubled up to bump specificity\n */\n .markdown.markdown-summary.markdown-summary {\n /* Hide the before and after pseudo-elements for all elements */\n *:before,\n *:after {\n content: none;\n }\n\n *:not(strong, em, a) {\n /* Disable formatting for non-inline elements */\n display: contents;\n font-size: inherit;\n font-weight: inherit;\n line-height: var(--markdown-line-height);\n }\n\n /* Hide elements that don't make sense in the summary */\n img,\n svg,\n hr,\n pre {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -1,6 +1,6 @@
1
1
  import ScalarMarkdown_default from "./ScalarMarkdown.vue.js";
2
2
  import { useBindCx } from "@scalar/use-hooks/useBindCx";
3
- import { createCommentVNode, createElementBlock, createPropsRestProxy, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeModels, mergeProps, normalizeClass, normalizeProps, onMounted, openBlock, ref, renderSlot, toDisplayString, unref, useId, useModel, useTemplateRef } from "vue";
3
+ import { createCommentVNode, createElementBlock, createPropsRestProxy, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeModels, mergeProps, normalizeClass, normalizeProps, onMounted, openBlock, renderSlot, toDisplayString, unref, useId, useModel, useTemplateRef } from "vue";
4
4
  import { useResizeObserver } from "@vueuse/core";
5
5
  //#region src/components/ScalarMarkdown/ScalarMarkdownSummary.vue?vue&type=script&setup=true&lang.ts
6
6
  var _hoisted_1 = ["aria-controls", "aria-expanded"];
@@ -21,23 +21,28 @@ var ScalarMarkdownSummary_vue_vue_type_script_setup_true_lang_default = /* @__PU
21
21
  type: Boolean,
22
22
  default: false
23
23
  },
24
- "modelModifiers": {}
24
+ "modelModifiers": {},
25
+ "truncated": {
26
+ type: Boolean,
27
+ default: false
28
+ },
29
+ "truncatedModifiers": {}
25
30
  }),
26
- emits: ["update:modelValue"],
31
+ emits: ["update:modelValue", "update:truncated"],
27
32
  setup(__props) {
28
33
  const props = createPropsRestProxy(__props, ["clamp"]);
29
34
  const id = useId();
30
35
  /** * Whether the summary is open. */
31
36
  const open = useModel(__props, "modelValue");
32
- const markdown = useTemplateRef("scalar-markdown");
33
37
  /** Whether the markdown is being truncated */
34
- const isTruncated = ref(false);
38
+ const truncated = useModel(__props, "truncated");
39
+ const markdown = useTemplateRef("scalar-markdown");
35
40
  useResizeObserver(() => markdown.value?.el, checkTruncation);
36
41
  /** Check if the markdown is being truncated */
37
42
  function checkTruncation() {
38
43
  const el = markdown.value?.el;
39
44
  if (!el) return;
40
- isTruncated.value = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;
45
+ truncated.value = el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;
41
46
  }
42
47
  onMounted(checkTruncation);
43
48
  const { cx } = useBindCx();
@@ -51,7 +56,7 @@ var ScalarMarkdownSummary_vue_vue_type_script_setup_true_lang_default = /* @__PU
51
56
  "id",
52
57
  "clamp",
53
58
  "class"
54
- ]), !__props.controlled && (isTruncated.value || open.value) ? (openBlock(), createElementBlock("button", {
59
+ ]), !__props.controlled && (truncated.value || open.value) ? (openBlock(), createElementBlock("button", {
55
60
  key: 0,
56
61
  "aria-controls": unref(id),
57
62
  "aria-expanded": open.value,
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarMarkdownSummary.vue.script.js","names":[],"sources":["../../../src/components/ScalarMarkdown/ScalarMarkdownSummary.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Markdown Summary component\n *\n * Displays a truncated preview of markdown content with\n * a \"More\" / \"Show Less\" toggle to expand and collapse.\n *\n * @example\n * <ScalarMarkdownSummary value=\"Long markdown text...\" :clamp=\"2\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { useResizeObserver } from '@vueuse/core'\nimport { onMounted, ref, useId, useTemplateRef } from 'vue'\n\nimport ScalarMarkdown from './ScalarMarkdown.vue'\nimport type { ScalarMarkdownSummaryProps } from './types'\n\nconst { clamp = 1, ...props } = defineProps<ScalarMarkdownSummaryProps>()\n\nconst id = useId()\n\n/** * Whether the summary is open. */\nconst open = defineModel<boolean>({ default: false })\n\nconst markdown = useTemplateRef('scalar-markdown')\n\n/** Whether the markdown is being truncated */\nconst isTruncated = ref(false)\n\nuseResizeObserver(() => markdown.value?.el, checkTruncation)\n\n/** Check if the markdown is being truncated */\nfunction checkTruncation() {\n const el = markdown.value?.el\n if (!el) {\n return\n }\n isTruncated.value =\n el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth\n}\n\nonMounted(checkTruncation)\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <div\n v-bind=\"\n cx(\n 'group/summary flex gap-0.5',\n open ? 'flex-col' : 'flex-row items-baseline',\n )\n \">\n <ScalarMarkdown\n v-bind=\"props\"\n :id=\"id\"\n ref=\"scalar-markdown\"\n :clamp=\"open ? undefined : clamp\"\n :class=\"{ 'markdown-summary truncate': !open }\" />\n <button\n v-if=\"!controlled && (isTruncated || open)\"\n :aria-controls=\"id\"\n :aria-expanded=\"open\"\n class=\"whitespace-nowrap font-medium hover:underline\"\n :class=\"{ 'self-end': open }\"\n type=\"button\"\n @click=\"open = !open\">\n <slot\n name=\"button\"\n :open=\"open\">\n {{ open ? ' Show Less' : 'More' }}\n </slot>\n </button>\n </div>\n</template>\n<style>\n.scalar-app {\n /*\n Summarized markdown styles\n Doubled up to bump specificity\n */\n .markdown.markdown-summary.markdown-summary {\n /* Hide the before and after pseudo-elements for all elements */\n *:before,\n *:after {\n content: none;\n }\n\n *:not(strong, em, a) {\n /* Disable formatting for non-inline elements */\n display: contents;\n font-size: inherit;\n font-weight: inherit;\n line-height: var(--markdown-line-height);\n }\n\n /* Hide elements that don't make sense in the summary */\n img,\n svg,\n hr,\n pre {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBA,MAAM,QAA0B,qBAAA,SAAA,CAAA,QAAA,CAAA;EAEhC,MAAM,KAAK,OAAM;;EAGjB,MAAM,OAAO,SAAoB,SAAA,aAAmB;EAEpD,MAAM,WAAW,eAAe,kBAAiB;;EAGjD,MAAM,cAAc,IAAI,MAAK;AAE7B,0BAAwB,SAAS,OAAO,IAAI,gBAAe;;EAG3D,SAAS,kBAAkB;GACzB,MAAM,KAAK,SAAS,OAAO;AAC3B,OAAI,CAAC,GACH;AAEF,eAAY,QACV,GAAG,eAAe,GAAG,gBAAgB,GAAG,cAAc,GAAG;;AAG7D,YAAU,gBAAe;EAEzB,MAAM,EAAE,OAAO,WAAU;;uBAIvB,mBA2BM,OAAA,eAAA,mBA1BW,MAAA,GAAE,CAAA,8BAAgD,KAAA,QAAI,aAAA,0BAAA,CAAA,CAAA,EAAA,CAMrE,YAKoD,wBALpD,WACU,OAAK;IACZ,IAAI,MAAA,GAAE;IACP,KAAI;IACH,OAAO,KAAA,QAAO,KAAA,IAAY,QAAA;IAC1B,OAAK,EAAA,6BAAA,CAAkC,KAAA,OAAI;;;;;QAErC,QAAA,eAAe,YAAA,SAAe,KAAA,UAAA,WAAA,EADvC,mBAaS,UAAA;;IAXN,iBAAe,MAAA,GAAE;IACjB,iBAAe,KAAA;IAChB,OAAK,eAAA,CAAC,iDAA+C,EAAA,YAC/B,KAAA,OAAI,CAAA,CAAA;IAC1B,MAAK;IACJ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAA,QAAI,CAAI,KAAA;OAChB,WAIO,KAAA,QAAA,UAAA,EAFJ,MAAM,KAAA,OAAI,QAEN,CAAA,gBAAA,gBADF,KAAA,QAAI,eAAA,OAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,IAAA,WAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,GAAA"}
1
+ {"version":3,"file":"ScalarMarkdownSummary.vue.script.js","names":[],"sources":["../../../src/components/ScalarMarkdown/ScalarMarkdownSummary.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Markdown Summary component\n *\n * Displays a truncated preview of markdown content with\n * a \"More\" / \"Show Less\" toggle to expand and collapse.\n *\n * @example\n * <ScalarMarkdownSummary value=\"Long markdown text...\" :clamp=\"2\" />\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { useResizeObserver } from '@vueuse/core'\nimport { onMounted, useId, useTemplateRef } from 'vue'\n\nimport ScalarMarkdown from './ScalarMarkdown.vue'\nimport type { ScalarMarkdownSummaryProps } from './types'\n\nconst { clamp = 1, ...props } = defineProps<ScalarMarkdownSummaryProps>()\n\nconst id = useId()\n\n/** * Whether the summary is open. */\nconst open = defineModel<boolean>({ default: false })\n\n/** Whether the markdown is being truncated */\nconst truncated = defineModel<boolean>('truncated', { default: false })\n\nconst markdown = useTemplateRef('scalar-markdown')\n\nuseResizeObserver(() => markdown.value?.el, checkTruncation)\n\n/** Check if the markdown is being truncated */\nfunction checkTruncation() {\n const el = markdown.value?.el\n if (!el) {\n return\n }\n truncated.value =\n el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth\n}\n\nonMounted(checkTruncation)\n\nconst { cx } = useBindCx()\ndefineOptions({ inheritAttrs: false })\n</script>\n<template>\n <div\n v-bind=\"\n cx(\n 'group/summary flex gap-0.5',\n open ? 'flex-col' : 'flex-row items-baseline',\n )\n \">\n <ScalarMarkdown\n v-bind=\"props\"\n :id=\"id\"\n ref=\"scalar-markdown\"\n :clamp=\"open ? undefined : clamp\"\n :class=\"{ 'markdown-summary truncate': !open }\" />\n <button\n v-if=\"!controlled && (truncated || open)\"\n :aria-controls=\"id\"\n :aria-expanded=\"open\"\n class=\"whitespace-nowrap font-medium hover:underline\"\n :class=\"{ 'self-end': open }\"\n type=\"button\"\n @click=\"open = !open\">\n <slot\n name=\"button\"\n :open=\"open\">\n {{ open ? ' Show Less' : 'More' }}\n </slot>\n </button>\n </div>\n</template>\n<style>\n.scalar-app {\n /*\n Summarized markdown styles\n Doubled up to bump specificity\n */\n .markdown.markdown-summary.markdown-summary {\n /* Hide the before and after pseudo-elements for all elements */\n *:before,\n *:after {\n content: none;\n }\n\n *:not(strong, em, a) {\n /* Disable formatting for non-inline elements */\n display: contents;\n font-size: inherit;\n font-weight: inherit;\n line-height: var(--markdown-line-height);\n }\n\n /* Hide elements that don't make sense in the summary */\n img,\n svg,\n hr,\n pre {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBA,MAAM,QAA0B,qBAAA,SAAA,CAAA,QAAA,CAAA;EAEhC,MAAM,KAAK,OAAM;;EAGjB,MAAM,OAAO,SAAoB,SAAA,aAAmB;;EAGpD,MAAM,YAAY,SAAoB,SAAC,YAA+B;EAEtE,MAAM,WAAW,eAAe,kBAAiB;AAEjD,0BAAwB,SAAS,OAAO,IAAI,gBAAe;;EAG3D,SAAS,kBAAkB;GACzB,MAAM,KAAK,SAAS,OAAO;AAC3B,OAAI,CAAC,GACH;AAEF,aAAU,QACR,GAAG,eAAe,GAAG,gBAAgB,GAAG,cAAc,GAAG;;AAG7D,YAAU,gBAAe;EAEzB,MAAM,EAAE,OAAO,WAAU;;uBAIvB,mBA2BM,OAAA,eAAA,mBA1BW,MAAA,GAAE,CAAA,8BAAgD,KAAA,QAAI,aAAA,0BAAA,CAAA,CAAA,EAAA,CAMrE,YAKoD,wBALpD,WACU,OAAK;IACZ,IAAI,MAAA,GAAE;IACP,KAAI;IACH,OAAO,KAAA,QAAO,KAAA,IAAY,QAAA;IAC1B,OAAK,EAAA,6BAAA,CAAkC,KAAA,OAAI;;;;;QAErC,QAAA,eAAe,UAAA,SAAa,KAAA,UAAA,WAAA,EADrC,mBAaS,UAAA;;IAXN,iBAAe,MAAA,GAAE;IACjB,iBAAe,KAAA;IAChB,OAAK,eAAA,CAAC,iDAA+C,EAAA,YAC/B,KAAA,OAAI,CAAA,CAAA;IAC1B,MAAK;IACJ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAA,QAAI,CAAI,KAAA;OAChB,WAIO,KAAA,QAAA,UAAA,EAFJ,MAAM,KAAA,OAAI,QAEN,CAAA,gBAAA,gBADF,KAAA,QAAI,eAAA,OAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,IAAA,WAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,GAAA"}
@@ -0,0 +1,38 @@
1
+ import type { LoadingState } from '../ScalarLoading';
2
+ /**
3
+ * Scalar save prompt
4
+ *
5
+ * Placeholder shell — wire layout, modal, and actions in the host.
6
+ */
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;
9
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
10
+ loader?: LoadingState;
11
+ } & {
12
+ modelValue?: boolean;
13
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
14
+ "update:modelValue": (value: boolean) => any;
15
+ } & {
16
+ save: () => any;
17
+ discard: () => any;
18
+ }, string, import("vue").PublicProps, Readonly<{
19
+ loader?: LoadingState;
20
+ } & {
21
+ modelValue?: boolean;
22
+ }> & Readonly<{
23
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
24
+ onSave?: (() => any) | undefined;
25
+ onDiscard?: (() => any) | undefined;
26
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
27
+ default?: (props: {}) => any;
28
+ } & {
29
+ discard?: (props: {}) => any;
30
+ } & {
31
+ save?: (props: {}) => any;
32
+ }>;
33
+ type __VLS_WithSlots<T, S> = T & {
34
+ new (): {
35
+ $slots: S;
36
+ };
37
+ };
38
+ //# sourceMappingURL=ScalarSavePrompt.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScalarSavePrompt.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarSavePrompt/ScalarSavePrompt.vue"],"names":[],"mappings":"AA2FA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAGpD;;;;GAIG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;aAEP,YAAY;;iBAoBV,OAAO;;;;;;;aApBT,YAAY;;iBAoBV,OAAO;;;;;;cAqLN,CAAC,KAAK,IAAgB,KAAK,GAAG;;cAC9B,CAAC,KAAK,IAAiB,KAAK,GAAG;;WAClC,CAAC,KAAK,IAAiB,KAAK,GAAG;EAUtC,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 ScalarSavePrompt_vue_vue_type_script_setup_true_lang_default from "./ScalarSavePrompt.vue.script.js";
2
+ //#region src/components/ScalarSavePrompt/ScalarSavePrompt.vue
3
+ var ScalarSavePrompt_default = ScalarSavePrompt_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { ScalarSavePrompt_default as default };
6
+
7
+ //# sourceMappingURL=ScalarSavePrompt.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScalarSavePrompt.vue.js","names":[],"sources":["../../../src/components/ScalarSavePrompt/ScalarSavePrompt.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar save prompt\n *\n * Placeholder shell — wire layout, modal, and actions in the host.\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport {\n ScalarIconArrowCounterClockwise,\n ScalarIconFloppyDisk,\n} from '@scalar/icons'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport { ScalarButton } from '../ScalarButton'\nimport type { LoadingState } from '../ScalarLoading'\n\ndefineProps<{\n loader?: LoadingState\n}>()\n\nconst emit = defineEmits<{\n (e: 'save'): void\n (e: 'discard'): void\n}>()\n\nconst dirty = defineModel<boolean>({ default: false })\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <Transition\n enterActiveClass=\"transition-transform ease-spring duration-400\"\n enterFromClass=\"translate-y-[200%]\"\n enterToClass=\"translate-y-0\"\n leaveActiveClass=\"transition-transform ease-in duration-100\"\n leaveFromClass=\"translate-y-0\"\n leaveToClass=\"translate-y-[200%]\">\n <div\n v-if=\"dirty || loader?.isActive\"\n aria-live=\"polite\"\n v-bind=\"\n cx(\n 'flex items-center gap-2',\n 'w-content max-w-screen-padded-4 z-context',\n 'fixed left-1/2 -translate-x-1/2 bottom-4',\n 'bg-b-2 p-4 shadow-lg rounded-xl',\n )\n \">\n <div class=\"min-w-0 flex-1 text-c-1 text-base font-medium\">\n <slot>You have unsaved changes</slot>\n </div>\n <div class=\"flex -m-2 shrink-0\">\n <ScalarButton\n size=\"sm\"\n variant=\"ghost\"\n @click=\"emit('discard')\">\n <template #icon>\n <ScalarIconArrowCounterClockwise\n class=\"size-full\"\n weight=\"bold\" />\n </template>\n <slot name=\"discard\">Undo</slot>\n </ScalarButton>\n <ScalarButton\n :loader\n size=\"sm\"\n @click=\"emit('save')\">\n <template #icon>\n <ScalarIconFloppyDisk\n class=\"size-full\"\n weight=\"bold\" />\n </template>\n <slot name=\"save\">Save</slot>\n </ScalarButton>\n </div>\n </div>\n </Transition>\n</template>\n"],"mappings":""}
@@ -0,0 +1,66 @@
1
+ import ScalarButton_default from "../ScalarButton/ScalarButton.vue.js";
2
+ import { useBindCx } from "@scalar/use-hooks/useBindCx";
3
+ import { Transition, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, mergeProps, openBlock, renderSlot, unref, useModel, withCtx } from "vue";
4
+ import { ScalarIconArrowCounterClockwise, ScalarIconFloppyDisk } from "@scalar/icons";
5
+ //#region src/components/ScalarSavePrompt/ScalarSavePrompt.vue?vue&type=script&setup=true&lang.ts
6
+ var _hoisted_1 = { class: "min-w-0 flex-1 text-c-1 text-base font-medium" };
7
+ var _hoisted_2 = { class: "flex -m-2 shrink-0" };
8
+ var ScalarSavePrompt_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
9
+ inheritAttrs: false,
10
+ __name: "ScalarSavePrompt",
11
+ props: /* @__PURE__ */ mergeModels({ loader: {} }, {
12
+ "modelValue": {
13
+ type: Boolean,
14
+ default: false
15
+ },
16
+ "modelModifiers": {}
17
+ }),
18
+ emits: /* @__PURE__ */ mergeModels(["save", "discard"], ["update:modelValue"]),
19
+ setup(__props, { emit: __emit }) {
20
+ const emit = __emit;
21
+ const dirty = useModel(__props, "modelValue");
22
+ const { cx } = useBindCx();
23
+ return (_ctx, _cache) => {
24
+ return openBlock(), createBlock(Transition, {
25
+ enterActiveClass: "transition-transform ease-spring duration-400",
26
+ enterFromClass: "translate-y-[200%]",
27
+ enterToClass: "translate-y-0",
28
+ leaveActiveClass: "transition-transform ease-in duration-100",
29
+ leaveFromClass: "translate-y-0",
30
+ leaveToClass: "translate-y-[200%]"
31
+ }, {
32
+ default: withCtx(() => [dirty.value || __props.loader?.isActive ? (openBlock(), createElementBlock("div", mergeProps({
33
+ key: 0,
34
+ "aria-live": "polite"
35
+ }, unref(cx)("flex items-center gap-2", "w-content max-w-screen-padded-4 z-context", "fixed left-1/2 -translate-x-1/2 bottom-4", "bg-b-2 p-4 shadow-lg rounded-xl")), [createElementVNode("div", _hoisted_1, [renderSlot(_ctx.$slots, "default", {}, () => [_cache[2] || (_cache[2] = createTextVNode("You have unsaved changes", -1))])]), createElementVNode("div", _hoisted_2, [createVNode(unref(ScalarButton_default), {
36
+ size: "sm",
37
+ variant: "ghost",
38
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("discard"))
39
+ }, {
40
+ icon: withCtx(() => [createVNode(unref(ScalarIconArrowCounterClockwise), {
41
+ class: "size-full",
42
+ weight: "bold"
43
+ })]),
44
+ default: withCtx(() => [renderSlot(_ctx.$slots, "discard", {}, () => [_cache[3] || (_cache[3] = createTextVNode("Undo", -1))])]),
45
+ _: 3
46
+ }), createVNode(unref(ScalarButton_default), {
47
+ loader: __props.loader,
48
+ size: "sm",
49
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("save"))
50
+ }, {
51
+ icon: withCtx(() => [createVNode(unref(ScalarIconFloppyDisk), {
52
+ class: "size-full",
53
+ weight: "bold"
54
+ })]),
55
+ default: withCtx(() => [renderSlot(_ctx.$slots, "save", {}, () => [_cache[4] || (_cache[4] = createTextVNode("Save", -1))])]),
56
+ _: 3
57
+ }, 8, ["loader"])])], 16)) : createCommentVNode("", true)]),
58
+ _: 3
59
+ });
60
+ };
61
+ }
62
+ });
63
+ //#endregion
64
+ export { ScalarSavePrompt_vue_vue_type_script_setup_true_lang_default as default };
65
+
66
+ //# sourceMappingURL=ScalarSavePrompt.vue.script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScalarSavePrompt.vue.script.js","names":[],"sources":["../../../src/components/ScalarSavePrompt/ScalarSavePrompt.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar save prompt\n *\n * Placeholder shell — wire layout, modal, and actions in the host.\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport {\n ScalarIconArrowCounterClockwise,\n ScalarIconFloppyDisk,\n} from '@scalar/icons'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nimport { ScalarButton } from '../ScalarButton'\nimport type { LoadingState } from '../ScalarLoading'\n\ndefineProps<{\n loader?: LoadingState\n}>()\n\nconst emit = defineEmits<{\n (e: 'save'): void\n (e: 'discard'): void\n}>()\n\nconst dirty = defineModel<boolean>({ default: false })\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <Transition\n enterActiveClass=\"transition-transform ease-spring duration-400\"\n enterFromClass=\"translate-y-[200%]\"\n enterToClass=\"translate-y-0\"\n leaveActiveClass=\"transition-transform ease-in duration-100\"\n leaveFromClass=\"translate-y-0\"\n leaveToClass=\"translate-y-[200%]\">\n <div\n v-if=\"dirty || loader?.isActive\"\n aria-live=\"polite\"\n v-bind=\"\n cx(\n 'flex items-center gap-2',\n 'w-content max-w-screen-padded-4 z-context',\n 'fixed left-1/2 -translate-x-1/2 bottom-4',\n 'bg-b-2 p-4 shadow-lg rounded-xl',\n )\n \">\n <div class=\"min-w-0 flex-1 text-c-1 text-base font-medium\">\n <slot>You have unsaved changes</slot>\n </div>\n <div class=\"flex -m-2 shrink-0\">\n <ScalarButton\n size=\"sm\"\n variant=\"ghost\"\n @click=\"emit('discard')\">\n <template #icon>\n <ScalarIconArrowCounterClockwise\n class=\"size-full\"\n weight=\"bold\" />\n </template>\n <slot name=\"discard\">Undo</slot>\n </ScalarButton>\n <ScalarButton\n :loader\n size=\"sm\"\n @click=\"emit('save')\">\n <template #icon>\n <ScalarIconFloppyDisk\n class=\"size-full\"\n weight=\"bold\" />\n </template>\n <slot name=\"save\">Save</slot>\n </ScalarButton>\n </div>\n </div>\n </Transition>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAsBA,MAAM,OAAO;EAKb,MAAM,QAAQ,SAAoB,SAAA,aAAmB;EAGrD,MAAM,EAAE,OAAO,WAAU;;uBAGvB,YA8Ca,YAAA;IA7CX,kBAAiB;IACjB,gBAAe;IACf,cAAa;IACb,kBAAiB;IACjB,gBAAe;IACf,cAAa;;2BAuCP,CArCE,MAAA,SAAS,QAAA,QAAQ,YAAA,WAAA,EADzB,mBAsCM,OAtCN,WAsCM;;KApCJ,aAAU;OACO,MAAA,GAAE,CAAA,2BAAA,6CAAA,4CAAA,kCAAA,CAAA,EAAA,CAQnB,mBAEM,OAFN,YAEM,CADJ,WAAqC,KAAA,QAAA,WAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAAA,gBAA/B,4BAAwB,GAAA,EAAA,CAAA,CAAA,CAAA,EAEhC,mBAuBM,OAvBN,YAuBM,CAtBJ,YAUe,MAAA,qBAAA,EAAA;KATb,MAAK;KACL,SAAQ;KACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,UAAA;;KACD,MAAI,cAGK,CAFlB,YAEkB,MAAA,gCAAA,EAAA;MADhB,OAAM;MACN,QAAO;;4BAEqB,CAAhC,WAAgC,KAAA,QAAA,WAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAAA,gBAAX,QAAI,GAAA,EAAA,CAAA,CAAA,CAAA;;QAE3B,YAUe,MAAA,qBAAA,EAAA;KATZ,QAAA,QAAA;KACD,MAAK;KACJ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,OAAA;;KACD,MAAI,cAGK,CAFlB,YAEkB,MAAA,qBAAA,EAAA;MADhB,OAAM;MACN,QAAO;;4BAEkB,CAA7B,WAA6B,KAAA,QAAA,QAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAAA,gBAAX,QAAI,GAAA,EAAA,CAAA,CAAA,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { default as ScalarSavePrompt } from './ScalarSavePrompt.vue.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarSavePrompt/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarSidebarItems.vue.js","names":[],"sources":["../../../src/components/ScalarSidebar/ScalarSidebarItems.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Sidebar Items component\n *\n * A base container for ScalarSidebarItem(s), renders as\n * a `<ul>` by default to meet accessibility requirements\n *\n * @example\n * <ScalarSidebarItems>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * </ScalarSidebarItems>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport type { Component } from 'vue'\n\nimport { useSidebarNestedItems } from './useSidebarNestedItems'\n\nconst { is = 'ul' } = defineProps<{\n is?: Component | string\n}>()\n\nconst { open } = useSidebarNestedItems()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <component\n :is=\"is\"\n v-bind=\"\n cx(\n 'group/items relative flex flex-col p-3 gap-px transition-transform duration-300',\n open ? '-translate-x-full' : 'translate-x-0',\n )\n \">\n <slot />\n </component>\n</template>\n<style>\n@reference \"../../style.css\";\n\n/* Hide the buttons from the keyboard when a nested item is open */\n.group\\/items.-translate-x-full .group\\/button {\n /* Required to prevent the button from being focused */\n display: none;\n /* Required to prevent the button from taking up scroll space */\n max-height: 0;\n\n transition-property: display, max-height;\n transition-behavior: allow-discrete;\n transition-duration: 0s;\n transition-delay: 300ms;\n}\n\n/* Show the buttons within a nested item when it is open */\n.group\\/item.group\\/nested-items-open\n > *\n > .group\\/items.translate-x-0\n .group\\/button {\n max-height: calc(infinity * 1px);\n display: flex;\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ScalarSidebarItems.vue.js","names":[],"sources":["../../../src/components/ScalarSidebar/ScalarSidebarItems.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Sidebar Items component\n *\n * A base container for ScalarSidebarItem(s), renders as\n * a `<ul>` by default to meet accessibility requirements\n *\n * @example\n * <ScalarSidebarItems>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * </ScalarSidebarItems>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport type { Component } from 'vue'\n\nimport { useSidebarNestedItems } from './useSidebarNestedItems'\n\nconst { is = 'ul' } = defineProps<{\n is?: Component | string\n}>()\n\nconst { open } = useSidebarNestedItems()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <component\n :is=\"is\"\n v-bind=\"\n cx(\n 'group/items relative flex flex-col p-(--scalar-sidebar-padding) gap-px transition-transform duration-300',\n open ? '-translate-x-full' : 'translate-x-0',\n )\n \">\n <slot />\n </component>\n</template>\n<style>\n@reference \"../../style.css\";\n\n/* Hide the buttons from the keyboard when a nested item is open */\n.group\\/items.-translate-x-full .group\\/button {\n /* Required to prevent the button from being focused */\n display: none;\n /* Required to prevent the button from taking up scroll space */\n max-height: 0;\n\n transition-property: display, max-height;\n transition-behavior: allow-discrete;\n transition-duration: 0s;\n transition-delay: 300ms;\n}\n\n/* Show the buttons within a nested item when it is open */\n.group\\/item.group\\/nested-items-open\n > *\n > .group\\/items.translate-x-0\n .group\\/button {\n max-height: calc(infinity * 1px);\n display: flex;\n}\n</style>\n"],"mappings":""}
@@ -9,7 +9,7 @@ var ScalarSidebarItems_vue_vue_type_script_setup_true_lang_default = /* @__PURE_
9
9
  const { open } = useSidebarNestedItems();
10
10
  const { cx } = useBindCx();
11
11
  return (_ctx, _cache) => {
12
- return openBlock(), createBlock(resolveDynamicComponent(__props.is), normalizeProps(guardReactiveProps(unref(cx)("group/items relative flex flex-col p-3 gap-px transition-transform duration-300", unref(open) ? "-translate-x-full" : "translate-x-0"))), {
12
+ return openBlock(), createBlock(resolveDynamicComponent(__props.is), normalizeProps(guardReactiveProps(unref(cx)("group/items relative flex flex-col p-(--scalar-sidebar-padding) gap-px transition-transform duration-300", unref(open) ? "-translate-x-full" : "translate-x-0"))), {
13
13
  default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
14
14
  _: 3
15
15
  }, 16);
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarSidebarItems.vue.script.js","names":[],"sources":["../../../src/components/ScalarSidebar/ScalarSidebarItems.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Sidebar Items component\n *\n * A base container for ScalarSidebarItem(s), renders as\n * a `<ul>` by default to meet accessibility requirements\n *\n * @example\n * <ScalarSidebarItems>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * </ScalarSidebarItems>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport type { Component } from 'vue'\n\nimport { useSidebarNestedItems } from './useSidebarNestedItems'\n\nconst { is = 'ul' } = defineProps<{\n is?: Component | string\n}>()\n\nconst { open } = useSidebarNestedItems()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <component\n :is=\"is\"\n v-bind=\"\n cx(\n 'group/items relative flex flex-col p-3 gap-px transition-transform duration-300',\n open ? '-translate-x-full' : 'translate-x-0',\n )\n \">\n <slot />\n </component>\n</template>\n<style>\n@reference \"../../style.css\";\n\n/* Hide the buttons from the keyboard when a nested item is open */\n.group\\/items.-translate-x-full .group\\/button {\n /* Required to prevent the button from being focused */\n display: none;\n /* Required to prevent the button from taking up scroll space */\n max-height: 0;\n\n transition-property: display, max-height;\n transition-behavior: allow-discrete;\n transition-duration: 0s;\n transition-delay: 300ms;\n}\n\n/* Show the buttons within a nested item when it is open */\n.group\\/item.group\\/nested-items-open\n > *\n > .group\\/items.translate-x-0\n .group\\/button {\n max-height: calc(infinity * 1px);\n display: flex;\n}\n</style>\n"],"mappings":";;;;;;;;EA0BA,MAAM,EAAE,SAAS,uBAAsB;EAGvC,MAAM,EAAE,OAAO,WAAU;;uBAGvB,YASY,wBARL,QAAA,GAAE,EAAA,eAAA,mBACQ,MAAA,GAAE,CAAA,mFAAqG,MAAA,KAAI,GAAA,sBAAA,gBAAA,CAAA,CAAA,EAAA;2BAMlH,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ScalarSidebarItems.vue.script.js","names":[],"sources":["../../../src/components/ScalarSidebar/ScalarSidebarItems.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Sidebar Items component\n *\n * A base container for ScalarSidebarItem(s), renders as\n * a `<ul>` by default to meet accessibility requirements\n *\n * @example\n * <ScalarSidebarItems>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * <ScalarSidebarItem>...</ScalarSidebarItem>\n * </ScalarSidebarItems>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport type { Component } from 'vue'\n\nimport { useSidebarNestedItems } from './useSidebarNestedItems'\n\nconst { is = 'ul' } = defineProps<{\n is?: Component | string\n}>()\n\nconst { open } = useSidebarNestedItems()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <component\n :is=\"is\"\n v-bind=\"\n cx(\n 'group/items relative flex flex-col p-(--scalar-sidebar-padding) gap-px transition-transform duration-300',\n open ? '-translate-x-full' : 'translate-x-0',\n )\n \">\n <slot />\n </component>\n</template>\n<style>\n@reference \"../../style.css\";\n\n/* Hide the buttons from the keyboard when a nested item is open */\n.group\\/items.-translate-x-full .group\\/button {\n /* Required to prevent the button from being focused */\n display: none;\n /* Required to prevent the button from taking up scroll space */\n max-height: 0;\n\n transition-property: display, max-height;\n transition-behavior: allow-discrete;\n transition-duration: 0s;\n transition-delay: 300ms;\n}\n\n/* Show the buttons within a nested item when it is open */\n.group\\/item.group\\/nested-items-open\n > *\n > .group\\/items.translate-x-0\n .group\\/button {\n max-height: calc(infinity * 1px);\n display: flex;\n}\n</style>\n"],"mappings":";;;;;;;;EA0BA,MAAM,EAAE,SAAS,uBAAsB;EAGvC,MAAM,EAAE,OAAO,WAAU;;uBAGvB,YASY,wBARL,QAAA,GAAE,EAAA,eAAA,mBACQ,MAAA,GAAE,CAAA,4GAA8H,MAAA,KAAI,GAAA,sBAAA,gBAAA,CAAA,CAAA,EAAA;2BAM3I,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarSidebarNestedItems.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarSidebar/ScalarSidebarNestedItems.vue"],"names":[],"mappings":"AA8LA;;;;;;;;;;;;;;;GAeG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;;;;WA+FT,OAAO;;;;;;;;;;WAAP,OAAO;;;;;;IA9Ed,qCAAqC;cACzB,MAAM,OAAO;IACzB,iCAAiC;aACtB,MAAM,OAAO;IACxB,wBAAwB;WACf,MAAM,OAAO;IACtB,8BAA8B;YACpB,MAAM,OAAO;IACvB,+BAA+B;WACtB,MAAM,OAAO;IACtB,qCAAqC;mBACtB,MAAM,OAAO;IAC5B,mCAAmC;YACzB,MAAM,OAAO;EAoSrB,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":"ScalarSidebarNestedItems.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarSidebar/ScalarSidebarNestedItems.vue"],"names":[],"mappings":"AAoNA;;;;;;;;;;;;;;;GAeG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;;;;WA+FT,OAAO;;;;;;;;;;WAAP,OAAO;;;;;;IA9Ed,qCAAqC;cACzB,MAAM,OAAO;IACzB,iCAAiC;aACtB,MAAM,OAAO;IACxB,wBAAwB;WACf,MAAM,OAAO;IACtB,8BAA8B;YACpB,MAAM,OAAO;IACvB,+BAA+B;WACtB,MAAM,OAAO;IACtB,qCAAqC;mBACtB,MAAM,OAAO;IAC5B,mCAAmC;YACzB,MAAM,OAAO;EAoTrB,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import ScalarSidebarNestedItems_vue_vue_type_script_setup_true_lang_default from "./ScalarSidebarNestedItems.vue.script.js";
2
+ /* empty css */
2
3
  //#region src/components/ScalarSidebar/ScalarSidebarNestedItems.vue
3
4
  var ScalarSidebarNestedItems_default = ScalarSidebarNestedItems_vue_vue_type_script_setup_true_lang_default;
4
5
  //#endregion