From 04febc7a92797d07508f959bac70250ce7cad456 Mon Sep 17 00:00:00 2001 From: Kai-Chieh Yang Date: Fri, 7 Aug 2026 13:26:33 +0800 Subject: [PATCH 1/2] docs(mezzanine-ui): sync react skill content to @mezzanine-ui/react 1.4.2 Refresh component docs, caches, and reference files against the 1.4.2 release: verified prop parity for 11 UPDATE_PROPS components, documented Dropdown's mousedown/focus-race fix, deprecated ClearActions/ ContentHeader/Scrollbar/Switch (removed from public exports in 1.4.1), and manually patched AutoComplete's caseSensitive prop, which the automated upgrade-manifest missed. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01UnZ9za8VqPotcg8S7vc6ve --- .../skills/using-mezzanine-ui-react/SKILL.md | 20 +- .../cache/component-api-index.json | 1456 +++++++---------- .../cache/component-index.json | 102 +- .../cache/design-tokens-index.json | 6 +- .../cache/figma-sync.json | 2 +- .../cache/import-paths-index.json | 10 +- .../cache/token-values.json | 6 +- .../references/COMPONENTS.md | 2 +- .../references/DESIGN_TOKENS.md | 2 +- .../references/FIGMA_MAPPING.md | 2 +- .../references/ICONS.md | 2 +- .../references/PATTERNS.md | 2 +- .../references/components/Accordion.md | 2 +- .../references/components/AutoComplete.md | 8 +- .../references/components/Calendar.md | 2 +- .../references/components/Cascader.md | 2 +- .../references/components/Checkbox.md | 2 +- .../references/components/ClearActions.md | 6 +- .../references/components/ContentHeader.md | 9 +- .../references/components/DateRangePicker.md | 2 +- .../references/components/DateTimePicker.md | 2 +- .../references/components/Drawer.md | 2 +- .../references/components/Dropdown.md | 3 +- .../components/MultipleDatePicker.md | 2 +- .../references/components/PageHeader.md | 2 + .../references/components/Pagination.md | 2 +- .../references/components/Scrollbar.md | 6 +- .../references/components/SelectionCard.md | 2 +- .../references/components/Switch.md | 6 +- .../references/components/Upload.md | 2 +- .../scripts/upgrade-manifest.json | 77 +- 31 files changed, 767 insertions(+), 984 deletions(-) diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/SKILL.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/SKILL.md index c55e857..84a94da 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/SKILL.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/SKILL.md @@ -1,13 +1,13 @@ --- name: using-mezzanine-ui-react -description: React / Next.js Mezzanine-UI skill — create, edit, or style JSX components with @mezzanine-ui/react (1.4.1). Covers Button, TextField, Select, Table, Modal, Form, DatePicker, Tabs, Navigation, Typography, Icon, Drawer, Upload, Toggle, design tokens, theming, and CalendarConfigProvider. Also defines the page layout padding contract (PageHeader / PageFooter / Section ship their own padding — page containers must not add horizontal padding). Use when working on *.tsx, *.scss files with @mezzanine-ui/react imports, building React forms, laying out a page skeleton, or configuring Mezzanine styles in a React codebase. Trigger — React, Next.js, tsx, JSX, mezzanine-ui/react, add mezzanine component, build form, create page UI, page layout, container padding, 版面對不齊, 雙層 padding, design tokens, mzn. For Angular projects use the sibling using-mezzanine-ui-ng skill instead. +description: React / Next.js Mezzanine-UI skill — create, edit, or style JSX components with @mezzanine-ui/react (1.4.2). Covers Button, TextField, Select, Table, Modal, Form, DatePicker, Tabs, Navigation, Typography, Icon, Drawer, Upload, Toggle, design tokens, theming, and CalendarConfigProvider. Also defines the page layout padding contract (PageHeader / PageFooter / Section ship their own padding — page containers must not add horizontal padding). Use when working on *.tsx, *.scss files with @mezzanine-ui/react imports, building React forms, laying out a page skeleton, or configuring Mezzanine styles in a React codebase. Trigger — React, Next.js, tsx, JSX, mezzanine-ui/react, add mezzanine component, build form, create page UI, page layout, container padding, 版面對不齊, 雙層 padding, design tokens, mzn. For Angular projects use the sibling using-mezzanine-ui-ng skill instead. --- # Mezzanine-UI Design System **Core principle: All frontend development MUST prefer the Mezzanine-UI design system.** -> Baseline: `@mezzanine-ui/react` `1.4.1` · `@mezzanine-ui/core` `1.1.0` · `@mezzanine-ui/system` / `@mezzanine-ui/icons` `1.0.2`. Last verified: 2026-07-01. +> Baseline: `@mezzanine-ui/react` `1.4.2` · `@mezzanine-ui/core` `1.1.0` · `@mezzanine-ui/system` / `@mezzanine-ui/icons` `1.0.2`. Last verified: 2026-08-07. > > Check latest version: `npm view @mezzanine-ui/react versions` or see [GitHub Releases](https://github.com/Mezzanine-UI/mezzanine/releases). @@ -246,6 +246,18 @@ export default function ProductListPage(): JSX.Element { --- +## What's New in v1.4.2 + +> Patch release:修正 `AutoComplete` 選項比對與 `Dropdown` focus race。詳見 [GitHub Releases](https://github.com/Mezzanine-UI/mezzanine/releases)。 + +### Bug Fixes + +- **`AutoComplete`** — 選項過濾預設改為**大小寫不敏感**(原本 `RegExp` 沒加 `i` flag,打 `vir` 配不到 `Virginia`),與 Angular 版行為對齊。新增 `caseSensitive` prop(預設 `false`)可選回舊的大小寫敏感比對。`addable` 的重複檢查(`isSameOptionName`)與 bulk-create 去重(`normalizeOptionName`)皆改走同一套規則,並尊重 `caseSensitive` 設定。 +- **`Dropdown` / `AutoComplete`** — 修正在已過濾清單中點選項目會選錯的問題。Listbox 根節點現在會擋掉 `mousedown` 預設行為,避免點擊瞬間觸發 blur 導致清單重排、點到錯的選項(`inputPosition="inside"` 的輸入框區域除外,仍可正常點擊)。 + +
+Previous: What's New in 1.4.1 + ## What's New in v1.4.1 > 涵蓋 1.2.0 – 1.4.1(5 個 release)累積變更。詳見各元件文件與 [GitHub Releases](https://github.com/Mezzanine-UI/mezzanine/releases)。 @@ -337,6 +349,8 @@ export default function ProductListPage(): JSX.Element {
+ + --- ## What's New in 1.0.0 @@ -742,7 +756,7 @@ document.documentElement.setAttribute('data-density', 'compact'); When Mezzanine-UI releases a new version, use the `/sync-mezzanine-ui` command to refresh all skill content: ``` -/sync-mezzanine-ui 1.4.1 +/sync-mezzanine-ui 1.4.2 ``` This orchestrates a team of agents to: diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/component-api-index.json b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/component-api-index.json index 74e54e1..1053d4f 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/component-api-index.json +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/component-api-index.json @@ -7,13 +7,11 @@ }, "defaultExpanded": { "type": "boolean", - "required": false, - "default": "false" + "required": false }, "disabled": { "type": "boolean", - "required": false, - "default": "false" + "required": false }, "expanded": { "type": "boolean", @@ -25,8 +23,7 @@ }, "size": { "type": "'main' | 'sub'", - "required": false, - "default": "main" + "required": false }, "title": { "type": "string", @@ -37,162 +34,28 @@ "required": false } }, - "sourceFile": "packages/react/src/Accordion/Accordion.tsx", + "sourceFile": "", "extends": [ "Omit, 'onChange'>" ] }, - "AlertBanner": { - "props": { - "actions": { - "type": "AlertBannerAction[]", - "required": false - }, - "closable": { - "type": "boolean", - "required": false - }, - "disablePortal": { - "type": "boolean", - "required": false - }, - "icon": { - "type": "IconDefinition", - "required": false - }, - "message": { - "type": "string", - "required": true - }, - "onClose": { - "type": "() => void", - "required": false - }, - "severity": { - "type": "AlertBannerSeverity", - "required": true - } - }, - "sourceFile": "packages/react/src/AlertBanner/AlertBanner.tsx", - "extends": [ - "Omit<\n NativeElementPropsWithoutKeyAndRef<'div'>,\n 'children' | 'title'\n >" - ] - }, - "Anchor": { - "props": { - "anchors": { - "type": "AnchorItemData[]", - "required": true - }, - "children": { - "type": "never", - "required": false - } - }, - "sourceFile": "packages/react/src/Anchor/Anchor.tsx", - "extends": [] - }, - "AutoComplete": { - "props": {}, - "sourceFile": "packages/react/src/AutoComplete/AutoComplete.tsx", - "extends": [] - }, - "Backdrop": { - "props": { - "disableCloseOnBackdropClick": { - "type": "boolean", - "required": false, - "default": "false" - }, - "disableScrollLock": { - "type": "boolean", - "required": false, - "default": "false" - }, - "onBackdropClick": { - "type": "MouseEventHandler", - "required": false - }, - "onClose": { - "type": "VoidFunction", - "required": false - }, - "open": { - "type": "boolean", - "required": false, - "default": "false" - }, - "variant": { - "type": "BackdropVariant", - "required": false, - "default": "dark" - } - }, - "sourceFile": "packages/react/src/Backdrop/Backdrop.tsx", - "extends": [ - "Pick,\n NativeElementPropsWithoutKeyAndRef<'div'>" - ] - }, - "Badge": { - "props": {}, - "sourceFile": "packages/react/src/Badge/Badge.tsx", - "extends": [] - }, - "Breadcrumb": { - "props": {}, - "sourceFile": "packages/react/src/Breadcrumb/Breadcrumb.tsx", - "extends": [] - }, - "Button": { - "props": {}, - "sourceFile": "packages/react/src/Button/Button.tsx", - "extends": [] - }, "Calendar": { "props": { - "calendarDaysProps": { - "type": "Omit<", - "required": false - }, - "calendarMonthsProps": { - "type": "Omit<", - "required": false - }, - "calendarWeeksProps": { - "type": "Omit<", - "required": false - }, - "calendarYearsProps": { - "type": "Omit<", - "required": false - }, - "calendarQuartersProps": { - "type": "Omit<", - "required": false - }, - "calendarHalfYearsProps": { - "type": "Omit<", - "required": false - }, "disabledFooterControl": { "type": "boolean", - "required": false, - "default": "false" + "required": false }, "disabledMonthSwitch": { "type": "boolean", - "required": false, - "default": "false" + "required": false }, "disabledYearSwitch": { "type": "boolean", - "required": false, - "default": "false" + "required": false }, "mode": { "type": "CalendarMode", - "required": false, - "default": "day" + "required": false }, "onChange": { "type": "(target: DateType) => void", @@ -235,21 +98,11 @@ "required": false } }, - "sourceFile": "packages/react/src/Calendar/Calendar.tsx", + "sourceFile": "", "extends": [ "Omit<\n NativeElementPropsWithoutKeyAndRef<'div'>,\n 'onChange' | 'children'\n >,\n Pick<\n CalendarDaysProps,\n | 'renderAnnotations'\n | 'isDateDisabled'\n | 'isDateInRange'\n | 'onDateHover'\n | 'displayWeekDayLocale'\n >,\n Pick<\n CalendarMonthsProps,\n | 'isMonthDisabled'\n | 'isMonthInRange'\n | 'onMonthHover'\n | 'displayMonthLocale'\n >,\n Pick<\n CalendarWeeksProps,\n 'isWeekDisabled' | 'isWeekInRange' | 'onWeekHover'\n >,\n Pick<\n CalendarYearsProps,\n 'isYearDisabled' | 'isYearInRange' | 'onYearHover'\n >,\n Pick<\n CalendarQuartersProps,\n 'isQuarterDisabled' | 'isQuarterInRange' | 'onQuarterHover'\n >,\n Pick<\n CalendarHalfYearsProps,\n 'isHalfYearDisabled' | 'isHalfYearInRange' | 'onHalfYearHover'\n >,\n Pick<\n CalendarControlsProps,\n | 'disableOnNext'\n | 'disableOnPrev'\n | 'disableOnDoubleNext'\n | 'disableOnDoublePrev'\n >" ] }, - "Card": { - "props": {}, - "sourceFile": "packages/react/src/Card/Card.tsx", - "extends": [] - }, - "Cascader": { - "props": {}, - "sourceFile": "packages/react/src/Cascader/Cascader.tsx", - "extends": [] - }, "Checkbox": { "props": { "withEditInput": { @@ -286,113 +139,12 @@ }, "size": { "type": "CheckboxSize>", - "required": false, - "default": "main" - } - }, - "sourceFile": "packages/react/src/Checkbox/Checkbox.tsx", - "extends": [ - "Omit, 'onChange'>,\n CheckboxPropsBase" - ] - }, - "ClearActions": { - "props": {}, - "sourceFile": "packages/react/src/ClearActions/ClearActions.tsx", - "propsType": "| ClearActionsEmbeddedProps\n | ClearActionsStandardProps\n | ClearActionsClearableProps", - "deprecated": true, - "deprecationReason": "Component no longer exported from @mezzanine-ui/react index.ts as of v1.1.0" - }, - "ContentHeader": { - "props": { - "actions": { - "type": "ButtonProps[]", - "required": false - }, - "children": { - "type": "ContentHeaderChild[] | ContentHeaderChild", - "required": false - }, - "description": { - "type": "string", - "required": false - }, - "title": { - "type": "string", - "required": true - }, - "titleComponent": { - "type": "'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p'", - "required": false - }, - "onBackClick": { - "type": "() => void", - "required": false - }, - "size": { - "type": "'sub'", - "required": false - } - }, - "sourceFile": "packages/react/src/ContentHeader/ContentHeader.tsx", - "subComponents": { - "ContentHeaderResponsiveProps": { - "props": { - "breakpoint": { - "type": "ResponsiveBreakpoint", - "required": true - }, - "children": { - "type": "ReactNode", - "required": false - } - }, - "sourceFile": "packages/react/src/ContentHeader/ContentHeaderResponsive.tsx" - } - }, - "deprecated": true, - "deprecationReason": "Component no longer exported from @mezzanine-ui/react index.ts as of v1.1.0" - }, - "Cropper": { - "props": {}, - "sourceFile": "packages/react/src/Cropper/Cropper.tsx", - "extends": [] - }, - "DatePicker": { - "props": { - "defaultValue": { - "type": "DateType", - "required": false - }, - "disableOnDoubleNext": { - "type": "boolean", - "required": false, - "default": "false" - }, - "disableOnDoublePrev": { - "type": "boolean", - "required": false, - "default": "false" - }, - "format": { - "type": "string", - "required": false - }, - "onCalendarToggle": { - "type": "(open: boolean) => void", - "required": false - }, - "onChange": { - "type": "(target?: DateType) => void", - "required": false - }, - "referenceDate": { - "type": "DateType", "required": false } }, - "sourceFile": "packages/react/src/DatePicker/DatePicker.tsx", + "sourceFile": "", "extends": [ - "Omit<\n DatePickerCalendarProps,\n | 'anchor'\n | 'calendarRef'\n | 'disableOnDoubleNext'\n | 'disableOnDoublePrev'\n | 'onChange'\n | 'open'\n | 'referenceDate'\n | 'updateReferenceDate'\n >,\n Omit<\n PickerTriggerProps,\n | 'defaultValue'\n | 'format'\n | 'inputRef'\n | 'onChange'\n | 'onClear'\n | 'onClick'\n | 'onIconClick'\n | 'onKeyDown'\n | 'value'\n >" + "Omit, 'onChange'>,\n CheckboxPropsBase" ] }, "DateRangePicker": { @@ -403,8 +155,7 @@ }, "confirmMode": { "type": "'immediate' | 'manual'", - "required": false, - "default": "immediate" + "required": false }, "defaultValue": { "type": "[DateType, DateType]", @@ -431,7 +182,7 @@ "required": false } }, - "sourceFile": "packages/react/src/DateRangePicker/DateRangePicker.tsx", + "sourceFile": "", "extends": [ "Pick<\n DateRangePickerCalendarProps,\n | 'calendarProps'\n | 'disabledMonthSwitch'\n | 'disableOnNext'\n | 'disableOnPrev'\n | 'disableOnDoubleNext'\n | 'disableOnDoublePrev'\n | 'disabledYearSwitch'\n | 'displayMonthLocale'\n | 'displayWeekDayLocale'\n | 'fadeProps'\n | 'firstCalendarRef'\n | 'isDateDisabled'\n | 'isWeekDisabled'\n | 'isMonthDisabled'\n | 'isYearDisabled'\n | 'isQuarterDisabled'\n | 'isHalfYearDisabled'\n | 'mode'\n | 'popperProps'\n | 'quickSelect'\n | 'renderAnnotations'\n | 'secondCalendarRef'\n >,\n Pick<\n RangePickerTriggerProps,\n | 'className'\n | 'clearable'\n | 'disabled'\n | 'error'\n | 'errorMessagesFrom'\n | 'errorMessagesTo'\n | 'fullWidth'\n | 'inputFromPlaceholder'\n | 'inputFromProps'\n | 'inputToPlaceholder'\n | 'inputToProps'\n | 'prefix'\n | 'readOnly'\n | 'required'\n | 'size'\n | 'validateFrom'\n | 'validateTo'\n >" ] @@ -471,53 +222,23 @@ "required": false } }, - "sourceFile": "packages/react/src/DateTimePicker/DateTimePicker.tsx", + "sourceFile": "", "extends": [ "Omit<\n DatePickerCalendarProps,\n 'anchor' | 'onChange' | 'open' | 'referenceDate' | 'value'\n >,\n Omit<\n TimePickerPanelProps,\n 'anchor' | 'onChange' | 'open' | 'popperProps' | 'value'\n >,\n Omit<\n PickerTriggerWithSeparatorProps,\n | 'formatLeft'\n | 'formatRight'\n | 'inputLeftRef'\n | 'inputRightRef'\n | 'onBlurLeft'\n | 'onBlurRight'\n | 'onChangeLeft'\n | 'onChangeRight'\n | 'onFocusLeft'\n | 'onFocusRight'\n | 'onLeftComplete'\n | 'onPasteIsoValueLeft'\n | 'onPasteIsoValueRight'\n | 'onRightComplete'\n | 'suffix'\n | 'valueLeft'\n | 'valueRight'\n >" ] }, - "DateTimeRangePicker": { + "Drawer": { "props": { - "className": { - "type": "string", + "contentKey": { + "type": "string | number", "required": false }, - "direction": { - "type": "'row' | 'column'", - "required": false, - "default": "row" - }, - "onChange": { - "type": "(value: DateTimeRangePickerValue) => void", + "bottomGhostActionDisabled": { + "type": "boolean", "required": false }, - "value": { - "type": "DateTimeRangePickerValue", - "required": false - } - }, - "sourceFile": "packages/react/src/DateTimeRangePicker/DateTimeRangePicker.tsx", - "extends": [ - "Omit<\n DateTimePickerProps,\n 'defaultValue' | 'onChange' | 'value' | 'ref' | 'prefix'\n >" - ] - }, - "Description": { - "props": {}, - "sourceFile": "packages/react/src/Description/Description.tsx", - "extends": [] - }, - "Drawer": { - "props": { - "contentKey": { - "type": "string | number", - "required": false - }, - "bottomGhostActionDisabled": { - "type": "boolean", - "required": false - }, - "bottomGhostActionIcon": { - "type": "IconDefinition", + "bottomGhostActionIcon": { + "type": "IconDefinition", "required": false }, "bottomGhostActionIconType": { @@ -538,8 +259,7 @@ }, "bottomGhostActionVariant": { "type": "ButtonVariant", - "required": false, - "default": "base-ghost" + "required": false }, "bottomOnGhostActionClick": { "type": "VoidFunction", @@ -579,8 +299,7 @@ }, "bottomPrimaryActionVariant": { "type": "ButtonVariant", - "required": false, - "default": "base-primary" + "required": false }, "bottomSecondaryActionDisabled": { "type": "boolean", @@ -608,8 +327,7 @@ }, "bottomSecondaryActionVariant": { "type": "ButtonVariant", - "required": false, - "default": "base-secondary" + "required": false }, "filterAreaAllRadioLabel": { "type": "string", @@ -641,13 +359,11 @@ }, "filterAreaShow": { "type": "boolean", - "required": false, - "default": "false" + "required": false }, "filterAreaShowUnreadButton": { "type": "boolean", - "required": false, - "default": "false" + "required": false }, "filterAreaUnreadRadioLabel": { "type": "string", @@ -667,8 +383,7 @@ }, "disableCloseOnEscapeKeyDown": { "type": "boolean", - "required": false, - "default": "false" + "required": false }, "headerTitle": { "type": "string", @@ -684,11 +399,10 @@ }, "size": { "type": "DrawerSize", - "required": false, - "default": "medium" + "required": false } }, - "sourceFile": "packages/react/src/Drawer/Drawer.tsx", + "sourceFile": "", "extends": [ "NativeElementPropsWithoutKeyAndRef<'div'>,\n Pick<\n BackdropProps,\n | 'container'\n | 'disableCloseOnBackdropClick'\n | 'disablePortal'\n | 'onBackdropClick'\n | 'onClose'\n | 'open'\n >" ] @@ -737,24 +451,16 @@ }, "inputPosition": { "type": "DropdownInputPosition", - "required": false, - "default": "outside" + "required": false }, "isMatchInputValue": { "type": "boolean", - "required": false, - "default": "false" + "required": false }, "followText": { "type": "string", "required": false }, - "flip": { - "type": "boolean", - "required": false, - "default": "false", - "description": "Whether to enable floating-ui flip middleware. When true, the dropdown automatically flips to the opposite side along the main axis if it would overflow the viewport" - }, "listboxId": { "type": "string", "required": false @@ -769,8 +475,7 @@ }, "minWidth": { "type": "number | string", - "required": false, - "default": "spacing token `size-container-tiny" + "required": false }, "open": { "type": "boolean", @@ -824,102 +529,604 @@ "type": "number | string", "required": false }, - "sameWidth": { + "sameWidth": { + "type": "boolean", + "required": false + }, + "flip": { + "type": "boolean", + "required": false + }, + "showActionShowTopBar": { + "type": "boolean", + "required": false + }, + "showDropdownActions": { + "type": "boolean", + "required": false + }, + "type": { + "type": "DropdownType", + "required": false + }, + "toggleCheckedOnClick": { + "type": "boolean", + "required": false + }, + "zIndex": { + "type": "number | string", + "required": false + }, + "status": { + "type": "DropdownStatusType", + "required": false + }, + "loadingText": { + "type": "string", + "required": false + }, + "emptyText": { + "type": "string", + "required": false + }, + "emptyIcon": { + "type": "IconDefinition", + "required": false + }, + "loadingPosition": { + "type": "DropdownLoadingPosition", + "required": false + }, + "globalPortal": { + "type": "boolean", + "required": false + }, + "onReachBottom": { + "type": "() => void", + "required": false + }, + "onLeaveBottom": { + "type": "() => void", + "required": false + }, + "computed": { + "type": "{ scrollTop: number", + "required": true + }, + "scrollbarDefer": { + "type": "boolean | object", + "required": false + }, + "scrollbarDisabled": { + "type": "boolean", + "required": false + }, + "scrollbarMaxWidth": { + "type": "number | string", + "required": false + }, + "scrollbarOptions": { + "type": "import('overlayscrollbars').PartialOptions", + "required": false + } + }, + "sourceFile": "", + "extends": [ + "DropdownItemSharedProps" + ] + }, + "MultipleDatePicker": { + "props": { + "actions": { + "type": "Partial", + "required": false + }, + "format": { + "type": "string", + "required": false + }, + "maxSelections": { + "type": "number", + "required": false + }, + "onCalendarToggle": { + "type": "(open: boolean) => void", + "required": false + }, + "onChange": { + "type": "(value: MultipleDatePickerValue) => void", + "required": false + }, + "placeholder": { + "type": "string", + "required": false + }, + "referenceDate": { + "type": "DateType", + "required": false + }, + "required": { + "type": "boolean", + "required": false + }, + "value": { + "type": "MultipleDatePickerValue", + "required": false + } + }, + "sourceFile": "", + "extends": [ + "Pick<\n MultipleDatePickerTriggerProps,\n | 'className'\n | 'clearable'\n | 'disabled'\n | 'error'\n | 'fullWidth'\n | 'overflowStrategy'\n | 'prefix'\n | 'readOnly'\n | 'size'\n >,\n Pick<\n CalendarProps,\n | 'disabledMonthSwitch'\n | 'disableOnNext'\n | 'disableOnPrev'\n | 'disableOnDoubleNext'\n | 'disableOnDoublePrev'\n | 'disabledYearSwitch'\n | 'displayMonthLocale'\n | 'isDateDisabled'\n >" + ] + }, + "Pagination": { + "props": { + "boundaryCount": { + "type": "number", + "required": false + }, + "buttonText": { + "type": "string", + "required": false + }, + "current": { + "type": "number", + "required": false + }, + "disabled": { + "type": "true", + "required": false + }, + "hintText": { + "type": "string", + "required": false + }, + "inputPlaceholder": { + "type": "string", + "required": false + }, + "itemRender": { + "type": "(item: PaginationItemProps) => ReactNode", + "required": false + }, + "onChange": { + "type": "(page: number) => void", + "required": false + }, + "onChangePageSize": { + "type": "PaginationPageSizeProps['onChange']", + "required": false + }, + "pageSize": { + "type": "PaginationPageSizeProps['value']", + "required": false + }, + "pageSizeLabel": { + "type": "PaginationPageSizeProps['label']", + "required": false + }, + "pageSizeOptions": { + "type": "PaginationPageSizeProps['options']", + "required": false + }, + "renderResultSummary": { + "type": "(from: number, to: number, total: number) => string", + "required": false + }, + "renderPageSizeOptionName": { + "type": "PaginationPageSizeProps['renderOptionName']", + "required": false + }, + "showJumper": { + "type": "boolean", + "required": false + }, + "showPageSizeOptions": { + "type": "boolean", + "required": false + }, + "siblingCount": { + "type": "number", + "required": false + }, + "total": { + "type": "number", + "required": false + } + }, + "sourceFile": "", + "extends": [ + "Omit<\n DetailedHTMLProps, HTMLElement>,\n 'onChange'\n >" + ] + }, + "SelectionCard": { + "props": { + "checked": { + "type": "boolean", + "required": false + }, + "defaultChecked": { + "type": "boolean", + "required": false + }, + "selector": { + "type": "SelectionCardType", + "required": true + }, + "disabled": { + "type": "boolean", + "required": false + }, + "direction": { + "type": "SelectionCardDirection", + "required": false + }, + "image": { + "type": "string", + "required": false + }, + "imageObjectFit": { + "type": "SelectionCardImageObjectFit", + "required": false + }, + "customIcon": { + "type": "IconDefinition", + "required": false + }, + "name": { + "type": "string", + "required": false + }, + "id": { + "type": "string", + "required": false + }, + "text": { + "type": "string", + "required": true + }, + "textMaxWidth": { + "type": "CSSProperties['maxWidth']", + "required": false + }, + "supportingText": { + "type": "string", + "required": false + }, + "supportingTextMaxWidth": { + "type": "CSSProperties['maxWidth']", + "required": false + }, + "readonly": { + "type": "boolean", + "required": false + }, + "value": { + "type": "string", + "required": false + }, + "inputRef": { + "type": "Ref", + "required": false + }, + "onChange": { + "type": "ChangeEventHandler", + "required": false + } + }, + "sourceFile": "", + "extends": [ + "Omit, 'onChange'>" + ] + }, + "Upload": { + "props": { + "accept": { + "type": "string", + "required": false + }, + "disabled": { + "type": "boolean", + "required": false + }, + "dropzoneHints": { + "type": "UploaderProps['hints']", + "required": false + }, + "files": { + "type": "UploadFile[]", + "required": false + }, + "hints": { + "type": "UploaderProps['hints']", + "required": false + }, + "uploaderIcon": { + "type": "UploaderProps['icon']", + "required": false + }, + "id": { + "type": "string", + "required": false + }, + "inputProps": { + "type": "UploaderProps['inputProps']", + "required": false + }, + "inputRef": { + "type": "UploaderProps['inputRef']", + "required": false + }, + "maxFiles": { + "type": "number", + "required": false + }, + "mode": { + "type": "UploadMode", + "required": false + }, + "multiple": { + "type": "boolean", + "required": false + }, + "name": { + "type": "string", + "required": false + }, + "size": { + "type": "UploadSize", + "required": false + }, + "showFileSize": { + "type": "boolean", + "required": false + }, + "uploaderLabel": { + "type": "UploaderProps['label']", + "required": false + }, + "errorMessage": { + "type": "string", + "required": false + }, + "errorIcon": { + "type": "ReactNode", + "required": false + }, + "ariaLabels": { + "type": "UploadPictureCardAriaLabels", + "required": false + }, + "onChange": { + "type": "(files: UploadFile[]) => void", + "required": false + }, + "onDelete": { + "type": "(fileId: string, file: File) => void", + "required": false + }, + "onDownload": { + "type": "(fileId: string, file: File) => void", + "required": false + }, + "onReload": { + "type": "(fileId: string, file: File) => void", + "required": false + }, + "onZoomIn": { + "type": "(fileId: string, file: File) => void", + "required": false + } + }, + "sourceFile": "", + "extends": [ + "Omit, 'onChange'>" + ] + }, + "ClearActions": { + "props": {}, + "sourceFile": "", + "deprecated": true + }, + "ContentHeader": { + "props": {}, + "sourceFile": "", + "deprecated": true + }, + "Scrollbar": { + "props": {}, + "sourceFile": "", + "deprecated": true + }, + "AlertBanner": { + "props": { + "actions": { + "type": "AlertBannerAction[]", + "required": false + }, + "closable": { + "type": "boolean", + "required": false + }, + "disablePortal": { + "type": "boolean", + "required": false + }, + "icon": { + "type": "IconDefinition", + "required": false + }, + "message": { + "type": "string", + "required": true + }, + "onClose": { + "type": "() => void", + "required": false + }, + "severity": { + "type": "AlertBannerSeverity", + "required": true + } + }, + "sourceFile": "packages/react/src/AlertBanner/AlertBanner.tsx", + "extends": [ + "Omit<\n NativeElementPropsWithoutKeyAndRef<'div'>,\n 'children' | 'title'\n >" + ] + }, + "Anchor": { + "props": { + "anchors": { + "type": "AnchorItemData[]", + "required": true + }, + "children": { + "type": "never", + "required": false + } + }, + "sourceFile": "packages/react/src/Anchor/Anchor.tsx", + "extends": [] + }, + "AutoComplete": { + "props": {}, + "sourceFile": "packages/react/src/AutoComplete/AutoComplete.tsx", + "extends": [] + }, + "Backdrop": { + "props": { + "disableCloseOnBackdropClick": { + "type": "boolean", + "required": false, + "default": "false" + }, + "disableScrollLock": { + "type": "boolean", + "required": false, + "default": "false" + }, + "onBackdropClick": { + "type": "MouseEventHandler", + "required": false + }, + "onClose": { + "type": "VoidFunction", + "required": false + }, + "open": { + "type": "boolean", + "required": false, + "default": "false" + }, + "variant": { + "type": "BackdropVariant", + "required": false, + "default": "dark" + } + }, + "sourceFile": "packages/react/src/Backdrop/Backdrop.tsx", + "extends": [ + "Pick,\n NativeElementPropsWithoutKeyAndRef<'div'>" + ] + }, + "Badge": { + "props": {}, + "sourceFile": "packages/react/src/Badge/Badge.tsx", + "extends": [] + }, + "Breadcrumb": { + "props": {}, + "sourceFile": "packages/react/src/Breadcrumb/Breadcrumb.tsx", + "extends": [] + }, + "Button": { + "props": {}, + "sourceFile": "packages/react/src/Button/Button.tsx", + "extends": [] + }, + "Card": { + "props": {}, + "sourceFile": "packages/react/src/Card/Card.tsx", + "extends": [] + }, + "Cascader": { + "props": {}, + "sourceFile": "packages/react/src/Cascader/Cascader.tsx", + "extends": [] + }, + "Cropper": { + "props": {}, + "sourceFile": "packages/react/src/Cropper/Cropper.tsx", + "extends": [] + }, + "DatePicker": { + "props": { + "defaultValue": { + "type": "DateType", + "required": false + }, + "disableOnDoubleNext": { "type": "boolean", "required": false, "default": "false" }, - "showActionShowTopBar": { + "disableOnDoublePrev": { "type": "boolean", "required": false, "default": "false" }, - "showDropdownActions": { - "type": "boolean", - "required": false - }, - "type": { - "type": "DropdownType", - "required": false - }, - "toggleCheckedOnClick": { - "type": "boolean", - "required": false - }, - "zIndex": { - "type": "number | string", - "required": false - }, - "status": { - "type": "DropdownStatusType", - "required": false - }, - "loadingText": { - "type": "string", - "required": false - }, - "emptyText": { + "format": { "type": "string", "required": false }, - "emptyIcon": { - "type": "IconDefinition", + "onCalendarToggle": { + "type": "(open: boolean) => void", "required": false }, - "loadingPosition": { - "type": "DropdownLoadingPosition", - "required": false, - "default": "full" - }, - "globalPortal": { - "type": "boolean", - "required": false, - "default": "true" - }, - "onReachBottom": { - "type": "() => void", + "onChange": { + "type": "(target?: DateType) => void", "required": false }, - "onLeaveBottom": { - "type": "() => void", + "referenceDate": { + "type": "DateType", "required": false - }, - "onScroll": { - "type": "(", + } + }, + "sourceFile": "packages/react/src/DatePicker/DatePicker.tsx", + "extends": [ + "Omit<\n DatePickerCalendarProps,\n | 'anchor'\n | 'calendarRef'\n | 'disableOnDoubleNext'\n | 'disableOnDoublePrev'\n | 'onChange'\n | 'open'\n | 'referenceDate'\n | 'updateReferenceDate'\n >,\n Omit<\n PickerTriggerProps,\n | 'defaultValue'\n | 'format'\n | 'inputRef'\n | 'onChange'\n | 'onClear'\n | 'onClick'\n | 'onIconClick'\n | 'onKeyDown'\n | 'value'\n >" + ] + }, + "DateTimeRangePicker": { + "props": { + "className": { + "type": "string", "required": false }, - "computed": { - "type": "{ scrollTop: number; maxScrollTop: number },", - "required": true - }, - "target": { - "type": "HTMLDivElement,", - "required": true - }, - "scrollbarDefer": { - "type": "boolean | object", - "required": false, - "default": "true" - }, - "scrollbarDisabled": { - "type": "boolean", + "direction": { + "type": "'row' | 'column'", "required": false, - "default": "false" + "default": "row" }, - "scrollbarMaxWidth": { - "type": "number | string", + "onChange": { + "type": "(value: DateTimeRangePickerValue) => void", "required": false }, - "scrollbarOptions": { - "type": "import('overlayscrollbars').PartialOptions", + "value": { + "type": "DateTimeRangePickerValue", "required": false } }, - "sourceFile": "packages/react/src/Dropdown/Dropdown.tsx", + "sourceFile": "packages/react/src/DateTimeRangePicker/DateTimeRangePicker.tsx", "extends": [ - "DropdownItemSharedProps" + "Omit<\n DateTimePickerProps,\n 'defaultValue' | 'onChange' | 'value' | 'ref' | 'prefix'\n >" ] }, + "Description": { + "props": {}, + "sourceFile": "packages/react/src/Description/Description.tsx", + "extends": [] + }, "Empty": { "props": {}, "sourceFile": "packages/react/src/Empty/Empty.tsx", @@ -1103,61 +1310,6 @@ "sourceFile": "packages/react/src/Modal/Modal.tsx", "extends": [] }, - "MultipleDatePicker": { - "props": { - "actions": { - "type": "Partial", - "required": false - }, - "calendarProps": { - "type": "Omit<", - "required": false - }, - "format": { - "type": "string", - "required": false, - "default": "YYYY-MM-DD" - }, - "maxSelections": { - "type": "number", - "required": false - }, - "onCalendarToggle": { - "type": "(open: boolean) => void", - "required": false - }, - "onChange": { - "type": "(value: MultipleDatePickerValue) => void", - "required": false - }, - "placeholder": { - "type": "string", - "required": false - }, - "popperProps": { - "type": "Omit<", - "required": false - }, - "referenceDate": { - "type": "DateType", - "required": false - }, - "required": { - "type": "boolean", - "required": false, - "default": "false" - }, - "value": { - "type": "MultipleDatePickerValue", - "required": false, - "default": "[]" - } - }, - "sourceFile": "packages/react/src/MultipleDatePicker/MultipleDatePicker.tsx", - "extends": [ - "Pick<\n MultipleDatePickerTriggerProps,\n | 'className'\n | 'clearable'\n | 'disabled'\n | 'error'\n | 'fullWidth'\n | 'overflowStrategy'\n | 'prefix'\n | 'readOnly'\n | 'size'\n >,\n Pick<\n CalendarProps,\n | 'disabledMonthSwitch'\n | 'disableOnNext'\n | 'disableOnPrev'\n | 'disableOnDoubleNext'\n | 'disableOnDoublePrev'\n | 'disabledYearSwitch'\n | 'displayMonthLocale'\n | 'isDateDisabled'\n >" - ] - }, "Navigation": { "props": { "activatedPath": { @@ -1197,122 +1349,34 @@ }, "sourceFile": "packages/react/src/Navigation/Navigation.tsx", "extends": [ - "Omit, 'onClick'>" - ] - }, - "NotificationCenter": { - "props": {}, - "sourceFile": "packages/react/src/NotificationCenter/NotificationCenter.tsx", - "extends": [] - }, - "Notifier": { - "props": {}, - "sourceFile": "packages/react/src/Notifier/Notifier.tsx", - "extends": [] - }, - "OverflowTooltip": { - "props": {}, - "sourceFile": "packages/react/src/OverflowTooltip/OverflowTooltip.tsx", - "extends": [] - }, - "PageFooter": { - "props": {}, - "sourceFile": "packages/react/src/PageFooter/PageFooter.tsx", - "extends": [] - }, - "PageHeader": { - "props": {}, - "sourceFile": "packages/react/src/PageHeader/PageHeader.tsx", - "extends": [] - }, - "Pagination": { - "props": { - "boundaryCount": { - "type": "number", - "required": false, - "default": "1" - }, - "buttonText": { - "type": "string", - "required": false - }, - "current": { - "type": "number", - "required": false, - "default": "1" - }, - "disabled": { - "type": "true", - "required": false - }, - "hintText": { - "type": "string", - "required": false - }, - "inputPlaceholder": { - "type": "string", - "required": false - }, - "itemRender": { - "type": "(item: PaginationItemProps) => ReactNode", - "required": false, - "default": "(item) => " - }, - "onChange": { - "type": "(page: number) => void", - "required": false - }, - "onChangePageSize": { - "type": "PaginationPageSizeProps['onChange']", - "required": false - }, - "pageSize": { - "type": "PaginationPageSizeProps['value']", - "required": false, - "default": "10" - }, - "pageSizeLabel": { - "type": "PaginationPageSizeProps['label']", - "required": false - }, - "pageSizeOptions": { - "type": "PaginationPageSizeProps['options']", - "required": false - }, - "renderResultSummary": { - "type": "(from: number, to: number, total: number) => string", - "required": false - }, - "renderPageSizeOptionName": { - "type": "PaginationPageSizeProps['renderOptionName']", - "required": false - }, - "showJumper": { - "type": "boolean", - "required": false, - "default": "false" - }, - "showPageSizeOptions": { - "type": "boolean", - "required": false, - "default": "false" - }, - "siblingCount": { - "type": "number", - "required": false, - "default": "1" - }, - "total": { - "type": "number", - "required": false, - "default": "0" - } - }, - "sourceFile": "packages/react/src/Pagination/Pagination.tsx", - "extends": [ - "Omit<\n DetailedHTMLProps, HTMLElement>,\n 'onChange'\n >" + "Omit, 'onClick'>" ] }, + "NotificationCenter": { + "props": {}, + "sourceFile": "packages/react/src/NotificationCenter/NotificationCenter.tsx", + "extends": [] + }, + "Notifier": { + "props": {}, + "sourceFile": "packages/react/src/Notifier/Notifier.tsx", + "extends": [] + }, + "OverflowTooltip": { + "props": {}, + "sourceFile": "packages/react/src/OverflowTooltip/OverflowTooltip.tsx", + "extends": [] + }, + "PageFooter": { + "props": {}, + "sourceFile": "packages/react/src/PageFooter/PageFooter.tsx", + "extends": [] + }, + "PageHeader": { + "props": {}, + "sourceFile": "packages/react/src/PageHeader/PageHeader.tsx", + "extends": [] + }, "Picker": { "props": {}, "sourceFile": "packages/react/src/Picker/Picker.tsx", @@ -1473,46 +1537,6 @@ "NativeElementPropsWithoutKeyAndRef<'div'>" ] }, - "Scrollbar": { - "props": { - "children": { - "type": "ReactNode", - "required": false - }, - "defer": { - "type": "boolean | object", - "required": false, - "default": "true" - }, - "disabled": { - "type": "boolean", - "required": false, - "default": "false" - }, - "maxHeight": { - "type": "CSSProperties['maxHeight']", - "required": false - }, - "maxWidth": { - "type": "CSSProperties['maxWidth']", - "required": false - }, - "options": { - "type": "PartialOptions", - "required": false - }, - "events": { - "type": "OverlayScrollbarsComponentProps['events']", - "required": false - } - }, - "sourceFile": "packages/react/src/Scrollbar/typings.ts", - "extends": [ - "Omit, 'children'>" - ], - "deprecated": true, - "deprecationReason": "Component no longer exported from @mezzanine-ui/react index.ts as of v1.1.0" - }, "Section": { "props": { "className": { @@ -1540,95 +1564,6 @@ "sourceFile": "packages/react/src/Select/Select.tsx", "extends": [] }, - "SelectionCard": { - "props": { - "checked": { - "type": "boolean", - "required": false - }, - "defaultChecked": { - "type": "boolean", - "required": false, - "default": "false" - }, - "selector": { - "type": "SelectionCardType", - "required": true, - "default": "radio" - }, - "disabled": { - "type": "boolean", - "required": false, - "default": "false" - }, - "direction": { - "type": "SelectionCardDirection", - "required": false, - "default": "horizontal" - }, - "image": { - "type": "string", - "required": false - }, - "imageObjectFit": { - "type": "SelectionCardImageObjectFit", - "required": false, - "default": "cover" - }, - "customIcon": { - "type": "IconDefinition", - "required": false - }, - "name": { - "type": "string", - "required": false - }, - "id": { - "type": "string", - "required": false - }, - "text": { - "type": "string", - "required": true - }, - "textMaxWidth": { - "type": "CSSProperties['maxWidth']", - "required": false - }, - "supportingText": { - "type": "string", - "required": false - }, - "supportingTextMaxWidth": { - "type": "CSSProperties['maxWidth']", - "required": false - }, - "readonly": { - "type": "boolean", - "required": false, - "default": "false" - }, - "value": { - "type": "string", - "required": false - }, - "inputRef": { - "type": "Ref", - "required": false - }, - "onChange": { - "type": "ChangeEventHandler", - "required": false - }, - "onClick": { - "type": "(event: MouseEvent) => void", - "required": false, - "description": "Click handler (new in v1.1.0)" - } - }, - "sourceFile": "packages/react/src/SelectionCard/SelectionCard.tsx", - "extends": [] - }, "Separator": { "props": { "orientation": { @@ -2079,138 +2014,9 @@ "sourceFile": "packages/react/src/Typography/Typography.tsx", "extends": [] }, - "Upload": { - "props": { - "accept": { - "type": "string", - "required": false - }, - "disabled": { - "type": "boolean", - "required": false, - "default": "false" - }, - "dropzoneHints": { - "type": "UploaderProps['hints']", - "required": false - }, - "files": { - "type": "File[],", - "required": true - }, - "hints": { - "type": "UploaderProps['hints']", - "required": false - }, - "uploaderIcon": { - "type": "UploaderProps['icon']", - "required": false - }, - "id": { - "type": "string", - "required": false - }, - "inputProps": { - "type": "UploaderProps['inputProps']", - "required": false - }, - "inputRef": { - "type": "UploaderProps['inputRef']", - "required": false - }, - "maxFiles": { - "type": "number,", - "required": true - }, - "mode": { - "type": "UploadMode", - "required": false, - "default": "list" - }, - "multiple": { - "type": "boolean", - "required": false, - "default": "false" - }, - "name": { - "type": "string", - "required": false - }, - "size": { - "type": "UploadSize", - "required": false, - "default": "main" - }, - "showFileSize": { - "type": "boolean", - "required": false, - "default": "true" - }, - "uploaderLabel": { - "type": "UploaderProps['label']", - "required": false - }, - "errorMessage": { - "type": "string", - "required": false - }, - "errorIcon": { - "type": "ReactNode", - "required": false - }, - "ariaLabels": { - "type": "UploadPictureCardAriaLabels", - "required": false - }, - "onChange": { - "type": "(files: UploadFile[]) => void", - "required": false - }, - "onDelete": { - "type": "(fileId: string, file: File) => void", - "required": false - }, - "onDownload": { - "type": "(fileId: string, file: File) => void", - "required": false - }, - "onMaxFilesExceeded": { - "type": "(", - "required": false - }, - "selectedCount": { - "type": "number,", - "required": true - }, - "currentCount": { - "type": "number,", - "required": true - }, - "onReload": { - "type": "(fileId: string, file: File) => void", - "required": false - }, - "onUpload": { - "type": "(", - "required": false - }, - "setProgress": { - "type": "(fileIndex: number, progress: number) => void,", - "required": false - }, - "onZoomIn": { - "type": "(fileId: string, file: File) => void", - "required": false - } - }, - "sourceFile": "packages/react/src/Upload/Upload.tsx", - "extends": [ - "Omit, 'onChange'>" - ] - }, "_meta": { - "version": "1.4.1", - "generatedAt": "2026-07-01", + "version": "1.4.2", + "generatedAt": "2026-08-07", "description": "TypeScript props API index for Mezzanine UI v2" } -} +} \ No newline at end of file diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/component-index.json b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/component-index.json index 7308db5..47ab0ae 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/component-index.json +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/component-index.json @@ -1,6 +1,6 @@ { - "version": "1.4.1", - "lastUpdated": "2026-07-01T08:39:33Z", + "version": "1.4.2", + "lastUpdated": "2026-08-07T05:03:03Z", "figmaFileKey": "gjGdP49GQZzOeQf0bNOFlt", "componentCount": 6178, "components": { @@ -8527,7 +8527,7 @@ }, "9233:13231": { "key": "7d61152bf826ed8a1af1858ae030789547249ea4", - "name": "Type=Link & Status, State or Style=Pointer 👆", + "name": "Type=Link & Status, State or Style=Pointer \ud83d\udc46", "description": "pointer", "remote": true, "componentSetId": "9233:13091", @@ -11761,7 +11761,7 @@ }, "15566:59256": { "key": "d6c5868ef91ef445e2042b0ab03fb0aa0bfa1b71", - "name": "Type=Top-Left↖︎", + "name": "Type=Top-Left\u2196\ufe0e", "description": "", "remote": false, "componentSetId": "15566:59232", @@ -14153,7 +14153,7 @@ }, "15210:119488": { "key": "2b63084b594c955d4046a376a2f6a6b70c077068", - "name": "Type=Bottom↓", + "name": "Type=Bottom\u2193", "description": "", "remote": false, "componentSetId": "15210:117916", @@ -23452,7 +23452,7 @@ }, "15790:17039": { "key": "78a9cb63404d3c20105586bf3000ed60449148e1", - "name": "Type=檔案類型", + "name": "Type=\u6a94\u6848\u985e\u578b", "description": "", "remote": false, "componentSetId": "15790:17041", @@ -33471,7 +33471,7 @@ }, "15210:117915": { "key": "1ca90aca964908e2ce3c5bdc01d1d30a1442a7ee", - "name": "Type=Top↑", + "name": "Type=Top\u2191", "description": "", "remote": false, "componentSetId": "15210:117916", @@ -38107,7 +38107,7 @@ }, "16151:104856": { "key": "5139d7f3cd216746b397265414511b1776527d13", - "name": "state=Column ↔︎", + "name": "state=Column \u2194\ufe0e", "description": "col-resize", "remote": false, "componentSetId": "16151:104830", @@ -39066,7 +39066,7 @@ }, "15210:119528": { "key": "455a25562f8c57b9bfc9989a9e058409dfce2a4f", - "name": "Type=Left←", + "name": "Type=Left\u2190", "description": "", "remote": false, "componentSetId": "15210:117916", @@ -39074,7 +39074,7 @@ }, "15210:119548": { "key": "ca10739f26711f0e4df60bae3bd574c7e9889e41", - "name": "Type=Right→", + "name": "Type=Right\u2192", "description": "", "remote": false, "componentSetId": "15210:117916", @@ -39082,7 +39082,7 @@ }, "15210:119417": { "key": "8af99b51f08cd25bfb958d8d956060300544a8e7", - "name": "Type=Top-Left↖︎", + "name": "Type=Top-Left\u2196\ufe0e", "description": "", "remote": false, "componentSetId": "15210:117916", @@ -39090,7 +39090,7 @@ }, "15210:119493": { "key": "cdf834d6a91ad567d030e2a25638b75d7ebe7f11", - "name": "Type=Bottom-Left↙︎", + "name": "Type=Bottom-Left\u2199\ufe0e", "description": "", "remote": false, "componentSetId": "15210:117916", @@ -39098,7 +39098,7 @@ }, "15210:119468": { "key": "1552182a09abdb95188f2b568fde7dd0384030ad", - "name": "Type=Top-Right↗︎", + "name": "Type=Top-Right\u2197\ufe0e", "description": "", "remote": false, "componentSetId": "15210:117916", @@ -39106,7 +39106,7 @@ }, "15210:119498": { "key": "da2911e1f8e3ba30c4a82237b20a8302379d5a8e", - "name": "Type=Bottom-Right↘︎", + "name": "Type=Bottom-Right\u2198\ufe0e", "description": "", "remote": false, "componentSetId": "15210:117916", @@ -39114,7 +39114,7 @@ }, "15566:59233": { "key": "563857d004b3e10fd9caf015a860ace4bc75812e", - "name": "Type=Top↑", + "name": "Type=Top\u2191", "description": "", "remote": false, "componentSetId": "15566:59232", @@ -39122,7 +39122,7 @@ }, "15566:59241": { "key": "ad2051104d855c7e1b3e48466acaa3fc8738b8ee", - "name": "Type=Bottom↓", + "name": "Type=Bottom\u2193", "description": "", "remote": false, "componentSetId": "15566:59232", @@ -39130,7 +39130,7 @@ }, "15566:59261": { "key": "c72996c5ed1bfffac5c5d0cf253c74fef8aeb04d", - "name": "Type=Bottom-Left↙︎", + "name": "Type=Bottom-Left\u2199\ufe0e", "description": "", "remote": false, "componentSetId": "15566:59232", @@ -39138,7 +39138,7 @@ }, "15566:59266": { "key": "94e6742cec046b7feb3756f1eab86563c3ff6715", - "name": "Type=Top-Right↗︎", + "name": "Type=Top-Right\u2197\ufe0e", "description": "", "remote": false, "componentSetId": "15566:59232", @@ -39146,7 +39146,7 @@ }, "15566:59271": { "key": "c71abd3a46423cefeafa5de15c82dcfb18767b6e", - "name": "Type=Bottom-Right↘︎", + "name": "Type=Bottom-Right\u2198\ufe0e", "description": "", "remote": false, "componentSetId": "15566:59232", @@ -39435,7 +39435,7 @@ }, "15694:34961": { "key": "3e696d349a298fd4ced4e4c0bb0cc50ff0fe6ab7", - "name": "Type=Two Buttons(Fill)", + "name": "Type=Two Buttons\uff08Fill\uff09", "description": "", "remote": false, "componentSetId": "15790:57074", @@ -39603,7 +39603,7 @@ }, "21241:24449": { "key": "545de978267218fc73943171cd2be2da3dbfafde", - "name": "Type=Two Buttons(Fixed)", + "name": "Type=Two Buttons\uff08Fixed\uff09", "description": "", "remote": false, "componentSetId": "15790:57074", @@ -40113,7 +40113,7 @@ }, "22443:36892": { "key": "4549b0f09a0d75fde5cc6fd1cfdfc7408a9e53f0", - "name": "Page_庫存清單_料號模式", + "name": "Page_\u5eab\u5b58\u6e05\u55ae_\u6599\u865f\u6a21\u5f0f", "description": "", "remote": true, "documentationLinks": [] @@ -40348,7 +40348,7 @@ }, "22443:31827": { "key": "ec09adee69b02aa830548249c4eb9ea7d37398f9", - "name": "Align=Left, With Help=True, Sorting=↕", + "name": "Align=Left, With Help=True, Sorting=\u2195", "description": "", "remote": true, "componentSetId": "22443:31818", @@ -40506,7 +40506,7 @@ }, "22443:36728": { "key": "90065f10b5555e755168348f185f9e30a928e56e", - "name": "Table Row_庫存查詢_level2_料號模式", + "name": "Table Row_\u5eab\u5b58\u67e5\u8a62_level2_\u6599\u865f\u6a21\u5f0f", "description": "", "remote": true, "documentationLinks": [] @@ -40521,7 +40521,7 @@ }, "22443:32562": { "key": "18e397320e6752ca935a0c29db2d62616fbdaa08", - "name": "type=Default, state=異動項目", + "name": "type=Default, state=\u7570\u52d5\u9805\u76ee", "description": "", "remote": true, "componentSetId": "22443:32521", @@ -41188,7 +41188,7 @@ "15980:1276": { "key": "fbd64a56380c102a1fb499b987edba77340d6170", "name": "type=Basic", - "description": "ℹ️ Provide a placeholder while you wait for content to load, or to visualize content that doesn't exist yet.", + "description": "\u2139\ufe0f Provide a placeholder while you wait for content to load, or to visualize content that doesn't exist yet.", "remote": true, "componentSetId": "15980:1275", "documentationLinks": [ @@ -41219,7 +41219,7 @@ "15980:1279": { "key": "158c0272809a4862358def31804e908c4e742c53", "name": "type=Complex", - "description": "ℹ️ Provide a placeholder while you wait for content to load, or to visualize content that doesn't exist yet.", + "description": "\u2139\ufe0f Provide a placeholder while you wait for content to load, or to visualize content that doesn't exist yet.", "remote": true, "componentSetId": "15980:1275", "documentationLinks": [ @@ -41244,23 +41244,23 @@ }, "16006:48428": { "key": "9f9407017eaa5d1f9058c02edece160fd5a28ca2", - "name": "操作按钮=false, 头像=false", - "description": "展示名:骨架屏", + "name": "\u64cd\u4f5c\u6309\u94ae=false, \u5934\u50cf=false", + "description": "\u5c55\u793a\u540d\uff1a\u9aa8\u67b6\u5c4f", "remote": true, "componentSetId": "16006:48427", "documentationLinks": [] }, "16006:48423": { "key": "d47a5bb74e1d67f3148b8482920d70c84c1f096f", - "name": "方向=宽", - "description": "展示名:宽度调节器调整自动布局面板中的“项目间距”", + "name": "\u65b9\u5411=\u5bbd", + "description": "\u5c55\u793a\u540d\uff1a\u5bbd\u5ea6\u8c03\u8282\u5668\u8c03\u6574\u81ea\u52a8\u5e03\u5c40\u9762\u677f\u4e2d\u7684\u201c\u9879\u76ee\u95f4\u8ddd\u201d", "remote": true, "componentSetId": "16006:48419", "documentationLinks": [] }, "16006:48441": { "key": "905f47975008aa7b0bceca5c2bff39884fa562eb", - "name": "操作按钮=false, 头像=true", + "name": "\u64cd\u4f5c\u6309\u94ae=false, \u5934\u50cf=true", "description": "", "remote": true, "componentSetId": "16006:48427", @@ -46713,7 +46713,7 @@ }, "9233:13179": { "key": "65e60b9dac1cda2e2223bff56923166328f9c8d8", - "name": "Type=Drag n Drop, State or Style=Grabbing ✊", + "name": "Type=Drag n Drop, State or Style=Grabbing \u270a", "description": "", "remote": true, "componentSetId": "9233:13091", @@ -47343,7 +47343,7 @@ }, "16151:104835": { "key": "dec515a701dce0c61f08fdf3f8959b8aecda204b", - "name": "state=Up & Down ↕︎", + "name": "state=Up & Down \u2195\ufe0e", "description": "ns-resize", "remote": false, "componentSetId": "16151:104830", @@ -47351,7 +47351,7 @@ }, "16151:104838": { "key": "11f506b28882f85d076c8608de02dd82b8ab2cc5", - "name": "state=Left Right ↔︎", + "name": "state=Left Right \u2194\ufe0e", "description": "ew-resize", "remote": false, "componentSetId": "16151:104830", @@ -47359,7 +47359,7 @@ }, "16151:104841": { "key": "5d5e82191b6f93b15ee47c91f12fc92a6124d4d1", - "name": "state=Down ↓", + "name": "state=Down \u2193", "description": "s-resize", "remote": false, "componentSetId": "16151:104830", @@ -47367,7 +47367,7 @@ }, "16151:104844": { "key": "055071768d41bb1fec01cdca7f67ad305282c2c7", - "name": "state=Right →", + "name": "state=Right \u2192", "description": "e-resize", "remote": false, "componentSetId": "16151:104830", @@ -47375,7 +47375,7 @@ }, "16151:104847": { "key": "3800eb540fe427b3304994e1eb3ef418a9e5d7d7", - "name": "state=Up ↑", + "name": "state=Up \u2191", "description": "n-resize", "remote": false, "componentSetId": "16151:104830", @@ -47383,7 +47383,7 @@ }, "16151:104850": { "key": "3716339521f622dfe75041eaabcca3d18eba152a", - "name": "state=Left ←", + "name": "state=Left \u2190", "description": "w-resize", "remote": false, "componentSetId": "16151:104830", @@ -47391,7 +47391,7 @@ }, "16151:104853": { "key": "a930ca1d227089afc3c1fdedc8ebfcc33763b95a", - "name": "state=Row ↕︎", + "name": "state=Row \u2195\ufe0e", "description": "row-resize", "remote": false, "componentSetId": "16151:104830", @@ -47399,7 +47399,7 @@ }, "16151:104859": { "key": "c36eb85e07ed9585e4e9b8b44bf9c602f60d3304", - "name": "state=Row Down ↓", + "name": "state=Row Down \u2193", "description": "Row resize Down", "remote": false, "componentSetId": "16151:104830", @@ -47407,7 +47407,7 @@ }, "16151:104862": { "key": "ad8047cb9f0d5c5a365d7c3799e7f1c326617317", - "name": "state=Column R →", + "name": "state=Column R \u2192", "description": "Column resize Right", "remote": false, "componentSetId": "16151:104830", @@ -47415,7 +47415,7 @@ }, "16151:104865": { "key": "4c53c1b7297fe98635a003a38720f1472ed2ccc7", - "name": "state=Row Up ↑", + "name": "state=Row Up \u2191", "description": "Row resize Up", "remote": false, "componentSetId": "16151:104830", @@ -47423,7 +47423,7 @@ }, "16151:104868": { "key": "98f12d124052cd2ef462b34e764e55c27f92cdeb", - "name": "state=Column L ←", + "name": "state=Column L \u2190", "description": "Column resize Left", "remote": false, "componentSetId": "16151:104830", @@ -47431,7 +47431,7 @@ }, "16151:104871": { "key": "e701d6e7c5832a8d1581aeae7386890b6be705ec", - "name": "state=Up L & Down R ⤡", + "name": "state=Up L & Down R \u2921", "description": "nwse-resize", "remote": false, "componentSetId": "16151:104830", @@ -47439,7 +47439,7 @@ }, "16151:104874": { "key": "24286d900241789e0018e728982b9f2dd6bc2daf", - "name": "state=Up R & Btm L ⤢", + "name": "state=Up R & Btm L \u2922", "description": "nesw-resize", "remote": false, "componentSetId": "16151:104830", @@ -47447,7 +47447,7 @@ }, "16151:104877": { "key": "3a4f88ae67019d44a458d0c2e059e6a801afbe86", - "name": "state=Down Left ↙︎", + "name": "state=Down Left \u2199\ufe0e", "description": "sw-resize", "remote": false, "componentSetId": "16151:104830", @@ -47455,7 +47455,7 @@ }, "16151:104880": { "key": "b9b62c14549a0aca19f3779dda1f1ec4351dfad3", - "name": "state=Down Right ↘︎", + "name": "state=Down Right \u2198\ufe0e", "description": "se-resize", "remote": false, "componentSetId": "16151:104830", @@ -47463,7 +47463,7 @@ }, "16151:104883": { "key": "97795640777cf690b8f53f6f84987957fb37d840", - "name": "state=Up Right ↗︎", + "name": "state=Up Right \u2197\ufe0e", "description": "ne-resize", "remote": false, "componentSetId": "16151:104830", @@ -47471,7 +47471,7 @@ }, "16151:104886": { "key": "b41b02fc5f11fa24dbb2c2e4d65e8c66312443ca", - "name": "state=Up Left ↖︎", + "name": "state=Up Left \u2196\ufe0e", "description": "nw-resize", "remote": false, "componentSetId": "16151:104830", @@ -48895,4 +48895,4 @@ "documentationLinks": [] } } -} +} \ No newline at end of file diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/design-tokens-index.json b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/design-tokens-index.json index 42a9473..b1be00a 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/design-tokens-index.json +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/design-tokens-index.json @@ -1034,7 +1034,7 @@ ] } }, - "version": "1.4.1" + "version": "1.4.2" }, - "lastUpdated": "2026-07-01T08:39:33Z" -} + "lastUpdated": "2026-08-07T05:03:03Z" +} \ No newline at end of file diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/figma-sync.json b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/figma-sync.json index ec685be..6a0c6cf 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/figma-sync.json +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/figma-sync.json @@ -1,5 +1,5 @@ { - "lastSync": "2026-07-01T08:39:33Z", + "lastSync": "2026-08-07T05:03:03Z", "files": { "component": { "fileKey": "gjGdP49GQZzOeQf0bNOFlt", diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/import-paths-index.json b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/import-paths-index.json index 2d45950..697ba84 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/import-paths-index.json +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/import-paths-index.json @@ -1,14 +1,14 @@ { "meta": { - "version": "1.4.1", - "sourceVersion": "1.4.1", - "generatedAt": "2026-07-01", + "version": "1.4.2", + "sourceVersion": "1.4.2", + "generatedAt": "2026-08-07", "description": "Import path mappings for Mezzanine UI components and utilities" }, "packages": { "@mezzanine-ui/react": { "meta": { - "version": "1.4.1", + "version": "1.4.2", "exportPath": "packages/react/src/index.ts" }, "exports": { @@ -350,4 +350,4 @@ } } } -} +} \ No newline at end of file diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/token-values.json b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/token-values.json index 4bbe07f..e11b942 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/token-values.json +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/cache/token-values.json @@ -1,6 +1,6 @@ { - "version": "1.4.1", - "lastUpdated": "2026-07-01T08:39:33Z", + "version": "1.4.2", + "lastUpdated": "2026-08-07T05:03:03Z", "source": "packages/system/src typings + DESIGN_TOKENS.md", "colors": { "primitives": { @@ -371,4 +371,4 @@ "default", "compact" ] -} +} \ No newline at end of file diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/COMPONENTS.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/COMPONENTS.md index 3e709ae..23f5c16 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/COMPONENTS.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/COMPONENTS.md @@ -2,7 +2,7 @@ Complete component API reference documentation. -> Baseline: `@mezzanine-ui/react` `1.4.1` · `@mezzanine-ui/core` `1.1.0` · `@mezzanine-ui/system` / `@mezzanine-ui/icons` `1.0.2`. Last verified: 2026-07-01. +> Baseline: `@mezzanine-ui/react` `1.4.2` · `@mezzanine-ui/core` `1.1.0` · `@mezzanine-ui/system` / `@mezzanine-ui/icons` `1.0.2`. Last verified: 2026-08-07. ## Table of Contents diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/DESIGN_TOKENS.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/DESIGN_TOKENS.md index 7f7cf18..170a76a 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/DESIGN_TOKENS.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/DESIGN_TOKENS.md @@ -2,7 +2,7 @@ Foundation visual variable definitions for the design system. Mezzanine-UI uses a **Primitives + Semantic** two-layer architecture. -> Baseline: `@mezzanine-ui/react` `1.4.1` · `@mezzanine-ui/core` `1.1.0` · `@mezzanine-ui/system` / `@mezzanine-ui/icons` `1.0.2`. Last verified: 2026-07-01. +> Baseline: `@mezzanine-ui/react` `1.4.2` · `@mezzanine-ui/core` `1.1.0` · `@mezzanine-ui/system` / `@mezzanine-ui/icons` `1.0.2`. Last verified: 2026-08-07. > > Source: [GitHub](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/system/src) diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/FIGMA_MAPPING.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/FIGMA_MAPPING.md index ab37dd1..f871b45 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/FIGMA_MAPPING.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/FIGMA_MAPPING.md @@ -2,7 +2,7 @@ Maps Figma design file components to React code. -> Baseline: `@mezzanine-ui/react` `1.4.1` · `@mezzanine-ui/core` `1.1.0` · `@mezzanine-ui/system` / `@mezzanine-ui/icons` `1.0.2`. Last verified: 2026-07-01. +> Baseline: `@mezzanine-ui/react` `1.4.2` · `@mezzanine-ui/core` `1.1.0` · `@mezzanine-ui/system` / `@mezzanine-ui/icons` `1.0.2`. Last verified: 2026-08-07. ## Table of Contents diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/ICONS.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/ICONS.md index ca1091c..ac7aa8e 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/ICONS.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/ICONS.md @@ -2,7 +2,7 @@ Complete icon library list, based on `@mezzanine-ui/icons` `1.x` (1.0.2). -**Last verified**: 2026-07-01 +**Last verified**: 2026-08-07 > Source: [GitHub](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/icons/src) diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/PATTERNS.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/PATTERNS.md index 4217114..7a2fabe 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/PATTERNS.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/PATTERNS.md @@ -2,7 +2,7 @@ Common UI pattern implementation examples. -> Baseline: `@mezzanine-ui/react` `1.4.1` · `@mezzanine-ui/core` `1.1.0` · `@mezzanine-ui/system` / `@mezzanine-ui/icons` `1.0.2`. Last verified: 2026-07-01. +> Baseline: `@mezzanine-ui/react` `1.4.2` · `@mezzanine-ui/core` `1.1.0` · `@mezzanine-ui/system` / `@mezzanine-ui/icons` `1.0.2`. Last verified: 2026-08-07. ## Table of Contents diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Accordion.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Accordion.md index 6ce0e87..9451d38 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Accordion.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Accordion.md @@ -4,7 +4,7 @@ > > **Storybook**: `Data Display/Accordion` > -> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Accordion) · Verified 1.4.1 (2026-07-01) +> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Accordion) · Verified 1.4.2 (2026-08-07) Collapsible accordion panels for expanding/collapsing content areas. Supports controlled/uncontrolled modes and group management. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/AutoComplete.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/AutoComplete.md index fd4fb67..73f77b9 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/AutoComplete.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/AutoComplete.md @@ -4,7 +4,7 @@ > > **Live Examples**: [View in Storybook](https://storybook.mezzanine-ui.org/react/?path=/docs/data-entry-autocomplete--docs) — 當行為不確定時,Storybook 的互動範例為權威參考。 > -> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/AutoComplete) · Verified 1.4.1 (2026-07-01) +> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/AutoComplete) · Verified 1.4.2 (2026-08-07) Autocomplete component combining input with dropdown menu. Supports search filtering and dynamic option creation. Internally uses `Dropdown` and `SelectTrigger` composition. @@ -37,6 +37,7 @@ type AutoCompleteProps = AutoCompleteSingleProps | AutoCompleteMultipleProps; | ---------------------------- | ------------------------------------------------------ | ---------------------- | ---------------------------------------- | | `addable` | `boolean` | `false` | Whether options can be dynamically added | | `asyncData` | `boolean` | `false` | Whether data is async | +| `caseSensitive` | `boolean` | `false` | Whether option matching respects letter casing. When `false` (default), typed text matches options regardless of case (e.g. `colorado` matches `Colorado`). Applies to both option filtering and the duplicate check used by `addable` mode. | | `clearSearchText` | `boolean` | `true` | Whether to clear search text on blur. When false, typed text persists after blur. In single mode, a clearable icon appears if user typed without selecting. | | `createSeparators` | `string[]` | `[',', '+', '\n']` | Separator characters for creating options | | `createActionText` | `(text: string) => string` | - | Custom create button text function | @@ -316,6 +317,10 @@ interface SelectValue { // Input selector mode type AutoCompleteSelector = 'input' | 'selection'; + +// Option name comparison helpers (used internally for filtering + addable duplicate detection) +function normalizeOptionName(name: string, caseSensitive?: boolean): string; +function isSameOptionName(a: string, b: string, caseSensitive?: boolean): boolean; ``` --- @@ -448,3 +453,4 @@ const handleSearch = async (input) => { 3. **loadingPosition 預設值**:預設為 'bottom' 4. **overflowStrategy 預設值**:多重模式預設為 'counter'(顯示 "+N"),若需顯示所有標籤改為 'wrap' 5. **新增 onRemoveCreated**:允許在模糊時自動清理未選中的已建立項目 +6. **caseSensitive 預設值(1.4.2 新增)**:預設為 `false`,即選項比對(含 `addable` 模式的重複偵測)不分大小寫,例如輸入 `colorado` 可比對到選項 `Colorado`。若需嚴格區分大小寫比對,設定 `caseSensitive={true}` diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Calendar.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Calendar.md index 2d6bb15..8c9992b 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Calendar.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Calendar.md @@ -6,7 +6,7 @@ > > **Live Examples**: [View in Storybook](https://storybook.mezzanine-ui.org/react/?path=/docs/internal-calendar--docs) — 當行為不確定時,Storybook 的互動範例為權威參考。 > -> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Calendar) · Verified 1.4.1 (2026-07-01) +> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Calendar) · Verified 1.4.2 (2026-08-07) Calendar component for displaying and selecting dates. Requires `CalendarConfigProvider` (which provides `CalendarContext`). Supports six modes: day, week, month, year, quarter, and half-year. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Cascader.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Cascader.md index 100b40a..54b5718 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Cascader.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Cascader.md @@ -183,7 +183,7 @@ When the selected path is too long to fit in the trigger input width, the Cascad **Hover Tooltip**: When collapsed, hovering over the trigger displays a tooltip showing the full path with all intermediate items. -**Scrollable Panels**: Each `CascaderPanel` column internally wraps its option list with the Mezzanine `Scrollbar` component, which activates custom scrolling styles when `maxHeight` (passed from `menuMaxHeight`) is set and options exceed the available height. +**Scrollable Panels**: Each `CascaderPanel` column internally wraps its option list with the Mezzanine `Scrollbar` component (internal, deprecated in 1.4.1), which activates custom scrolling styles when `maxHeight` (passed from `menuMaxHeight`) is set and options exceed the available height. This is an internal implementation detail — scrolling behavior is configured exclusively through the props documented above. ### Example with Long Path diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Checkbox.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Checkbox.md index f95f6aa..beca853 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Checkbox.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Checkbox.md @@ -4,7 +4,7 @@ > > **Storybook**: `Data Entry/Checkbox` > -> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Checkbox) · Verified 1.4.1 (2026-07-01) +> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Checkbox) · Verified 1.4.2 (2026-08-07) A checkbox component supporting standalone or group usage, with multiple modes. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/ClearActions.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/ClearActions.md index 382091e..1db5d2d 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/ClearActions.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/ClearActions.md @@ -1,13 +1,13 @@ # ClearActions Component -> ⚠️ **REMOVED from the public API in 1.4.1** (deprecated in 1.1.0) — This component is no longer exported from the `@mezzanine-ui/react` package entrypoint. -> It **still exists in the source tree** (`packages/react/src/ClearActions`) and is used internally by Modal, Drawer, Tag, TextField, and InlineMessage — only the public export was dropped. It was never part of the intended public API, so do not import it directly in application code. +> ⚠️ **REMOVED from public API in 1.4.1** — This component is no longer exported from `@mezzanine-ui/react`, though the source still exists in the tree and remains used internally by Modal, Drawer, Tag, TextField, and InlineMessage. +> No direct public replacement is available. Use composition patterns to implement close buttons instead. > **Category**: Internal (removed) > > **Storybook**: `Internal/ClearActions` (removed in 1.4.1) > -> **Source**: [GitHub Source](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/ClearActions) · **Removed** in 1.4.1 (2026-07-01) +> **Source**: [GitHub Source](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/ClearActions) · **Deprecated** in 1.4.1 (2026-07-01) Clear/close button component providing a unified close button style. Used for close functionality in Modal, Drawer, Tag, and other components. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/ContentHeader.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/ContentHeader.md index 111cff1..cb9aafe 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/ContentHeader.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/ContentHeader.md @@ -1,14 +1,15 @@ # ContentHeader Component -> ⚠️ **REMOVED in 1.4.1** (deprecated in 1.1.0) — This component is no longer exported from the `@mezzanine-ui/react` main entry. Import it via the sub-path `@mezzanine-ui/react/ContentHeader` if still needed. -> -> **⚠️ Important Caveat**: Although removed, ContentHeader **remains internally required** by [`Section`](Section.md) (via `contentHeader` prop) and [`PageHeader`](PageHeader.md) (as a required child). Both components enforce this via runtime type validation. Until a replacement API is introduced, continue using ContentHeader via sub-path import when composing pages with Section or PageHeader. Do not use ContentHeader standalone in new code. +> ⚠️ **DEPRECATED in 1.4.1** — This component is no longer exported from `@mezzanine-ui/react`. +> Import via sub-path `@mezzanine-ui/react/ContentHeader` when needed with Section or PageHeader (still required internally). + +> **⚠️ Important Caveat**: Although removed from main exports, ContentHeader **remains internally required** by [`Section`](Section.md) (via `contentHeader` prop) and [`PageHeader`](PageHeader.md) (as a required child). Both components enforce this via runtime type validation. Until a replacement API is introduced, continue using ContentHeader via sub-path import when composing pages with Section or PageHeader. Do not use ContentHeader standalone in new code. > **Category**: Internal (removed in 1.4.1) > > **Storybook**: `Internal/ContentHeader` (removed in 1.4.1) > -> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/ContentHeader) · **Removed** in 1.4.1 (2026-07-01) +> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/ContentHeader) · **Deprecated** in 1.4.1 (2026-07-01) Content header component for displaying title, description, filters, and action buttons. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/DateRangePicker.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/DateRangePicker.md index 695377d..913e62e 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/DateRangePicker.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/DateRangePicker.md @@ -4,7 +4,7 @@ > > **Live Examples**: [View in Storybook](https://storybook.mezzanine-ui.org/react/?path=/docs/data-entry-daterangepicker--docs) — 當行為不確定時,Storybook 的互動範例為權威參考。 > -> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/DateRangePicker) · Verified 1.4.1 (2026-07-01) +> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/DateRangePicker) · Verified 1.4.2 (2026-08-07) A date range picker for selecting start and end dates. Must be used with `CalendarContext`. Internally composed of `DateRangePickerCalendar` and `RangePickerTrigger`. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/DateTimePicker.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/DateTimePicker.md index 0fee5ad..20f2542 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/DateTimePicker.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/DateTimePicker.md @@ -4,7 +4,7 @@ > > **Live Examples**: [View in Storybook](https://storybook.mezzanine-ui.org/react/?path=/docs/data-entry-datetimepicker--docs) — 當行為不確定時,Storybook 的互動範例為權威參考。 > -> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/DateTimePicker) · Verified 1.4.1 (2026-07-01) +> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/DateTimePicker) · Verified 1.4.2 (2026-08-07) A date-time picker that allows selecting both date and time simultaneously. Must be used with `CalendarContext`. Internally composed of `DatePickerCalendar`, `TimePickerPanel`, and `PickerTriggerWithSeparator`. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Drawer.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Drawer.md index 7021055..0eebfd5 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Drawer.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Drawer.md @@ -4,7 +4,7 @@ > > **Storybook**: `Navigation/Drawer` > -> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Drawer) · Verified 1.4.1 (2026-07-01) +> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Drawer) · Verified 1.4.2 (2026-08-07) A drawer component that slides out from the edge of the page, used to display detailed information or forms. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Dropdown.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Dropdown.md index 8e01b67..b64a324 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Dropdown.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Dropdown.md @@ -4,7 +4,7 @@ > > **Storybook**: `Internal/Dropdown` > -> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Dropdown) · Verified 1.4.1 (2026-07-01) +> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Dropdown) · Verified 1.4.2 (2026-08-07) A low-level dropdown component for displaying option lists. Typically used as the internal implementation of higher-level components like Select and AutoComplete, but can also be used independently with Button or Input. Supports flat list, grouped, and tree structures, with built-in scrolling, loading states, keyboard shortcuts, and action buttons. @@ -537,6 +537,7 @@ function FlippingDropdown() { ## Behavior Notes - **Empty status with `loadingPosition='bottom'`**: When `loadingPosition='bottom'` is set and `status='empty'`, the empty status always renders as full-area regardless of `loadingPosition`, ensuring it is visible. +- **Correct option selection in filtered lists (v1.4.2+)**: The listbox root now prevents the `mousedown` default so the trigger keeps focus while an option is pressed (the header region is excluded so an `inputPosition="inside"` input stays clickable). This fixes a race where consumers resetting search text on blur (e.g. `AutoComplete`) could re-render the filtered option list under the cursor between `mousedown` and `click`, causing the wrong option — or none — to be selected. --- diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/MultipleDatePicker.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/MultipleDatePicker.md index 7065a69..8c84358 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/MultipleDatePicker.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/MultipleDatePicker.md @@ -4,7 +4,7 @@ > > **Live Examples**: [View in Storybook](https://storybook.mezzanine-ui.org/react/?path=/story/data-entry-multipledatepicker--playground) — 當行為不確定時,Storybook 的互動範例為權威參考。 > -> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/MultipleDatePicker) · Verified 1.4.1 (2026-07-01) +> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/MultipleDatePicker) · Verified 1.4.2 (2026-08-07) A multiple date picker that allows selecting multiple dates from a calendar, displaying selected dates as Tags. Requires manual confirmation before triggering onChange. Must be used with `CalendarContext`. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/PageHeader.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/PageHeader.md index eb9f83f..3661f6d 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/PageHeader.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/PageHeader.md @@ -44,6 +44,8 @@ type PageHeaderProps = NativeElementPropsWithoutKeyAndRef<'header'> & { --- +> **Note**: The `ContentHeader` component is deprecated in 1.4.1 but remains internally required by PageHeader. Import it via `@mezzanine-ui/react/ContentHeader` sub-path. See [ContentHeader.md](ContentHeader.md) for migration guidance. + ## Children Validation (重要 — 過濾並警告) PageHeader 在 runtime 透過 `flattenChildren` + `isValidElement` + `child.type === Breadcrumb || child.type === ContentHeader` 檢查每個直接子元素。**任何不在白名單內的元件都會被丟棄並 console.warn**: diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Pagination.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Pagination.md index b71e337..5be6113 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Pagination.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Pagination.md @@ -4,7 +4,7 @@ > > **Storybook**: `Data Display/Pagination` > -> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Pagination) · Verified 1.4.1 (2026-07-01) +> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Pagination) · Verified 1.4.2 (2026-08-07) Pagination component for paginated navigation of long data lists. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Scrollbar.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Scrollbar.md index 5faee7c..dc90e5c 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Scrollbar.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Scrollbar.md @@ -1,13 +1,13 @@ # Scrollbar Component -> ⚠️ **REMOVED from the public API in 1.4.1** (deprecated in 1.1.0) — This component is no longer exported from the `@mezzanine-ui/react` package entrypoint. -> It **still exists in the source tree** (`packages/react/src/Scrollbar`, based on OverlayScrollbars) and is used internally by Dropdown and Cascader panels — only the public export was dropped. It was never part of the intended public API, so do not import it directly in application code. +> ⚠️ **REMOVED from public API in 1.4.1** — This component is no longer exported from `@mezzanine-ui/react`, though the source still exists in the tree and remains used internally by Dropdown and Cascader. +> Use native browser scrolling or CSS custom scrollbar styles instead for new code. > **Category**: Internal (removed) > > **Storybook**: `Internal/Scrollbar` (removed in 1.4.1) > -> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Scrollbar) · **Removed** in 1.4.1 (2026-07-01) +> **Source**: [GitHub Source Code](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Scrollbar) · **Deprecated** in 1.4.1 (2026-07-01) Custom scrollbar component providing consistent scrollbar styles across browsers. Based on OverlayScrollbars. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/SelectionCard.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/SelectionCard.md index ad553fa..b07e5d3 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/SelectionCard.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/SelectionCard.md @@ -4,7 +4,7 @@ > > **Storybook**: `Data Entry/SelectionCard` > -> **Source Verification**: [GitHub Source](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/SelectionCard) · Verified 1.4.1 (2026-07-01) +> **Source Verification**: [GitHub Source](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/SelectionCard) · Verified 1.4.2 (2026-08-07) SelectionCard component providing selection items with images or icons. Supports single-select (radio) and multi-select (checkbox) modes. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Switch.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Switch.md index 59a9aeb..8efdc87 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Switch.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Switch.md @@ -1,13 +1,13 @@ # Switch Component -> ⚠️ **REMOVED in 1.4.1** (deprecated in 1.1.0) — This component is no longer exported from `@mezzanine-ui/react`. -> **Use [Toggle](Toggle.md) instead.** The component was replaced by Toggle; import and use Toggle directly. +> ⚠️ **DEPRECATED in 1.4.1** — This component is no longer exported from `@mezzanine-ui/react`. +> Use [Toggle](Toggle.md) instead. > **Category**: Data Entry (removed) > > **Storybook**: `Data Entry/Toggle` (successor component) > -> **Source**: [GitHub Source](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Toggle) · **Removed** in 1.4.1 (2026-07-01) +> **Source**: [GitHub Source](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Toggle) · **Deprecated** in 1.4.1 (2026-07-01) Toggle switch component for switching between two states (on/off). **The `Switch` component was renamed to `Toggle` in 1.0.0.** This document is retained for migration reference only — all new code should import and use `Toggle` directly. See [Toggle.md](Toggle.md) for the canonical 1.0.0 API. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Upload.md b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Upload.md index e307f57..2b357c1 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Upload.md +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/references/components/Upload.md @@ -4,7 +4,7 @@ > > **Storybook**: `Data Entry/Upload` > -> **Source Verification**: [GitHub Source](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Upload) | Verified 1.4.1 (2026-07-01) +> **Source Verification**: [GitHub Source](https://github.com/Mezzanine-UI/mezzanine/tree/main/packages/react/src/Upload) | Verified 1.4.2 (2026-08-07) File upload component with support for multiple display modes and upload status management. diff --git a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/scripts/upgrade-manifest.json b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/scripts/upgrade-manifest.json index 1cafcef..7e4643e 100644 --- a/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/scripts/upgrade-manifest.json +++ b/plugins/mezzanine-ui/skills/using-mezzanine-ui-react/scripts/upgrade-manifest.json @@ -3,20 +3,20 @@ "framework": "react", "branch": "main", "packagePath": "packages/react/src", - "fromVersion": "1.1.0", - "toVersion": "1.4.1", - "generatedAt": "2026-07-01T08:39:33Z", + "fromVersion": "1.4.1", + "toVersion": "1.4.2", + "generatedAt": "2026-08-07T05:03:03Z", "description": "Mezzanine-UI upgrade work manifest. Consume this file to drive .md documentation updates." }, "summary": { "componentsAdded": 0, "componentsRemoved": 4, "componentsUnchanged": 65, - "componentsWithPropChanges": 12, + "componentsWithPropChanges": 11, "componentsWithAngularChanges": 0, - "releasesCovered": 5, - "workItemsTotal": 16, - "workItemsHigh": 16, + "releasesCovered": 1, + "workItemsTotal": 15, + "workItemsHigh": 15, "workItemsMedium": 0, "workItemsLow": 0 }, @@ -98,39 +98,11 @@ }, "changelog": [ { - "tag": "@mezzanine-ui/react@1.4.1", - "name": "@mezzanine-ui/react@1.4.1", - "published": "2026-06-22T07:24:19Z", - "url": "https://github.com/Mezzanine-UI/mezzanine/releases/tag/%40mezzanine-ui/react%401.4.1", - "body": "## `@mezzanine-ui/react@1.4.1`\r\n\r\n> Patch release fixing two bugs surfaced by React/Angular DOM parity checks: `Select`'s `error` prop was silently ignored, and a `Navigation` leaf whose only child is a `Badge` was misclassified as an expandable group.\r\n\r\n---\r\n\r\n### 🐛 Bug Fixes\r\n\r\n- **`Select`** — The `error` prop is now actually applied to the trigger. `SelectTrigger` forwarded `error={type === 'error'}` to `TextField`, but `type` is a `DropdownType` (`'default'` / `'tree'` / …) that is never `'error'`, so the `error` prop passed to `Select` was silently dropped and error-state selects never received the `mzn-text-field--error` class. The trigger now honours the real `error` prop (the legacy `type === 'error'` fallback is kept).\r\n- **`Navigation`** — A `NavigationOption` whose only child is a `Badge` is no longer misclassified as an expandable group. Previously every group-vs-leaf decision keyed off the raw `children` prop, so a leaf-with-badge rendered a group chevron, downgraded from an anchor to a plain `
` (losing `href` / router navigation), mounted an empty `Collapse`, and lost its `--basic` leaf styling. Those decisions now key off the actual sub-option count (`items.length`), and the badge still renders inline. Groups with real `NavigationOption` children are unaffected.\r\n\r\n---\r\n\r\n**Compatibility**: requires `@mezzanine-ui/core` ≥ 1.1.0, `@mezzanine-ui/system` ≥ 1.0.2, `@mezzanine-ui/icons` ≥ 1.0.2\r\n\r\n**Full Changelog**: https://github.com/Mezzanine-UI/mezzanine/compare/@mezzanine-ui/react@1.4.0...@mezzanine-ui/react@1.4.1" - }, - { - "tag": "@mezzanine-ui/react@1.4.0", - "name": "@mezzanine-ui/react@1.4.0", - "published": "2026-06-18T03:18:13Z", - "url": "https://github.com/Mezzanine-UI/mezzanine/releases/tag/%40mezzanine-ui/react%401.4.0", - "body": "## `@mezzanine-ui/react@1.4.0`\r\n\r\n> Minor release rounding out viewport-aware menu flipping across the popper family: `Select` gains an opt-in `flip` prop, `Dropdown`'s flip now animates from the correct side, and `Popper` exposes an `onPlacementChange` callback.\r\n\r\n---\r\n\r\n### 🚀 Improvements\r\n\r\n- **`Select`** — New opt-in `flip?: boolean` prop (default `false`), forwarded to the underlying `Dropdown`. When enabled, the menu flips above the input near the bottom of the viewport while keeping its width and horizontal alignment with the anchor. A new story demonstrates the behaviour near the viewport bottom. Default `false` preserves the existing fixed `bottom-start` placement for current call sites.\r\n- **`Dropdown`** — When `flip` is enabled, the menu now flips along the **main axis only** (bottom ↔ top) using `fallbackAxisSideDirection: 'end'` with no shift/cross-axis movement, so a `sameWidth` menu keeps its horizontal alignment with the anchor. The enter transition now follows the placement floating-ui actually resolves to, so after a flip the menu slides in from the **correct side** instead of the static pre-flip side. (Builds on the `flip` prop added in `1.2.0`.)\r\n- **`Popper`** — New `onPlacementChange` callback fires with the placement resolved by floating-ui, including middleware-driven flips. This lets consumers react to the side a popper actually settles on — e.g. adjusting an enter-transition direction after a flip.\r\n\r\n---\r\n\r\n**Compatibility**: requires `@mezzanine-ui/core` ≥ 1.1.0, `@mezzanine-ui/system` ≥ 1.0.2, `@mezzanine-ui/icons` ≥ 1.0.2\r\n\r\n**Full Changelog**: https://github.com/Mezzanine-UI/mezzanine/compare/@mezzanine-ui/react@1.3.1...@mezzanine-ui/react@1.4.0" - }, - { - "tag": "@mezzanine-ui/react@1.3.1", - "name": "@mezzanine-ui/react@1.3.1", - "published": "2026-06-11T07:25:40Z", - "url": "https://github.com/Mezzanine-UI/mezzanine/releases/tag/%40mezzanine-ui/react%401.3.1", - "body": "## `@mezzanine-ui/react@1.3.1`\r\n\r\n> Patch release: silences a spurious React 18 dev-mode `ref` warning emitted by every `Select` / `AutoComplete` trigger. No behaviour change — purely removes the console noise.\r\n\r\n---\r\n\r\n### 🐛 Bug Fixes\r\n\r\n- **`Dropdown` / `Select` / `AutoComplete`** — Fixes a `` Warning: SelectTrigger: `ref` is not a prop `` message that fired on every trigger render under **React 18 in dev mode**. `Dropdown`'s internal `getElementRef()` read `element.props.ref` before falling back to `element.ref`; on React 18, `props.ref` is a dev-only warning getter installed whenever an element was created with a `ref`, so simply touching it logged the warning. Functionality was never affected (the getter returns `undefined` and the code already fell back correctly), but the noise appeared on any React 18 consumer. The ref is now read from where it actually lives per React version — `element.ref` on React 18, `props.ref` on React 19 — by detecting React's `isReactWarning` getter flag, mirroring the approach used in `radix-ui/primitives`. The helper moved to `utils/getElementRef` with unit tests covering React 18/19 dev and production element shapes.\r\n\r\n### 🏗 Internal\r\n\r\n- **`Dropdown`** — Removes a deprecated `fullWidth` prop usage from the `AutoCompleteExample` story.\r\n\r\n---\r\n\r\n**Compatibility**: requires `@mezzanine-ui/core` ≥ 1.1.0, `@mezzanine-ui/system` ≥ 1.0.2, `@mezzanine-ui/icons` ≥ 1.0.2\r\n\r\n**Full Changelog**: https://github.com/Mezzanine-UI/mezzanine/compare/@mezzanine-ui/react@1.3.0...@mezzanine-ui/react@1.3.1" - }, - { - "tag": "@mezzanine-ui/react@1.3.0", - "name": "@mezzanine-ui/react@1.3.0", - "published": "2026-05-22T06:44:54Z", - "url": "https://github.com/Mezzanine-UI/mezzanine/releases/tag/%40mezzanine-ui/react%401.3.0", - "body": "## `@mezzanine-ui/react@1.3.0`\r\n\r\n> Improves the column-resize UX on `Table`: a middle column now borrows space from the rightmost column first, keeping intermediate columns stable. This is a noticeable behaviour change at the interaction layer — QA may want to re-verify wide-table layouts before rolling out.\r\n\r\n---\r\n\r\n### 🚀 Improvements\r\n\r\n- **`Table`** — Reworks the resize donor strategy. Dragging a column edge now compensates against the **rightmost column** first, leaving every column between the drag target and the last column at their current widths. Only when the rightmost column reaches its `minWidth` does the algorithm fall back to the adjacent (`N+1`) column as donor. The previous behaviour — always borrowing from `N+1` — left the rightmost slack untouched until the user manually grew the last column, which felt unnecessary in wide tables with many narrow columns.\r\n\r\n Each drag frame writes all three involved columns (`current`, `last`, `N+1`) so the return drag restores widths in LIFO order — i.e. when you drag a column wider and then drag it back narrower, the column that most recently donated space is the first to reclaim it, with no residual visual drift.\r\n\r\n A refreshed `Resizable` Storybook story (six narrow columns plus a wide `Address` rightmost donor) demonstrates the new behaviour. No public API changes — existing `columns` configs and `minWidth` / `maxWidth` values keep working identically.\r\n\r\n---\r\n\r\n**Compatibility**: requires `@mezzanine-ui/core` ≥ 1.1.0, `@mezzanine-ui/system` ≥ 1.0.2, `@mezzanine-ui/icons` ≥ 1.0.2\r\n\r\n**Full Changelog**: https://github.com/Mezzanine-UI/mezzanine/compare/@mezzanine-ui/react@1.2.0...@mezzanine-ui/react@1.3.0" - }, - { - "tag": "@mezzanine-ui/react@1.2.0", - "name": "@mezzanine-ui/react@1.2.0", - "published": "2026-05-07T08:36:10Z", - "url": "https://github.com/Mezzanine-UI/mezzanine/releases/tag/%40mezzanine-ui/react%401.2.0", - "body": "## `@mezzanine-ui/react@1.2.0`\r\n\r\n> Minor release built around three themes: a new JS-native **`Temporal`** calendar adapter (no third-party date library needed on modern runtimes), an opt-in **`flip`** prop on `Dropdown` for viewport-aware placement, and **CLDR-correct week math** in the Moment / Day.js adapters for non-ISO Monday-first locales — see Bug Fixes.\r\n\r\n---\r\n\r\n### 🚀 Improvements\r\n\r\n- **`CalendarConfigProviderTemporal`** — New tree-shake-friendly entry at `@mezzanine-ui/react/temporal`, mirroring the existing `dayjs` / `moment` / `luxon` providers. Wraps the JS-native `Temporal` API (ES2026, Stage 4) so apps on Chrome 144+ / Firefox 139+ / Edge 144+ can drop their date library entirely. On older runtimes, register `@js-temporal/polyfill` once (Vite/CRA: at app entry; Next.js App Router: inside a Client Component) — `Calendar.mdx` and `COMPONENTS.md` document both setup patterns *(via `core@1.1.0`)*.\r\n\r\n ```tsx\r\n import { CalendarConfigProviderTemporal } from '@mezzanine-ui/react/temporal';\r\n\r\n \r\n \r\n \r\n ```\r\n\r\n- **`Dropdown`** — New opt-in `flip?: boolean` prop (default `false`). When enabled, the dropdown automatically flips to the opposite side (`bottom-start` → `top-start`) if it would overflow the viewport, using floating-ui's `flip` middleware with `fallbackStrategy: 'bestFit'` and `padding: 8`. Off by default to preserve existing placement behaviour for current call sites — opt in per dropdown that needs it.\r\n- **`Pagination`** — The page-size dropdown now sets `flip` so the menu pops upward when the table sits at the bottom of the viewport. Previously the menu would render below the trigger and clip against the viewport edge.\r\n- **`Calendar` documentation** — `Calendar.mdx` rewrites the \"Choosing a date adapter\" section as a four-row table covering Moment / Day.js / Luxon / Temporal, including separate Vite/CRA and Next.js App Router polyfill setup snippets. The multi-adapter Storybook playground also gains a Temporal column for visual parity verification.\r\n\r\n### 🐛 Bug Fixes\r\n\r\n- **`Calendar` / `DatePicker` / `DateRangePicker` / `MultipleDatePicker`** — Day.js and Moment adapters now compute `getWeek` / `getWeekYear` / `isSameWeek` correctly for **non-ISO Monday-first locales** (`en-AU`, `en-NZ`, `ro-RO`, `sl-SI`, `hr-HR`, `tr-TR`, `uk-UA`, `lv-LV`, `zh-CN`, etc.). Previously these locales were treated as ISO because they're Monday-first, but per CLDR they require `minimalDays=1` (not ISO's `4`). The adapters now check both axes via a stricter `usesISOWeekRules` helper. Apps targeting these locales should re-verify any UI showing week numbers — `2027-01-01` in `en-AU` may now show as `W1` instead of `W53` *(via `core@1.1.0`)*.\r\n- **`Calendar`** — Day.js and Moment adapters now apply the locale to the dayjs/moment instance before week-related operations (`.week()`, `.startOf('week')`, `.isSame(other, 'week')`). Without an explicit `.locale()` call, both libraries fell back to the global default (typically Sunday-first English), producing wrong week boundaries for non-default locales. This was a latent bug previously masked because all Sunday-first locales agree with the default and all Monday-first locales used to take the ISO fast-path *(via `core@1.1.0`)*.\r\n- **`Calendar`** — Day.js adapter's `getWeekYear` now matches `moment.weekYear()` at year-end. Day.js has no native locale `.weekYear()`, so the previous code returned `.year()` (calendar year), diverging from Moment for cases like `2025-12-28` in `en-US` (Moment: `2026`, Day.js: `2025`). The adapter now applies the same boundary heuristic Moment uses internally *(via `core@1.1.0`)*.\r\n\r\n---\r\n\r\n**Compatibility**: requires `@mezzanine-ui/core` ≥ 1.1.0, `@mezzanine-ui/system` ≥ 1.0.2, `@mezzanine-ui/icons` ≥ 1.0.2. The `Temporal` adapter additionally requires either a runtime with native `Temporal` support (Chrome 144+, Firefox 139+, Edge 144+) or `@js-temporal/polyfill` ≥ 0.5 registered at startup.\r\n\r\n**Full Changelog**: https://github.com/Mezzanine-UI/mezzanine/compare/@mezzanine-ui/react@1.1.0...@mezzanine-ui/react@1.2.0" + "tag": "@mezzanine-ui/react@1.4.2", + "name": "@mezzanine-ui/react@1.4.2", + "published": "2026-07-21T03:10:36Z", + "url": "https://github.com/Mezzanine-UI/mezzanine/releases/tag/%40mezzanine-ui/react%401.4.2", + "body": "## `@mezzanine-ui/react@1.4.2`\r\n\r\n> Patch release fixing `AutoComplete` option matching (now case-insensitive by default, aligning with Angular) and a `Dropdown` focus race that could select the wrong option in a filtered list.\r\n\r\n---\r\n\r\n### 🐛 Bug Fixes\r\n\r\n- **`AutoComplete`** — Option filtering is now **case-insensitive by default**. The filter built its `RegExp` without the `i` flag, so typing `vir` matched nothing even though `Virginia` was in the list. The Angular `AutoComplete` has always lowercased both sides, making React the outlier — this brings them back in line. The `addable` duplicate check runs through the same rule (via a new `isSameOptionName` helper), so if typing `colorado` surfaces `Colorado`, the create action no longer offers to create a duplicate. A new `caseSensitive` prop (default `false`) opts back into the previous case-sensitive matching for consumers that intentionally distinguish items by casing.\r\n- **`AutoComplete`** — The `caseSensitive` flag is now honoured by bulk-create dedup. `processBulkCreate` and `getPendingCreateList` hard-coded `toLowerCase()` when deduping pasted input against selected values and existing options, so with `caseSensitive` enabled a differently-cased entry (e.g. pasting `Apple` while a lowercase `apple` option exists) was silently dropped. Both dedup checks now route through a shared `normalizeOptionName` helper that respects the flag.\r\n- **`Dropdown` / `AutoComplete`** — Pressing an option no longer selects the wrong item in a filtered list. Option rows fire selection on `click` (mouseup), but nothing prevented the `mousedown` default, so pressing an option blurred the trigger input first. Consumers that reset search text on blur (notably `AutoComplete`) cleared the filter synchronously, re-rendering the full option list under the cursor — the following `click` then landed on whichever option had shifted into that row, selecting the wrong item or none. The listbox root now prevents the `mousedown` default so focus stays on the trigger; the header region is excluded so an `inputPosition=\"inside\"` input stays clickable.\r\n\r\n---\r\n\r\n**Compatibility**: requires `@mezzanine-ui/core` ≥ 1.1.0, `@mezzanine-ui/system` ≥ 1.0.2, `@mezzanine-ui/icons` ≥ 1.0.2\r\n\r\n**Full Changelog**: https://github.com/Mezzanine-UI/mezzanine/compare/@mezzanine-ui/react@1.4.1...@mezzanine-ui/react@1.4.2" } ], "propsDiff": [ @@ -258,6 +230,7 @@ "customWidth", "emptyIcon", "emptyText", + "flip", "globalPortal", "listboxId", "listboxLabel", @@ -323,15 +296,6 @@ "total" ] }, - { - "component": "Popper", - "propsAdded": [ - "onPlacementChange" - ], - "propsRemoved": [ - "" - ] - }, { "component": "SelectionCard", "propsAdded": [ @@ -534,7 +498,7 @@ { "component": "Dropdown", "action": "UPDATE_PROPS", - "reason": "Props added: ; Props removed: computed, customWidth, emptyIcon, emptyText, globalPortal, listboxId, listboxLabel, loadingPosition, loadingText, maxHeight, minWidth, onActionCancel, onActionClear, onActionConfirm, onActionCustom, onClose, onItemHover, onLeaveBottom, onOpen, onReachBottom, onScroll, onSelect, onVisibilityChange, open, options, placement, sameWidth, scrollbarDefer, scrollbarDisabled, scrollbarMaxWidth, scrollbarOptions, showActionShowTopBar, showDropdownActions, status, target, toggleCheckedOnClick, type, zIndex", + "reason": "Props added: ; Props removed: computed, customWidth, emptyIcon, emptyText, flip, globalPortal, listboxId, listboxLabel, loadingPosition, loadingText, maxHeight, minWidth, onActionCancel, onActionClear, onActionConfirm, onActionCustom, onClose, onItemHover, onLeaveBottom, onOpen, onReachBottom, onScroll, onSelect, onVisibilityChange, open, options, placement, sameWidth, scrollbarDefer, scrollbarDisabled, scrollbarMaxWidth, scrollbarOptions, showActionShowTopBar, showDropdownActions, status, target, toggleCheckedOnClick, type, zIndex", "priority": "HIGH", "propsAdded": [ "" @@ -544,6 +508,7 @@ "customWidth", "emptyIcon", "emptyText", + "flip", "globalPortal", "listboxId", "listboxLabel", @@ -615,18 +580,6 @@ "total" ] }, - { - "component": "Popper", - "action": "UPDATE_PROPS", - "reason": "Props added: onPlacementChange; Props removed: ", - "priority": "HIGH", - "propsAdded": [ - "onPlacementChange" - ], - "propsRemoved": [ - "" - ] - }, { "component": "SelectionCard", "action": "UPDATE_PROPS", From a82ae4454bedf67e43443a6c4fe7562b4e9cbaad Mon Sep 17 00:00:00 2001 From: Kai-Chieh Yang Date: Fri, 7 Aug 2026 13:26:41 +0800 Subject: [PATCH 2/2] chore(mezzanine-ui): bump version to 0.4.5 Patch bump for the react skill content sync in the prior commit. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01UnZ9za8VqPotcg8S7vc6ve --- plugins/mezzanine-ui/.claude-plugin/plugin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/mezzanine-ui/.claude-plugin/plugin.json b/plugins/mezzanine-ui/.claude-plugin/plugin.json index 746d155..4e88254 100644 --- a/plugins/mezzanine-ui/.claude-plugin/plugin.json +++ b/plugins/mezzanine-ui/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "mezzanine-ui", "description": "Mezzanine-UI design system skills for React/Next.js and Angular 21+. Source-verified component API docs (71 components each), design tokens, DI services, ControlValueAccessor/ReactiveForms patterns, and a /sync-mezzanine-ui orchestrator that refreshes skill content from the mezzanine monorepo.", - "version": "0.4.4", + "version": "0.4.5", "license": "MIT", "keywords": [ "mezzanine-ui",