ksk-design-system 1.63.0 → 1.63.1

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,7 +1,7 @@
1
1
  {
2
2
  "meta": {
3
3
  "name": "KSK Design System — Component Contracts",
4
- "version": "1.63.0",
4
+ "version": "1.63.1",
5
5
  "description": "全コンポーネントの構造化定義。バリアント・アクセシビリティ要件・使用ルールを機械可読形式で管理。",
6
6
  "counts": {
7
7
  "ui": 68,
@@ -2107,7 +2107,10 @@
2107
2107
  "単純な on/off トグルは FilterChip、単一選択リストは DropdownFilter、任意パネル + 明示クリアは FilterPill",
2108
2108
  "適用中かどうかの正本は value(active フラグを別に持たない)",
2109
2109
  "value の整形(複数選択の \"渋谷 他2件\" 等)は呼び出し側の責務"
2110
- ]
2110
+ ],
2111
+ "props": {
2112
+ "icon": "ReactNode — ラベル左のアイコン(装飾・aria-hidden。iconsax size=16 相当)"
2113
+ }
2111
2114
  },
2112
2115
  {
2113
2116
  "name": "ImageOverlayAction",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "meta": {
3
3
  "name": "KSK Design System — Semantic Token Hex Cache",
4
- "version": "1.63.0",
4
+ "version": "1.63.1",
5
5
  "description": "semantic / semanticDark トークン(var(--Primitive-*) 参照)を実 hex に解決したサイドカー生成物。hex はデフォルト(Blue)テーマでの解決値であり、Brand 系(meta.themeDependentKeys に列挙)はテーマ差し替え(orange/green/violet 等)で実色が変わる。テーマ別の完全解決値は `ksk-design-system/native` エクスポート(バンドル済み native トークンモジュール)の themes を参照。tokens.json 本体のスキーマは変更せず、AI がこのファイルだけで実色を把握できるようにし、primitive 値の変更による semantic 実色のドリフトを --check で機械検出する。",
6
6
  "generatedBy": "scripts/generate-token-hex-cache.mjs",
7
7
  "theme": "default",
package/dist/index.js CHANGED
@@ -18293,12 +18293,12 @@ var Hh = {
18293
18293
  sm: "h-[var(--Control-Height-Sm)] typo-label-xs",
18294
18294
  md: "h-[var(--Control-Height-Sm)] sm:h-[var(--Control-Height-Md)] typo-label-sm"
18295
18295
  };
18296
- function Uh({ label: e, value: t, onClear: n, clearLabel: r, children: i, open: a, onOpenChange: o, defaultOpen: s, panelLabel: c, align: l = "start", contentClassName: u, size: d = "md", disabled: f = !1, className: p }) {
18297
- let m = t != null && t !== "", h = m && !!n;
18296
+ function Uh({ label: e, value: t, onClear: n, clearLabel: r, children: i, open: a, onOpenChange: o, defaultOpen: s, panelLabel: c, align: l = "start", contentClassName: u, icon: d, size: f = "md", disabled: p = !1, className: m }) {
18297
+ let h = t != null && t !== "", g = h && !!n;
18298
18298
  return /* @__PURE__ */ V("div", {
18299
18299
  "data-slot": "filter-pill",
18300
- "data-active": m || void 0,
18301
- className: G("inline-flex shrink-0 items-center rounded-full border border-[var(--Border-Low-Emphasis)] transition-colors duration-[var(--Motion-Duration-Base)]", m ? "border-[var(--Brand-Primary)] bg-[var(--Brand-Primary)] text-[var(--Text-on-Inverse)]" : "border-[var(--Border-Low-Emphasis)] bg-[var(--Surface-Primary)] text-[var(--Text-Medium-Emphasis)]", f && "cursor-not-allowed opacity-50", Hh[d], p),
18300
+ "data-active": h || void 0,
18301
+ className: G("inline-flex shrink-0 items-center rounded-full border border-[var(--Border-Low-Emphasis)] transition-colors duration-[var(--Motion-Duration-Base)]", h ? "border-[var(--Brand-Primary)] bg-[var(--Brand-Primary)] text-[var(--Text-on-Inverse)]" : "border-[var(--Border-Low-Emphasis)] bg-[var(--Surface-Primary)] text-[var(--Text-Medium-Emphasis)]", p && "cursor-not-allowed opacity-50", Hh[f], m),
18302
18302
  children: [/* @__PURE__ */ V(zs, {
18303
18303
  open: a,
18304
18304
  defaultOpen: s,
@@ -18307,13 +18307,21 @@ function Uh({ label: e, value: t, onClear: n, clearLabel: r, children: i, open:
18307
18307
  asChild: !0,
18308
18308
  children: /* @__PURE__ */ V("button", {
18309
18309
  type: "button",
18310
- disabled: f,
18310
+ disabled: p,
18311
18311
  "aria-haspopup": "dialog",
18312
- className: G("flex h-full min-w-0 flex-1 items-center gap-1.5 rounded-full pl-4", m ? "text-[var(--Text-on-Inverse)]" : "text-[var(--Text-Medium-Emphasis)]", h ? "pr-1.5" : "pr-4", "cursor-pointer focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[var(--Focus-High-Emphasis)]/50", "disabled:cursor-not-allowed disabled:pointer-events-none"),
18313
- children: [/* @__PURE__ */ B("span", {
18314
- className: "truncate",
18315
- children: m ? `${e}: ${t}` : e
18316
- }), /* @__PURE__ */ B(Wh, {})]
18312
+ className: G("flex h-full min-w-0 flex-1 items-center gap-1.5 rounded-full pl-4", h ? "text-[var(--Text-on-Inverse)]" : "text-[var(--Text-Medium-Emphasis)]", g ? "pr-1.5" : "pr-4", "cursor-pointer focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[var(--Focus-High-Emphasis)]/50", "disabled:cursor-not-allowed disabled:pointer-events-none"),
18313
+ children: [
18314
+ d && /* @__PURE__ */ B("span", {
18315
+ "aria-hidden": "true",
18316
+ className: "shrink-0 inline-flex",
18317
+ children: d
18318
+ }),
18319
+ /* @__PURE__ */ B("span", {
18320
+ className: "truncate",
18321
+ children: h ? `${e}: ${t}` : e
18322
+ }),
18323
+ /* @__PURE__ */ B(Wh, {})
18324
+ ]
18317
18325
  })
18318
18326
  }), /* @__PURE__ */ B(Vs, {
18319
18327
  align: l,
@@ -18321,9 +18329,9 @@ function Uh({ label: e, value: t, onClear: n, clearLabel: r, children: i, open:
18321
18329
  className: G("w-72", u),
18322
18330
  children: i
18323
18331
  })]
18324
- }), h && /* @__PURE__ */ B("button", {
18332
+ }), g && /* @__PURE__ */ B("button", {
18325
18333
  type: "button",
18326
- disabled: f,
18334
+ disabled: p,
18327
18335
  "aria-label": r ?? `${e}をクリア`,
18328
18336
  onClick: (e) => {
18329
18337
  e.stopPropagation(), n?.();
@@ -45,6 +45,11 @@ interface FilterPillProps {
45
45
  align?: "start" | "center" | "end";
46
46
  /** Popover パネルに渡す className(幅の上書き等)。 */
47
47
  contentClassName?: string;
48
+ /**
49
+ * ラベルの左に出すアイコン(iconsax の size=16 相当を想定)。
50
+ * 装飾なので aria-hidden で描画される。
51
+ */
52
+ icon?: React.ReactNode;
48
53
  size?: FilterPillSize;
49
54
  disabled?: boolean;
50
55
  className?: string;
@@ -74,6 +79,6 @@ interface FilterPillProps {
74
79
  * <CheckboxGroup ... />
75
80
  * </FilterPill>
76
81
  */
77
- declare function FilterPill({ label, value, onClear, clearLabel, children, open, onOpenChange, defaultOpen, panelLabel, align, contentClassName, size, disabled, className, }: FilterPillProps): React.JSX.Element;
82
+ declare function FilterPill({ label, value, onClear, clearLabel, children, open, onOpenChange, defaultOpen, panelLabel, align, contentClassName, icon, size, disabled, className, }: FilterPillProps): React.JSX.Element;
78
83
  export { FilterPill };
79
84
  export type { FilterPillProps, FilterPillSize };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ksk-design-system",
3
- "version": "1.63.0",
3
+ "version": "1.63.1",
4
4
  "type": "module",
5
5
  "description": "KSK Design System — フリーランス向けマルチテーマ対応デザインシステム",
6
6
  "license": "MIT",
@@ -128,7 +128,7 @@
128
128
  | FieldSet, FieldLegend, FieldGroup, FieldDescription, FieldError, FieldSeparator | `@/components/patterns/field` | — | 3セクションの長いフォーム, SeparatorWithLabel |
129
129
  | FileUpload | `@/components/patterns/file-upload` | — | Default, Multiple |
130
130
  | FilterChip | `@/components/patterns/filter-chip` | — | Inactive, ActiveWithValue, Toggle, Group |
131
- | FilterPill | `@/components/patterns/filter-pill` | — | Default, Active, ActiveWithoutClear, Bar, OpensPanelAndClears |
131
+ | FilterPill | `@/components/patterns/filter-pill` | — | Default, Active, ActiveWithoutClear, Bar, OpensPanelAndClears, WithIcon |
132
132
  | Footer | `@/components/patterns/footer` | — | Default, Minimal, WithRenderSlot, WithExtra, WithPaymentIcons |
133
133
  | FormField | `@/components/patterns/form-field` | — | WithInput, Required, WithError, WithDescription, WithTextarea, WithCharacterCountAndError, WithSelect, CompleteForm |
134
134
  | FormRoot, FormSection, FormActions | `@/components/patterns/form` | — | Default |