@scalar/components 0.21.2 → 0.21.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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":"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"}
@@ -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"}
package/dist/index.d.ts CHANGED
@@ -1,39 +1,50 @@
1
1
  import './style.css';
2
2
  export { compose, cva, cx, tw, useBindCx } from '@scalar/use-hooks/useBindCx';
3
- /** biome-ignore-start lint/performance/noReExportAll: re-exports indexes */
4
- export * from './components/ScalarButton';
5
- export * from './components/ScalarCard';
6
- export * from './components/ScalarCheckboxInput';
7
- export * from './components/ScalarCodeBlock';
8
- export * from './components/ScalarColorModeToggle';
9
- export * from './components/ScalarCombobox';
10
- export * from './components/ScalarCopy';
11
- export * from './components/ScalarDropdown';
12
- export * from './components/ScalarErrorBoundary';
13
- export * from './components/ScalarFileUpload';
14
- export * from './components/ScalarFloating';
15
- export * from './components/ScalarForm';
16
- export * from './components/ScalarHeader';
17
- export * from './components/ScalarHotkey';
18
- export * from './components/ScalarIcon';
19
- export * from './components/ScalarIconButton';
20
- export * from './components/ScalarListbox';
21
- export * from './components/ScalarLoading';
22
- export * from './components/ScalarMarkdown';
23
- export * from './components/ScalarMenu';
24
- export * from './components/ScalarModal';
25
- export * from './components/ScalarPopover';
26
- export * from './components/ScalarSearchInput';
27
- export * from './components/ScalarSearchResults';
28
- export * from './components/ScalarSidebar';
29
- export * from './components/ScalarTeleport';
30
- export * from './components/ScalarTextArea';
31
- export * from './components/ScalarTextInput';
32
- export * from './components/ScalarThemeSwatches';
33
- export * from './components/ScalarToggle';
34
- export * from './components/ScalarTooltip';
35
- export * from './components/ScalarVirtualText';
36
- export * from './components/ScalarWrappingText';
37
- export * from './helpers';
38
- /** biome-ignore-end lint/performance/noReExportAll: re-exports indexes */
3
+ export type { ScalarButtonSize, ScalarButtonVariant } from './components/ScalarButton';
4
+ export { ScalarButton } from './components/ScalarButton';
5
+ export { ScalarCard, ScalarCardFooter, ScalarCardHeader, ScalarCardSection } from './components/ScalarCard';
6
+ export type { ScalarCheckboxOption, ScalarCheckboxType } from './components/ScalarCheckboxInput';
7
+ export { ScalarCheckbox, ScalarCheckboxGroup, ScalarCheckboxInput, ScalarCheckboxRadioGroup, } from './components/ScalarCheckboxInput';
8
+ export { ScalarCodeBlock, ScalarCodeBlockCopy } from './components/ScalarCodeBlock';
9
+ export { ScalarColorModeToggle, ScalarColorModeToggleButton, ScalarColorModeToggleIcon, } from './components/ScalarColorModeToggle';
10
+ export type { ScalarComboboxFilterFunction, ScalarComboboxOption, ScalarComboboxOptionGroup, ScalarComboboxOptionsOrGroups, } from './components/ScalarCombobox';
11
+ export { ScalarCombobox, ScalarComboboxMultiselect, isScalarComboboxGroups } from './components/ScalarCombobox';
12
+ export { ScalarCopy, ScalarCopyBackdrop, ScalarCopyButton } from './components/ScalarCopy';
13
+ export { ScalarDropdown, ScalarDropdownButton, ScalarDropdownDivider, ScalarDropdownItem, ScalarDropdownMenu, } from './components/ScalarDropdown';
14
+ export { ScalarErrorBoundary } from './components/ScalarErrorBoundary';
15
+ export { ScalarFileUpload, ScalarFileUploadDropTarget, ScalarFileUploadError, ScalarFileUploadFileList, ScalarFileUploadInput, ScalarFileUploadInputCompact, ScalarFileUploadLoading, } from './components/ScalarFileUpload';
16
+ export type { ScalarFloatingOptions } from './components/ScalarFloating';
17
+ export { ScalarFloating, ScalarFloatingBackdrop } from './components/ScalarFloating';
18
+ export { ScalarForm, ScalarFormError, ScalarFormField, ScalarFormInput, ScalarFormInputGroup, ScalarFormSection, } from './components/ScalarForm';
19
+ export { ScalarHeader, ScalarHeaderButton } from './components/ScalarHeader';
20
+ export type { ScalarHotkeyModifier } from './components/ScalarHotkey';
21
+ export { ScalarHotkey, formatHotkeySymbols } from './components/ScalarHotkey';
22
+ export type { Icon } from './components/ScalarIcon';
23
+ export { ScalarIcon, ScalarIconLegacyAdapter } from './components/ScalarIcon';
24
+ export { ScalarIconButton } from './components/ScalarIconButton';
25
+ export type { ScalarListboxOption } from './components/ScalarListbox';
26
+ export { ScalarListbox, ScalarListboxCheckbox, ScalarListboxInput, ScalarListboxItem } from './components/ScalarListbox';
27
+ export type { LoadingState } from './components/ScalarLoading';
28
+ export { ScalarLoading, useLoadingState } from './components/ScalarLoading';
29
+ export { ScalarMarkdown, ScalarMarkdownSummary } from './components/ScalarMarkdown';
30
+ export type { ScalarMenuTeamOption, WorkspaceGroup } from './components/ScalarMenu';
31
+ export { ScalarMenu, ScalarMenuButton, ScalarMenuLink, ScalarMenuProduct, ScalarMenuProducts, ScalarMenuResources, ScalarMenuSection, ScalarMenuSupport, ScalarMenuTeamPicker, ScalarMenuTeamProfile, ScalarMenuWorkspacePicker, } from './components/ScalarMenu';
32
+ export type { ModalState } from './components/ScalarModal';
33
+ export { ScalarModal, useModal } from './components/ScalarModal';
34
+ export type { ScalarPopoverSlots } from './components/ScalarPopover';
35
+ export { ScalarPopover } from './components/ScalarPopover';
36
+ export { ScalarSavePrompt } from './components/ScalarSavePrompt';
37
+ export { ScalarSearchInput } from './components/ScalarSearchInput';
38
+ export { ScalarSearchResultItem, ScalarSearchResultList } from './components/ScalarSearchResults';
39
+ export { ScalarSidebar, ScalarSidebarButton, ScalarSidebarFooter, ScalarSidebarGroup, ScalarSidebarGroupToggle, ScalarSidebarIndent, ScalarSidebarItem, ScalarSidebarItems, ScalarSidebarNestedItems, ScalarSidebarSearchButton, ScalarSidebarSearchInput, ScalarSidebarSection, ScalarSidebarSpacer, } from './components/ScalarSidebar';
40
+ export { ScalarTeleport, ScalarTeleportRoot, TELEPORT_SYMBOL, useProvideTeleport, useTeleport, } from './components/ScalarTeleport';
41
+ export { ScalarTextArea } from './components/ScalarTextArea';
42
+ export { ScalarTextInput, ScalarTextInputCopy } from './components/ScalarTextInput';
43
+ export { ScalarThemeSwatches, useThemeSwatches } from './components/ScalarThemeSwatches';
44
+ export { ScalarToggle, ScalarToggleGroup, ScalarToggleInput } from './components/ScalarToggle';
45
+ export type { ScalarTooltipPlacement, TooltipConfiguration } from './components/ScalarTooltip';
46
+ export { ScalarHotkeyTooltip, ScalarTooltip, useTooltip } from './components/ScalarTooltip';
47
+ export { ScalarVirtualText } from './components/ScalarVirtualText';
48
+ export { ScalarWrappingText } from './components/ScalarWrappingText';
49
+ export { addScalarClassesToHeadless } from './helpers';
39
50
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAE7E,4EAA4E;AAC5E,cAAc,2BAA2B,CAAA;AACzC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kCAAkC,CAAA;AAChD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,oCAAoC,CAAA;AAClD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kCAAkC,CAAA;AAChD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,kCAAkC,CAAA;AAChD,cAAc,2BAA2B,CAAA;AACzC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,WAAW,CAAA;AACzB,0EAA0E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -75,6 +75,7 @@ import ScalarMenuWorkspacePicker_default from "./components/ScalarMenu/ScalarMen
75
75
  import { useModal } from "./components/ScalarModal/ScalarModal.vue.script.js";
76
76
  import ScalarModal_default from "./components/ScalarModal/ScalarModal.vue.js";
77
77
  import ScalarPopover_default from "./components/ScalarPopover/ScalarPopover.vue.js";
78
+ import ScalarSavePrompt_default from "./components/ScalarSavePrompt/ScalarSavePrompt.vue.js";
78
79
  import ScalarSearchInput_default from "./components/ScalarSearchInput/ScalarSearchInput.vue.js";
79
80
  import ScalarSearchResultItem_default from "./components/ScalarSearchResults/ScalarSearchResultItem.vue.js";
80
81
  import ScalarSearchResultList_default from "./components/ScalarSearchResults/ScalarSearchResultList.vue.js";
@@ -103,9 +104,4 @@ import ScalarVirtualText_default from "./components/ScalarVirtualText/ScalarVirt
103
104
  import ScalarWrappingText_default from "./components/ScalarWrappingText/ScalarWrappingText.vue.js";
104
105
  import { addScalarClassesToHeadless } from "./helpers/add-scalar-classes.js";
105
106
  import { compose, cva, cx, tw, useBindCx } from "@scalar/use-hooks/useBindCx";
106
- //#region src/index.ts
107
- /** biome-ignore-end lint/performance/noReExportAll: re-exports indexes */
108
- //#endregion
109
- 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, 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, 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 };
110
-
111
- //# sourceMappingURL=index.js.map
107
+ 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, 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
@@ -1998,10 +1998,18 @@ img,
1998
1998
  right: 10px;
1999
1999
  }
2000
2000
 
2001
+ .scalar-app .bottom-4 {
2002
+ bottom: 16px;
2003
+ }
2004
+
2001
2005
  .scalar-app .left-0 {
2002
2006
  left: 0;
2003
2007
  }
2004
2008
 
2009
+ .scalar-app .left-1\/2 {
2010
+ left: 50%;
2011
+ }
2012
+
2005
2013
  .scalar-app .left-2 {
2006
2014
  left: 8px;
2007
2015
  }
@@ -2119,6 +2127,10 @@ img,
2119
2127
  margin: -6px;
2120
2128
  }
2121
2129
 
2130
+ .scalar-app .-m-2 {
2131
+ margin: -8px;
2132
+ }
2133
+
2122
2134
  .scalar-app .-m-px {
2123
2135
  margin: -1px;
2124
2136
  }
@@ -2318,11 +2330,6 @@ img,
2318
2330
  height: 14px;
2319
2331
  }
2320
2332
 
2321
- .scalar-app .size-3\.25 {
2322
- width: 13px;
2323
- height: 13px;
2324
- }
2325
-
2326
2333
  .scalar-app .size-4 {
2327
2334
  width: 16px;
2328
2335
  height: 16px;
@@ -2539,6 +2546,10 @@ img,
2539
2546
  width: var(--scalar-border-width);
2540
2547
  }
2541
2548
 
2549
+ .scalar-app .w-content {
2550
+ width: 720px;
2551
+ }
2552
+
2542
2553
  .scalar-app .w-dvw {
2543
2554
  width: 100dvw;
2544
2555
  }
@@ -2587,6 +2598,10 @@ img,
2587
2598
  max-width: inherit;
2588
2599
  }
2589
2600
 
2601
+ .scalar-app .max-w-screen-padded-4 {
2602
+ max-width: calc(100vw - 32px);
2603
+ }
2604
+
2590
2605
  .scalar-app .max-w-xs {
2591
2606
  max-width: 320px;
2592
2607
  }
@@ -2619,6 +2634,11 @@ img,
2619
2634
  flex-shrink: 0;
2620
2635
  }
2621
2636
 
2637
+ .scalar-app .-translate-x-1\/2 {
2638
+ --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
2639
+ translate: var(--tw-translate-x) var(--tw-translate-y);
2640
+ }
2641
+
2622
2642
  .scalar-app .-translate-x-full {
2623
2643
  --tw-translate-x: -100%;
2624
2644
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -2664,6 +2684,11 @@ img,
2664
2684
  translate: var(--tw-translate-x) var(--tw-translate-y);
2665
2685
  }
2666
2686
 
2687
+ .scalar-app .translate-y-\[200\%\] {
2688
+ --tw-translate-y: 200%;
2689
+ translate: var(--tw-translate-x) var(--tw-translate-y);
2690
+ }
2691
+
2667
2692
  .scalar-app .scale-0 {
2668
2693
  --tw-scale-x: 0%;
2669
2694
  --tw-scale-y: 0%;
@@ -3619,6 +3644,11 @@ img,
3619
3644
  transition-duration: .3s;
3620
3645
  }
3621
3646
 
3647
+ .scalar-app .duration-400 {
3648
+ --tw-duration: .4s;
3649
+ transition-duration: .4s;
3650
+ }
3651
+
3622
3652
  .scalar-app .ease-in {
3623
3653
  --tw-ease: var(--ease-in);
3624
3654
  transition-timing-function: var(--ease-in);
@@ -3634,6 +3664,47 @@ img,
3634
3664
  transition-timing-function: var(--ease-out);
3635
3665
  }
3636
3666
 
3667
+ .scalar-app .ease-spring {
3668
+ --tw-ease: linear(0,
3669
+ .008 1.1%,
3670
+ .034 2.3%,
3671
+ .134 4.9%,
3672
+ .264 7.3%,
3673
+ .683 14.3%,
3674
+ .797 16.5%,
3675
+ .89 18.6%,
3676
+ .967 20.7%,
3677
+ 1.027 22.8%,
3678
+ 1.073 25%,
3679
+ 1.104 27.3%,
3680
+ 1.123 30.6%,
3681
+ 1.119 34.3%,
3682
+ 1.018 49.5%,
3683
+ .988 58.6%,
3684
+ .985 65.2%,
3685
+ 1 84.5%,
3686
+ 1);
3687
+ transition-timing-function: linear(0,
3688
+ .008 1.1%,
3689
+ .034 2.3%,
3690
+ .134 4.9%,
3691
+ .264 7.3%,
3692
+ .683 14.3%,
3693
+ .797 16.5%,
3694
+ .89 18.6%,
3695
+ .967 20.7%,
3696
+ 1.027 22.8%,
3697
+ 1.073 25%,
3698
+ 1.104 27.3%,
3699
+ 1.123 30.6%,
3700
+ 1.119 34.3%,
3701
+ 1.018 49.5%,
3702
+ .988 58.6%,
3703
+ .985 65.2%,
3704
+ 1 84.5%,
3705
+ 1);
3706
+ }
3707
+
3637
3708
  .scalar-app .outline-none {
3638
3709
  --tw-outline-style: none;
3639
3710
  outline-style: none;
package/package.json CHANGED
@@ -10,18 +10,19 @@
10
10
  "url": "git+https://github.com/scalar/scalar.git",
11
11
  "directory": "packages/components"
12
12
  },
13
- "version": "0.21.2",
13
+ "version": "0.21.3",
14
14
  "engines": {
15
15
  "node": ">=22"
16
16
  },
17
17
  "type": "module",
18
- "main": "./dist/index.cjs",
18
+ "main": "./dist/index.js",
19
19
  "module": "./dist/index.js",
20
20
  "types": "./dist/index.d.ts",
21
21
  "exports": {
22
22
  ".": {
23
23
  "import": "./dist/index.js",
24
- "require": "./dist/index.cjs"
24
+ "types": "./dist/index.d.ts",
25
+ "default": "./dist/index.js"
25
26
  },
26
27
  "./style.css": "./dist/style.css"
27
28
  },
@@ -35,15 +36,14 @@
35
36
  "@vueuse/core": "13.9.0",
36
37
  "cva": "1.0.0-beta.4",
37
38
  "nanoid": "^5.1.6",
38
- "pretty-bytes": "^7.1.0",
39
39
  "radix-vue": "^1.9.17",
40
- "vue": "^3.5.26",
40
+ "vue": "^3.5.30",
41
41
  "vue-component-type-helpers": "^3.2.2",
42
- "@scalar/code-highlight": "0.3.1",
43
- "@scalar/helpers": "0.4.2",
44
- "@scalar/icons": "0.7.1",
45
- "@scalar/themes": "0.15.1",
46
- "@scalar/use-hooks": "0.4.1"
42
+ "@scalar/code-highlight": "0.3.2",
43
+ "@scalar/icons": "0.7.2",
44
+ "@scalar/themes": "0.15.2",
45
+ "@scalar/use-hooks": "0.4.2",
46
+ "@scalar/helpers": "0.4.3"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@headlessui/tailwindcss": "^0.2.2",
@@ -57,6 +57,7 @@
57
57
  "@vitejs/plugin-vue": "^6.0.3",
58
58
  "@vue/test-utils": "2.4.6",
59
59
  "@vueless/storybook-dark-mode": "^10.0.6",
60
+ "concurrently": "9.1.2",
60
61
  "jsdom": "27.4.0",
61
62
  "storybook": "10.2.19",
62
63
  "svglint": "^4.1.2",
@@ -68,6 +69,7 @@
68
69
  "scripts": {
69
70
  "build": "pnpm typegen:icons && vite build && vue-tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",
70
71
  "build:storybook": "storybook build",
72
+ "build:watch": "concurrently \"vite build --watch\" \"vue-tsc --watch -p tsconfig.build.json\" \"tsc-alias -p tsconfig.build.json --watch\"",
71
73
  "clean:snapshots": "shx rm -rf \"**/snapshots\"",
72
74
  "dev": "storybook dev -p 5100 --ci",
73
75
  "lint:check": "pnpm lint:icons",
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import './style.css'\n\nexport { compose, cva, cx, tw, useBindCx } from '@scalar/use-hooks/useBindCx'\n\n/** biome-ignore-start lint/performance/noReExportAll: re-exports indexes */\nexport * from './components/ScalarButton'\nexport * from './components/ScalarCard'\nexport * from './components/ScalarCheckboxInput'\nexport * from './components/ScalarCodeBlock'\nexport * from './components/ScalarColorModeToggle'\nexport * from './components/ScalarCombobox'\nexport * from './components/ScalarCopy'\nexport * from './components/ScalarDropdown'\nexport * from './components/ScalarErrorBoundary'\nexport * from './components/ScalarFileUpload'\nexport * from './components/ScalarFloating'\nexport * from './components/ScalarForm'\nexport * from './components/ScalarHeader'\nexport * from './components/ScalarHotkey'\nexport * from './components/ScalarIcon'\nexport * from './components/ScalarIconButton'\nexport * from './components/ScalarListbox'\nexport * from './components/ScalarLoading'\nexport * from './components/ScalarMarkdown'\nexport * from './components/ScalarMenu'\nexport * from './components/ScalarModal'\nexport * from './components/ScalarPopover'\nexport * from './components/ScalarSearchInput'\nexport * from './components/ScalarSearchResults'\nexport * from './components/ScalarSidebar'\nexport * from './components/ScalarTeleport'\nexport * from './components/ScalarTextArea'\nexport * from './components/ScalarTextInput'\nexport * from './components/ScalarThemeSwatches'\nexport * from './components/ScalarToggle'\nexport * from './components/ScalarTooltip'\nexport * from './components/ScalarVirtualText'\nexport * from './components/ScalarWrappingText'\nexport * from './helpers'\n/** biome-ignore-end lint/performance/noReExportAll: re-exports indexes */\n"],"mappings":""}