From b197b47a34de03dc23ec4e266e1db4420537086a Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Fri, 22 May 2026 20:22:20 +0000
Subject: [PATCH 1/4] feat: add v-model support to SegmentedControl
- Refactor SegmentedControl to
\ No newline at end of file
+
diff --git a/src/tests/SegmentedControlVModel.spec.ts b/src/tests/SegmentedControlVModel.spec.ts
new file mode 100644
index 00000000..f9dfeafd
--- /dev/null
+++ b/src/tests/SegmentedControlVModel.spec.ts
@@ -0,0 +1,64 @@
+import { describe, test, expect } from 'vitest';
+import SegmentedControl from '../components/SegmentedControl.vue';
+import { mount } from '@vue/test-utils';
+import { nextTick } from 'vue';
+
+describe('SegmentedControl v-model', () => {
+ test('should respect initial modelValue', async () => {
+ const wrapper = mount(SegmentedControl, {
+ props: {
+ segments: ['Segment 1', 'Segment 2'],
+ modelValue: 'Segment 2',
+ },
+ });
+
+ const activeButtons = wrapper.findAll('.segment-control__button--active');
+ expect(activeButtons.length).toBe(1);
+ expect(activeButtons[0].text()).toBe('Segment 2');
+ });
+
+ test('should update modelValue when a segment is clicked', async () => {
+ const wrapper = mount(SegmentedControl, {
+ props: {
+ segments: ['Segment 1', 'Segment 2'],
+ modelValue: 'Segment 1',
+ 'onUpdate:modelValue': (e) => wrapper.setProps({ modelValue: e }),
+ },
+ });
+
+ const buttons = wrapper.findAll('.segment-control__button');
+ await buttons[1].trigger('click');
+
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy();
+ expect(wrapper.emitted('update:modelValue')![0]).toEqual(['Segment 2']);
+ });
+
+ test('should default to the first segment if no modelValue is provided', async () => {
+ const wrapper = mount(SegmentedControl, {
+ props: {
+ segments: ['Segment 1', 'Segment 2'],
+ },
+ });
+
+ await nextTick();
+
+ const activeButtons = wrapper.findAll('.segment-control__button--active');
+ expect(activeButtons.length).toBe(1);
+ expect(activeButtons[0].text()).toBe('Segment 1');
+ });
+
+ test('should still emit click event when a segment is clicked', async () => {
+ const wrapper = mount(SegmentedControl, {
+ props: {
+ segments: ['Segment 1', 'Segment 2'],
+ modelValue: 'Segment 1',
+ },
+ });
+
+ const buttons = wrapper.findAll('.segment-control__button');
+ await buttons[1].trigger('click');
+
+ expect(wrapper.emitted('click')).toBeTruthy();
+ expect(wrapper.emitted('click')![0]).toEqual(['Segment 2', 1]);
+ });
+});
From 4a26262a3b7220e2d7afb89040f80a2800e9d925 Mon Sep 17 00:00:00 2001
From: jvictordev1
Date: Thu, 18 Jun 2026 11:48:25 -0300
Subject: [PATCH 2/4] docs: documenta o evento do update:model-value
---
docs/.docgen/components-metadata.json | 6 +++++-
src/components/SegmentedControl.vue | 7 ++++++-
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/docs/.docgen/components-metadata.json b/docs/.docgen/components-metadata.json
index 118084e2..b99b82a7 100644
--- a/docs/.docgen/components-metadata.json
+++ b/docs/.docgen/components-metadata.json
@@ -10722,7 +10722,11 @@
"events": [
{
"name": "click",
- "description": "Evento emitido quando o componente é clicado."
+ "description": "Evento emitido quando o usuário clica em algum segmento."
+ },
+ {
+ "name": "update:model-value",
+ "description": "Evento emitido quando o usuário clica em algum segmento."
}
],
"sourceFiles": [
diff --git a/src/components/SegmentedControl.vue b/src/components/SegmentedControl.vue
index 327dc4c1..01e8ae04 100644
--- a/src/components/SegmentedControl.vue
+++ b/src/components/SegmentedControl.vue
@@ -70,10 +70,15 @@ const props = defineProps({
const emit = defineEmits([
/**
- * Evento emitido quando o componente é clicado.
+ * Evento emitido quando o usuário clica em algum segmento.
* @event click
*/
'click',
+ /**
+ * Evento emitido quando o usuário clica em algum segmento.
+ * @event update:model-value
+ */
+ 'update:model-value',
]);
onMounted(() => {
From f5e941ae00956f6661b6b625b6f9c20482f11651 Mon Sep 17 00:00:00 2001
From: jvictordev1
Date: Fri, 3 Jul 2026 12:03:17 -0300
Subject: [PATCH 3/4] =?UTF-8?q?refactor:=20corrige=20coment=C3=A1rios=20e?=
=?UTF-8?q?=20bumpa=20para=20vers=C3=A3o=20correta?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package.json | 2 +-
src/components/SegmentedControl.vue | 12 +++--
src/tests/SegmentedControlVModel.spec.ts | 64 ++++++++++++++++++++++++
3 files changed, 74 insertions(+), 4 deletions(-)
diff --git a/package.json b/package.json
index 2b29b19c..16821cbd 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@sysvale/cuida",
- "version": "3.159.0",
+ "version": "3.160.0",
"description": "A design system built by Sysvale, using storybook and Vue components",
"repository": {
"type": "git",
diff --git a/src/components/SegmentedControl.vue b/src/components/SegmentedControl.vue
index 01e8ae04..7f6ef868 100644
--- a/src/components/SegmentedControl.vue
+++ b/src/components/SegmentedControl.vue
@@ -30,7 +30,7 @@