@petnow/ui 5.3.1 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +66 -0
- package/README.md +85 -5
- package/dist/Chip-Bu5q0mhe.js +53 -0
- package/dist/Chip-Bu5q0mhe.js.map +1 -0
- package/dist/chip.js +2 -52
- package/dist/combobox.js +166 -152
- package/dist/combobox.js.map +1 -1
- package/dist/{fieldStyles-DyZu__hI.js → fieldStyles-DXyDrzxD.js} +5 -6
- package/dist/fieldStyles-DXyDrzxD.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.es.js +18 -18
- package/dist/mergeRefs-CsNeQOZ6.js +39 -0
- package/dist/mergeRefs-CsNeQOZ6.js.map +1 -0
- package/dist/native/chip.js +134 -0
- package/dist/native/chip.js.map +1 -0
- package/dist/native/components/chip/Chip.native.d.ts +14 -0
- package/dist/native/components/chip/Chip.types.d.ts +11 -0
- package/dist/native/components/chip/Chip.variants.d.ts +12 -0
- package/dist/native/utils/TailwindUtil.d.ts +2 -0
- package/dist/native/utils/mergeRefs.d.ts +2 -0
- package/dist/select.js +86 -66
- package/dist/select.js.map +1 -1
- package/dist/src/components/chip/Chip.d.ts +2 -7
- package/dist/src/components/chip/Chip.types.d.ts +11 -0
- package/dist/src/components/chip/Chip.variants.d.ts +12 -0
- package/dist/src/components/combobox/Combobox.d.ts +1 -0
- package/dist/src/components/select/Select.d.ts +13 -6
- package/dist/src/components/text-field/TextField.d.ts +1 -20
- package/dist/src/components/ui/listbox.d.ts +1 -0
- package/dist/src/components/ui/listboxStyles.d.ts +8 -0
- package/dist/text-field.js +50 -114
- package/dist/text-field.js.map +1 -1
- package/dist/v1/text-field.js +1 -1
- package/docs/migration/v5-to-v6.md +59 -0
- package/package.json +34 -5
- package/petnow-design-system-v1.css +2 -0
- package/petnow-design-system-v1.uniwind.css +763 -0
- package/tailwind.css +2 -0
- package/dist/chip.js.map +0 -1
- package/dist/fieldStyles-DyZu__hI.js.map +0 -1
- package/dist/mergeRefs-BHwdBwNQ.js +0 -27
- package/dist/mergeRefs-BHwdBwNQ.js.map +0 -1
package/tailwind.css
CHANGED
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
@import "tw-animate-css";
|
|
14
14
|
|
|
15
15
|
@source "./dist/**/*.js";
|
|
16
|
+
/* React Native components; their classes are generated by the app's Uniwind build. */
|
|
17
|
+
@source not "./dist/native";
|
|
16
18
|
|
|
17
19
|
/*
|
|
18
20
|
v0 tokens: deprecated. Use the v1 tokens in petnow-design-system-v1.css
|
package/dist/chip.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chip.js","names":[],"sources":["../src/components/chip/Chip.tsx"],"sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../utils/TailwindUtil\";\n\nexport interface ChipProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n selected?: boolean;\n onPress?: () => void;\n}\n\nconst chipVariants = cva(\n \"inline-flex items-center justify-center gap-1 rounded-full border px-[11px] py-[7px] transition-colors duration-200\",\n {\n variants: {\n selected: {\n true: \"bg-surface-base-accent-1 border-border-prominent-accent\",\n false: \"bg-surface-base-neutral-1 border-border-base-neutral-2\",\n },\n disabled: {\n true: \"opacity-40 pointer-events-none\",\n false: \"\",\n },\n },\n defaultVariants: {\n selected: false,\n disabled: false,\n },\n },\n);\n\nconst chipTextVariants = cva(\"text-body-14-medium\", {\n variants: {\n selected: {\n true: \"text-text-prominent-accent-1\",\n false: \"text-text-base-neutral-3\",\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n\nconst chipIconVariants = cva(\"size-[18px] shrink-0\", {\n variants: {\n selected: {\n true: \"text-icon-prominent-accent-1\",\n false: \"text-icon-base-neutral-3\",\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n\nconst Chip = ({\n className,\n label,\n icon: Icon,\n selected = false,\n disabled = false,\n onPress,\n onClick,\n type = \"button\",\n ...props\n}: ChipProps) => {\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n\n if (!event.defaultPrevented) {\n onPress?.();\n }\n };\n\n return (\n <button\n type={type}\n className={cn(chipVariants({ selected, disabled }), className)}\n onClick={handleClick}\n disabled={disabled}\n {...props}\n >\n {Icon && <Icon className={chipIconVariants({ selected })} />}\n <span className={chipTextVariants({ selected })}>{label}</span>\n </button>\n );\n};\n\nexport { Chip };\n"],"mappings":";;;;;;AAcA,IAAM,IAAe,EACnB,uHACA;CACE,UAAU;EACR,UAAU;GACR,MAAM;GACN,OAAO;EACT;EACA,UAAU;GACR,MAAM;GACN,OAAO;EACT;CACF;CACA,iBAAiB;EACf,UAAU;EACV,UAAU;CACZ;AACF,CACF,GAEM,IAAmB,EAAI,uBAAuB;CAClD,UAAU,EACR,UAAU;EACR,MAAM;EACN,OAAO;CACT,EACF;CACA,iBAAiB,EACf,UAAU,GACZ;AACF,CAAC,GAEK,IAAmB,EAAI,wBAAwB;CACnD,UAAU,EACR,UAAU;EACR,MAAM;EACN,OAAO;CACT,EACF;CACA,iBAAiB,EACf,UAAU,GACZ;AACF,CAAC,GAEK,KAAQ,EACZ,cACA,UACA,MAAM,GACN,cAAW,IACX,cAAW,IACX,YACA,YACA,UAAO,UACP,GAAG,QAWD,kBAAC,UAAD;CACQ;CACN,WAAW,EAAG,EAAa;EAAE;EAAU;CAAS,CAAC,GAAG,CAAS;CAC7D,UAZiB,MAA+C;EAGlE,AAFA,IAAU,CAAK,GAEV,EAAM,oBACT,IAAU;CAEd;CAOc;CACV,GAAI;WALN,CAOG,KAAQ,kBAAC,GAAD,EAAM,WAAW,EAAiB,EAAE,YAAS,CAAC,EAAI,CAAA,GAC3D,kBAAC,QAAD;EAAM,WAAW,EAAiB,EAAE,YAAS,CAAC;YAAI;CAAY,CAAA,CACxD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fieldStyles-DyZu__hI.js","names":[],"sources":["../src/components/ui/fieldStyles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\n// TextField, Select, Combobox가 함께 쓰는 입력 칸 스타일\n// 입력 칸과 목록 팝업이 같은 모서리를 쓴다. 소비 레포의 --radius-* 설정과 무관하게 4px로 고정한다.\nexport const FIELD_RADIUS = \"rounded-[4px]\";\n\nexport const fieldContainerVariants = cva(\n `flex items-center ${FIELD_RADIUS} bg-surface-base-neutral-2 border transition-colors duration-200`,\n {\n variants: {\n size: {\n large: \"gap-2 p-[15px] min-h-[56px]\",\n small: \"gap-3 p-[11px] min-h-[48px]\",\n },\n hasError: {\n true: \"border-border-prominent-error\",\n false: \"border-transparent\",\n },\n disabled: {\n true: \"opacity-50\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"large\",\n disabled: false,\n hasError: false,\n },\n },\n);\n\nexport const fieldMessageVariants = cva(\"\", {\n variants: {\n size: {\n large: \"text-body-16-regular\",\n small: \"text-caption-12-medium\",\n },\n hasError: {\n true: \"text-text-prominent-error\",\n false: \"text-text-base-neutral-2\",\n },\n },\n defaultVariants: {\n size: \"large\",\n hasError: false,\n },\n});\n\nexport type FieldSize = \"large\" | \"small\";\n\nexport const fieldLabelFontSize = (size: FieldSize) => (size === \"large\" ? \"text-title-18-bold\" : \"text-title-14-bold\");\nexport const fieldValueFontSize = (size: FieldSize) =>\n size === \"large\" ? \"text-title-20-regular\" : \"text-body-16-regular\";\n\n// 소비 레포가 넘긴 aria-describedby와 필드 메시지 id를 합친다.\nexport const joinIds = (...ids: (string | false | undefined)[]) => ids.filter(Boolean).join(\" \") || undefined;\n"],"mappings":";;AAIA,IAAa,IAAe,iBAEf,IAAyB,EACpC,qBAAqB,EAAa,mEAClC;CACE,UAAU;EACR,MAAM;GACJ,OAAO;GACP,OAAO;EACT;EACA,UAAU;GACR,MAAM;GACN,OAAO;EACT;EACA,UAAU;GACR,MAAM;GACN,OAAO;EACT;CACF;CACA,iBAAiB;EACf,MAAM;EACN,UAAU;EACV,UAAU;CACZ;AACF,CACF,GAEa,IAAuB,EAAI,IAAI;CAC1C,UAAU;EACR,MAAM;GACJ,OAAO;GACP,OAAO;EACT;EACA,UAAU;GACR,MAAM;GACN,OAAO;EACT;CACF;CACA,iBAAiB;EACf,MAAM;EACN,UAAU;CACZ;AACF,CAAC,GAIY,KAAsB,MAAqB,MAAS,UAAU,uBAAuB,sBACrF,KAAsB,MACjC,MAAS,UAAU,0BAA0B,wBAGlC,KAAW,GAAG,MAAwC,EAAI,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./TailwindUtil-DiNvXuNl.js";
|
|
2
|
-
import { i as t, r as n } from "./fieldStyles-DyZu__hI.js";
|
|
3
|
-
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
|
-
//#region src/components/ui/field.tsx
|
|
5
|
-
var a = ({ id: t, htmlFor: a, size: o, required: s, children: c }) => /* @__PURE__ */ i("label", {
|
|
6
|
-
id: t,
|
|
7
|
-
htmlFor: a,
|
|
8
|
-
className: e(n(o), "text-text-base-neutral-5"),
|
|
9
|
-
children: [c, s && /* @__PURE__ */ r("span", {
|
|
10
|
-
className: "text-text-prominent-accent-1",
|
|
11
|
-
"aria-hidden": "true",
|
|
12
|
-
children: "*"
|
|
13
|
-
})]
|
|
14
|
-
}), o = ({ id: e, size: n, errorText: i, assistiveText: a }) => !i && !a ? null : /* @__PURE__ */ r("span", {
|
|
15
|
-
id: e,
|
|
16
|
-
className: t({
|
|
17
|
-
size: n,
|
|
18
|
-
hasError: !!i
|
|
19
|
-
}),
|
|
20
|
-
children: i || a
|
|
21
|
-
}), s = (...e) => (t) => {
|
|
22
|
-
for (let n of e) typeof n == "function" ? n(t) : n && (n.current = t);
|
|
23
|
-
};
|
|
24
|
-
//#endregion
|
|
25
|
-
export { a as n, o as r, s as t };
|
|
26
|
-
|
|
27
|
-
//# sourceMappingURL=mergeRefs-BHwdBwNQ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mergeRefs-BHwdBwNQ.js","names":[],"sources":["../src/components/ui/field.tsx","../src/utils/mergeRefs.ts"],"sourcesContent":["import { fieldLabelFontSize, fieldMessageVariants, type FieldSize } from \"./fieldStyles\";\n\nimport type { ReactNode } from \"react\";\n\nimport { cn } from \"@/utils/TailwindUtil\";\n\nexport const FieldLabel = ({\n id,\n htmlFor,\n size,\n required,\n children,\n}: {\n id?: string;\n htmlFor: string;\n size: FieldSize;\n required?: boolean;\n children: ReactNode;\n}) => (\n <label id={id} htmlFor={htmlFor} className={cn(fieldLabelFontSize(size), \"text-text-base-neutral-5\")}>\n {children}\n {required && (\n <span className=\"text-text-prominent-accent-1\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n);\n\nexport const FieldMessage = ({\n id,\n size,\n errorText,\n assistiveText,\n}: {\n id: string;\n size: FieldSize;\n errorText?: string;\n assistiveText?: ReactNode;\n}) => {\n if (!errorText && !assistiveText) return null;\n return (\n <span id={id} className={fieldMessageVariants({ size, hasError: Boolean(errorText) })}>\n {errorText || assistiveText}\n </span>\n );\n};\n","import type { Ref, RefCallback } from \"react\";\n\n// 내부 ref와 소비 레포가 넘긴 ref(React 19 ref prop)를 함께 연결한다.\nexport const mergeRefs =\n <T>(...refs: (Ref<T> | undefined)[]): RefCallback<T> =>\n (node) => {\n for (const ref of refs) {\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n }\n };\n"],"mappings":";;;;AAMA,IAAa,KAAc,EACzB,OACA,YACA,SACA,aACA,kBAQA,kBAAC,SAAD;CAAW;CAAa;CAAS,WAAW,EAAG,EAAmB,CAAI,GAAG,0BAA0B;WAAnG,CACG,GACA,KACC,kBAAC,QAAD;EAAM,WAAU;EAA+B,eAAY;YAAO;CAE5D,CAAA,CAEH;IAGI,KAAgB,EAC3B,OACA,SACA,cACA,uBAOI,CAAC,KAAa,CAAC,IAAsB,OAEvC,kBAAC,QAAD;CAAU;CAAI,WAAW,EAAqB;EAAE;EAAM,UAAU,EAAQ;CAAW,CAAC;WACjF,KAAa;AACV,CAAA,GCzCG,KACP,GAAG,OACN,MAAS;CACR,KAAK,IAAM,KAAO,GAChB,AAAI,OAAO,KAAQ,aAAY,EAAI,CAAI,IAC9B,MAAK,EAAI,UAAU;AAEhC"}
|