@vuecs/button 1.0.1 → 1.0.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":"index.mjs","names":[],"sources":["../src/component.ts","../src/index.ts"],"sourcesContent":["import { useComponentTheme } from '@vuecs/core';\nimport type {\n ComponentThemeDefinition,\n ThemeClassesOverride,\n ThemeElementDefinition,\n UseComponentThemeProps,\n VariantValues,\n} from '@vuecs/core';\nimport { VCIcon } from '@vuecs/icon';\nimport type {\n ExtractPublicPropTypes,\n PropType,\n SlotsType,\n VNodeArrayChildren,\n} from 'vue';\nimport {\n defineComponent,\n h,\n mergeProps,\n} from 'vue';\nimport type {\n ButtonColor,\n ButtonSize,\n ButtonSlotProps,\n ButtonThemeClasses,\n ButtonVariant,\n} from './type';\n\ndeclare module '@vuecs/core' {\n interface ThemeElements {\n button?: ThemeElementDefinition<ButtonThemeClasses>;\n }\n}\n\nexport const buttonThemeDefaults: ComponentThemeDefinition<ButtonThemeClasses> = {\n classes: {\n root: 'vc-button',\n leading: 'vc-button-leading',\n trailing: 'vc-button-trailing',\n label: 'vc-button-label',\n },\n};\n\nconst buttonProps = {\n color: { type: String as PropType<ButtonColor>, default: undefined },\n variant: { type: String as PropType<ButtonVariant>, default: undefined },\n size: { type: String as PropType<ButtonSize>, default: undefined },\n type: { type: String, default: 'button' },\n tag: { type: String, default: 'button' },\n label: { type: String, default: undefined },\n iconLeft: { type: String, default: undefined },\n iconRight: { type: String, default: undefined },\n loading: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n themeClass: { type: Object as PropType<ThemeClassesOverride<ButtonThemeClasses>>, default: undefined },\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type ButtonProps = ExtractPublicPropTypes<typeof buttonProps>;\n\nexport const VCButton = defineComponent({\n name: 'VCButton',\n props: buttonProps,\n slots: Object as SlotsType<{\n default: ButtonSlotProps;\n leading: ButtonSlotProps;\n trailing: ButtonSlotProps;\n }>,\n setup(props, { attrs, slots }) {\n // The convenience props (color/variant/size/loading) are merged into\n // themeVariant before resolution so themes can drive slot classes off\n // them via the standard variant system. Getter properties keep this\n // reactive — Vue's computed() inside useComponentTheme tracks the\n // underlying prop reads.\n const themeProps: UseComponentThemeProps<ButtonThemeClasses> = {\n get themeClass() {\n return props.themeClass;\n },\n get themeVariant() {\n return {\n ...(props.themeVariant ?? {}),\n ...(props.color !== undefined ? { color: props.color } : {}),\n ...(props.variant !== undefined ? { variant: props.variant } : {}),\n ...(props.size !== undefined ? { size: props.size } : {}),\n ...(props.loading ? { loading: true } : {}),\n };\n },\n };\n\n const theme = useComponentTheme('button', themeProps, buttonThemeDefaults);\n\n return () => {\n const resolved = theme.value;\n const isDisabled = props.disabled || props.loading;\n const slotProps: ButtonSlotProps = {\n loading: props.loading,\n disabled: isDisabled,\n };\n\n const children: VNodeArrayChildren = [];\n\n // Empty slot results (`<template #leading />` returning []) used to\n // emit a wrapper <span> with no children — functionally inert but\n // dead markup. Coerce slot output to non-empty before pushing.\n const isNonEmptySlot = (out: unknown): out is VNodeArrayChildren => Array.isArray(out) && out.length > 0;\n\n // When loading, the leading slot becomes a spinner — universally\n // legible loading affordance, replaces any consumer-provided icon\n // for the duration of the in-flight work. Without this the only\n // signal was a faint opacity/cursor change that read identical to\n // the disabled state on most themes.\n //\n // Accessibility: the spinner glyph is `aria-hidden` (it's\n // decorative — the visual is the spinning ring) but we wrap it\n // alongside a visually-hidden \"Loading\" label so screen readers\n // announce the busy state. Combined with `aria-busy=\"true\"` on\n // the root (set below), AT users get a clear \"in progress\"\n // signal instead of the indistinct \"disabled\" the native\n // `disabled` attribute would otherwise convey on its own.\n if (props.loading) {\n children.push(h('span', { class: resolved.leading || undefined }, [\n h('span', { class: 'vc-button-spinner', 'aria-hidden': 'true' }),\n h('span', { class: 'vc-sr-only' }, 'Loading'),\n ]));\n } else if (slots.leading) {\n const leadingOut = slots.leading(slotProps);\n if (isNonEmptySlot(leadingOut)) {\n children.push(h('span', { class: resolved.leading || undefined }, leadingOut));\n }\n } else if (props.iconLeft) {\n // The string is treated as an Iconify name (e.g. 'lucide:plus')\n // and resolved through <VCIcon>. Consumers wanting raw class\n // strings should slot their own element via #leading instead.\n children.push(h('span', { class: resolved.leading || undefined }, [\n h(VCIcon, { name: props.iconLeft }),\n ]));\n }\n\n const slotLabel = slots.default ? slots.default(slotProps) : undefined;\n if (isNonEmptySlot(slotLabel)) {\n children.push(h('span', { class: resolved.label || undefined }, slotLabel));\n } else if (typeof props.label === 'string' && props.label !== '') {\n children.push(h('span', { class: resolved.label || undefined }, props.label));\n }\n\n if (slots.trailing) {\n const trailingOut = slots.trailing(slotProps);\n if (isNonEmptySlot(trailingOut)) {\n children.push(h('span', { class: resolved.trailing || undefined }, trailingOut));\n }\n } else if (props.iconRight) {\n children.push(h('span', { class: resolved.trailing || undefined }, [\n h(VCIcon, { name: props.iconRight }),\n ]));\n }\n\n const isNativeButton = props.tag === 'button';\n\n return h(\n props.tag,\n mergeProps({\n class: [\n resolved.root || undefined,\n // Structural busy class — themes layer their own look,\n // but every theme gets a consistent loading affordance\n // (wait cursor + opacity pulse) without redeclaring it.\n // `disabled` blocks pointer events on native buttons,\n // which would defeat `cursor: wait`; the CSS handles\n // that by scoping `cursor: wait` only when the busy\n // class is set and avoids `pointer-events: none`.\n props.loading ? 'vc-button--busy' : undefined,\n ],\n ...(isNativeButton ? { type: props.type } : {}),\n ...(isNativeButton ? { disabled: isDisabled || undefined } : {}),\n ...(!isNativeButton && isDisabled ? { 'aria-disabled': 'true' } : {}),\n // Distinguish loading from plain `disabled` for AT —\n // both still set `disabled` (loading must block clicks\n // to prevent double-submit), but `aria-busy` lets screen\n // readers announce \"busy\" rather than just \"disabled\".\n ...(props.loading ? { 'aria-busy': 'true' } : {}),\n }, attrs),\n children,\n );\n };\n },\n});\n","import { installDefaultsManager, installThemeManager } from '@vuecs/core';\nimport type { App, Plugin } from 'vue';\n\nimport '../assets/index.css';\nimport './vue';\n\nimport { VCButton } from './component';\nimport type { Options } from './type';\n\nexport * from './component';\nexport * from './type';\n\nexport function install(instance: App, options: Options = {}): void {\n installThemeManager(instance, options);\n installDefaultsManager(instance, options);\n instance.component('VCButton', VCButton);\n}\n\nexport default { install } satisfies Plugin<[Options?]>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/component.ts","../src/index.ts"],"sourcesContent":["import { useComponentTheme } from '@vuecs/core';\nimport type {\n ComponentThemeDefinition,\n ThemeClassesOverride,\n ThemeElementDefinition,\n UseComponentThemeProps,\n VariantValues,\n} from '@vuecs/core';\nimport { VCIcon } from '@vuecs/icon';\nimport type {\n ExtractPublicPropTypes,\n PropType,\n SlotsType,\n VNodeArrayChildren,\n} from 'vue';\nimport {\n defineComponent,\n h,\n mergeProps,\n} from 'vue';\nimport type {\n ButtonColor,\n ButtonSize,\n ButtonSlotProps,\n ButtonThemeClasses,\n ButtonVariant,\n} from './type';\n\ndeclare module '@vuecs/core' {\n interface ThemeElements {\n button?: ThemeElementDefinition<ButtonThemeClasses>;\n }\n}\n\nexport const buttonThemeDefaults: ComponentThemeDefinition<ButtonThemeClasses> = {\n classes: {\n root: 'vc-button',\n leading: 'vc-button-leading',\n trailing: 'vc-button-trailing',\n label: 'vc-button-label',\n },\n};\n\nconst buttonProps = {\n color: { type: String as PropType<ButtonColor>, default: undefined },\n variant: { type: String as PropType<ButtonVariant>, default: undefined },\n size: { type: String as PropType<ButtonSize>, default: undefined },\n type: { type: String, default: 'button' },\n tag: { type: String, default: 'button' },\n label: { type: String, default: undefined },\n iconLeft: { type: String, default: undefined },\n iconRight: { type: String, default: undefined },\n loading: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n themeClass: { type: Object as PropType<ThemeClassesOverride<ButtonThemeClasses>>, default: undefined },\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type ButtonProps = ExtractPublicPropTypes<typeof buttonProps>;\n\nexport const VCButton = defineComponent({\n name: 'VCButton',\n props: buttonProps,\n slots: Object as SlotsType<{\n default: ButtonSlotProps;\n leading: ButtonSlotProps;\n trailing: ButtonSlotProps;\n }>,\n setup(props, { attrs, slots }) {\n // The convenience props (color/variant/size/loading) are merged into\n // themeVariant before resolution so themes can drive slot classes off\n // them via the standard variant system. Getter properties keep this\n // reactive — Vue's computed() inside useComponentTheme tracks the\n // underlying prop reads.\n const themeProps: UseComponentThemeProps<ButtonThemeClasses> = {\n get themeClass() {\n return props.themeClass;\n },\n get themeVariant() {\n return {\n ...(props.themeVariant ?? {}),\n ...(props.color !== undefined ? { color: props.color } : {}),\n ...(props.variant !== undefined ? { variant: props.variant } : {}),\n ...(props.size !== undefined ? { size: props.size } : {}),\n ...(props.loading ? { loading: true } : {}),\n };\n },\n };\n\n const theme = useComponentTheme('button', themeProps, buttonThemeDefaults);\n\n return () => {\n const resolved = theme.value;\n const isDisabled = props.disabled || props.loading;\n const slotProps: ButtonSlotProps = {\n loading: props.loading,\n disabled: isDisabled,\n };\n\n const children: VNodeArrayChildren = [];\n\n // Empty slot results (`<template #leading />` returning []) used to\n // emit a wrapper <span> with no children — functionally inert but\n // dead markup. Coerce slot output to non-empty before pushing.\n const isNonEmptySlot = (out: unknown): out is VNodeArrayChildren => Array.isArray(out) && out.length > 0;\n\n // When loading, the leading slot becomes a spinner — universally\n // legible loading affordance, replaces any consumer-provided icon\n // for the duration of the in-flight work. Without this the only\n // signal was a faint opacity/cursor change that read identical to\n // the disabled state on most themes.\n //\n // Accessibility: the spinner glyph is `aria-hidden` (it's\n // decorative — the visual is the spinning ring) but we wrap it\n // alongside a visually-hidden \"Loading\" label so screen readers\n // announce the busy state. Combined with `aria-busy=\"true\"` on\n // the root (set below), AT users get a clear \"in progress\"\n // signal instead of the indistinct \"disabled\" the native\n // `disabled` attribute would otherwise convey on its own.\n if (props.loading) {\n children.push(h('span', { class: resolved.leading || undefined }, [\n h('span', { class: 'vc-button-spinner', 'aria-hidden': 'true' }),\n h('span', { class: 'vc-sr-only' }, 'Loading'),\n ]));\n } else if (slots.leading) {\n const leadingOut = slots.leading(slotProps);\n if (isNonEmptySlot(leadingOut)) {\n children.push(h('span', { class: resolved.leading || undefined }, leadingOut));\n }\n } else if (props.iconLeft) {\n // The string is treated as an Iconify name (e.g. 'lucide:plus')\n // and resolved through <VCIcon>. Consumers wanting raw class\n // strings should slot their own element via #leading instead.\n children.push(h('span', { class: resolved.leading || undefined }, [\n h(VCIcon, { name: props.iconLeft }),\n ]));\n }\n\n const slotLabel = slots.default ? slots.default(slotProps) : undefined;\n if (isNonEmptySlot(slotLabel)) {\n children.push(h('span', { class: resolved.label || undefined }, slotLabel));\n } else if (typeof props.label === 'string' && props.label !== '') {\n children.push(h('span', { class: resolved.label || undefined }, props.label));\n }\n\n if (slots.trailing) {\n const trailingOut = slots.trailing(slotProps);\n if (isNonEmptySlot(trailingOut)) {\n children.push(h('span', { class: resolved.trailing || undefined }, trailingOut));\n }\n } else if (props.iconRight) {\n children.push(h('span', { class: resolved.trailing || undefined }, [\n h(VCIcon, { name: props.iconRight }),\n ]));\n }\n\n const isNativeButton = props.tag === 'button';\n\n return h(\n props.tag,\n mergeProps({\n class: [\n resolved.root || undefined,\n // Structural busy class — themes layer their own look,\n // but every theme gets a consistent loading affordance\n // (wait cursor + opacity pulse) without redeclaring it.\n // `disabled` blocks pointer events on native buttons,\n // which would defeat `cursor: wait`; the CSS handles\n // that by scoping `cursor: wait` only when the busy\n // class is set and avoids `pointer-events: none`.\n props.loading ? 'vc-button--busy' : undefined,\n ],\n ...(isNativeButton ? { type: props.type } : {}),\n ...(isNativeButton ? { disabled: isDisabled || undefined } : {}),\n ...(!isNativeButton && isDisabled ? { 'aria-disabled': 'true' } : {}),\n // Distinguish loading from plain `disabled` for AT —\n // both still set `disabled` (loading must block clicks\n // to prevent double-submit), but `aria-busy` lets screen\n // readers announce \"busy\" rather than just \"disabled\".\n ...(props.loading ? { 'aria-busy': 'true' } : {}),\n }, attrs),\n children,\n );\n };\n },\n});\n","import { installDefaultsManager, installThemeManager } from '@vuecs/core';\nimport type { App, Plugin } from 'vue';\n\nimport '../assets/index.css';\nimport './vue';\n\nimport { VCButton } from './component';\nimport type { Options } from './type';\n\nexport * from './component';\nexport * from './type';\n\nexport function install(instance: App, options: Options = {}): void {\n installThemeManager(instance, options);\n installDefaultsManager(instance, options);\n instance.component('VCButton', VCButton);\n}\n\nexport default { install } satisfies Plugin<[Options?]>;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vuecs/button",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "type": "module",
5
5
  "description": "A general-purpose button component for Vue 3.",
6
6
  "exports": {
@@ -40,13 +40,13 @@
40
40
  "build": "rimraf dist && npm run build:js && npm run build:types"
41
41
  },
42
42
  "devDependencies": {
43
- "@vuecs/core": "^3.1.0",
44
- "@vuecs/icon": "^1.0.0",
45
- "vue": "^3.5.34"
43
+ "@vuecs/core": "^3.1.2",
44
+ "@vuecs/icon": "^1.0.1",
45
+ "vue": "^3.5.35"
46
46
  },
47
47
  "peerDependencies": {
48
- "@vuecs/core": "^3.1.0",
49
- "@vuecs/icon": "^1.0.0",
48
+ "@vuecs/core": "^3.1.2",
49
+ "@vuecs/icon": "^1.0.1",
50
50
  "vue": "^3.x"
51
51
  },
52
52
  "engines": {