@qijenchen/design-system 0.1.0-beta.64 → 0.1.0-beta.65
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/CLAUDE.md +1 -1
- package/dist/components/Checkbox/checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/checkbox.js +28 -3
- package/dist/components/Checkbox/checkbox.js.map +1 -1
- package/dist/components/PeoplePicker/person-display.d.ts.map +1 -1
- package/dist/components/PeoplePicker/person-display.js +1 -1
- package/dist/components/PeoplePicker/person-display.js.map +1 -1
- package/dist/components/RadioGroup/radio-group.d.ts +1 -1
- package/dist/components/RadioGroup/radio-group.d.ts.map +1 -1
- package/dist/components/RadioGroup/radio-group.js +46 -14
- package/dist/components/RadioGroup/radio-group.js.map +1 -1
- package/dist/components/Rating/rating.d.ts.map +1 -1
- package/dist/components/Rating/rating.js +5 -3
- package/dist/components/Rating/rating.js.map +1 -1
- package/dist/components/Slider/slider.d.ts +1 -1
- package/dist/components/Slider/slider.d.ts.map +1 -1
- package/dist/components/Slider/slider.js +11 -6
- package/dist/components/Slider/slider.js.map +1 -1
- package/dist/components/Switch/switch.d.ts +9 -7
- package/dist/components/Switch/switch.d.ts.map +1 -1
- package/dist/components/Switch/switch.js +30 -5
- package/dist/components/Switch/switch.js.map +1 -1
- package/dist/components/Tabs/tabs.d.ts.map +1 -1
- package/dist/components/Tabs/tabs.js +9 -3
- package/dist/components/Tabs/tabs.js.map +1 -1
- package/ds-canonical/hooks/check_consumer_app_invariants.sh +9 -0
- package/ds-canonical/references/story-baseline-registry.json +18 -2
- package/ds-canonical/references/ui-dev-rules.md +21 -0
- package/llms-full.txt +1 -1
- package/llms.txt +1 -1
- package/package.json +1 -1
- package/src/components/Accordion/accordion.spec.md +1 -1
- package/src/components/AppShell/app-shell.stories.tsx +3 -3
- package/src/components/Carousel/carousel.principles.stories.tsx +3 -3
- package/src/components/Checkbox/checkbox.spec.md +9 -1
- package/src/components/Checkbox/checkbox.tsx +45 -3
- package/src/components/Field/field-controls.spec.md +3 -1
- package/src/components/Field/field.anatomy.stories.tsx +3 -1
- package/src/components/Field/field.stories.tsx +14 -1
- package/src/components/PeoplePicker/person-display.tsx +4 -3
- package/src/components/ProgressBar/progress-bar.anatomy.stories.tsx +2 -2
- package/src/components/RadioGroup/radio-group.anatomy.stories.tsx +1 -1
- package/src/components/RadioGroup/radio-group.spec.md +2 -0
- package/src/components/RadioGroup/radio-group.tsx +59 -15
- package/src/components/Rating/rating.tsx +7 -3
- package/src/components/Sidebar/sidebar.spec.md +2 -0
- package/src/components/Slider/slider.anatomy.stories.tsx +2 -1
- package/src/components/Slider/slider.spec.md +8 -7
- package/src/components/Slider/slider.tsx +24 -11
- package/src/components/Switch/switch.anatomy.stories.tsx +4 -4
- package/src/components/Switch/switch.principles.stories.tsx +3 -3
- package/src/components/Switch/switch.spec.md +10 -6
- package/src/components/Switch/switch.tsx +45 -12
- package/src/components/Tabs/tabs.anatomy.stories.tsx +3 -3
- package/src/components/Tabs/tabs.principles.stories.tsx +1 -1
- package/src/components/Tabs/tabs.spec.md +4 -0
- package/src/components/Tabs/tabs.stories.tsx +4 -4
- package/src/components/Tabs/tabs.tsx +9 -3
- package/src/patterns/header-canonical/header-canonical.spec.md +1 -1
- package/src/styles/base.css +9 -2
- package/src/tokens/color/semantic.css +5 -1
|
@@ -157,7 +157,7 @@ const TabsList = React.forwardRef<
|
|
|
157
157
|
<TabsContext.Provider value={tabsSizeContext}>
|
|
158
158
|
<TabsPrimitive.List
|
|
159
159
|
ref={ref}
|
|
160
|
-
className={cn(TABS_LIST_BASE, 'w-
|
|
160
|
+
className={cn(TABS_LIST_BASE, 'w-full', className)}
|
|
161
161
|
{...props}
|
|
162
162
|
>
|
|
163
163
|
{children}
|
|
@@ -213,7 +213,7 @@ const ScrollTabsList = React.forwardRef<
|
|
|
213
213
|
>
|
|
214
214
|
<TabsPrimitive.List
|
|
215
215
|
ref={ref}
|
|
216
|
-
className={cn(TABS_LIST_BASE, 'w-
|
|
216
|
+
className={cn(TABS_LIST_BASE, 'min-w-full', className)}
|
|
217
217
|
{...props}
|
|
218
218
|
>
|
|
219
219
|
{children}
|
|
@@ -309,7 +309,7 @@ const MenuTabsList = React.forwardRef<
|
|
|
309
309
|
>
|
|
310
310
|
<TabsPrimitive.List
|
|
311
311
|
ref={ref}
|
|
312
|
-
className={cn(TABS_LIST_BASE, 'w-
|
|
312
|
+
className={cn(TABS_LIST_BASE, 'min-w-full', className)}
|
|
313
313
|
{...props}
|
|
314
314
|
>
|
|
315
315
|
{enhancedChildren}
|
|
@@ -481,6 +481,12 @@ const TabsContent = React.forwardRef<
|
|
|
481
481
|
<TabsPrimitive.Content
|
|
482
482
|
ref={ref}
|
|
483
483
|
className={cn(
|
|
484
|
+
// 與 TabsList 的間距 canonical(2026-06-12 user 拍板):--layout-space-tight(md 12px,
|
|
485
|
+
// density 連動)。依 layoutSpace.spec「親疏 3 級」:Tabs↔Content 同 bundle(第一級,
|
|
486
|
+
// 元件 spec own),值取規則 3「直接功能依賴 = tight」精神(heading → labeled content 同類)。
|
|
487
|
+
// 收斂原 DS-wide 四種土法(無間距 / mt-4 / p-4 / pt-4 — M17 假 SSOT)。
|
|
488
|
+
// full-height 佈局(AppShell pane)用 className="mt-0" 覆寫(tailwind-merge)。
|
|
489
|
+
'mt-[var(--layout-space-tight)]',
|
|
484
490
|
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1',
|
|
485
491
|
className
|
|
486
492
|
)}
|
|
@@ -69,7 +69,7 @@ benchmark:
|
|
|
69
69
|
### 4. Dismiss icon button(close X)
|
|
70
70
|
|
|
71
71
|
- **Token**:`<Button iconOnly size="sm" dismiss />`(28px @ md / 32px @ lg)
|
|
72
|
-
- **永遠 size="sm"**(不論家族 / density):chrome / overlay header 內 button 一律 sm
|
|
72
|
+
- **永遠 size="sm"**(不論家族 / density):chrome / overlay header 內 button 一律 sm。**廣化(2026-06-12 user 拍板)**:header 內**所有 field-height 控件**(Button / Input / Select / SegmentedControl / Combobox 等)一律 `sm`,禁混雜不同 field height(Tabs 跟齊 chrome 高度,唯一例外 = 「Tabs 取代整個 header」的 standalone `size="lg"`,見上方表)
|
|
73
73
|
- 對齊 既有 `dialog.tsx:132-153` + `sheet.tsx:122-139` + `popover.tsx:87-110`(Dialog/Sheet/Popover 已內建 close X)
|
|
74
74
|
|
|
75
75
|
### 4.5 Chrome header avatar SSOT(2026-05-21 codify per user directive)
|
package/src/styles/base.css
CHANGED
|
@@ -13,8 +13,15 @@
|
|
|
13
13
|
* @import '@qijenchen/design-system/styles/base';
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
/* lucide 全域 stroke width
|
|
17
|
-
|
|
16
|
+
/* lucide 全域 stroke width — DS-wide icon 預設 1.75(比 lucide 原廠 2 輕一階的整體風格)。
|
|
17
|
+
⚠️ 必須限定 [stroke-width="2"](= 沒被 component 顯式覆寫的 icon):
|
|
18
|
+
2026-06-12 修 — 原寫法 `.lucide { ... }` 無條件蓋掉所有 explicit strokeWidth prop
|
|
19
|
+
(CSS class > SVG presentation attribute),導致 Checkbox/Switch/Steps/PeoplePicker
|
|
20
|
+
的小尺寸 stroke 補償(strokeWidth 3 / 2.5)自 2026-04-08 起從未真正渲染
|
|
21
|
+
(rendered DOM 驗證:attr=3 但 computed=1.75px,實畫 0.80px vs 設計 1.50px)。
|
|
22
|
+
限定後:lucide 預設(attr=2)→ 1.75;顯式 prop(3 / 2.5 / 1.75)→ attribute 直接生效。
|
|
23
|
+
補償值 SSOT → .claude/references/ui-dev-rules.md「小尺寸 icon stroke 補償」 */
|
|
24
|
+
.lucide[stroke-width='2'] {
|
|
18
25
|
stroke-width: 1.75;
|
|
19
26
|
}
|
|
20
27
|
|
|
@@ -206,7 +206,11 @@
|
|
|
206
206
|
|
|
207
207
|
/* Status: Info — 資訊狀態色
|
|
208
208
|
目前指向 blue(與 primary 同源),但語義獨立——如未來 brand 改色,
|
|
209
|
-
primary 跟著改,info
|
|
209
|
+
primary 跟著改,info 仍維持「資訊=藍」的通用慣例。
|
|
210
|
+
⚠️ 選取控件(Checkbox/Switch/Radio/Calendar selected)的 checked 藍 = --primary 非 --info:
|
|
211
|
+
選取是「互動操作的 selected state」隨 brand 走(Material 3 CheckboxTokens
|
|
212
|
+
SelectedContainerColor=Primary / shadcn bg-primary / Ant colorPrimary 同款);
|
|
213
|
+
--info 只給資訊呈報(Alert/Badge/Toast info)。2026-06-12 codify per user 提問 */
|
|
210
214
|
--info: var(--color-blue-6);
|
|
211
215
|
--info-hover: var(--color-blue-5);
|
|
212
216
|
--info-active: var(--color-blue-7);
|