Skip to content

feat(components): DLT-3159 enforce positive boolean props#1198

Merged
Brad Paugh (braddialpad) merged 3 commits intonextfrom
DLT-3159
Apr 15, 2026
Merged

feat(components): DLT-3159 enforce positive boolean props#1198
Brad Paugh (braddialpad) merged 3 commits intonextfrom
DLT-3159

Conversation

@braddialpad
Copy link
Copy Markdown
Contributor

@braddialpad Brad Paugh (braddialpad) commented Apr 14, 2026

🛠️ Type Of Change

  • feat

📖 Jira Ticket

DLT-3159

📖 Description

Replaces all negative boolean props with positive equivalents across the component library, recipes, stories, tests, and documentation. No behavior changes — purely a naming refactor.

Renamed props:

Old New Components
hideClose showClose Banner, Notice, NoticeAction, Toast, ToastLayouts, Modal, Chip
hideIcon showIcon Banner, Notice, Toast, ToastLayouts
hideAction showAction Banner, Notice, NoticeAction, Toast, ToastLayouts
hideClear showClear FilterPill
hideEdges showEdges Pagination
hideDivider showDivider SegmentedControl
hideOnClick closeOnClick Popover
preventTyping allowTyping RichTextEditor, MessageInput recipe
hideLinkBubbleMenu showLinkBubbleMenu RichTextEditor, MessageInput recipe
skipHover enableHover CoreScroller
hideActions showActions ContactCentersRow recipe
labelVisible showLabel Input, Combobox, ComboboxWithPopover, ComboboxMultiSelect, Checkbox, Radio, Toggle, SelectMenu

Also updated .claude/rules and .claude/skills to enforce positive prop naming going forward.

📦 Cross-Package Impact

Package Changes
dialtone-vue Prop renames across 20+ components and recipes
combinator Variant configs updated to use new prop names
dialtone-documentation Doc pages, example components, markdown-it-notice plugin

📄 Documentation Artifacts

Artifact Status
Vue source ✅ Updated
Tests ✅ Updated
Storybook stories ✅ Updated
Component docs JSON Will regenerate at build time
VuePress docs ✅ Updated
MCP server data Will regenerate at build time

📝 Checklist

For all PRs:

  • I have ensured no private Dialpad links or info are in the code or pull request description (Dialtone is a public repo!).
  • I have reviewed my changes.
  • I have added all relevant documentation.
  • I have considered the performance impact of my change.

For all Vue changes:

  • I have added / updated unit tests.
  • I have validated components with a screen reader.
  • I have validated components keyboard navigation.

Refactors component library to use positive boolean prop names instead of negative ones (e.g., hideCloseshowClose, labelVisibleshowLabel). Applies naming convention across 20+ components, recipes, documentation, and tests. No functional behavior changes; purely a naming standardization to improve API clarity and enforce positive polarity conventions.

Replace all negative boolean props (hideX, preventX, skipX, labelVisible)
with positive equivalents (showX, allowX, enableX, showLabel) across all
components, recipes, stories, tests, and documentation.
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 14, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Central YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: f9c6e631-690b-4482-b286-c9df57b01308

📥 Commits

Reviewing files that changed from the base of the PR and between 75df16f and 1ba0b11.

📒 Files selected for processing (105)
  • .claude/rules/documentation-writing.md
  • .claude/rules/vue-components.md
  • .claude/skills/vue-conventions.md
  • apps/dialtone-documentation/docs/.vuepress/baseComponents/CodeExampleTabs.vue
  • apps/dialtone-documentation/docs/.vuepress/exampleComponents/ExampleRichTextEditor.vue
  • apps/dialtone-documentation/docs/.vuepress/plugins/markdown-it-notice.js
  • apps/dialtone-documentation/docs/components/banner.md
  • apps/dialtone-documentation/docs/components/chip.md
  • apps/dialtone-documentation/docs/components/filter-pill.md
  • apps/dialtone-documentation/docs/components/segmented-control.md
  • apps/dialtone-documentation/docs/components/toast.md
  • apps/dialtone-documentation/docs/guides/mcp-server/index.md
  • apps/dialtone-documentation/docs/scratch.md
  • packages/combinator/src/components/code_example/code_example.vue
  • packages/combinator/src/components/renderer/renderer_menu.vue
  • packages/combinator/src/components/renderer/renderer_target.vue
  • packages/combinator/src/variants/variants_filter_pill.js
  • packages/combinator/src/variants/variants_input.js
  • packages/combinator/src/variants/variants_notice.js
  • packages/combinator/src/variants/variants_radio.js
  • packages/combinator/src/variants/variants_segmented_control.js
  • packages/combinator/src/variants/variants_select_menu.js
  • packages/combinator/src/variants/variants_toast.js
  • packages/combinator/src/variants/variants_toggle.js
  • packages/dialtone-vue/components/banner/banner.stories.js
  • packages/dialtone-vue/components/banner/banner.vue
  • packages/dialtone-vue/components/banner/banner_default.story.vue
  • packages/dialtone-vue/components/checkbox/checkbox.test.js
  • packages/dialtone-vue/components/checkbox/checkbox.vue
  • packages/dialtone-vue/components/chip/chip.stories.js
  • packages/dialtone-vue/components/chip/chip.test.js
  • packages/dialtone-vue/components/chip/chip.vue
  • packages/dialtone-vue/components/chip/chip_default.story.vue
  • packages/dialtone-vue/components/chip/chip_variants.story.vue
  • packages/dialtone-vue/components/combobox/combobox.stories.js
  • packages/dialtone-vue/components/combobox/combobox.test.js
  • packages/dialtone-vue/components/combobox/combobox.vue
  • packages/dialtone-vue/components/combobox/combobox_default.story.vue
  • packages/dialtone-vue/components/combobox_multi_select/combobox_multi_select.stories.js
  • packages/dialtone-vue/components/combobox_multi_select/combobox_multi_select.test.js
  • packages/dialtone-vue/components/combobox_multi_select/combobox_multi_select.vue
  • packages/dialtone-vue/components/combobox_multi_select/combobox_multi_select_default.story.vue
  • packages/dialtone-vue/components/combobox_with_popover/combobox_with_popover.stories.js
  • packages/dialtone-vue/components/combobox_with_popover/combobox_with_popover.test.js
  • packages/dialtone-vue/components/combobox_with_popover/combobox_with_popover.vue
  • packages/dialtone-vue/components/combobox_with_popover/combobox_with_popover_default.story.vue
  • packages/dialtone-vue/components/filter_pill/filter_pill.test.js
  • packages/dialtone-vue/components/filter_pill/filter_pill.vue
  • packages/dialtone-vue/components/filter_pill/filter_pill_default.story.vue
  • packages/dialtone-vue/components/filter_pill/filter_pill_variants.story.vue
  • packages/dialtone-vue/components/input/input.stories.js
  • packages/dialtone-vue/components/input/input.test.js
  • packages/dialtone-vue/components/input/input.vue
  • packages/dialtone-vue/components/input/input_default.story.vue
  • packages/dialtone-vue/components/modal/modal.stories.js
  • packages/dialtone-vue/components/modal/modal.test.js
  • packages/dialtone-vue/components/modal/modal.vue
  • packages/dialtone-vue/components/modal/modal_default.story.vue
  • packages/dialtone-vue/components/notice/notice.stories.js
  • packages/dialtone-vue/components/notice/notice.vue
  • packages/dialtone-vue/components/notice/notice_action.test.js
  • packages/dialtone-vue/components/notice/notice_action.vue
  • packages/dialtone-vue/components/notice/notice_default.story.vue
  • packages/dialtone-vue/components/pagination/pagination.stories.js
  • packages/dialtone-vue/components/pagination/pagination.test.js
  • packages/dialtone-vue/components/pagination/pagination.vue
  • packages/dialtone-vue/components/pagination/pagination_default.story.vue
  • packages/dialtone-vue/components/pagination/pagination_variants.story.vue
  • packages/dialtone-vue/components/popover/popover.vue
  • packages/dialtone-vue/components/popover/popover_default.story.vue
  • packages/dialtone-vue/components/popover/popover_variants.story.vue
  • packages/dialtone-vue/components/radio/radio.test.js
  • packages/dialtone-vue/components/radio/radio.vue
  • packages/dialtone-vue/components/rich_text_editor/extensions/emoji/emoji.test.js
  • packages/dialtone-vue/components/rich_text_editor/extensions/variable/variable.test.js
  • packages/dialtone-vue/components/rich_text_editor/rich_text_editor.test.js
  • packages/dialtone-vue/components/rich_text_editor/rich_text_editor.vue
  • packages/dialtone-vue/components/rich_text_editor/rich_text_editor_default.story.vue
  • packages/dialtone-vue/components/scroller/modules/core_scroller.vue
  • packages/dialtone-vue/components/segmented_control/segmented_control.stories.js
  • packages/dialtone-vue/components/segmented_control/segmented_control.vue
  • packages/dialtone-vue/components/segmented_control/segmented_control_default.story.vue
  • packages/dialtone-vue/components/segmented_control/segmented_control_variants.story.vue
  • packages/dialtone-vue/components/select_menu/select_menu.test.js
  • packages/dialtone-vue/components/select_menu/select_menu.vue
  • packages/dialtone-vue/components/toast/layouts/toast_layout_alternate.vue
  • packages/dialtone-vue/components/toast/layouts/toast_layout_default.vue
  • packages/dialtone-vue/components/toast/toast.stories.js
  • packages/dialtone-vue/components/toast/toast.test.js
  • packages/dialtone-vue/components/toast/toast.vue
  • packages/dialtone-vue/components/toast/toast_default.story.vue
  • packages/dialtone-vue/components/toggle/toggle.test.js
  • packages/dialtone-vue/components/toggle/toggle.vue
  • packages/dialtone-vue/directives/focusgroup_directive/focusgroup.stories.js
  • packages/dialtone-vue/recipes/chips/grouped_chip/grouped_chip.vue
  • packages/dialtone-vue/recipes/conversation_view/editor/editor.test.js
  • packages/dialtone-vue/recipes/conversation_view/editor/editor.vue
  • packages/dialtone-vue/recipes/conversation_view/message_input/message_input.stories.js
  • packages/dialtone-vue/recipes/conversation_view/message_input/message_input.vue
  • packages/dialtone-vue/recipes/conversation_view/message_input/message_input_default.story.vue
  • packages/dialtone-vue/recipes/conversation_view/message_input/message_input_markdown_output.story.vue
  • packages/dialtone-vue/recipes/leftbar/contact_centers_row/contact_centers_row.vue
  • packages/dialtone-vue/recipes/leftbar/contact_centers_row/contact_centers_row_default.story.vue
  • packages/dialtone-vue/recipes/leftbar/contact_centers_row/contact_centers_row_off_duty.story.vue
  • packages/dialtone-vue/recipes/leftbar/contact_centers_row/contact_centers_row_variants.story.vue

Walkthrough

This PR systematically renames boolean visibility and control props across the entire codebase from negative-polarity names (hideX, preventX, skipX) to positive-polarity names (showX, allowX, enableX), inverting their default values and updating all dependent component implementations, tests, documentation, stories, and variant configurations.

Changes

Cohort / File(s) Summary
Documentation & Conventions
.claude/rules/documentation-writing.md, .claude/rules/vue-components.md, .claude/skills/vue-conventions.md
Updated documentation to specify positive-polarity naming conventions for visibility toggles; explicitly forbids negative forms (hideX, preventX, skipX).
Banner Component
packages/dialtone-vue/components/banner/banner.vue, banner.stories.js, banner_default.story.vue
Renamed hideClose, hideIcon, hideAction props to showClose, showIcon, showAction; inverted defaults from false to true.
Notice Component
packages/dialtone-vue/components/notice/notice.vue, notice.stories.js, notice_default.story.vue, notice_action.vue, notice_action.test.js
Renamed hideClose, hideIcon, hideAction to showClose, showIcon, showAction; updated template conditionals and defaults.
Chip Component
packages/dialtone-vue/components/chip/chip.vue, chip.stories.js, chip.test.js, chip_default.story.vue, chip_variants.story.vue
Renamed hideClose to showClose; inverted default from false to true; updated template logic (v-if="!hideClose"v-if="showClose").
Filter Pill Component
packages/dialtone-vue/components/filter_pill/filter_pill.vue, filter_pill.test.js, filter_pill_default.story.vue, filter_pill_variants.story.vue
Renamed hideClear to showClear; inverted default from false to true; updated hasClear() computed logic.
Input & Combobox Components
packages/dialtone-vue/components/input/input.vue, input.stories.js, input.test.js, input_default.story.vue, combobox/combobox.vue, combobox.stories.js, combobox.test.js, combobox_default.story.vue, combobox_multi_select/*, combobox_with_popover/*
Renamed labelVisible to showLabel across input, combobox, and multi-select variants; updated template conditionals and aria-label logic.
Checkbox & Radio Components
packages/dialtone-vue/components/checkbox/checkbox.vue, checkbox.test.js, radio/radio.vue, radio.test.js
Renamed labelVisible to showLabel; updated accessibility conditions and console warnings.
Modal Component
packages/dialtone-vue/components/modal/modal.vue, modal.stories.js, modal.test.js, modal_default.story.vue
Renamed hideClose to showClose; inverted default; updated template rendering of SrOnlyCloseButton.
Popover Component
packages/dialtone-vue/components/popover/popover.vue, popover_default.story.vue, popover_variants.story.vue
Renamed hideOnClick to closeOnClick; updated onClickOutside() guard logic.
Pagination Component
packages/dialtone-vue/components/pagination/pagination.vue, pagination.stories.js, pagination.test.js, pagination_default.story.vue, pagination_variants.story.vue
Renamed hideEdges to showEdges; inverted default from false to true; updated all edge-calculation conditionals.
Segmented Control Component
packages/dialtone-vue/components/segmented_control/segmented_control.vue, segmented_control.stories.js, segmented_control_default.story.vue, segmented_control_variants.story.vue
Renamed hideDivider to showDivider; inverted default; updated containerClasses computed logic (!props.showDivider).
Select Menu Component
packages/dialtone-vue/components/select_menu/select_menu.vue, select_menu.test.js
Renamed labelVisible to showLabel; updated template conditional and aria-label logic.
Toggle & Toggle-Like Components
packages/dialtone-vue/components/toggle/toggle.vue, toggle.test.js
Renamed labelVisible to showLabel; updated template rendering and validation logic.
Toast & Toast Layouts
packages/dialtone-vue/components/toast/toast.vue, toast.stories.js, toast.test.js, toast_default.story.vue, toast/layouts/toast_layout_default.vue, toast/layouts/toast_layout_alternate.vue
Renamed hideClose, hideIcon, hideAction to showClose, showIcon, showAction; inverted defaults; updated template bindings to child dt-notice-action.
Rich Text Editor Component
packages/dialtone-vue/components/rich_text_editor/rich_text_editor.vue, rich_text_editor.test.js, rich_text_editor_default.story.vue, extensions/emoji/emoji.test.js, extensions/variable/variable.test.js
Renamed preventTyping to allowTyping (default falsetrue) and hideLinkBubbleMenu to showLinkBubbleMenu (default falsetrue); inverted guard logic in handleKeyDown() and bubble menu conditions.
Scroller Component
packages/dialtone-vue/components/scroller/modules/core_scroller.vue
Renamed skipHover to enableHover; inverted default from false to true; updated CSS class and event binding conditionals.
Recipe Components
packages/dialtone-vue/recipes/conversation_view/editor/editor.vue, conversation_view/message_input/message_input.vue, conversation_view/message_input/message_input.stories.js, conversation_view/message_input/message_input_default.story.vue, conversation_view/message_input/message_input_markdown_output.story.vue, leftbar/contact_centers_row/contact_centers_row.vue, leftbar/contact_centers_row/contact_centers_row_default.story.vue, leftbar/contact_centers_row/contact_centers_row_off_duty.story.vue, leftbar/contact_centers_row/contact_centers_row_variants.story.vue, chips/grouped_chip/grouped_chip.vue
Renamed props: preventTypingallowTyping, hideCloseshowClose, hideLinkBubbleMenushowLinkBubbleMenu, hideActionsshowActions; updated template bindings and story wiring.
Combinator Variants
packages/combinator/src/variants/variants_*.js (filter_pill, input, notice, radio, select_menu, segmented_control, toast, toggle)
Updated variant prop initializers: hideX: { initialValue: true }showX: { initialValue: false }, labelVisibleshowLabel, hideOnClickcloseOnClick; removed ESLint directives.
Combinator Component Templates
packages/combinator/src/components/code_example/code_example.vue, renderer/renderer_menu.vue, renderer/renderer_target.vue
Updated prop bindings: hide-close:show-close="false", :hide-on-click="false":close-on-click="false", hideCloseshowClose.
Documentation Examples & Guides
apps/dialtone-documentation/docs/.vuepress/baseComponents/CodeExampleTabs.vue, docs/.vuepress/exampleComponents/ExampleRichTextEditor.vue, docs/.vuepress/plugins/markdown-it-notice.js, docs/components/banner.md, docs/components/chip.md, docs/components/filter-pill.md, docs/components/segmented-control.md, docs/components/toast.md, docs/guides/mcp-server/index.md, docs/scratch.md
Updated markdown, story examples, and plugin outputs to use new prop names (show* instead of hide*, :allow-typing instead of :prevent-typing).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch DLT-3159

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ast-grep (0.42.1)
packages/dialtone-vue/components/rich_text_editor/rich_text_editor.test.js

Comment @coderabbitai help to get the list of available commands and usage tips.

@braddialpad Brad Paugh (braddialpad) changed the base branch from staging to next April 14, 2026 20:33
@braddialpad Brad Paugh (braddialpad) changed the title refactor(components): DLT-3159 enforce positive boolean props feat(components): DLT-3159 enforce positive boolean props Apr 14, 2026
@wiz-inc-55b470eb7e
Copy link
Copy Markdown

wiz-inc-55b470eb7e bot commented Apr 14, 2026

Wiz Scan Summary

Scanner Findings
Vulnerability Finding Vulnerabilities -
Data Finding Sensitive Data -
Secret Finding Secrets -
IaC Misconfiguration IaC Misconfigurations -
SAST Finding SAST Findings -
Software Management Finding Software Management Findings -
Total -

View scan details in Wiz

To detect these findings earlier in the dev lifecycle, try using Wiz Code VS Code Extension.

@chatgpt-codex-connector
Copy link
Copy Markdown

💡 Codex Review

if (family < 1 || family > AVATAR_FAMILY_COUNT) return null;
if (!Number.isInteger(variant) || variant < 0 || variant >= AVATAR_VARIANT_COUNT) return null;

P1 Badge Preserve legacy avatar color codes in parser

The new colorToFamilyVariant guard only accepts families 1..12, which means previously valid color prop values like "000" and "1300""1800" are now rejected. When that happens, DtAvatar falls back to random family/variant selection in computedFamily/computedVariant, so callers who pass a fixed legacy color will see unexpected color changes instead of the requested color. Because this prop is still described as backward-compatible, these legacy codes should be translated or explicitly preserved rather than dropped.

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "Codex (@codex) review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "Codex (@codex) address that feedback".

@github-actions
Copy link
Copy Markdown
Contributor

Please add either the visual-test-ready or no-visual-test label to this PR depending on whether you want to run visual tests or not.
It is recommended to run visual tests if your PR changes any UI. ‼️

@braddialpad Brad Paugh (braddialpad) added the no-visual-test Add this tag when the PR does not need visual testing label Apr 14, 2026
@github-actions
Copy link
Copy Markdown
Contributor

✔️ Deploy previews ready!
😎 Dialtone documentation preview: https://dialtone.dialpad.com/deploy-previews/pr-1198/
😎 Dialtone-vue preview: https://dialtone.dialpad.com/vue/deploy-previews/pr-1198/

Copy link
Copy Markdown
Contributor

@iropolo Ignacio Ropolo (iropolo) left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spend some time yesterday and some time today.
It looks good to go!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clicked around a whole lot. Looking great. Thank!

@braddialpad Brad Paugh (braddialpad) merged commit ac73bdc into next Apr 15, 2026
20 checks passed
@braddialpad Brad Paugh (braddialpad) deleted the DLT-3159 branch April 15, 2026 19:14
Brad Paugh (braddialpad) pushed a commit that referenced this pull request Apr 15, 2026
# [1.2.0-next.5](combinator/v1.2.0-next.4...combinator/v1.2.0-next.5) (2026-04-15)

### Code Refactoring

* **Components:** dlt-3283 refactor prop/slots to be consistent ([#1196](#1196)) ([2d22c76](2d22c76))

### Features

* **Components:** DLT-3159 enforce positive boolean props ([#1198](#1198)) ([ac73bdc](ac73bdc))
Brad Paugh (braddialpad) pushed a commit that referenced this pull request Apr 15, 2026
# [3.220.0-next.1](dialtone-vue/v3.219.0...dialtone-vue/v3.220.0-next.1) (2026-04-15)

### Bug Fixes

* **Editor:** NO-JIRA remove extra blank line in editor.mdx ([18c47ef](18c47ef))
* **Split Button, Filter Pill:** DLT-3260 DLT-3261 correct misalignment at size 100 ([#1176](#1176)) ([fe2b777](fe2b777))
* **Tabs:** DLT-3251 improve accessibility ([#1171](#1171)) ([01b101e](01b101e))

### Code Refactoring

* **Combobox Multi Select:** NO-JIRA use logical css properties ([#1104](#1104)) ([a675daf](a675daf))
* **Components,recipes:** DLT-3043 DLT-3046 logical start/end naming with deprecated backward-compatible fallbacks ([#1079](#1079)) ([1d26a4e](1d26a4e))
* **Components:** DLT-3100 remove rootClass references ([#1184](#1184)) ([6531783](6531783))
* **Components:** dlt-3282 renamed show prop to open ([#1190](#1190)) ([5509d0f](5509d0f))
* **Components:** dlt-3283 refactor prop/slots to be consistent ([#1196](#1196)) ([2d22c76](2d22c76))
* **Modal:** DLT-3262 migrate DtModal to native dialog element ([#1179](#1179)) ([589edb5](589edb5))
* **Text:** DLT-3302 tone prop uses css variables instead of css utilities ([#1197](#1197)) ([75df16f](75df16f))
* **Tokens,css,link,text,breadcrumbs,input Group,split Button:** tokens, CSS foundation, deprecations, tooling DLT-3011 DLT-2961 DLT-3068 DLT-3069 DLT-3070 DLT-3071 DLT-3072 ([#1092](#1092)) ([7783090](7783090))
* **Tokens:** DLT-3013 convert color system from HSL to OKLCH ([#1060](#1060)) ([42dc418](42dc418))

### Documentation

* **Dialtone Vue:** DLT-3226 update documentation and consuming code to numeric size scale ([#1158](#1158)) ([149c763](149c763))
* **Playground:** DLT-3119 refine playground UI and integrate across doc site ([#1127](#1127)) ([ba6b599](ba6b599))

### Features

* **Avatar:** DLT-2942 updated avatar component ([#1047](#1047)) ([e50563d](e50563d))
* **Avatar:** DLT-3161 change from clickable to "interactive" ([#1182](#1182)) ([2d00fe0](2d00fe0))
* **Banner, Notice, Toast, Breadcrumbs, Checkbox, Radio, Input, Select Menu, Empty State:** visual refresh, dt-text integration, form api parity DLT-2944 DLT-2945 DLT-2949 DLT-2959 DLT-2960 DLT-2957 ([#1091](#1091)) ([16e908a](16e908a))
* **Button,tabs,split Button:** visual refresh and slot updates DLT-2946 DLT-2947 DLT-2965 ([#1090](#1090)) ([ffdd56f](ffdd56f))
* **Components:** DLT-3157 align critical/positive prop values and CSS class names ([#1177](#1177)) ([edd98b2](edd98b2))
* **Components:** DLT-3159 enforce positive boolean props ([#1198](#1198)) ([ac73bdc](ac73bdc))
* **Dialtone Css, Dialtone Tokens, Dialtone Vue:** DLT-3197 DLT-3198 DLT-3199 DLT-3200 DLT-3201 DLT-3202 DLT-3203 DLT-3204 DLT-3205 DLT-3206 DLT-3207 DLT-3208 DLT-3209 DLT-3210 DLT-3211 token-stop utility classes, migration tooling, and documentation ([#1150](#1150)) ([6237b84](6237b84))
* **Dialtone Vue:** DLT-3225 migrate component size props to numeric ordinal scale ([#1157](#1157)) ([725bd41](725bd41))
* **Filter Pill:** DLT-2941 DtFilterPill improvements ([#1110](#1110)) ([23c5689](23c5689))
* **Focusgroup:** DLT-3285 add v-dt-focusgroup directive for declarative roving tabindex ([#1187](#1187)) ([e1ea074](e1ea074))
* **Focustrap:** DLT-3297 add v-dt-focustrap directive for declarative focus trapping ([#1195](#1195)) ([6ef9a21](6ef9a21))
* **Link,button:** DLT-3012 add underline prop ([#1059](#1059)) ([1cb91ea](1cb91ea))
* **Mode Directive, Mode Island:** DLT-3067 DLT-3078 DLT-3077 add `v-dt-mode` directive ([#1109](#1109)) ([f97efca](f97efca))
* **Segmented Control:** DLT-413 new component ([#1144](#1144)) ([ad4c6c3](ad4c6c3))
* **Split Button:** DLT-3257 add show-divider prop ([#1173](#1173)) ([5bef411](5bef411))
* **Tabs:** DLT-3114 add vertical orientation variant ([#1120](#1120)) ([3290a23](3290a23))
* **Tabs:** DLT-3162 add spread prop for horizontal distribution ([#1135](#1135)) ([6e7cd04](6e7cd04))
* **Text:** export text component from dialtone-vue ([757fdb7](757fdb7))
* **Tokens:** DLT-2937 introduce spacing and layout token systems ([#1045](#1045)) ([de23e12](de23e12))
* **Tokens:** update color ramps and consumer color migration tools DLT-3004 DLT-3005 DLT-3006 DLT-3007 DLT-3008 ([#1054](#1054)) ([28cb1de](28cb1de))
Brad Paugh (braddialpad) pushed a commit that referenced this pull request Apr 15, 2026
# [9.180.0-next.1](dialtone/v9.179.0...dialtone/v9.180.0-next.1) (2026-04-15)

### Bug Fixes

* **Doc:** NO-JIRA correct font size utility json ([#1015](#1015)) ([76cf0fa](76cf0fa))
* **Editor:** NO-JIRA remove extra blank line in editor.mdx ([18c47ef](18c47ef))
* possible merge issue in sidebarItem.vue ([5e2e91b](5e2e91b))
* **Split Button, Filter Pill:** DLT-3260 DLT-3261 correct misalignment at size 100 ([#1176](#1176)) ([fe2b777](fe2b777))
* **Stylelint:** disable hue-degree-notation rule and update OKLCH color syntax ([81f886e](81f886e))
* **Stylelint:** disable hue-degree-notation rule and update OKLCH color syntax ([8721f43](8721f43))
* **Tabs:** DLT-3251 improve accessibility ([#1171](#1171)) ([01b101e](01b101e))
* **Tokens:** DLT-3053 preserve root font size variable as reference ([#1093](#1093)) ([112ab4b](112ab4b))
* **Tokens:** handle multi-layer box shadows correctly in postcss plugin ([feea7f1](feea7f1))
* **Tokens:** NO-JIRA output line-height as unitless instead of percentages ([#1040](#1040)) ([33d8505](33d8505))
* **Tokens:** wrap css math expressions with calc() in layered build ([#966](#966)) ([1635f61](1635f61))
* update @dialpad/i18n dependencies to latest versions ([7a4b777](7a4b777))

### Code Refactoring

* **Combobox Multi Select:** NO-JIRA use logical css properties ([#1104](#1104)) ([a675daf](a675daf))
* **Components,recipes:** DLT-3043 DLT-3046 logical start/end naming with deprecated backward-compatible fallbacks ([#1079](#1079)) ([1d26a4e](1d26a4e))
* **Components:** DLT-3100 remove rootClass references ([#1184](#1184)) ([6531783](6531783))
* **Components:** dlt-3282 renamed show prop to open ([#1190](#1190)) ([5509d0f](5509d0f))
* **Components:** dlt-3283 refactor prop/slots to be consistent ([#1196](#1196)) ([2d22c76](2d22c76))
* **Css:** DLT-1876 css logical properties ([#872](#872)) ([1acd6c9](1acd6c9))
* **Modal:** DLT-3262 migrate DtModal to native dialog element ([#1179](#1179)) ([589edb5](589edb5))
* **Notice,banner,toast:** DLT-3296 decouple CSS and fix specificity violations ([#1194](#1194)) ([9579ac0](9579ac0))
* **Style:** DLT-3014 wrap all styles in css cascade layers ([#1061](#1061)) ([f8b3fed](f8b3fed))
* **Text:** DLT-2883 rename headline sizes from xxl => 2xl, etc ([#1029](#1029)) ([0ac86f3](0ac86f3))
* **Text:** DLT-3302 tone prop uses css variables instead of css utilities ([#1197](#1197)) ([75df16f](75df16f))
* **Tokens,css,link,text,breadcrumbs,input Group,split Button:** tokens, CSS foundation, deprecations, tooling DLT-3011 DLT-2961 DLT-3068 DLT-3069 DLT-3070 DLT-3071 DLT-3072 ([#1092](#1092)) ([7783090](7783090))
* **Tokens:** DLT-2884 deprecate space tokens in favor of size tokens ([#1013](#1013)) ([63f6d2f](63f6d2f))
* **Tokens:** DLT-3013 convert color system from HSL to OKLCH ([#1060](#1060)) ([42dc418](42dc418))

### Documentation

* **Components:** DLT-3178 DLT-3182 unify code examples into single code-example component ([#1147](#1147)) ([d0b6e14](d0b6e14))
* **Css Utilities:** DLT-3295 DLT-3280 mark physical utilities as deprecated ([#1193](#1193)) ([73f1479](73f1479))
* **Dialtone Vue:** DLT-3226 update documentation and consuming code to numeric size scale ([#1158](#1158)) ([149c763](149c763))
* DLT-1510 DLT-1511 DLT-1512 site redesign and ia ([#968](#968)) ([6ea7eb9](6ea7eb9))
* DLT-2908 ui kits landing page ([#1049](#1049)) ([d805b9d](d805b9d))
* DLT-3243 fenced code blocks for examples and snippets ([#1166](#1166)) ([cb169df](cb169df))
* DLT-3250 display component status badges in sidebar and page headers ([#1170](#1170)) ([7d5f5d5](7d5f5d5))
* DLT-3252 add GFM alert syntax for notices ([#1172](#1172)) ([1697911](1697911))
* DLT-3258 DLT-3259 improve sidebar search with logical keywords and fuzzy matching ([#1174](#1174)) ([2bf4639](2bf4639))
* NO-JIRA fix focus left-nav items on keypress down up ([#1106](#1106)) ([882c9b9](882c9b9))
* **Playground:** DLT-3119 refine playground UI and integrate across doc site ([#1127](#1127)) ([ba6b599](ba6b599))
* **Playground:** DLT-3242 segmented control for compact enum props ([#1165](#1165)) ([fa440d8](fa440d8))
* **Utilities:** DLT-3183 convert to vue demo fenced block ([#1167](#1167)) ([522197f](522197f))

### Features

* **Avatar:** DLT-2942 updated avatar component ([#1047](#1047)) ([e50563d](e50563d))
* **Avatar:** DLT-3161 change from clickable to "interactive" ([#1182](#1182)) ([2d00fe0](2d00fe0))
* **Banner, Notice, Toast, Breadcrumbs, Checkbox, Radio, Input, Select Menu, Empty State:** visual refresh, dt-text integration, form api parity DLT-2944 DLT-2945 DLT-2949 DLT-2959 DLT-2960 DLT-2957 ([#1091](#1091)) ([16e908a](16e908a))
* **Button,tabs,split Button:** visual refresh and slot updates DLT-2946 DLT-2947 DLT-2965 ([#1090](#1090)) ([ffdd56f](ffdd56f))
* **Components:** DLT-3157 align critical/positive prop values and CSS class names ([#1177](#1177)) ([edd98b2](edd98b2))
* **Components:** DLT-3159 enforce positive boolean props ([#1198](#1198)) ([ac73bdc](ac73bdc))
* **Css Utility:** DLT-2715 add default color for border css utilities ([#874](#874)) ([71310ab](71310ab))
* **Dialtone Css, Dialtone Tokens, Dialtone Vue:** DLT-3197 DLT-3198 DLT-3199 DLT-3200 DLT-3201 DLT-3202 DLT-3203 DLT-3204 DLT-3205 DLT-3206 DLT-3207 DLT-3208 DLT-3209 DLT-3210 DLT-3211 token-stop utility classes, migration tooling, and documentation ([#1150](#1150)) ([6237b84](6237b84))
* **Dialtone Vue:** DLT-3225 migrate component size props to numeric ordinal scale ([#1157](#1157)) ([725bd41](725bd41))
* **Eslint Plugin Dialtone:** DLT-3047 physical-to-logical naming migration tooling ([#1163](#1163)) ([d94dc4b](d94dc4b))
* **Eslint Plugin Dialtone:** DLT-3227 DLT-3228 add deprecated-tshirt-sizes ESLint rule and migration codemod ([#1159](#1159)) ([21a011f](21a011f))
* **Filter Pill:** DLT-2704 create component ([#473](#473)) ([6267445](6267445))
* **Filter Pill:** DLT-2941 DtFilterPill improvements ([#1110](#1110)) ([23c5689](23c5689))
* **Focusgroup:** DLT-3285 add v-dt-focusgroup directive for declarative roving tabindex ([#1187](#1187)) ([e1ea074](e1ea074))
* **Focustrap:** DLT-3297 add v-dt-focustrap directive for declarative focus trapping ([#1195](#1195)) ([6ef9a21](6ef9a21))
* **Link,button:** DLT-3012 add underline prop ([#1059](#1059)) ([1cb91ea](1cb91ea))
* **Mode Directive, Mode Island:** DLT-3067 DLT-3078 DLT-3077 add `v-dt-mode` directive ([#1109](#1109)) ([f97efca](f97efca))
* **Segmented Control:** DLT-413 new component ([#1144](#1144)) ([ad4c6c3](ad4c6c3))
* **Split Button:** DLT-3257 add show-divider prop ([#1173](#1173)) ([5bef411](5bef411))
* **Style:** DLT-2976 update underline thickness and offset ([#1058](#1058)) ([1e56947](1e56947))
* **Tabs:** DLT-3114 add vertical orientation variant ([#1120](#1120)) ([3290a23](3290a23))
* **Tabs:** DLT-3162 add spread prop for horizontal distribution ([#1135](#1135)) ([6e7cd04](6e7cd04))
* **Text:** export text component from dialtone-vue ([757fdb7](757fdb7))
* **Text:** new vue component DLT-2864 DLT-2863 DLT-2862 ([#995](#995)) ([196ef8a](196ef8a))
* **Tokens:** DLT-1977 add high contrast design tokens and theme ([#938](#938)) ([a1c0457](a1c0457))
* **Tokens:** DLT-2767 exploratory shell themes ([#909](#909)) ([3afcf63](3afcf63))
* **Tokens:** DLT-2781 create color-assistive themes ([#921](#921)) ([a6cc397](a6cc397))
* **Tokens:** DLT-2802 DLT-2563 layered theming system and mode island component ([#945](#945)) ([5c72c6c](5c72c6c))
* **Tokens:** DLT-2937 introduce spacing and layout token systems ([#1045](#1045)) ([de23e12](de23e12))
* **Tokens:** update color ramps and consumer color migration tools DLT-3004 DLT-3005 DLT-3006 DLT-3007 DLT-3008 ([#1054](#1054)) ([28cb1de](28cb1de))
* **Typography, Tokens:** DLT-2856 DLT-2857 next typography system ([#994](#994)) ([d744e97](d744e97))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-visual-test Add this tag when the PR does not need visual testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants