JungUI
Promotion Code
npx shadcn@latest add https://jungui-cle.pages.dev/r/promotion-code.json

Promotion Code

安装时写入项目的完整源码

Promotion Code

从胶囊提示平滑展开为完整输入框的优惠码组件。

交互方式

点击展开并输入优惠码,Apply 后转圈 1.2 秒。JUNGUI 显示绿色勾和 Applied,其他代码显示红框、轻晃和错误提示;修改后可重试。也可点击下方演示成功/失败,重置后收起。深浅配色跟随右上角主题。

使用示例

"use client"
import { useState } from "react"
import { PromotionCode } from "@/components/ui/promotion-code"

export function Demo() {
  const [code, setCode] = useState("")
  return <PromotionCode value={code} onValueChange={setCode} onApply={(value) => console.log(value)} />
}

参数

参数类型 / 默认值说明
theme"light" | "dark""light"显式指定深浅配色,独立使用时不依赖站点主题。
valuestring受控输入值。
defaultValuestring""非受控初始输入值。
onValueChange(value: string) => void输入变化回调。
onApply(code: string) => void点击 Apply 或按 Enter 时传入去除首尾空格的代码。
placeholderstring"Add promotion code"胶囊文案、占位符及默认无障碍名称。
applyLabelstring"Apply"应用按钮文案。
loadingLabelstring"Applying…"加载按钮文案。
loadingbooleanfalse外部控制加载状态,期间禁止编辑和重复提交。
errorstring外部控制错误文案。
...inputPropsComponentProps<"input">透传 name、disabled、readOnly、aria 属性与输入事件。
successbooleanfalse外部控制成功状态,显示绿色勾并阻止重复提交;修改值后由使用者重置。
successLabelstring"Applied"成功按钮文案和无障碍状态播报。
classNamestring附加样式类。组件同时支持根元素对应的原生属性。

安装内容

Install 会将下面的源码文件写入你的项目。需要的 npm 依赖会一起安装,代码可以直接修改。

clsxtailwind-merge
  • components/ui/promotion-code.css
  • components/ui/promotion-code.tsx
  • lib/utils.ts

来源

https://stripe.com/payments/checkout