@regcheq/ui-vue-2 1.26.0 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -31461,7 +31461,7 @@ const buttonVariants$1 = cva('rq-button-legacy', {
31461
31461
  //
31462
31462
  //
31463
31463
 
31464
- var script$T = {
31464
+ var script$U = {
31465
31465
  name: 'RqButton',
31466
31466
  props: {
31467
31467
  variant: {
@@ -31595,10 +31595,10 @@ function normalizeComponent(template, style, script, scopeId, isFunctionalTempla
31595
31595
  }
31596
31596
 
31597
31597
  /* script */
31598
- const __vue_script__$T = script$T;
31598
+ const __vue_script__$U = script$U;
31599
31599
 
31600
31600
  /* template */
31601
- var __vue_render__$T = function () {
31601
+ var __vue_render__$U = function () {
31602
31602
  var _vm = this;
31603
31603
  var _h = _vm.$createElement;
31604
31604
  var _c = _vm._self._c || _h;
@@ -31624,27 +31624,27 @@ var __vue_render__$T = function () {
31624
31624
  }
31625
31625
  }) : _vm._e()], 2);
31626
31626
  };
31627
- var __vue_staticRenderFns__$T = [];
31628
- __vue_render__$T._withStripped = true;
31627
+ var __vue_staticRenderFns__$U = [];
31628
+ __vue_render__$U._withStripped = true;
31629
31629
 
31630
31630
  /* style */
31631
- const __vue_inject_styles__$T = undefined;
31631
+ const __vue_inject_styles__$U = undefined;
31632
31632
  /* scoped */
31633
- const __vue_scope_id__$T = undefined;
31633
+ const __vue_scope_id__$U = undefined;
31634
31634
  /* module identifier */
31635
- const __vue_module_identifier__$T = undefined;
31635
+ const __vue_module_identifier__$U = undefined;
31636
31636
  /* functional template */
31637
- const __vue_is_functional_template__$T = false;
31637
+ const __vue_is_functional_template__$U = false;
31638
31638
  /* style inject */
31639
31639
 
31640
31640
  /* style inject SSR */
31641
31641
 
31642
31642
  /* style inject shadow dom */
31643
31643
 
31644
- const __vue_component__$T = /*#__PURE__*/normalizeComponent({
31645
- render: __vue_render__$T,
31646
- staticRenderFns: __vue_staticRenderFns__$T
31647
- }, __vue_inject_styles__$T, __vue_script__$T, __vue_scope_id__$T, __vue_is_functional_template__$T, __vue_module_identifier__$T, false, undefined, undefined, undefined);
31644
+ const __vue_component__$U = /*#__PURE__*/normalizeComponent({
31645
+ render: __vue_render__$U,
31646
+ staticRenderFns: __vue_staticRenderFns__$U
31647
+ }, __vue_inject_styles__$U, __vue_script__$U, __vue_scope_id__$U, __vue_is_functional_template__$U, __vue_module_identifier__$U, false, undefined, undefined, undefined);
31648
31648
 
31649
31649
  const inputVariants$1 = cva('rq-input', {
31650
31650
  variants: {
@@ -31697,7 +31697,7 @@ const inputVariants$1 = cva('rq-input', {
31697
31697
  //
31698
31698
 
31699
31699
  let uid$8 = 0;
31700
- var script$S = {
31700
+ var script$T = {
31701
31701
  name: 'RqInput',
31702
31702
  inheritAttrs: false,
31703
31703
  props: {
@@ -31791,10 +31791,10 @@ var script$S = {
31791
31791
  };
31792
31792
 
31793
31793
  /* script */
31794
- const __vue_script__$S = script$S;
31794
+ const __vue_script__$T = script$T;
31795
31795
 
31796
31796
  /* template */
31797
- var __vue_render__$S = function () {
31797
+ var __vue_render__$T = function () {
31798
31798
  var _vm = this;
31799
31799
  var _h = _vm.$createElement;
31800
31800
  var _c = _vm._self._c || _h;
@@ -31849,27 +31849,27 @@ var __vue_render__$S = function () {
31849
31849
  class: ["rq-input__counter", _vm.error && "rq-input__counter--error"]
31850
31850
  }, [_vm._v(_vm._s(_vm.currentLength) + "/" + _vm._s(_vm.maxLength))]) : _vm._e()]) : _vm._e()]);
31851
31851
  };
31852
- var __vue_staticRenderFns__$S = [];
31853
- __vue_render__$S._withStripped = true;
31852
+ var __vue_staticRenderFns__$T = [];
31853
+ __vue_render__$T._withStripped = true;
31854
31854
 
31855
31855
  /* style */
31856
- const __vue_inject_styles__$S = undefined;
31856
+ const __vue_inject_styles__$T = undefined;
31857
31857
  /* scoped */
31858
- const __vue_scope_id__$S = undefined;
31858
+ const __vue_scope_id__$T = undefined;
31859
31859
  /* module identifier */
31860
- const __vue_module_identifier__$S = undefined;
31860
+ const __vue_module_identifier__$T = undefined;
31861
31861
  /* functional template */
31862
- const __vue_is_functional_template__$S = false;
31862
+ const __vue_is_functional_template__$T = false;
31863
31863
  /* style inject */
31864
31864
 
31865
31865
  /* style inject SSR */
31866
31866
 
31867
31867
  /* style inject shadow dom */
31868
31868
 
31869
- const __vue_component__$S = /*#__PURE__*/normalizeComponent({
31870
- render: __vue_render__$S,
31871
- staticRenderFns: __vue_staticRenderFns__$S
31872
- }, __vue_inject_styles__$S, __vue_script__$S, __vue_scope_id__$S, __vue_is_functional_template__$S, __vue_module_identifier__$S, false, undefined, undefined, undefined);
31869
+ const __vue_component__$T = /*#__PURE__*/normalizeComponent({
31870
+ render: __vue_render__$T,
31871
+ staticRenderFns: __vue_staticRenderFns__$T
31872
+ }, __vue_inject_styles__$T, __vue_script__$T, __vue_scope_id__$T, __vue_is_functional_template__$T, __vue_module_identifier__$T, false, undefined, undefined, undefined);
31873
31873
 
31874
31874
  const inputVariants = cva('rq-field', {
31875
31875
  variants: {
@@ -31921,7 +31921,7 @@ const inputVariants = cva('rq-field', {
31921
31921
  //
31922
31922
  //
31923
31923
 
31924
- var script$R = {
31924
+ var script$S = {
31925
31925
  name: 'Input',
31926
31926
  inheritAttrs: false,
31927
31927
  props: {
@@ -31994,10 +31994,10 @@ var script$R = {
31994
31994
  };
31995
31995
 
31996
31996
  /* script */
31997
- const __vue_script__$R = script$R;
31997
+ const __vue_script__$S = script$S;
31998
31998
 
31999
31999
  /* template */
32000
- var __vue_render__$R = function () {
32000
+ var __vue_render__$S = function () {
32001
32001
  var _vm = this;
32002
32002
  var _h = _vm.$createElement;
32003
32003
  var _c = _vm._self._c || _h;
@@ -32033,27 +32033,27 @@ var __vue_render__$R = function () {
32033
32033
  }
32034
32034
  }) : _vm._e()], 1);
32035
32035
  };
32036
- var __vue_staticRenderFns__$R = [];
32037
- __vue_render__$R._withStripped = true;
32036
+ var __vue_staticRenderFns__$S = [];
32037
+ __vue_render__$S._withStripped = true;
32038
32038
 
32039
32039
  /* style */
32040
- const __vue_inject_styles__$R = undefined;
32040
+ const __vue_inject_styles__$S = undefined;
32041
32041
  /* scoped */
32042
- const __vue_scope_id__$R = undefined;
32042
+ const __vue_scope_id__$S = undefined;
32043
32043
  /* module identifier */
32044
- const __vue_module_identifier__$R = undefined;
32044
+ const __vue_module_identifier__$S = undefined;
32045
32045
  /* functional template */
32046
- const __vue_is_functional_template__$R = false;
32046
+ const __vue_is_functional_template__$S = false;
32047
32047
  /* style inject */
32048
32048
 
32049
32049
  /* style inject SSR */
32050
32050
 
32051
32051
  /* style inject shadow dom */
32052
32052
 
32053
- const __vue_component__$R = /*#__PURE__*/normalizeComponent({
32054
- render: __vue_render__$R,
32055
- staticRenderFns: __vue_staticRenderFns__$R
32056
- }, __vue_inject_styles__$R, __vue_script__$R, __vue_scope_id__$R, __vue_is_functional_template__$R, __vue_module_identifier__$R, false, undefined, undefined, undefined);
32053
+ const __vue_component__$S = /*#__PURE__*/normalizeComponent({
32054
+ render: __vue_render__$S,
32055
+ staticRenderFns: __vue_staticRenderFns__$S
32056
+ }, __vue_inject_styles__$S, __vue_script__$S, __vue_scope_id__$S, __vue_is_functional_template__$S, __vue_module_identifier__$S, false, undefined, undefined, undefined);
32057
32057
 
32058
32058
  const buttonVariants = cva('rq-button', {
32059
32059
  variants: {
@@ -32098,7 +32098,7 @@ const buttonVariants = cva('rq-button', {
32098
32098
  //
32099
32099
  //
32100
32100
 
32101
- var script$Q = {
32101
+ var script$R = {
32102
32102
  name: 'Button',
32103
32103
  props: {
32104
32104
  variant: {
@@ -32194,10 +32194,10 @@ var script$Q = {
32194
32194
  };
32195
32195
 
32196
32196
  /* script */
32197
- const __vue_script__$Q = script$Q;
32197
+ const __vue_script__$R = script$R;
32198
32198
 
32199
32199
  /* template */
32200
- var __vue_render__$Q = function () {
32200
+ var __vue_render__$R = function () {
32201
32201
  var _vm = this;
32202
32202
  var _h = _vm.$createElement;
32203
32203
  var _c = _vm._self._c || _h;
@@ -32225,27 +32225,27 @@ var __vue_render__$Q = function () {
32225
32225
  }
32226
32226
  }) : _vm._e()], 2);
32227
32227
  };
32228
- var __vue_staticRenderFns__$Q = [];
32229
- __vue_render__$Q._withStripped = true;
32228
+ var __vue_staticRenderFns__$R = [];
32229
+ __vue_render__$R._withStripped = true;
32230
32230
 
32231
32231
  /* style */
32232
- const __vue_inject_styles__$Q = undefined;
32232
+ const __vue_inject_styles__$R = undefined;
32233
32233
  /* scoped */
32234
- const __vue_scope_id__$Q = undefined;
32234
+ const __vue_scope_id__$R = undefined;
32235
32235
  /* module identifier */
32236
- const __vue_module_identifier__$Q = undefined;
32236
+ const __vue_module_identifier__$R = undefined;
32237
32237
  /* functional template */
32238
- const __vue_is_functional_template__$Q = false;
32238
+ const __vue_is_functional_template__$R = false;
32239
32239
  /* style inject */
32240
32240
 
32241
32241
  /* style inject SSR */
32242
32242
 
32243
32243
  /* style inject shadow dom */
32244
32244
 
32245
- const __vue_component__$Q = /*#__PURE__*/normalizeComponent({
32246
- render: __vue_render__$Q,
32247
- staticRenderFns: __vue_staticRenderFns__$Q
32248
- }, __vue_inject_styles__$Q, __vue_script__$Q, __vue_scope_id__$Q, __vue_is_functional_template__$Q, __vue_module_identifier__$Q, false, undefined, undefined, undefined);
32245
+ const __vue_component__$R = /*#__PURE__*/normalizeComponent({
32246
+ render: __vue_render__$R,
32247
+ staticRenderFns: __vue_staticRenderFns__$R
32248
+ }, __vue_inject_styles__$R, __vue_script__$R, __vue_scope_id__$R, __vue_is_functional_template__$R, __vue_module_identifier__$R, false, undefined, undefined, undefined);
32249
32249
 
32250
32250
  //
32251
32251
  //
@@ -32319,7 +32319,7 @@ const WEIGHT_MAP = {
32319
32319
  semibold: 600,
32320
32320
  bold: 700
32321
32321
  };
32322
- var script$P = {
32322
+ var script$Q = {
32323
32323
  name: 'Typography',
32324
32324
  props: {
32325
32325
  variant: {
@@ -32353,10 +32353,10 @@ var script$P = {
32353
32353
  };
32354
32354
 
32355
32355
  /* script */
32356
- const __vue_script__$P = script$P;
32356
+ const __vue_script__$Q = script$Q;
32357
32357
 
32358
32358
  /* template */
32359
- var __vue_render__$P = function () {
32359
+ var __vue_render__$Q = function () {
32360
32360
  var _vm = this;
32361
32361
  var _h = _vm.$createElement;
32362
32362
  var _c = _vm._self._c || _h;
@@ -32366,27 +32366,27 @@ var __vue_render__$P = function () {
32366
32366
  style: _vm.weightStyle
32367
32367
  }, _vm.$listeners), [_vm._t("default")], 2);
32368
32368
  };
32369
- var __vue_staticRenderFns__$P = [];
32370
- __vue_render__$P._withStripped = true;
32369
+ var __vue_staticRenderFns__$Q = [];
32370
+ __vue_render__$Q._withStripped = true;
32371
32371
 
32372
32372
  /* style */
32373
- const __vue_inject_styles__$P = undefined;
32373
+ const __vue_inject_styles__$Q = undefined;
32374
32374
  /* scoped */
32375
- const __vue_scope_id__$P = undefined;
32375
+ const __vue_scope_id__$Q = undefined;
32376
32376
  /* module identifier */
32377
- const __vue_module_identifier__$P = undefined;
32377
+ const __vue_module_identifier__$Q = undefined;
32378
32378
  /* functional template */
32379
- const __vue_is_functional_template__$P = false;
32379
+ const __vue_is_functional_template__$Q = false;
32380
32380
  /* style inject */
32381
32381
 
32382
32382
  /* style inject SSR */
32383
32383
 
32384
32384
  /* style inject shadow dom */
32385
32385
 
32386
- const __vue_component__$P = /*#__PURE__*/normalizeComponent({
32387
- render: __vue_render__$P,
32388
- staticRenderFns: __vue_staticRenderFns__$P
32389
- }, __vue_inject_styles__$P, __vue_script__$P, __vue_scope_id__$P, __vue_is_functional_template__$P, __vue_module_identifier__$P, false, undefined, undefined, undefined);
32386
+ const __vue_component__$Q = /*#__PURE__*/normalizeComponent({
32387
+ render: __vue_render__$Q,
32388
+ staticRenderFns: __vue_staticRenderFns__$Q
32389
+ }, __vue_inject_styles__$Q, __vue_script__$Q, __vue_scope_id__$Q, __vue_is_functional_template__$Q, __vue_module_identifier__$Q, false, undefined, undefined, undefined);
32390
32390
 
32391
32391
  const linkVariants = cva('rq-link', {
32392
32392
  variants: {
@@ -32424,10 +32424,10 @@ const linkVariants = cva('rq-link', {
32424
32424
  //
32425
32425
  //
32426
32426
 
32427
- var script$O = {
32427
+ var script$P = {
32428
32428
  name: 'Link',
32429
32429
  components: {
32430
- Typography: __vue_component__$P
32430
+ Typography: __vue_component__$Q
32431
32431
  },
32432
32432
  props: {
32433
32433
  variant: {
@@ -32484,10 +32484,10 @@ var script$O = {
32484
32484
  };
32485
32485
 
32486
32486
  /* script */
32487
- const __vue_script__$O = script$O;
32487
+ const __vue_script__$P = script$P;
32488
32488
 
32489
32489
  /* template */
32490
- var __vue_render__$O = function () {
32490
+ var __vue_render__$P = function () {
32491
32491
  var _vm = this;
32492
32492
  var _h = _vm.$createElement;
32493
32493
  var _c = _vm._self._c || _h;
@@ -32506,6 +32506,108 @@ var __vue_render__$O = function () {
32506
32506
  }
32507
32507
  }, _vm.listeners), [_vm._t("default")], 2);
32508
32508
  };
32509
+ var __vue_staticRenderFns__$P = [];
32510
+ __vue_render__$P._withStripped = true;
32511
+
32512
+ /* style */
32513
+ const __vue_inject_styles__$P = undefined;
32514
+ /* scoped */
32515
+ const __vue_scope_id__$P = undefined;
32516
+ /* module identifier */
32517
+ const __vue_module_identifier__$P = undefined;
32518
+ /* functional template */
32519
+ const __vue_is_functional_template__$P = false;
32520
+ /* style inject */
32521
+
32522
+ /* style inject SSR */
32523
+
32524
+ /* style inject shadow dom */
32525
+
32526
+ const __vue_component__$P = /*#__PURE__*/normalizeComponent({
32527
+ render: __vue_render__$P,
32528
+ staticRenderFns: __vue_staticRenderFns__$P
32529
+ }, __vue_inject_styles__$P, __vue_script__$P, __vue_scope_id__$P, __vue_is_functional_template__$P, __vue_module_identifier__$P, false, undefined, undefined, undefined);
32530
+
32531
+ const spinnerVariants = cva('rq-spinner', {
32532
+ variants: {
32533
+ size: {
32534
+ sm: 'rq-spinner--sm',
32535
+ md: 'rq-spinner--md',
32536
+ lg: 'rq-spinner--lg',
32537
+ xl: 'rq-spinner--xl'
32538
+ },
32539
+ mirrored: {
32540
+ true: 'rq-spinner--mirrored',
32541
+ false: ''
32542
+ }
32543
+ },
32544
+ defaultVariants: {
32545
+ size: 'md',
32546
+ mirrored: false
32547
+ }
32548
+ });
32549
+
32550
+ //
32551
+ //
32552
+ //
32553
+ //
32554
+ //
32555
+ //
32556
+ //
32557
+
32558
+ var script$O = {
32559
+ name: 'Spinner',
32560
+ props: {
32561
+ size: {
32562
+ type: String,
32563
+ default: 'md',
32564
+ validator: v => ['sm', 'md', 'lg', 'xl'].includes(v)
32565
+ },
32566
+ mirrored: {
32567
+ type: Boolean,
32568
+ default: false
32569
+ },
32570
+ label: {
32571
+ type: String,
32572
+ default: 'Cargando'
32573
+ },
32574
+ boxed: {
32575
+ type: Boolean,
32576
+ default: false
32577
+ }
32578
+ },
32579
+ computed: {
32580
+ classes() {
32581
+ return spinnerVariants({
32582
+ size: this.size,
32583
+ mirrored: this.mirrored
32584
+ });
32585
+ }
32586
+ }
32587
+ };
32588
+
32589
+ /* script */
32590
+ const __vue_script__$O = script$O;
32591
+
32592
+ /* template */
32593
+ var __vue_render__$O = function () {
32594
+ var _vm = this;
32595
+ var _h = _vm.$createElement;
32596
+ var _c = _vm._self._c || _h;
32597
+ return _vm.boxed ? _c("span", {
32598
+ class: ["rq-spinner-box", "rq-spinner-box--" + _vm.size]
32599
+ }, [_c("output", _vm._g({
32600
+ class: _vm.classes,
32601
+ attrs: {
32602
+ "aria-label": _vm.label
32603
+ }
32604
+ }, _vm.$listeners))]) : _c("output", _vm._g({
32605
+ class: _vm.classes,
32606
+ attrs: {
32607
+ "aria-label": _vm.label
32608
+ }
32609
+ }, _vm.$listeners));
32610
+ };
32509
32611
  var __vue_staticRenderFns__$O = [];
32510
32612
  __vue_render__$O._withStripped = true;
32511
32613
 
@@ -32528,18 +32630,7 @@ const __vue_component__$O = /*#__PURE__*/normalizeComponent({
32528
32630
  staticRenderFns: __vue_staticRenderFns__$O
32529
32631
  }, __vue_inject_styles__$O, __vue_script__$O, __vue_scope_id__$O, __vue_is_functional_template__$O, __vue_module_identifier__$O, false, undefined, undefined, undefined);
32530
32632
 
32531
- const progressVariants = cva('rq-progress', {
32532
- variants: {
32533
- variant: {
32534
- default: 'rq-progress--default',
32535
- success: 'rq-progress--success',
32536
- error: 'rq-progress--error'
32537
- }
32538
- },
32539
- defaultVariants: {
32540
- variant: 'default'
32541
- }
32542
- });
32633
+ const checkboxVariants = cva('rq-checkbox');
32543
32634
 
32544
32635
  //
32545
32636
  //
@@ -32567,75 +32658,52 @@ const progressVariants = cva('rq-progress', {
32567
32658
  //
32568
32659
  //
32569
32660
  //
32570
- //
32571
- //
32572
32661
 
32573
- const SEGMENT_COLORS = new Set(['default', 'success', 'error', 'warning']);
32574
- let uid$7 = 0;
32575
- function clamp(value) {
32576
- const number = Number.isFinite(value) ? value : 0;
32577
- return Math.min(100, Math.max(0, number));
32578
- }
32579
32662
  var script$N = {
32580
- name: 'Progress',
32663
+ name: 'Checkbox',
32664
+ model: {
32665
+ prop: 'checked',
32666
+ event: 'change'
32667
+ },
32581
32668
  props: {
32582
- value: {
32583
- type: Number,
32584
- default: 0
32585
- },
32586
- variant: {
32587
- type: String,
32588
- default: 'default',
32589
- validator: v => ['default', 'success', 'error'].includes(v)
32669
+ checked: {
32670
+ type: Boolean,
32671
+ default: false
32590
32672
  },
32591
- label: {
32592
- type: String,
32593
- default: null
32673
+ indeterminate: {
32674
+ type: Boolean,
32675
+ default: false
32594
32676
  },
32595
- showValue: {
32677
+ disabled: {
32596
32678
  type: Boolean,
32597
- default: true
32679
+ default: false
32598
32680
  },
32599
- segments: {
32600
- type: Array,
32601
- default: () => []
32681
+ error: {
32682
+ type: Boolean,
32683
+ default: false
32602
32684
  }
32603
32685
  },
32604
- data() {
32605
- uid$7 += 1;
32606
- return {
32607
- labelId: `rq-progress-label-${uid$7}`
32608
- };
32609
- },
32610
32686
  computed: {
32611
32687
  classes() {
32612
- return progressVariants({
32613
- variant: this.variant
32614
- });
32688
+ return [checkboxVariants(), {
32689
+ 'rq-checkbox--checked': this.checked,
32690
+ 'rq-checkbox--indeterminate': this.indeterminate,
32691
+ 'rq-checkbox--error': this.error,
32692
+ 'rq-checkbox--disabled': this.disabled
32693
+ }];
32615
32694
  },
32616
- normalizedSegments() {
32617
- let used = 0;
32618
- return this.segments.map(segment => {
32619
- const width = Math.min(clamp(segment.value), 100 - used);
32620
- used += width;
32621
- const isVariant = !segment.color || SEGMENT_COLORS.has(segment.color);
32622
- return {
32623
- width,
32624
- classes: ['rq-progress__segment', `rq-progress__segment--${isVariant ? segment.color || 'default' : 'custom'}`],
32625
- style: isVariant ? {
32626
- width: `${width}%`
32627
- } : {
32628
- width: `${width}%`,
32629
- background: segment.color
32630
- }
32631
- };
32632
- });
32695
+ listenersWithoutChange() {
32696
+ const {
32697
+ change,
32698
+ ...rest
32699
+ } = this.$listeners;
32700
+ return rest;
32633
32701
  },
32634
- percent() {
32635
- if (this.segments.length) {
32636
- return Math.round(this.normalizedSegments.reduce((total, segment) => total + segment.width, 0));
32637
- }
32638
- return Math.round(clamp(this.value));
32702
+ checkIcon() {
32703
+ return Check;
32704
+ },
32705
+ minusIcon() {
32706
+ return Minus;
32639
32707
  }
32640
32708
  }
32641
32709
  };
@@ -32648,43 +32716,37 @@ var __vue_render__$N = function () {
32648
32716
  var _vm = this;
32649
32717
  var _h = _vm.$createElement;
32650
32718
  var _c = _vm._self._c || _h;
32651
- return _c("div", _vm._g({
32652
- staticClass: "rq-progress-field"
32653
- }, _vm.$listeners), [_vm.label ? _c("div", {
32654
- staticClass: "rq-progress-field__header"
32655
- }, [_c("span", {
32656
- staticClass: "rq-progress-field__label",
32657
- attrs: {
32658
- id: _vm.labelId
32659
- }
32660
- }, [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _vm.showValue ? _c("span", {
32661
- staticClass: "rq-progress-field__value"
32662
- }, [_vm._v(_vm._s(_vm.percent) + "%")]) : _vm._e()]) : _vm._e(), _vm._v(" "), _c("progress", {
32663
- staticClass: "rq-progress-field__native",
32719
+ return _c("label", _vm._g({
32720
+ class: _vm.classes
32721
+ }, _vm.listenersWithoutChange), [_c("input", {
32722
+ staticClass: "rq-checkbox__input",
32664
32723
  attrs: {
32665
- max: "100",
32666
- "aria-labelledby": _vm.label ? _vm.labelId : null
32724
+ type: "checkbox",
32725
+ disabled: _vm.disabled
32667
32726
  },
32668
32727
  domProps: {
32669
- value: _vm.percent
32728
+ checked: _vm.checked,
32729
+ indeterminate: _vm.indeterminate
32730
+ },
32731
+ on: {
32732
+ change: function ($event) {
32733
+ return _vm.$emit("change", $event.target.checked);
32734
+ }
32670
32735
  }
32671
- }, [_vm._v("\n " + _vm._s(_vm.percent) + "%\n ")]), _vm._v(" "), _c("div", {
32672
- class: _vm.classes,
32736
+ }), _vm._v(" "), _vm.checked && !_vm.indeterminate ? _c(_vm.checkIcon, {
32737
+ tag: "component",
32738
+ staticClass: "rq-checkbox__icon",
32673
32739
  attrs: {
32674
- "aria-hidden": "true"
32740
+ size: 12,
32741
+ "stroke-width": 3
32675
32742
  }
32676
- }, [_vm.segments.length ? _vm._l(_vm.normalizedSegments, function (segment, index) {
32677
- return _c("span", {
32678
- key: index,
32679
- class: segment.classes,
32680
- style: segment.style
32681
- });
32682
- }) : _c("span", {
32683
- staticClass: "rq-progress__fill",
32684
- style: {
32685
- width: _vm.percent + "%"
32743
+ }) : _vm._e(), _vm._v(" "), _vm.indeterminate ? _c(_vm.minusIcon, {
32744
+ tag: "component",
32745
+ staticClass: "rq-checkbox__icon",
32746
+ attrs: {
32747
+ size: 12
32686
32748
  }
32687
- })], 2)]);
32749
+ }) : _vm._e()], 1);
32688
32750
  };
32689
32751
  var __vue_staticRenderFns__$N = [];
32690
32752
  __vue_render__$N._withStripped = true;
@@ -32708,25 +32770,16 @@ const __vue_component__$N = /*#__PURE__*/normalizeComponent({
32708
32770
  staticRenderFns: __vue_staticRenderFns__$N
32709
32771
  }, __vue_inject_styles__$N, __vue_script__$N, __vue_scope_id__$N, __vue_is_functional_template__$N, __vue_module_identifier__$N, false, undefined, undefined, undefined);
32710
32772
 
32711
- const spinnerVariants = cva('rq-spinner', {
32712
- variants: {
32713
- size: {
32714
- sm: 'rq-spinner--sm',
32715
- md: 'rq-spinner--md',
32716
- lg: 'rq-spinner--lg',
32717
- xl: 'rq-spinner--xl'
32718
- },
32719
- mirrored: {
32720
- true: 'rq-spinner--mirrored',
32721
- false: ''
32722
- }
32723
- },
32724
- defaultVariants: {
32725
- size: 'md',
32726
- mirrored: false
32727
- }
32728
- });
32773
+ const switchVariants = cva('rq-switch');
32729
32774
 
32775
+ //
32776
+ //
32777
+ //
32778
+ //
32779
+ //
32780
+ //
32781
+ //
32782
+ //
32730
32783
  //
32731
32784
  //
32732
32785
  //
@@ -32736,32 +32789,27 @@ const spinnerVariants = cva('rq-spinner', {
32736
32789
  //
32737
32790
 
32738
32791
  var script$M = {
32739
- name: 'Spinner',
32792
+ name: 'RqSwitch',
32793
+ model: {
32794
+ prop: 'checked',
32795
+ event: 'change'
32796
+ },
32740
32797
  props: {
32741
- size: {
32742
- type: String,
32743
- default: 'md',
32744
- validator: v => ['sm', 'md', 'lg', 'xl'].includes(v)
32745
- },
32746
- mirrored: {
32798
+ checked: {
32747
32799
  type: Boolean,
32748
32800
  default: false
32749
32801
  },
32750
- label: {
32751
- type: String,
32752
- default: 'Cargando'
32753
- },
32754
- boxed: {
32802
+ disabled: {
32755
32803
  type: Boolean,
32756
32804
  default: false
32757
32805
  }
32758
32806
  },
32759
32807
  computed: {
32760
32808
  classes() {
32761
- return spinnerVariants({
32762
- size: this.size,
32763
- mirrored: this.mirrored
32764
- });
32809
+ return [switchVariants(), {
32810
+ 'rq-switch--checked': this.checked,
32811
+ 'rq-switch--disabled': this.disabled
32812
+ }];
32765
32813
  }
32766
32814
  }
32767
32815
  };
@@ -32774,19 +32822,29 @@ var __vue_render__$M = function () {
32774
32822
  var _vm = this;
32775
32823
  var _h = _vm.$createElement;
32776
32824
  var _c = _vm._self._c || _h;
32777
- return _vm.boxed ? _c("span", {
32778
- class: ["rq-spinner-box", "rq-spinner-box--" + _vm.size]
32779
- }, [_c("output", _vm._g({
32780
- class: _vm.classes,
32781
- attrs: {
32782
- "aria-label": _vm.label
32783
- }
32784
- }, _vm.$listeners))]) : _c("output", _vm._g({
32825
+ return _c("span", _vm._g({
32785
32826
  class: _vm.classes,
32786
32827
  attrs: {
32787
- "aria-label": _vm.label
32828
+ tabindex: _vm.disabled ? -1 : 0,
32829
+ role: "switch",
32830
+ "aria-checked": String(_vm.checked),
32831
+ "aria-disabled": String(_vm.disabled)
32832
+ },
32833
+ on: {
32834
+ click: function ($event) {
32835
+ return _vm.$emit("change", !_vm.checked);
32836
+ },
32837
+ keydown: function ($event) {
32838
+ if (!$event.type.indexOf("key") && _vm._k($event.keyCode, "space", 32, $event.key, [" ", "Spacebar"])) {
32839
+ return null;
32840
+ }
32841
+ $event.preventDefault();
32842
+ return _vm.$emit("change", !_vm.checked);
32843
+ }
32788
32844
  }
32789
- }, _vm.$listeners));
32845
+ }, _vm.$listeners), [_c("span", {
32846
+ staticClass: "rq-switch__thumb"
32847
+ })]);
32790
32848
  };
32791
32849
  var __vue_staticRenderFns__$M = [];
32792
32850
  __vue_render__$M._withStripped = true;
@@ -32810,7 +32868,10 @@ const __vue_component__$M = /*#__PURE__*/normalizeComponent({
32810
32868
  staticRenderFns: __vue_staticRenderFns__$M
32811
32869
  }, __vue_inject_styles__$M, __vue_script__$M, __vue_scope_id__$M, __vue_is_functional_template__$M, __vue_module_identifier__$M, false, undefined, undefined, undefined);
32812
32870
 
32813
- const checkboxVariants = cva('rq-checkbox');
32871
+ const chipVariants = cva('rq-chip', {
32872
+ variants: {},
32873
+ defaultVariants: {}
32874
+ });
32814
32875
 
32815
32876
  //
32816
32877
  //
@@ -32827,63 +32888,31 @@ const checkboxVariants = cva('rq-checkbox');
32827
32888
  //
32828
32889
  //
32829
32890
  //
32830
- //
32831
- //
32832
- //
32833
- //
32834
- //
32835
- //
32836
- //
32837
- //
32838
- //
32839
- //
32840
- //
32841
32891
 
32842
32892
  var script$L = {
32843
- name: 'Checkbox',
32844
- model: {
32845
- prop: 'checked',
32846
- event: 'change'
32847
- },
32893
+ name: 'Chip',
32848
32894
  props: {
32849
- checked: {
32850
- type: Boolean,
32851
- default: false
32895
+ label: {
32896
+ type: String,
32897
+ default: ''
32852
32898
  },
32853
- indeterminate: {
32899
+ closable: {
32854
32900
  type: Boolean,
32855
32901
  default: false
32856
32902
  },
32857
32903
  disabled: {
32858
32904
  type: Boolean,
32859
32905
  default: false
32860
- },
32861
- error: {
32862
- type: Boolean,
32863
- default: false
32864
32906
  }
32865
32907
  },
32866
32908
  computed: {
32867
32909
  classes() {
32868
- return [checkboxVariants(), {
32869
- 'rq-checkbox--checked': this.checked,
32870
- 'rq-checkbox--indeterminate': this.indeterminate,
32871
- 'rq-checkbox--error': this.error,
32872
- 'rq-checkbox--disabled': this.disabled
32910
+ return [chipVariants(), {
32911
+ 'rq-chip--disabled': this.disabled
32873
32912
  }];
32874
32913
  },
32875
- listenersWithoutChange() {
32876
- const {
32877
- change,
32878
- ...rest
32879
- } = this.$listeners;
32880
- return rest;
32881
- },
32882
- checkIcon() {
32883
- return Check;
32884
- },
32885
- minusIcon() {
32886
- return Minus;
32914
+ xIcon() {
32915
+ return CircleX;
32887
32916
  }
32888
32917
  }
32889
32918
  };
@@ -32896,37 +32925,26 @@ var __vue_render__$L = function () {
32896
32925
  var _vm = this;
32897
32926
  var _h = _vm.$createElement;
32898
32927
  var _c = _vm._self._c || _h;
32899
- return _c("label", _vm._g({
32928
+ return _c("span", _vm._g({
32900
32929
  class: _vm.classes
32901
- }, _vm.listenersWithoutChange), [_c("input", {
32902
- staticClass: "rq-checkbox__input",
32930
+ }, _vm.$listeners), [_c("span", [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _vm.closable ? _c("button", {
32931
+ staticClass: "rq-chip__close",
32903
32932
  attrs: {
32904
- type: "checkbox",
32933
+ type: "button",
32905
32934
  disabled: _vm.disabled
32906
32935
  },
32907
- domProps: {
32908
- checked: _vm.checked,
32909
- indeterminate: _vm.indeterminate
32910
- },
32911
32936
  on: {
32912
- change: function ($event) {
32913
- return _vm.$emit("change", $event.target.checked);
32937
+ click: function ($event) {
32938
+ $event.stopPropagation();
32939
+ return _vm.$emit("close");
32914
32940
  }
32915
32941
  }
32916
- }), _vm._v(" "), _vm.checked && !_vm.indeterminate ? _c(_vm.checkIcon, {
32917
- tag: "component",
32918
- staticClass: "rq-checkbox__icon",
32919
- attrs: {
32920
- size: 12,
32921
- "stroke-width": 3
32922
- }
32923
- }) : _vm._e(), _vm._v(" "), _vm.indeterminate ? _c(_vm.minusIcon, {
32942
+ }, [_c(_vm.xIcon, {
32924
32943
  tag: "component",
32925
- staticClass: "rq-checkbox__icon",
32926
32944
  attrs: {
32927
- size: 12
32945
+ size: 16
32928
32946
  }
32929
- }) : _vm._e()], 1);
32947
+ })], 1) : _vm._e()]);
32930
32948
  };
32931
32949
  var __vue_staticRenderFns__$L = [];
32932
32950
  __vue_render__$L._withStripped = true;
@@ -32950,204 +32968,6 @@ const __vue_component__$L = /*#__PURE__*/normalizeComponent({
32950
32968
  staticRenderFns: __vue_staticRenderFns__$L
32951
32969
  }, __vue_inject_styles__$L, __vue_script__$L, __vue_scope_id__$L, __vue_is_functional_template__$L, __vue_module_identifier__$L, false, undefined, undefined, undefined);
32952
32970
 
32953
- const switchVariants = cva('rq-switch');
32954
-
32955
- //
32956
- //
32957
- //
32958
- //
32959
- //
32960
- //
32961
- //
32962
- //
32963
- //
32964
- //
32965
- //
32966
- //
32967
- //
32968
- //
32969
- //
32970
-
32971
- var script$K = {
32972
- name: 'RqSwitch',
32973
- model: {
32974
- prop: 'checked',
32975
- event: 'change'
32976
- },
32977
- props: {
32978
- checked: {
32979
- type: Boolean,
32980
- default: false
32981
- },
32982
- disabled: {
32983
- type: Boolean,
32984
- default: false
32985
- }
32986
- },
32987
- computed: {
32988
- classes() {
32989
- return [switchVariants(), {
32990
- 'rq-switch--checked': this.checked,
32991
- 'rq-switch--disabled': this.disabled
32992
- }];
32993
- }
32994
- }
32995
- };
32996
-
32997
- /* script */
32998
- const __vue_script__$K = script$K;
32999
-
33000
- /* template */
33001
- var __vue_render__$K = function () {
33002
- var _vm = this;
33003
- var _h = _vm.$createElement;
33004
- var _c = _vm._self._c || _h;
33005
- return _c("span", _vm._g({
33006
- class: _vm.classes,
33007
- attrs: {
33008
- tabindex: _vm.disabled ? -1 : 0,
33009
- role: "switch",
33010
- "aria-checked": String(_vm.checked),
33011
- "aria-disabled": String(_vm.disabled)
33012
- },
33013
- on: {
33014
- click: function ($event) {
33015
- return _vm.$emit("change", !_vm.checked);
33016
- },
33017
- keydown: function ($event) {
33018
- if (!$event.type.indexOf("key") && _vm._k($event.keyCode, "space", 32, $event.key, [" ", "Spacebar"])) {
33019
- return null;
33020
- }
33021
- $event.preventDefault();
33022
- return _vm.$emit("change", !_vm.checked);
33023
- }
33024
- }
33025
- }, _vm.$listeners), [_c("span", {
33026
- staticClass: "rq-switch__thumb"
33027
- })]);
33028
- };
33029
- var __vue_staticRenderFns__$K = [];
33030
- __vue_render__$K._withStripped = true;
33031
-
33032
- /* style */
33033
- const __vue_inject_styles__$K = undefined;
33034
- /* scoped */
33035
- const __vue_scope_id__$K = undefined;
33036
- /* module identifier */
33037
- const __vue_module_identifier__$K = undefined;
33038
- /* functional template */
33039
- const __vue_is_functional_template__$K = false;
33040
- /* style inject */
33041
-
33042
- /* style inject SSR */
33043
-
33044
- /* style inject shadow dom */
33045
-
33046
- const __vue_component__$K = /*#__PURE__*/normalizeComponent({
33047
- render: __vue_render__$K,
33048
- staticRenderFns: __vue_staticRenderFns__$K
33049
- }, __vue_inject_styles__$K, __vue_script__$K, __vue_scope_id__$K, __vue_is_functional_template__$K, __vue_module_identifier__$K, false, undefined, undefined, undefined);
33050
-
33051
- const chipVariants = cva('rq-chip', {
33052
- variants: {},
33053
- defaultVariants: {}
33054
- });
33055
-
33056
- //
33057
- //
33058
- //
33059
- //
33060
- //
33061
- //
33062
- //
33063
- //
33064
- //
33065
- //
33066
- //
33067
- //
33068
- //
33069
- //
33070
- //
33071
-
33072
- var script$J = {
33073
- name: 'Chip',
33074
- props: {
33075
- label: {
33076
- type: String,
33077
- default: ''
33078
- },
33079
- closable: {
33080
- type: Boolean,
33081
- default: false
33082
- },
33083
- disabled: {
33084
- type: Boolean,
33085
- default: false
33086
- }
33087
- },
33088
- computed: {
33089
- classes() {
33090
- return [chipVariants(), {
33091
- 'rq-chip--disabled': this.disabled
33092
- }];
33093
- },
33094
- xIcon() {
33095
- return CircleX;
33096
- }
33097
- }
33098
- };
33099
-
33100
- /* script */
33101
- const __vue_script__$J = script$J;
33102
-
33103
- /* template */
33104
- var __vue_render__$J = function () {
33105
- var _vm = this;
33106
- var _h = _vm.$createElement;
33107
- var _c = _vm._self._c || _h;
33108
- return _c("span", _vm._g({
33109
- class: _vm.classes
33110
- }, _vm.$listeners), [_c("span", [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _vm.closable ? _c("button", {
33111
- staticClass: "rq-chip__close",
33112
- attrs: {
33113
- type: "button",
33114
- disabled: _vm.disabled
33115
- },
33116
- on: {
33117
- click: function ($event) {
33118
- $event.stopPropagation();
33119
- return _vm.$emit("close");
33120
- }
33121
- }
33122
- }, [_c(_vm.xIcon, {
33123
- tag: "component",
33124
- attrs: {
33125
- size: 16
33126
- }
33127
- })], 1) : _vm._e()]);
33128
- };
33129
- var __vue_staticRenderFns__$J = [];
33130
- __vue_render__$J._withStripped = true;
33131
-
33132
- /* style */
33133
- const __vue_inject_styles__$J = undefined;
33134
- /* scoped */
33135
- const __vue_scope_id__$J = undefined;
33136
- /* module identifier */
33137
- const __vue_module_identifier__$J = undefined;
33138
- /* functional template */
33139
- const __vue_is_functional_template__$J = false;
33140
- /* style inject */
33141
-
33142
- /* style inject SSR */
33143
-
33144
- /* style inject shadow dom */
33145
-
33146
- const __vue_component__$J = /*#__PURE__*/normalizeComponent({
33147
- render: __vue_render__$J,
33148
- staticRenderFns: __vue_staticRenderFns__$J
33149
- }, __vue_inject_styles__$J, __vue_script__$J, __vue_scope_id__$J, __vue_is_functional_template__$J, __vue_module_identifier__$J, false, undefined, undefined, undefined);
33150
-
33151
32971
  const badgeVariants = cva('rq-badge', {
33152
32972
  variants: {
33153
32973
  variant: {
@@ -33191,7 +33011,7 @@ const badgeVariants = cva('rq-badge', {
33191
33011
  //
33192
33012
  //
33193
33013
 
33194
- var script$I = {
33014
+ var script$K = {
33195
33015
  name: 'Badge',
33196
33016
  inheritAttrs: false,
33197
33017
  props: {
@@ -33257,10 +33077,10 @@ var script$I = {
33257
33077
  };
33258
33078
 
33259
33079
  /* script */
33260
- const __vue_script__$I = script$I;
33080
+ const __vue_script__$K = script$K;
33261
33081
 
33262
33082
  /* template */
33263
- var __vue_render__$I = function () {
33083
+ var __vue_render__$K = function () {
33264
33084
  var _vm = this;
33265
33085
  var _h = _vm.$createElement;
33266
33086
  var _c = _vm._self._c || _h;
@@ -33269,27 +33089,27 @@ var __vue_render__$I = function () {
33269
33089
  style: _vm.inlineStyle
33270
33090
  }, "span", _vm.$attrs, false), _vm.$listeners), [_vm._t("left"), _vm._v(" "), _vm._t("default"), _vm._v(" "), _vm._t("right")], 2);
33271
33091
  };
33272
- var __vue_staticRenderFns__$I = [];
33273
- __vue_render__$I._withStripped = true;
33092
+ var __vue_staticRenderFns__$K = [];
33093
+ __vue_render__$K._withStripped = true;
33274
33094
 
33275
33095
  /* style */
33276
- const __vue_inject_styles__$I = undefined;
33096
+ const __vue_inject_styles__$K = undefined;
33277
33097
  /* scoped */
33278
- const __vue_scope_id__$I = undefined;
33098
+ const __vue_scope_id__$K = undefined;
33279
33099
  /* module identifier */
33280
- const __vue_module_identifier__$I = undefined;
33100
+ const __vue_module_identifier__$K = undefined;
33281
33101
  /* functional template */
33282
- const __vue_is_functional_template__$I = false;
33102
+ const __vue_is_functional_template__$K = false;
33283
33103
  /* style inject */
33284
33104
 
33285
33105
  /* style inject SSR */
33286
33106
 
33287
33107
  /* style inject shadow dom */
33288
33108
 
33289
- const __vue_component__$I = /*#__PURE__*/normalizeComponent({
33290
- render: __vue_render__$I,
33291
- staticRenderFns: __vue_staticRenderFns__$I
33292
- }, __vue_inject_styles__$I, __vue_script__$I, __vue_scope_id__$I, __vue_is_functional_template__$I, __vue_module_identifier__$I, false, undefined, undefined, undefined);
33109
+ const __vue_component__$K = /*#__PURE__*/normalizeComponent({
33110
+ render: __vue_render__$K,
33111
+ staticRenderFns: __vue_staticRenderFns__$K
33112
+ }, __vue_inject_styles__$K, __vue_script__$K, __vue_scope_id__$K, __vue_is_functional_template__$K, __vue_module_identifier__$K, false, undefined, undefined, undefined);
33293
33113
 
33294
33114
  const iconVariants = cva('rq-icon', {
33295
33115
  variants: {
@@ -33323,7 +33143,7 @@ const iconVariants = cva('rq-icon', {
33323
33143
  //
33324
33144
  //
33325
33145
 
33326
- var script$H = {
33146
+ var script$J = {
33327
33147
  name: 'Icon',
33328
33148
  inheritAttrs: false,
33329
33149
  props: {
@@ -33375,10 +33195,10 @@ var script$H = {
33375
33195
  };
33376
33196
 
33377
33197
  /* script */
33378
- const __vue_script__$H = script$H;
33198
+ const __vue_script__$J = script$J;
33379
33199
 
33380
33200
  /* template */
33381
- var __vue_render__$H = function () {
33201
+ var __vue_render__$J = function () {
33382
33202
  var _vm = this;
33383
33203
  var _h = _vm.$createElement;
33384
33204
  var _c = _vm._self._c || _h;
@@ -33387,27 +33207,27 @@ var __vue_render__$H = function () {
33387
33207
  style: _vm.fontVariationStyle
33388
33208
  }, "span", _vm.mergedAttrs, false), _vm.$listeners), [_vm._v(_vm._s(_vm.name))]);
33389
33209
  };
33390
- var __vue_staticRenderFns__$H = [];
33391
- __vue_render__$H._withStripped = true;
33210
+ var __vue_staticRenderFns__$J = [];
33211
+ __vue_render__$J._withStripped = true;
33392
33212
 
33393
33213
  /* style */
33394
- const __vue_inject_styles__$H = undefined;
33214
+ const __vue_inject_styles__$J = undefined;
33395
33215
  /* scoped */
33396
- const __vue_scope_id__$H = undefined;
33216
+ const __vue_scope_id__$J = undefined;
33397
33217
  /* module identifier */
33398
- const __vue_module_identifier__$H = undefined;
33218
+ const __vue_module_identifier__$J = undefined;
33399
33219
  /* functional template */
33400
- const __vue_is_functional_template__$H = false;
33220
+ const __vue_is_functional_template__$J = false;
33401
33221
  /* style inject */
33402
33222
 
33403
33223
  /* style inject SSR */
33404
33224
 
33405
33225
  /* style inject shadow dom */
33406
33226
 
33407
- const __vue_component__$H = /*#__PURE__*/normalizeComponent({
33408
- render: __vue_render__$H,
33409
- staticRenderFns: __vue_staticRenderFns__$H
33410
- }, __vue_inject_styles__$H, __vue_script__$H, __vue_scope_id__$H, __vue_is_functional_template__$H, __vue_module_identifier__$H, false, undefined, undefined, undefined);
33227
+ const __vue_component__$J = /*#__PURE__*/normalizeComponent({
33228
+ render: __vue_render__$J,
33229
+ staticRenderFns: __vue_staticRenderFns__$J
33230
+ }, __vue_inject_styles__$J, __vue_script__$J, __vue_scope_id__$J, __vue_is_functional_template__$J, __vue_module_identifier__$J, false, undefined, undefined, undefined);
33411
33231
 
33412
33232
  const skeletonVariants = cva('rq-skeleton');
33413
33233
 
@@ -33416,7 +33236,7 @@ const skeletonVariants = cva('rq-skeleton');
33416
33236
  //
33417
33237
  //
33418
33238
 
33419
- var script$G = {
33239
+ var script$I = {
33420
33240
  name: 'Skeleton',
33421
33241
  props: {
33422
33242
  width: {
@@ -33436,10 +33256,10 @@ var script$G = {
33436
33256
  };
33437
33257
 
33438
33258
  /* script */
33439
- const __vue_script__$G = script$G;
33259
+ const __vue_script__$I = script$I;
33440
33260
 
33441
33261
  /* template */
33442
- var __vue_render__$G = function () {
33262
+ var __vue_render__$I = function () {
33443
33263
  var _vm = this;
33444
33264
  var _h = _vm.$createElement;
33445
33265
  var _c = _vm._self._c || _h;
@@ -33451,27 +33271,27 @@ var __vue_render__$G = function () {
33451
33271
  }
33452
33272
  }, _vm.$listeners));
33453
33273
  };
33454
- var __vue_staticRenderFns__$G = [];
33455
- __vue_render__$G._withStripped = true;
33274
+ var __vue_staticRenderFns__$I = [];
33275
+ __vue_render__$I._withStripped = true;
33456
33276
 
33457
33277
  /* style */
33458
- const __vue_inject_styles__$G = undefined;
33278
+ const __vue_inject_styles__$I = undefined;
33459
33279
  /* scoped */
33460
- const __vue_scope_id__$G = undefined;
33280
+ const __vue_scope_id__$I = undefined;
33461
33281
  /* module identifier */
33462
- const __vue_module_identifier__$G = undefined;
33282
+ const __vue_module_identifier__$I = undefined;
33463
33283
  /* functional template */
33464
- const __vue_is_functional_template__$G = false;
33284
+ const __vue_is_functional_template__$I = false;
33465
33285
  /* style inject */
33466
33286
 
33467
33287
  /* style inject SSR */
33468
33288
 
33469
33289
  /* style inject shadow dom */
33470
33290
 
33471
- const __vue_component__$G = /*#__PURE__*/normalizeComponent({
33472
- render: __vue_render__$G,
33473
- staticRenderFns: __vue_staticRenderFns__$G
33474
- }, __vue_inject_styles__$G, __vue_script__$G, __vue_scope_id__$G, __vue_is_functional_template__$G, __vue_module_identifier__$G, false, undefined, undefined, undefined);
33291
+ const __vue_component__$I = /*#__PURE__*/normalizeComponent({
33292
+ render: __vue_render__$I,
33293
+ staticRenderFns: __vue_staticRenderFns__$I
33294
+ }, __vue_inject_styles__$I, __vue_script__$I, __vue_scope_id__$I, __vue_is_functional_template__$I, __vue_module_identifier__$I, false, undefined, undefined, undefined);
33475
33295
 
33476
33296
  const selectVariants = cva('rq-select', {
33477
33297
  variants: {
@@ -33510,12 +33330,12 @@ const selectVariants = cva('rq-select', {
33510
33330
  //
33511
33331
  //
33512
33332
 
33513
- let uid$6 = 0;
33514
- var script$F = {
33333
+ let uid$7 = 0;
33334
+ var script$H = {
33515
33335
  name: 'Select',
33516
33336
  inheritAttrs: false,
33517
33337
  components: {
33518
- Icon: __vue_component__$H
33338
+ Icon: __vue_component__$J
33519
33339
  },
33520
33340
  props: {
33521
33341
  value: {
@@ -33546,9 +33366,9 @@ var script$F = {
33546
33366
  }
33547
33367
  },
33548
33368
  data() {
33549
- uid$6 += 1;
33369
+ uid$7 += 1;
33550
33370
  return {
33551
- generatedId: `rq-select-${uid$6}`
33371
+ generatedId: `rq-select-${uid$7}`
33552
33372
  };
33553
33373
  },
33554
33374
  computed: {
@@ -33572,9 +33392,15 @@ var script$F = {
33572
33392
  },
33573
33393
  // El <select> trabaja con el índice de la opción para emitir el `value`
33574
33394
  // con su tipo original (número, string…) en vez del string del DOM.
33395
+ // El `input` nativo no se reenvía: el del v-model lo emite el Select con
33396
+ // el value de la opción, y si no, el padre recibía el Event antes.
33575
33397
  selectListeners() {
33398
+ const listeners = {
33399
+ ...this.$listeners
33400
+ };
33401
+ delete listeners.input;
33576
33402
  return {
33577
- ...this.$listeners,
33403
+ ...listeners,
33578
33404
  change: e => {
33579
33405
  const option = this.options[e.target.value];
33580
33406
  const value = option ? option.value : '';
@@ -33590,10 +33416,10 @@ var script$F = {
33590
33416
  };
33591
33417
 
33592
33418
  /* script */
33593
- const __vue_script__$F = script$F;
33419
+ const __vue_script__$H = script$H;
33594
33420
 
33595
33421
  /* template */
33596
- var __vue_render__$F = function () {
33422
+ var __vue_render__$H = function () {
33597
33423
  var _vm = this;
33598
33424
  var _h = _vm.$createElement;
33599
33425
  var _c = _vm._self._c || _h;
@@ -33633,27 +33459,27 @@ var __vue_render__$F = function () {
33633
33459
  }
33634
33460
  })], 1);
33635
33461
  };
33636
- var __vue_staticRenderFns__$F = [];
33637
- __vue_render__$F._withStripped = true;
33462
+ var __vue_staticRenderFns__$H = [];
33463
+ __vue_render__$H._withStripped = true;
33638
33464
 
33639
33465
  /* style */
33640
- const __vue_inject_styles__$F = undefined;
33466
+ const __vue_inject_styles__$H = undefined;
33641
33467
  /* scoped */
33642
- const __vue_scope_id__$F = undefined;
33468
+ const __vue_scope_id__$H = undefined;
33643
33469
  /* module identifier */
33644
- const __vue_module_identifier__$F = undefined;
33470
+ const __vue_module_identifier__$H = undefined;
33645
33471
  /* functional template */
33646
- const __vue_is_functional_template__$F = false;
33472
+ const __vue_is_functional_template__$H = false;
33647
33473
  /* style inject */
33648
33474
 
33649
33475
  /* style inject SSR */
33650
33476
 
33651
33477
  /* style inject shadow dom */
33652
33478
 
33653
- const __vue_component__$F = /*#__PURE__*/normalizeComponent({
33654
- render: __vue_render__$F,
33655
- staticRenderFns: __vue_staticRenderFns__$F
33656
- }, __vue_inject_styles__$F, __vue_script__$F, __vue_scope_id__$F, __vue_is_functional_template__$F, __vue_module_identifier__$F, false, undefined, undefined, undefined);
33479
+ const __vue_component__$H = /*#__PURE__*/normalizeComponent({
33480
+ render: __vue_render__$H,
33481
+ staticRenderFns: __vue_staticRenderFns__$H
33482
+ }, __vue_inject_styles__$H, __vue_script__$H, __vue_scope_id__$H, __vue_is_functional_template__$H, __vue_module_identifier__$H, false, undefined, undefined, undefined);
33657
33483
 
33658
33484
  // Sin dimensiones CVA: Textarea tiene un solo tamaño (alto mínimo 96, crece con rows/resize).
33659
33485
  const textareaVariants = cva('rq-textarea');
@@ -33673,8 +33499,8 @@ const textareaVariants = cva('rq-textarea');
33673
33499
  //
33674
33500
  //
33675
33501
 
33676
- let uid$5 = 0;
33677
- var script$E = {
33502
+ let uid$6 = 0;
33503
+ var script$G = {
33678
33504
  name: 'Textarea',
33679
33505
  inheritAttrs: false,
33680
33506
  props: {
@@ -33700,9 +33526,9 @@ var script$E = {
33700
33526
  }
33701
33527
  },
33702
33528
  data() {
33703
- uid$5 += 1;
33529
+ uid$6 += 1;
33704
33530
  return {
33705
- generatedId: `rq-textarea-${uid$5}`
33531
+ generatedId: `rq-textarea-${uid$6}`
33706
33532
  };
33707
33533
  },
33708
33534
  computed: {
@@ -33724,10 +33550,10 @@ var script$E = {
33724
33550
  };
33725
33551
 
33726
33552
  /* script */
33727
- const __vue_script__$E = script$E;
33553
+ const __vue_script__$G = script$G;
33728
33554
 
33729
33555
  /* template */
33730
- var __vue_render__$E = function () {
33556
+ var __vue_render__$G = function () {
33731
33557
  var _vm = this;
33732
33558
  var _h = _vm.$createElement;
33733
33559
  var _c = _vm._self._c || _h;
@@ -33745,27 +33571,27 @@ var __vue_render__$E = function () {
33745
33571
  }
33746
33572
  }, "textarea", _vm.$attrs, false), _vm.textareaListeners));
33747
33573
  };
33748
- var __vue_staticRenderFns__$E = [];
33749
- __vue_render__$E._withStripped = true;
33574
+ var __vue_staticRenderFns__$G = [];
33575
+ __vue_render__$G._withStripped = true;
33750
33576
 
33751
33577
  /* style */
33752
- const __vue_inject_styles__$E = undefined;
33578
+ const __vue_inject_styles__$G = undefined;
33753
33579
  /* scoped */
33754
- const __vue_scope_id__$E = undefined;
33580
+ const __vue_scope_id__$G = undefined;
33755
33581
  /* module identifier */
33756
- const __vue_module_identifier__$E = undefined;
33582
+ const __vue_module_identifier__$G = undefined;
33757
33583
  /* functional template */
33758
- const __vue_is_functional_template__$E = false;
33584
+ const __vue_is_functional_template__$G = false;
33759
33585
  /* style inject */
33760
33586
 
33761
33587
  /* style inject SSR */
33762
33588
 
33763
33589
  /* style inject shadow dom */
33764
33590
 
33765
- const __vue_component__$E = /*#__PURE__*/normalizeComponent({
33766
- render: __vue_render__$E,
33767
- staticRenderFns: __vue_staticRenderFns__$E
33768
- }, __vue_inject_styles__$E, __vue_script__$E, __vue_scope_id__$E, __vue_is_functional_template__$E, __vue_module_identifier__$E, false, undefined, undefined, undefined);
33591
+ const __vue_component__$G = /*#__PURE__*/normalizeComponent({
33592
+ render: __vue_render__$G,
33593
+ staticRenderFns: __vue_staticRenderFns__$G
33594
+ }, __vue_inject_styles__$G, __vue_script__$G, __vue_scope_id__$G, __vue_is_functional_template__$G, __vue_module_identifier__$G, false, undefined, undefined, undefined);
33769
33595
 
33770
33596
  // Sin dimensiones CVA: un solo tamaño (16px, área de 20), igual que Checkbox.
33771
33597
  const radioVariants = cva('rq-radio');
@@ -33787,8 +33613,8 @@ const radioVariants = cva('rq-radio');
33787
33613
  //
33788
33614
  //
33789
33615
 
33790
- let uid$4 = 0;
33791
- var script$D = {
33616
+ let uid$5 = 0;
33617
+ var script$F = {
33792
33618
  name: 'Radio',
33793
33619
  inheritAttrs: false,
33794
33620
  // v-model del grupo: el radio se marca cuando modelValue === value.
@@ -33819,9 +33645,9 @@ var script$D = {
33819
33645
  }
33820
33646
  },
33821
33647
  data() {
33822
- uid$4 += 1;
33648
+ uid$5 += 1;
33823
33649
  return {
33824
- generatedId: `rq-radio-${uid$4}`
33650
+ generatedId: `rq-radio-${uid$5}`
33825
33651
  };
33826
33652
  },
33827
33653
  computed: {
@@ -33851,10 +33677,10 @@ var script$D = {
33851
33677
  };
33852
33678
 
33853
33679
  /* script */
33854
- const __vue_script__$D = script$D;
33680
+ const __vue_script__$F = script$F;
33855
33681
 
33856
33682
  /* template */
33857
- var __vue_render__$D = function () {
33683
+ var __vue_render__$F = function () {
33858
33684
  var _vm = this;
33859
33685
  var _h = _vm.$createElement;
33860
33686
  var _c = _vm._self._c || _h;
@@ -33874,27 +33700,27 @@ var __vue_render__$D = function () {
33874
33700
  }
33875
33701
  }, "input", _vm.$attrs, false), _vm.radioListeners))]);
33876
33702
  };
33877
- var __vue_staticRenderFns__$D = [];
33878
- __vue_render__$D._withStripped = true;
33703
+ var __vue_staticRenderFns__$F = [];
33704
+ __vue_render__$F._withStripped = true;
33879
33705
 
33880
33706
  /* style */
33881
- const __vue_inject_styles__$D = undefined;
33707
+ const __vue_inject_styles__$F = undefined;
33882
33708
  /* scoped */
33883
- const __vue_scope_id__$D = undefined;
33709
+ const __vue_scope_id__$F = undefined;
33884
33710
  /* module identifier */
33885
- const __vue_module_identifier__$D = undefined;
33711
+ const __vue_module_identifier__$F = undefined;
33886
33712
  /* functional template */
33887
- const __vue_is_functional_template__$D = false;
33713
+ const __vue_is_functional_template__$F = false;
33888
33714
  /* style inject */
33889
33715
 
33890
33716
  /* style inject SSR */
33891
33717
 
33892
33718
  /* style inject shadow dom */
33893
33719
 
33894
- const __vue_component__$D = /*#__PURE__*/normalizeComponent({
33895
- render: __vue_render__$D,
33896
- staticRenderFns: __vue_staticRenderFns__$D
33897
- }, __vue_inject_styles__$D, __vue_script__$D, __vue_scope_id__$D, __vue_is_functional_template__$D, __vue_module_identifier__$D, false, undefined, undefined, undefined);
33720
+ const __vue_component__$F = /*#__PURE__*/normalizeComponent({
33721
+ render: __vue_render__$F,
33722
+ staticRenderFns: __vue_staticRenderFns__$F
33723
+ }, __vue_inject_styles__$F, __vue_script__$F, __vue_scope_id__$F, __vue_is_functional_template__$F, __vue_module_identifier__$F, false, undefined, undefined, undefined);
33898
33724
 
33899
33725
  const avatarVariants = cva('rq-avatar', {
33900
33726
  variants: {
@@ -33924,7 +33750,7 @@ const avatarVariants = cva('rq-avatar', {
33924
33750
  //
33925
33751
  //
33926
33752
 
33927
- var script$C = {
33753
+ var script$E = {
33928
33754
  name: 'Avatar',
33929
33755
  props: {
33930
33756
  initials: {
@@ -33953,10 +33779,10 @@ var script$C = {
33953
33779
  };
33954
33780
 
33955
33781
  /* script */
33956
- const __vue_script__$C = script$C;
33782
+ const __vue_script__$E = script$E;
33957
33783
 
33958
33784
  /* template */
33959
- var __vue_render__$C = function () {
33785
+ var __vue_render__$E = function () {
33960
33786
  var _vm = this;
33961
33787
  var _h = _vm.$createElement;
33962
33788
  var _c = _vm._self._c || _h;
@@ -33964,27 +33790,27 @@ var __vue_render__$C = function () {
33964
33790
  class: _vm.classes
33965
33791
  }, _vm.$listeners), [_vm._v(_vm._s(_vm.initials))]);
33966
33792
  };
33967
- var __vue_staticRenderFns__$C = [];
33968
- __vue_render__$C._withStripped = true;
33793
+ var __vue_staticRenderFns__$E = [];
33794
+ __vue_render__$E._withStripped = true;
33969
33795
 
33970
33796
  /* style */
33971
- const __vue_inject_styles__$C = undefined;
33797
+ const __vue_inject_styles__$E = undefined;
33972
33798
  /* scoped */
33973
- const __vue_scope_id__$C = undefined;
33799
+ const __vue_scope_id__$E = undefined;
33974
33800
  /* module identifier */
33975
- const __vue_module_identifier__$C = undefined;
33801
+ const __vue_module_identifier__$E = undefined;
33976
33802
  /* functional template */
33977
- const __vue_is_functional_template__$C = false;
33803
+ const __vue_is_functional_template__$E = false;
33978
33804
  /* style inject */
33979
33805
 
33980
33806
  /* style inject SSR */
33981
33807
 
33982
33808
  /* style inject shadow dom */
33983
33809
 
33984
- const __vue_component__$C = /*#__PURE__*/normalizeComponent({
33985
- render: __vue_render__$C,
33986
- staticRenderFns: __vue_staticRenderFns__$C
33987
- }, __vue_inject_styles__$C, __vue_script__$C, __vue_scope_id__$C, __vue_is_functional_template__$C, __vue_module_identifier__$C, false, undefined, undefined, undefined);
33810
+ const __vue_component__$E = /*#__PURE__*/normalizeComponent({
33811
+ render: __vue_render__$E,
33812
+ staticRenderFns: __vue_staticRenderFns__$E
33813
+ }, __vue_inject_styles__$E, __vue_script__$E, __vue_scope_id__$E, __vue_is_functional_template__$E, __vue_module_identifier__$E, false, undefined, undefined, undefined);
33988
33814
 
33989
33815
  const tooltipVariants = cva('rq-tooltip', {
33990
33816
  variants: {
@@ -34031,7 +33857,7 @@ const tooltipVariants = cva('rq-tooltip', {
34031
33857
  // Separación entre el trigger y la burbuja, en px. Igual al gap que antes
34032
33858
  // definía el CSS con calc(100% + 8px).
34033
33859
  const GAP$1 = 8;
34034
- var script$B = {
33860
+ var script$D = {
34035
33861
  name: 'Tooltip',
34036
33862
  props: {
34037
33863
  side: {
@@ -34169,10 +33995,10 @@ var script$B = {
34169
33995
  };
34170
33996
 
34171
33997
  /* script */
34172
- const __vue_script__$B = script$B;
33998
+ const __vue_script__$D = script$D;
34173
33999
 
34174
34000
  /* template */
34175
- var __vue_render__$B = function () {
34001
+ var __vue_render__$D = function () {
34176
34002
  var _vm = this;
34177
34003
  var _h = _vm.$createElement;
34178
34004
  var _c = _vm._self._c || _h;
@@ -34192,27 +34018,27 @@ var __vue_render__$B = function () {
34192
34018
  style: _vm.style
34193
34019
  }, [_vm._v("\n " + _vm._s(_vm.text) + "\n ")])], 2);
34194
34020
  };
34195
- var __vue_staticRenderFns__$B = [];
34196
- __vue_render__$B._withStripped = true;
34021
+ var __vue_staticRenderFns__$D = [];
34022
+ __vue_render__$D._withStripped = true;
34197
34023
 
34198
34024
  /* style */
34199
- const __vue_inject_styles__$B = undefined;
34025
+ const __vue_inject_styles__$D = undefined;
34200
34026
  /* scoped */
34201
- const __vue_scope_id__$B = undefined;
34027
+ const __vue_scope_id__$D = undefined;
34202
34028
  /* module identifier */
34203
- const __vue_module_identifier__$B = undefined;
34029
+ const __vue_module_identifier__$D = undefined;
34204
34030
  /* functional template */
34205
- const __vue_is_functional_template__$B = false;
34031
+ const __vue_is_functional_template__$D = false;
34206
34032
  /* style inject */
34207
34033
 
34208
34034
  /* style inject SSR */
34209
34035
 
34210
34036
  /* style inject shadow dom */
34211
34037
 
34212
- const __vue_component__$B = /*#__PURE__*/normalizeComponent({
34213
- render: __vue_render__$B,
34214
- staticRenderFns: __vue_staticRenderFns__$B
34215
- }, __vue_inject_styles__$B, __vue_script__$B, __vue_scope_id__$B, __vue_is_functional_template__$B, __vue_module_identifier__$B, false, undefined, undefined, undefined);
34038
+ const __vue_component__$D = /*#__PURE__*/normalizeComponent({
34039
+ render: __vue_render__$D,
34040
+ staticRenderFns: __vue_staticRenderFns__$D
34041
+ }, __vue_inject_styles__$D, __vue_script__$D, __vue_scope_id__$D, __vue_is_functional_template__$D, __vue_module_identifier__$D, false, undefined, undefined, undefined);
34216
34042
 
34217
34043
  const richCheckboxGroupVariants = cva('rq-rich-checkbox-group');
34218
34044
 
@@ -34276,10 +34102,10 @@ const groupMixin = {
34276
34102
  //
34277
34103
  //
34278
34104
 
34279
- var script$A = {
34105
+ var script$C = {
34280
34106
  name: 'RichCheckboxGroup',
34281
34107
  components: {
34282
- Checkbox: __vue_component__$L
34108
+ Checkbox: __vue_component__$N
34283
34109
  },
34284
34110
  mixins: [groupMixin],
34285
34111
  props: {
@@ -34307,10 +34133,10 @@ var script$A = {
34307
34133
  };
34308
34134
 
34309
34135
  /* script */
34310
- const __vue_script__$A = script$A;
34136
+ const __vue_script__$C = script$C;
34311
34137
 
34312
34138
  /* template */
34313
- var __vue_render__$A = function () {
34139
+ var __vue_render__$C = function () {
34314
34140
  var _vm = this;
34315
34141
  var _h = _vm.$createElement;
34316
34142
  var _c = _vm._self._c || _h;
@@ -34348,27 +34174,27 @@ var __vue_render__$A = function () {
34348
34174
  secondaryLabel: _vm.secondaryLabel
34349
34175
  })], 2)], 1);
34350
34176
  };
34351
- var __vue_staticRenderFns__$A = [];
34352
- __vue_render__$A._withStripped = true;
34177
+ var __vue_staticRenderFns__$C = [];
34178
+ __vue_render__$C._withStripped = true;
34353
34179
 
34354
34180
  /* style */
34355
- const __vue_inject_styles__$A = undefined;
34181
+ const __vue_inject_styles__$C = undefined;
34356
34182
  /* scoped */
34357
- const __vue_scope_id__$A = undefined;
34183
+ const __vue_scope_id__$C = undefined;
34358
34184
  /* module identifier */
34359
- const __vue_module_identifier__$A = undefined;
34185
+ const __vue_module_identifier__$C = undefined;
34360
34186
  /* functional template */
34361
- const __vue_is_functional_template__$A = false;
34187
+ const __vue_is_functional_template__$C = false;
34362
34188
  /* style inject */
34363
34189
 
34364
34190
  /* style inject SSR */
34365
34191
 
34366
34192
  /* style inject shadow dom */
34367
34193
 
34368
- const __vue_component__$A = /*#__PURE__*/normalizeComponent({
34369
- render: __vue_render__$A,
34370
- staticRenderFns: __vue_staticRenderFns__$A
34371
- }, __vue_inject_styles__$A, __vue_script__$A, __vue_scope_id__$A, __vue_is_functional_template__$A, __vue_module_identifier__$A, false, undefined, undefined, undefined);
34194
+ const __vue_component__$C = /*#__PURE__*/normalizeComponent({
34195
+ render: __vue_render__$C,
34196
+ staticRenderFns: __vue_staticRenderFns__$C
34197
+ }, __vue_inject_styles__$C, __vue_script__$C, __vue_scope_id__$C, __vue_is_functional_template__$C, __vue_module_identifier__$C, false, undefined, undefined, undefined);
34372
34198
 
34373
34199
  const checkboxGroupVariants = cva('rq-checkbox-group', {
34374
34200
  variants: {
@@ -34395,10 +34221,10 @@ const checkboxGroupVariants = cva('rq-checkbox-group', {
34395
34221
  //
34396
34222
  //
34397
34223
 
34398
- var script$z = {
34224
+ var script$B = {
34399
34225
  name: 'CheckboxGroup',
34400
34226
  components: {
34401
- Checkbox: __vue_component__$L
34227
+ Checkbox: __vue_component__$N
34402
34228
  },
34403
34229
  mixins: [groupMixin],
34404
34230
  props: {
@@ -34420,10 +34246,10 @@ var script$z = {
34420
34246
  };
34421
34247
 
34422
34248
  /* script */
34423
- const __vue_script__$z = script$z;
34249
+ const __vue_script__$B = script$B;
34424
34250
 
34425
34251
  /* template */
34426
- var __vue_render__$z = function () {
34252
+ var __vue_render__$B = function () {
34427
34253
  var _vm = this;
34428
34254
  var _h = _vm.$createElement;
34429
34255
  var _c = _vm._self._c || _h;
@@ -34452,27 +34278,27 @@ var __vue_render__$z = function () {
34452
34278
  staticClass: "rq-checkbox-group__label"
34453
34279
  }, [_vm._v(_vm._s(_vm.label))])], 1);
34454
34280
  };
34455
- var __vue_staticRenderFns__$z = [];
34456
- __vue_render__$z._withStripped = true;
34281
+ var __vue_staticRenderFns__$B = [];
34282
+ __vue_render__$B._withStripped = true;
34457
34283
 
34458
34284
  /* style */
34459
- const __vue_inject_styles__$z = undefined;
34285
+ const __vue_inject_styles__$B = undefined;
34460
34286
  /* scoped */
34461
- const __vue_scope_id__$z = undefined;
34287
+ const __vue_scope_id__$B = undefined;
34462
34288
  /* module identifier */
34463
- const __vue_module_identifier__$z = undefined;
34289
+ const __vue_module_identifier__$B = undefined;
34464
34290
  /* functional template */
34465
- const __vue_is_functional_template__$z = false;
34291
+ const __vue_is_functional_template__$B = false;
34466
34292
  /* style inject */
34467
34293
 
34468
34294
  /* style inject SSR */
34469
34295
 
34470
34296
  /* style inject shadow dom */
34471
34297
 
34472
- const __vue_component__$z = /*#__PURE__*/normalizeComponent({
34473
- render: __vue_render__$z,
34474
- staticRenderFns: __vue_staticRenderFns__$z
34475
- }, __vue_inject_styles__$z, __vue_script__$z, __vue_scope_id__$z, __vue_is_functional_template__$z, __vue_module_identifier__$z, false, undefined, undefined, undefined);
34298
+ const __vue_component__$B = /*#__PURE__*/normalizeComponent({
34299
+ render: __vue_render__$B,
34300
+ staticRenderFns: __vue_staticRenderFns__$B
34301
+ }, __vue_inject_styles__$B, __vue_script__$B, __vue_scope_id__$B, __vue_is_functional_template__$B, __vue_module_identifier__$B, false, undefined, undefined, undefined);
34476
34302
 
34477
34303
  const switchGroupVariants = cva('rq-switch-group', {
34478
34304
  variants: {
@@ -34504,10 +34330,10 @@ const switchGroupVariants = cva('rq-switch-group', {
34504
34330
  //
34505
34331
  //
34506
34332
 
34507
- var script$y = {
34333
+ var script$A = {
34508
34334
  name: 'SwitchGroup',
34509
34335
  components: {
34510
- RqSwitch: __vue_component__$K
34336
+ RqSwitch: __vue_component__$M
34511
34337
  },
34512
34338
  mixins: [groupMixin],
34513
34339
  props: {
@@ -34535,10 +34361,10 @@ var script$y = {
34535
34361
  };
34536
34362
 
34537
34363
  /* script */
34538
- const __vue_script__$y = script$y;
34364
+ const __vue_script__$A = script$A;
34539
34365
 
34540
34366
  /* template */
34541
- var __vue_render__$y = function () {
34367
+ var __vue_render__$A = function () {
34542
34368
  var _vm = this;
34543
34369
  var _h = _vm.$createElement;
34544
34370
  var _c = _vm._self._c || _h;
@@ -34567,27 +34393,27 @@ var __vue_render__$y = function () {
34567
34393
  staticClass: "rq-switch-group__label"
34568
34394
  }, [_vm._v(_vm._s(_vm.label))])], 1);
34569
34395
  };
34570
- var __vue_staticRenderFns__$y = [];
34571
- __vue_render__$y._withStripped = true;
34396
+ var __vue_staticRenderFns__$A = [];
34397
+ __vue_render__$A._withStripped = true;
34572
34398
 
34573
34399
  /* style */
34574
- const __vue_inject_styles__$y = undefined;
34400
+ const __vue_inject_styles__$A = undefined;
34575
34401
  /* scoped */
34576
- const __vue_scope_id__$y = undefined;
34402
+ const __vue_scope_id__$A = undefined;
34577
34403
  /* module identifier */
34578
- const __vue_module_identifier__$y = undefined;
34404
+ const __vue_module_identifier__$A = undefined;
34579
34405
  /* functional template */
34580
- const __vue_is_functional_template__$y = false;
34406
+ const __vue_is_functional_template__$A = false;
34581
34407
  /* style inject */
34582
34408
 
34583
34409
  /* style inject SSR */
34584
34410
 
34585
34411
  /* style inject shadow dom */
34586
34412
 
34587
- const __vue_component__$y = /*#__PURE__*/normalizeComponent({
34588
- render: __vue_render__$y,
34589
- staticRenderFns: __vue_staticRenderFns__$y
34590
- }, __vue_inject_styles__$y, __vue_script__$y, __vue_scope_id__$y, __vue_is_functional_template__$y, __vue_module_identifier__$y, false, undefined, undefined, undefined);
34413
+ const __vue_component__$A = /*#__PURE__*/normalizeComponent({
34414
+ render: __vue_render__$A,
34415
+ staticRenderFns: __vue_staticRenderFns__$A
34416
+ }, __vue_inject_styles__$A, __vue_script__$A, __vue_scope_id__$A, __vue_is_functional_template__$A, __vue_module_identifier__$A, false, undefined, undefined, undefined);
34591
34417
 
34592
34418
  const richSwitchGroupVariants = cva('rq-rich-switch-group');
34593
34419
 
@@ -34609,10 +34435,10 @@ const richSwitchGroupVariants = cva('rq-rich-switch-group');
34609
34435
  //
34610
34436
  //
34611
34437
 
34612
- var script$x = {
34438
+ var script$z = {
34613
34439
  name: 'RichSwitchGroup',
34614
34440
  components: {
34615
- RqSwitch: __vue_component__$K
34441
+ RqSwitch: __vue_component__$M
34616
34442
  },
34617
34443
  mixins: [groupMixin],
34618
34444
  props: {
@@ -34640,10 +34466,10 @@ var script$x = {
34640
34466
  };
34641
34467
 
34642
34468
  /* script */
34643
- const __vue_script__$x = script$x;
34469
+ const __vue_script__$z = script$z;
34644
34470
 
34645
34471
  /* template */
34646
- var __vue_render__$x = function () {
34472
+ var __vue_render__$z = function () {
34647
34473
  var _vm = this;
34648
34474
  var _h = _vm.$createElement;
34649
34475
  var _c = _vm._self._c || _h;
@@ -34678,27 +34504,27 @@ var __vue_render__$x = function () {
34678
34504
  staticClass: "rq-rich-switch-group__secondary-label"
34679
34505
  }, [_vm._v(_vm._s(_vm.secondaryLabel))]) : _vm._e()])]);
34680
34506
  };
34681
- var __vue_staticRenderFns__$x = [];
34682
- __vue_render__$x._withStripped = true;
34507
+ var __vue_staticRenderFns__$z = [];
34508
+ __vue_render__$z._withStripped = true;
34683
34509
 
34684
34510
  /* style */
34685
- const __vue_inject_styles__$x = undefined;
34511
+ const __vue_inject_styles__$z = undefined;
34686
34512
  /* scoped */
34687
- const __vue_scope_id__$x = undefined;
34513
+ const __vue_scope_id__$z = undefined;
34688
34514
  /* module identifier */
34689
- const __vue_module_identifier__$x = undefined;
34515
+ const __vue_module_identifier__$z = undefined;
34690
34516
  /* functional template */
34691
- const __vue_is_functional_template__$x = false;
34517
+ const __vue_is_functional_template__$z = false;
34692
34518
  /* style inject */
34693
34519
 
34694
34520
  /* style inject SSR */
34695
34521
 
34696
34522
  /* style inject shadow dom */
34697
34523
 
34698
- const __vue_component__$x = /*#__PURE__*/normalizeComponent({
34699
- render: __vue_render__$x,
34700
- staticRenderFns: __vue_staticRenderFns__$x
34701
- }, __vue_inject_styles__$x, __vue_script__$x, __vue_scope_id__$x, __vue_is_functional_template__$x, __vue_module_identifier__$x, false, undefined, undefined, undefined);
34524
+ const __vue_component__$z = /*#__PURE__*/normalizeComponent({
34525
+ render: __vue_render__$z,
34526
+ staticRenderFns: __vue_staticRenderFns__$z
34527
+ }, __vue_inject_styles__$z, __vue_script__$z, __vue_scope_id__$z, __vue_is_functional_template__$z, __vue_module_identifier__$z, false, undefined, undefined, undefined);
34702
34528
 
34703
34529
  //
34704
34530
  //
@@ -34750,7 +34576,7 @@ const __vue_component__$x = /*#__PURE__*/normalizeComponent({
34750
34576
  //
34751
34577
  //
34752
34578
 
34753
- var script$w = {
34579
+ var script$y = {
34754
34580
  name: 'Pagination',
34755
34581
  props: {
34756
34582
  page: {
@@ -34808,10 +34634,10 @@ var script$w = {
34808
34634
  };
34809
34635
 
34810
34636
  /* script */
34811
- const __vue_script__$w = script$w;
34637
+ const __vue_script__$y = script$y;
34812
34638
 
34813
34639
  /* template */
34814
- var __vue_render__$w = function () {
34640
+ var __vue_render__$y = function () {
34815
34641
  var _vm = this;
34816
34642
  var _h = _vm.$createElement;
34817
34643
  var _c = _vm._self._c || _h;
@@ -34875,27 +34701,200 @@ var __vue_render__$w = function () {
34875
34701
  }
34876
34702
  }, [_vm._v("\n " + _vm._s(_vm.nextLabel) + "\n ")])], 2);
34877
34703
  };
34878
- var __vue_staticRenderFns__$w = [];
34879
- __vue_render__$w._withStripped = true;
34704
+ var __vue_staticRenderFns__$y = [];
34705
+ __vue_render__$y._withStripped = true;
34880
34706
 
34881
34707
  /* style */
34882
- const __vue_inject_styles__$w = undefined;
34708
+ const __vue_inject_styles__$y = undefined;
34883
34709
  /* scoped */
34884
- const __vue_scope_id__$w = undefined;
34710
+ const __vue_scope_id__$y = undefined;
34885
34711
  /* module identifier */
34886
- const __vue_module_identifier__$w = undefined;
34712
+ const __vue_module_identifier__$y = undefined;
34887
34713
  /* functional template */
34888
- const __vue_is_functional_template__$w = false;
34714
+ const __vue_is_functional_template__$y = false;
34889
34715
  /* style inject */
34890
34716
 
34891
34717
  /* style inject SSR */
34892
34718
 
34893
34719
  /* style inject shadow dom */
34894
34720
 
34895
- const __vue_component__$w = /*#__PURE__*/normalizeComponent({
34896
- render: __vue_render__$w,
34897
- staticRenderFns: __vue_staticRenderFns__$w
34898
- }, __vue_inject_styles__$w, __vue_script__$w, __vue_scope_id__$w, __vue_is_functional_template__$w, __vue_module_identifier__$w, false, undefined, undefined, undefined);
34721
+ const __vue_component__$y = /*#__PURE__*/normalizeComponent({
34722
+ render: __vue_render__$y,
34723
+ staticRenderFns: __vue_staticRenderFns__$y
34724
+ }, __vue_inject_styles__$y, __vue_script__$y, __vue_scope_id__$y, __vue_is_functional_template__$y, __vue_module_identifier__$y, false, undefined, undefined, undefined);
34725
+
34726
+ // Anchos fijos para que los tabs fantasma no se vean todos iguales.
34727
+ const SKELETON_WIDTH_PATTERN = [70, 90, 60];
34728
+
34729
+ // Proporción del ancho visible que avanza cada click en las flechas.
34730
+ const SCROLL_PAGE_RATIO = 0.8;
34731
+
34732
+ // Aire que queda entre el tab acercado y el borde del viewport.
34733
+ const SCROLL_EDGE_MARGIN = 8;
34734
+
34735
+ // Los anchos de scroll son subpixel: sin tolerancia la flecha queda visible
34736
+ // al final del recorrido por diferencias de decimales.
34737
+ const SCROLL_EPSILON = 1;
34738
+
34739
+ // Comportamiento común de los componentes de tabs (Tabs, LineTabs): v-model,
34740
+ // tabs deshabilitados, iconos, estado loading y scroll horizontal con flechas.
34741
+ // Cada componente pone su propio template, estilos y tamaños; el mixin solo
34742
+ // necesita el bloque BEM (`rq-tabs`, `rq-line-tabs`) para armar las clases
34743
+ // de los tabs y ubicar el tab activo dentro del viewport.
34744
+ //
34745
+ // Skeleton y Tooltip los registra cada componente en su `components`: el
34746
+ // template que los usa es el del componente, no el del mixin.
34747
+ function createTabsMixin(block) {
34748
+ return {
34749
+ props: {
34750
+ value: {
34751
+ type: [String, Number],
34752
+ default: null
34753
+ },
34754
+ // [{ id, label?, icon?, counter?, disabled?, tooltipText?, tooltipSide? }]
34755
+ tabs: {
34756
+ type: Array,
34757
+ default: () => []
34758
+ },
34759
+ // Estado de carga: reemplaza los tabs reales por tabs fantasma (skeleton)
34760
+ loading: {
34761
+ type: Boolean,
34762
+ default: false
34763
+ },
34764
+ loadingTabs: {
34765
+ type: Number,
34766
+ default: 3
34767
+ }
34768
+ },
34769
+ data() {
34770
+ return {
34771
+ canScrollPrev: false,
34772
+ canScrollNext: false
34773
+ };
34774
+ },
34775
+ computed: {
34776
+ stateClasses() {
34777
+ return {
34778
+ [`${block}--loading`]: this.loading,
34779
+ [`${block}--scroll-prev`]: this.canScrollPrev,
34780
+ [`${block}--scroll-next`]: this.canScrollNext
34781
+ };
34782
+ },
34783
+ chevronLeftIcon() {
34784
+ return ChevronLeft;
34785
+ },
34786
+ chevronRightIcon() {
34787
+ return ChevronRight;
34788
+ },
34789
+ processedTabs() {
34790
+ return this.tabs.map(tab => ({
34791
+ ...tab,
34792
+ iconComponent: tab.icon ? LucideIcons[tab.icon] : null
34793
+ }));
34794
+ },
34795
+ skeletonWidths() {
34796
+ return Array.from({
34797
+ length: this.loadingTabs
34798
+ }, (_, i) => SKELETON_WIDTH_PATTERN[i % SKELETON_WIDTH_PATTERN.length]);
34799
+ }
34800
+ },
34801
+ watch: {
34802
+ tabs() {
34803
+ this.$nextTick(this.updateScrollState);
34804
+ },
34805
+ loading() {
34806
+ this.$nextTick(this.updateScrollState);
34807
+ },
34808
+ value() {
34809
+ this.$nextTick(this.scrollActiveIntoView);
34810
+ }
34811
+ },
34812
+ mounted() {
34813
+ this.updateScrollState();
34814
+ this.observeViewportResize();
34815
+ },
34816
+ beforeDestroy() {
34817
+ if (this._resizeObserver) {
34818
+ this._resizeObserver.disconnect();
34819
+ this._resizeObserver = null;
34820
+ }
34821
+ },
34822
+ methods: {
34823
+ tabClasses(tab) {
34824
+ return [`${block}__tab`, {
34825
+ [`${block}__tab--active`]: tab.id === this.value
34826
+ }, {
34827
+ [`${block}__tab--disabled`]: !!tab.disabled
34828
+ }];
34829
+ },
34830
+ selectTab(tab) {
34831
+ if (!tab.disabled) this.$emit('input', tab.id);
34832
+ },
34833
+ // El ancho del viewport depende del contenedor padre, no de props: sin
34834
+ // observarlo las flechas quedan desfasadas al redimensionar.
34835
+ observeViewportResize() {
34836
+ const viewport = this.$refs.viewport;
34837
+ if (!viewport || typeof ResizeObserver === 'undefined') return;
34838
+ this._resizeObserver = new ResizeObserver(() => this.updateScrollState());
34839
+ this._resizeObserver.observe(viewport);
34840
+ },
34841
+ updateScrollState() {
34842
+ const viewport = this.$refs.viewport;
34843
+ if (!viewport || this.loading) {
34844
+ this.canScrollPrev = false;
34845
+ this.canScrollNext = false;
34846
+ return;
34847
+ }
34848
+ const maxScroll = viewport.scrollWidth - viewport.clientWidth;
34849
+ this.canScrollPrev = viewport.scrollLeft > SCROLL_EPSILON;
34850
+ this.canScrollNext = viewport.scrollLeft < maxScroll - SCROLL_EPSILON;
34851
+ },
34852
+ scrollByPage(direction) {
34853
+ const viewport = this.$refs.viewport;
34854
+ if (!viewport) return;
34855
+ const delta = direction * Math.round(viewport.clientWidth * SCROLL_PAGE_RATIO);
34856
+ if (typeof viewport.scrollBy === 'function') {
34857
+ viewport.scrollBy({
34858
+ left: delta,
34859
+ behavior: 'smooth'
34860
+ });
34861
+ } else {
34862
+ viewport.scrollLeft += delta;
34863
+ }
34864
+ },
34865
+ // Al cambiar de tab por fuera del click (teclado, v-model del consumidor)
34866
+ // el activo puede quedar fuera de vista.
34867
+ scrollActiveIntoView() {
34868
+ const viewport = this.$refs.viewport;
34869
+ if (!viewport) return;
34870
+ const activeTab = viewport.querySelector(`.${block}__tab--active`);
34871
+ if (!activeTab) return;
34872
+ const active = activeTab.closest(`.${block}__tooltip`) || activeTab;
34873
+ const start = active.offsetLeft;
34874
+ const end = start + active.offsetWidth;
34875
+ const viewStart = viewport.scrollLeft;
34876
+ const viewEnd = viewStart + viewport.clientWidth;
34877
+ if (start < viewStart) {
34878
+ this.scrollToLeft(start - SCROLL_EDGE_MARGIN);
34879
+ } else if (end > viewEnd) {
34880
+ this.scrollToLeft(end - viewport.clientWidth + SCROLL_EDGE_MARGIN);
34881
+ }
34882
+ },
34883
+ scrollToLeft(left) {
34884
+ const viewport = this.$refs.viewport;
34885
+ const target = Math.max(0, left);
34886
+ if (typeof viewport.scrollTo === 'function') {
34887
+ viewport.scrollTo({
34888
+ left: target,
34889
+ behavior: 'smooth'
34890
+ });
34891
+ } else {
34892
+ viewport.scrollLeft = target;
34893
+ }
34894
+ }
34895
+ }
34896
+ };
34897
+ }
34899
34898
 
34900
34899
  const tabsVariants = cva('rq-tabs', {
34901
34900
  variants: {
@@ -34989,65 +34988,30 @@ const tabsVariants = cva('rq-tabs', {
34989
34988
  //
34990
34989
  //
34991
34990
  //
34991
+ //
34992
+ //
34993
+ //
34994
+ //
34992
34995
 
34993
-
34994
- // Anchos fijos para que los pills fantasma no se vean todos iguales.
34995
- const SKELETON_WIDTH_PATTERN = [70, 90, 60];
34996
-
34997
- // Proporción del ancho visible que avanza cada click en las flechas.
34998
- const SCROLL_PAGE_RATIO = 0.8;
34999
-
35000
- // Aire que queda entre el tab acercado y el borde del viewport.
35001
- const SCROLL_EDGE_MARGIN = 8;
35002
-
35003
- // Los anchos de scroll son subpixel: sin tolerancia la flecha queda visible
35004
- // al final del recorrido por diferencias de decimales.
35005
- const SCROLL_EPSILON = 1;
35006
- var script$v = {
34996
+ var script$x = {
35007
34997
  name: 'Tabs',
35008
34998
  components: {
35009
- Skeleton: __vue_component__$G,
35010
- Tooltip: __vue_component__$B
34999
+ Skeleton: __vue_component__$I,
35000
+ Tooltip: __vue_component__$D
35011
35001
  },
35002
+ mixins: [createTabsMixin('rq-tabs')],
35012
35003
  props: {
35013
- value: {
35014
- type: [String, Number],
35015
- default: null
35016
- },
35017
35004
  size: {
35018
35005
  type: String,
35019
35006
  default: 'regular',
35020
35007
  validator: v => ['regular', 'large', 'small'].includes(v)
35021
- },
35022
- tabs: {
35023
- type: Array,
35024
- default: () => []
35025
- },
35026
- // Estado de carga: reemplaza los tabs reales por pills fantasma (skeleton)
35027
- loading: {
35028
- type: Boolean,
35029
- default: false
35030
- },
35031
- loadingTabs: {
35032
- type: Number,
35033
- default: 3
35034
35008
  }
35035
35009
  },
35036
- data() {
35037
- return {
35038
- canScrollPrev: false,
35039
- canScrollNext: false
35040
- };
35041
- },
35042
35010
  computed: {
35043
35011
  classes() {
35044
35012
  return [tabsVariants({
35045
35013
  size: this.size
35046
- }), {
35047
- 'rq-tabs--loading': this.loading,
35048
- 'rq-tabs--scroll-prev': this.canScrollPrev,
35049
- 'rq-tabs--scroll-next': this.canScrollNext
35050
- }];
35014
+ }), this.stateClasses];
35051
35015
  },
35052
35016
  iconSize() {
35053
35017
  return this.size === 'small' ? 16 : 20;
@@ -35055,120 +35019,664 @@ var script$v = {
35055
35019
  scrollIconSize() {
35056
35020
  return this.size === 'small' ? 12 : 16;
35057
35021
  },
35058
- chevronLeftIcon() {
35059
- return ChevronLeft;
35060
- },
35061
- chevronRightIcon() {
35062
- return ChevronRight;
35063
- },
35064
- processedTabs() {
35065
- return this.tabs.map(tab => ({
35066
- ...tab,
35067
- iconComponent: tab.icon ? LucideIcons[tab.icon] : null
35068
- }));
35069
- },
35070
- skeletonWidths() {
35071
- return Array.from({
35072
- length: this.loadingTabs
35073
- }, (_, i) => SKELETON_WIDTH_PATTERN[i % SKELETON_WIDTH_PATTERN.length]);
35074
- },
35075
35022
  skeletonHeight() {
35076
35023
  return this.size === 'small' ? '12px' : '16px';
35077
35024
  }
35078
- },
35079
- watch: {
35080
- tabs() {
35081
- this.$nextTick(this.updateScrollState);
35025
+ }
35026
+ };
35027
+
35028
+ /* script */
35029
+ const __vue_script__$x = script$x;
35030
+
35031
+ /* template */
35032
+ var __vue_render__$x = function () {
35033
+ var _vm = this;
35034
+ var _h = _vm.$createElement;
35035
+ var _c = _vm._self._c || _h;
35036
+ return _c("div", _vm._g({
35037
+ class: _vm.classes
35038
+ }, _vm.$listeners), [_vm.canScrollPrev ? _c("button", {
35039
+ staticClass: "rq-tabs__scroll-btn rq-tabs__scroll-btn--prev",
35040
+ attrs: {
35041
+ type: "button",
35042
+ "aria-label": "Desplazar tabs a la izquierda"
35082
35043
  },
35083
- loading() {
35084
- this.$nextTick(this.updateScrollState);
35044
+ on: {
35045
+ click: function ($event) {
35046
+ return _vm.scrollByPage(-1);
35047
+ }
35048
+ }
35049
+ }, [_c(_vm.chevronLeftIcon, {
35050
+ tag: "component",
35051
+ attrs: {
35052
+ size: _vm.scrollIconSize
35053
+ }
35054
+ })], 1) : _vm._e(), _vm._v(" "), _c("div", {
35055
+ ref: "viewport",
35056
+ staticClass: "rq-tabs__viewport",
35057
+ on: {
35058
+ scroll: _vm.updateScrollState
35059
+ }
35060
+ }, [_vm.loading ? _vm._l(_vm.skeletonWidths, function (w, i) {
35061
+ return _c("div", {
35062
+ key: "skeleton-" + i,
35063
+ staticClass: "rq-tabs__tab rq-tabs__tab--skeleton"
35064
+ }, [_c("Skeleton", {
35065
+ attrs: {
35066
+ width: w + "px",
35067
+ height: _vm.skeletonHeight
35068
+ }
35069
+ })], 1);
35070
+ }) : _vm._l(_vm.processedTabs, function (tab) {
35071
+ return [tab.tooltipText ? _c("Tooltip", {
35072
+ key: tab.id,
35073
+ staticClass: "rq-tabs__tooltip",
35074
+ attrs: {
35075
+ text: tab.tooltipText,
35076
+ side: tab.tooltipSide || "top"
35077
+ }
35078
+ }, [_c("button", {
35079
+ class: _vm.tabClasses(tab),
35080
+ attrs: {
35081
+ type: "button",
35082
+ disabled: !!tab.disabled
35083
+ },
35084
+ on: {
35085
+ click: function ($event) {
35086
+ return _vm.selectTab(tab);
35087
+ }
35088
+ }
35089
+ }, [tab.iconComponent ? _c(tab.iconComponent, {
35090
+ tag: "component",
35091
+ staticClass: "rq-tabs__tab-icon",
35092
+ attrs: {
35093
+ size: _vm.iconSize
35094
+ }
35095
+ }) : _vm._e(), _vm._v(" "), tab.label ? _c("span", {
35096
+ staticClass: "rq-tabs__tab-label"
35097
+ }, [_vm._v(_vm._s(tab.label))]) : _vm._e(), _vm._v(" "), tab.counter !== undefined ? _c("span", {
35098
+ staticClass: "rq-tabs__tab-counter"
35099
+ }, [_vm._v(_vm._s(tab.counter))]) : _vm._e()], 1)]) : _c("button", {
35100
+ key: tab.id,
35101
+ class: _vm.tabClasses(tab),
35102
+ attrs: {
35103
+ type: "button",
35104
+ disabled: !!tab.disabled
35105
+ },
35106
+ on: {
35107
+ click: function ($event) {
35108
+ return _vm.selectTab(tab);
35109
+ }
35110
+ }
35111
+ }, [tab.iconComponent ? _c(tab.iconComponent, {
35112
+ tag: "component",
35113
+ staticClass: "rq-tabs__tab-icon",
35114
+ attrs: {
35115
+ size: _vm.iconSize
35116
+ }
35117
+ }) : _vm._e(), _vm._v(" "), tab.label ? _c("span", {
35118
+ staticClass: "rq-tabs__tab-label"
35119
+ }, [_vm._v(_vm._s(tab.label))]) : _vm._e(), _vm._v(" "), tab.counter !== undefined ? _c("span", {
35120
+ staticClass: "rq-tabs__tab-counter"
35121
+ }, [_vm._v(_vm._s(tab.counter))]) : _vm._e()], 1)];
35122
+ })], 2), _vm._v(" "), _vm.canScrollNext ? _c("button", {
35123
+ staticClass: "rq-tabs__scroll-btn rq-tabs__scroll-btn--next",
35124
+ attrs: {
35125
+ type: "button",
35126
+ "aria-label": "Desplazar tabs a la derecha"
35127
+ },
35128
+ on: {
35129
+ click: function ($event) {
35130
+ return _vm.scrollByPage(1);
35131
+ }
35132
+ }
35133
+ }, [_c(_vm.chevronRightIcon, {
35134
+ tag: "component",
35135
+ attrs: {
35136
+ size: _vm.scrollIconSize
35137
+ }
35138
+ })], 1) : _vm._e()]);
35139
+ };
35140
+ var __vue_staticRenderFns__$x = [];
35141
+ __vue_render__$x._withStripped = true;
35142
+
35143
+ /* style */
35144
+ const __vue_inject_styles__$x = undefined;
35145
+ /* scoped */
35146
+ const __vue_scope_id__$x = undefined;
35147
+ /* module identifier */
35148
+ const __vue_module_identifier__$x = undefined;
35149
+ /* functional template */
35150
+ const __vue_is_functional_template__$x = false;
35151
+ /* style inject */
35152
+
35153
+ /* style inject SSR */
35154
+
35155
+ /* style inject shadow dom */
35156
+
35157
+ const __vue_component__$x = /*#__PURE__*/normalizeComponent({
35158
+ render: __vue_render__$x,
35159
+ staticRenderFns: __vue_staticRenderFns__$x
35160
+ }, __vue_inject_styles__$x, __vue_script__$x, __vue_scope_id__$x, __vue_is_functional_template__$x, __vue_module_identifier__$x, false, undefined, undefined, undefined);
35161
+
35162
+ const lineTabsVariants = cva('rq-line-tabs', {
35163
+ variants: {
35164
+ size: {
35165
+ regular: 'rq-line-tabs--regular',
35166
+ small: 'rq-line-tabs--small'
35167
+ }
35168
+ },
35169
+ defaultVariants: {
35170
+ size: 'regular'
35171
+ }
35172
+ });
35173
+
35174
+ //
35175
+ //
35176
+ //
35177
+ //
35178
+ //
35179
+ //
35180
+ //
35181
+ //
35182
+ //
35183
+ //
35184
+ //
35185
+ //
35186
+ //
35187
+ //
35188
+ //
35189
+ //
35190
+ //
35191
+ //
35192
+ //
35193
+ //
35194
+ //
35195
+ //
35196
+ //
35197
+ //
35198
+ //
35199
+ //
35200
+ //
35201
+ //
35202
+ //
35203
+ //
35204
+ //
35205
+ //
35206
+ //
35207
+ //
35208
+ //
35209
+ //
35210
+ //
35211
+ //
35212
+ //
35213
+ //
35214
+ //
35215
+ //
35216
+ //
35217
+ //
35218
+ //
35219
+ //
35220
+ //
35221
+ //
35222
+ //
35223
+ //
35224
+ //
35225
+ //
35226
+ //
35227
+ //
35228
+ //
35229
+ //
35230
+ //
35231
+ //
35232
+ //
35233
+ //
35234
+ //
35235
+ //
35236
+ //
35237
+ //
35238
+ //
35239
+ //
35240
+ //
35241
+ //
35242
+ //
35243
+ //
35244
+ //
35245
+ //
35246
+ //
35247
+ //
35248
+ //
35249
+ //
35250
+ //
35251
+ //
35252
+ //
35253
+ //
35254
+ //
35255
+ //
35256
+ //
35257
+
35258
+
35259
+ // Mismo comportamiento y API que Tabs (v-model, tabs[], loading, scroll con
35260
+ // flechas, tooltip por tab); cambia solo el estilo: subnavegación con línea
35261
+ // indicadora bajo el tab activo en vez de segmented control.
35262
+ var script$w = {
35263
+ name: 'LineTabs',
35264
+ components: {
35265
+ Skeleton: __vue_component__$I,
35266
+ Tooltip: __vue_component__$D
35267
+ },
35268
+ mixins: [createTabsMixin('rq-line-tabs')],
35269
+ props: {
35270
+ size: {
35271
+ type: String,
35272
+ default: 'regular',
35273
+ validator: v => ['regular', 'small'].includes(v)
35274
+ }
35275
+ },
35276
+ computed: {
35277
+ classes() {
35278
+ return [lineTabsVariants({
35279
+ size: this.size
35280
+ }), this.stateClasses];
35281
+ },
35282
+ iconSize() {
35283
+ return this.size === 'small' ? 16 : 20;
35284
+ },
35285
+ scrollIconSize() {
35286
+ return this.size === 'small' ? 12 : 16;
35287
+ },
35288
+ skeletonHeight() {
35289
+ return this.size === 'small' ? '12px' : '16px';
35290
+ }
35291
+ }
35292
+ };
35293
+
35294
+ /* script */
35295
+ const __vue_script__$w = script$w;
35296
+
35297
+ /* template */
35298
+ var __vue_render__$w = function () {
35299
+ var _vm = this;
35300
+ var _h = _vm.$createElement;
35301
+ var _c = _vm._self._c || _h;
35302
+ return _c("div", _vm._g({
35303
+ class: _vm.classes
35304
+ }, _vm.$listeners), [_vm.canScrollPrev ? _c("button", {
35305
+ staticClass: "rq-line-tabs__scroll-btn rq-line-tabs__scroll-btn--prev",
35306
+ attrs: {
35307
+ type: "button",
35308
+ "aria-label": "Desplazar tabs a la izquierda"
35309
+ },
35310
+ on: {
35311
+ click: function ($event) {
35312
+ return _vm.scrollByPage(-1);
35313
+ }
35314
+ }
35315
+ }, [_c(_vm.chevronLeftIcon, {
35316
+ tag: "component",
35317
+ attrs: {
35318
+ size: _vm.scrollIconSize
35319
+ }
35320
+ })], 1) : _vm._e(), _vm._v(" "), _c("div", {
35321
+ ref: "viewport",
35322
+ staticClass: "rq-line-tabs__viewport",
35323
+ on: {
35324
+ scroll: _vm.updateScrollState
35325
+ }
35326
+ }, [_vm.loading ? _vm._l(_vm.skeletonWidths, function (w, i) {
35327
+ return _c("div", {
35328
+ key: "skeleton-" + i,
35329
+ staticClass: "rq-line-tabs__tab rq-line-tabs__tab--skeleton"
35330
+ }, [_c("Skeleton", {
35331
+ attrs: {
35332
+ width: w + "px",
35333
+ height: _vm.skeletonHeight
35334
+ }
35335
+ })], 1);
35336
+ }) : _vm._l(_vm.processedTabs, function (tab) {
35337
+ return [tab.tooltipText ? _c("Tooltip", {
35338
+ key: tab.id,
35339
+ staticClass: "rq-line-tabs__tooltip",
35340
+ attrs: {
35341
+ text: tab.tooltipText,
35342
+ side: tab.tooltipSide || "top"
35343
+ }
35344
+ }, [_c("button", {
35345
+ class: _vm.tabClasses(tab),
35346
+ attrs: {
35347
+ type: "button",
35348
+ disabled: !!tab.disabled
35349
+ },
35350
+ on: {
35351
+ click: function ($event) {
35352
+ return _vm.selectTab(tab);
35353
+ }
35354
+ }
35355
+ }, [tab.iconComponent ? _c(tab.iconComponent, {
35356
+ tag: "component",
35357
+ staticClass: "rq-line-tabs__tab-icon",
35358
+ attrs: {
35359
+ size: _vm.iconSize
35360
+ }
35361
+ }) : _vm._e(), _vm._v(" "), tab.label ? _c("span", {
35362
+ staticClass: "rq-line-tabs__tab-label"
35363
+ }, [_vm._v(_vm._s(tab.label))]) : _vm._e(), _vm._v(" "), tab.counter !== undefined ? _c("span", {
35364
+ staticClass: "rq-line-tabs__tab-counter"
35365
+ }, [_vm._v(_vm._s(tab.counter))]) : _vm._e()], 1)]) : _c("button", {
35366
+ key: tab.id,
35367
+ class: _vm.tabClasses(tab),
35368
+ attrs: {
35369
+ type: "button",
35370
+ disabled: !!tab.disabled
35371
+ },
35372
+ on: {
35373
+ click: function ($event) {
35374
+ return _vm.selectTab(tab);
35375
+ }
35376
+ }
35377
+ }, [tab.iconComponent ? _c(tab.iconComponent, {
35378
+ tag: "component",
35379
+ staticClass: "rq-line-tabs__tab-icon",
35380
+ attrs: {
35381
+ size: _vm.iconSize
35382
+ }
35383
+ }) : _vm._e(), _vm._v(" "), tab.label ? _c("span", {
35384
+ staticClass: "rq-line-tabs__tab-label"
35385
+ }, [_vm._v(_vm._s(tab.label))]) : _vm._e(), _vm._v(" "), tab.counter !== undefined ? _c("span", {
35386
+ staticClass: "rq-line-tabs__tab-counter"
35387
+ }, [_vm._v(_vm._s(tab.counter))]) : _vm._e()], 1)];
35388
+ })], 2), _vm._v(" "), _vm.canScrollNext ? _c("button", {
35389
+ staticClass: "rq-line-tabs__scroll-btn rq-line-tabs__scroll-btn--next",
35390
+ attrs: {
35391
+ type: "button",
35392
+ "aria-label": "Desplazar tabs a la derecha"
35393
+ },
35394
+ on: {
35395
+ click: function ($event) {
35396
+ return _vm.scrollByPage(1);
35397
+ }
35398
+ }
35399
+ }, [_c(_vm.chevronRightIcon, {
35400
+ tag: "component",
35401
+ attrs: {
35402
+ size: _vm.scrollIconSize
35403
+ }
35404
+ })], 1) : _vm._e()]);
35405
+ };
35406
+ var __vue_staticRenderFns__$w = [];
35407
+ __vue_render__$w._withStripped = true;
35408
+
35409
+ /* style */
35410
+ const __vue_inject_styles__$w = undefined;
35411
+ /* scoped */
35412
+ const __vue_scope_id__$w = undefined;
35413
+ /* module identifier */
35414
+ const __vue_module_identifier__$w = undefined;
35415
+ /* functional template */
35416
+ const __vue_is_functional_template__$w = false;
35417
+ /* style inject */
35418
+
35419
+ /* style inject SSR */
35420
+
35421
+ /* style inject shadow dom */
35422
+
35423
+ const __vue_component__$w = /*#__PURE__*/normalizeComponent({
35424
+ render: __vue_render__$w,
35425
+ staticRenderFns: __vue_staticRenderFns__$w
35426
+ }, __vue_inject_styles__$w, __vue_script__$w, __vue_scope_id__$w, __vue_is_functional_template__$w, __vue_module_identifier__$w, false, undefined, undefined, undefined);
35427
+
35428
+ const progressVariants = cva('rq-progress', {
35429
+ variants: {
35430
+ variant: {
35431
+ default: 'rq-progress--default',
35432
+ success: 'rq-progress--success',
35433
+ error: 'rq-progress--error'
35434
+ }
35435
+ },
35436
+ defaultVariants: {
35437
+ variant: 'default'
35438
+ }
35439
+ });
35440
+
35441
+ //
35442
+ //
35443
+ //
35444
+ //
35445
+ //
35446
+ //
35447
+ //
35448
+ //
35449
+ //
35450
+ //
35451
+ //
35452
+ //
35453
+ //
35454
+ //
35455
+ //
35456
+ //
35457
+ //
35458
+ //
35459
+ //
35460
+ //
35461
+ //
35462
+ //
35463
+ //
35464
+ //
35465
+ //
35466
+ //
35467
+ //
35468
+ //
35469
+ //
35470
+ //
35471
+ //
35472
+ //
35473
+ //
35474
+ //
35475
+ //
35476
+ //
35477
+ //
35478
+ //
35479
+ //
35480
+ //
35481
+ //
35482
+ //
35483
+ //
35484
+ //
35485
+ //
35486
+ //
35487
+ //
35488
+ //
35489
+ //
35490
+ //
35491
+ //
35492
+ //
35493
+ //
35494
+ //
35495
+ //
35496
+ //
35497
+ //
35498
+ //
35499
+ //
35500
+ //
35501
+ //
35502
+ //
35503
+ //
35504
+ //
35505
+ //
35506
+ //
35507
+ //
35508
+
35509
+ const SEGMENT_COLORS = new Set(['default', 'success', 'error', 'warning']);
35510
+ const TOOLTIP_SIDES = new Set(['top', 'bottom', 'left', 'right']);
35511
+
35512
+ // Margen para decidir si un tramo llega al final de la barra pese a los
35513
+ // decimales de la suma (33.3 + 33.3 + 33.4).
35514
+ const END_EPSILON = 0.001;
35515
+ let uid$4 = 0;
35516
+ function clamp(value) {
35517
+ const number = Number.isFinite(value) ? value : 0;
35518
+ return Math.min(100, Math.max(0, number));
35519
+ }
35520
+ var script$v = {
35521
+ name: 'Progress',
35522
+ components: {
35523
+ Tooltip: __vue_component__$D
35524
+ },
35525
+ props: {
35526
+ value: {
35527
+ type: Number,
35528
+ default: 0
35529
+ },
35530
+ variant: {
35531
+ type: String,
35532
+ default: 'default',
35533
+ validator: v => ['default', 'success', 'error'].includes(v)
35534
+ },
35535
+ label: {
35536
+ type: String,
35537
+ default: null
35538
+ },
35539
+ showValue: {
35540
+ type: Boolean,
35541
+ default: true
35542
+ },
35543
+ // [{ value, color?, tooltipText?, tooltipSide?, ariaLabel? }]
35544
+ segments: {
35545
+ type: Array,
35546
+ default: () => []
35085
35547
  },
35086
- value() {
35087
- this.$nextTick(this.scrollActiveIntoView);
35548
+ // Con segments, cada tramo con valor > 0 se dibuja como <button> y emite
35549
+ // segment-click. Sin segments no tiene efecto.
35550
+ interactive: {
35551
+ type: Boolean,
35552
+ default: false
35088
35553
  }
35089
35554
  },
35090
- mounted() {
35091
- this.updateScrollState();
35092
- this.observeViewportResize();
35555
+ data() {
35556
+ uid$4 += 1;
35557
+ return {
35558
+ labelId: `rq-progress-label-${uid$4}`
35559
+ };
35093
35560
  },
35094
- beforeDestroy() {
35095
- if (this._resizeObserver) {
35096
- this._resizeObserver.disconnect();
35097
- this._resizeObserver = null;
35561
+ computed: {
35562
+ // Algún tramo recibe foco: es interactivo o tiene tooltip. Si ninguno lo
35563
+ // recibe, la barra se dibuja exactamente como siempre (aria-hidden).
35564
+ focusable() {
35565
+ return this.normalizedSegments.some(segment => segment.focusable);
35566
+ },
35567
+ classes() {
35568
+ const base = progressVariants({
35569
+ variant: this.variant
35570
+ });
35571
+ return this.focusable ? `${base} rq-progress--focusable` : base;
35572
+ },
35573
+ normalizedSegments() {
35574
+ let used = 0;
35575
+ const segments = this.segments.map((segment, index) => {
35576
+ const width = Math.min(clamp(segment.value), 100 - used);
35577
+ const start = used;
35578
+ used += width;
35579
+ const isVariant = !segment.color || SEGMENT_COLORS.has(segment.color);
35580
+ const colorClass = `rq-progress__segment--${isVariant ? segment.color || 'default' : 'custom'}`;
35581
+ const background = isVariant ? {} : {
35582
+ background: segment.color
35583
+ };
35584
+ const visible = width > 0;
35585
+ const tooltipText = visible && segment.tooltipText ? String(segment.tooltipText) : null;
35586
+ const interactive = visible && this.interactive;
35587
+ return {
35588
+ index,
35589
+ width,
35590
+ start,
35591
+ visible,
35592
+ interactive,
35593
+ tooltipText,
35594
+ tooltipSide: TOOLTIP_SIDES.has(segment.tooltipSide) ? segment.tooltipSide : 'top',
35595
+ ariaLabel: segment.ariaLabel || tooltipText || `Tramo ${index + 1}: ${Math.round(width)}%`,
35596
+ focusable: interactive || !!tooltipText,
35597
+ colorClass,
35598
+ background
35599
+ };
35600
+ });
35601
+ const context = {
35602
+ anyFocusable: segments.some(segment => segment.focusable),
35603
+ firstVisible: segments.find(segment => segment.visible)
35604
+ };
35605
+ return segments.map(segment => this.decorate(segment, context));
35606
+ },
35607
+ percent() {
35608
+ if (this.segments.length) {
35609
+ return Math.round(this.normalizedSegments.reduce((total, segment) => total + segment.width, 0));
35610
+ }
35611
+ return Math.round(clamp(this.value));
35098
35612
  }
35099
35613
  },
35100
35614
  methods: {
35101
- tabClasses(tab) {
35102
- return ['rq-tabs__tab', {
35103
- 'rq-tabs__tab--active': tab.id === this.value
35104
- }, {
35105
- 'rq-tabs__tab--disabled': !!tab.disabled
35106
- }];
35107
- },
35108
- selectTab(tab) {
35109
- if (!tab.disabled) this.$emit('input', tab.id);
35110
- },
35111
- // El ancho del viewport depende del contenedor padre, no de props: sin
35112
- // observarlo las flechas quedan desfasadas al redimensionar.
35113
- observeViewportResize() {
35114
- const viewport = this.$refs.viewport;
35115
- if (!viewport || typeof ResizeObserver === 'undefined') return;
35116
- this._resizeObserver = new ResizeObserver(() => this.updateScrollState());
35117
- this._resizeObserver.observe(viewport);
35118
- },
35119
- updateScrollState() {
35120
- const viewport = this.$refs.viewport;
35121
- if (!viewport || this.loading) {
35122
- this.canScrollPrev = false;
35123
- this.canScrollNext = false;
35124
- return;
35125
- }
35126
- const maxScroll = viewport.scrollWidth - viewport.clientWidth;
35127
- this.canScrollPrev = viewport.scrollLeft > SCROLL_EPSILON;
35128
- this.canScrollNext = viewport.scrollLeft < maxScroll - SCROLL_EPSILON;
35129
- },
35130
- scrollByPage(direction) {
35131
- const viewport = this.$refs.viewport;
35132
- if (!viewport) return;
35133
- const delta = direction * Math.round(viewport.clientWidth * SCROLL_PAGE_RATIO);
35134
- if (typeof viewport.scrollBy === 'function') {
35135
- viewport.scrollBy({
35136
- left: delta,
35137
- behavior: 'smooth'
35138
- });
35139
- } else {
35140
- viewport.scrollLeft += delta;
35615
+ // Clases, estilos y atributos de cada tramo. Sin tramos con foco quedan
35616
+ // las mismas clases y estilos de siempre.
35617
+ decorate(segment, {
35618
+ anyFocusable,
35619
+ firstVisible
35620
+ }) {
35621
+ const classes = ['rq-progress__segment', segment.colorClass];
35622
+ const style = {
35623
+ width: `${segment.width}%`,
35624
+ ...segment.background
35625
+ };
35626
+ if (!anyFocusable) return {
35627
+ ...segment,
35628
+ tag: 'span',
35629
+ attrs: {},
35630
+ classes,
35631
+ style
35632
+ };
35633
+
35634
+ // Con tramos con foco la barra deja de recortar (overflow visible) para
35635
+ // que se vean el anillo de foco y el área táctil; las puntas redondeadas
35636
+ // pasan a los tramos que tocan el inicio y el final de la barra.
35637
+ if (segment.visible && firstVisible === segment) classes.push('rq-progress__segment--first');
35638
+ if (segment.visible && segment.start + segment.width >= 100 - END_EPSILON) {
35639
+ classes.push('rq-progress__segment--last');
35141
35640
  }
35142
- },
35143
- // Al cambiar de tab por fuera del click (teclado, v-model del consumidor)
35144
- // el activo puede quedar fuera de vista.
35145
- scrollActiveIntoView() {
35146
- const viewport = this.$refs.viewport;
35147
- if (!viewport) return;
35148
- const activeTab = viewport.querySelector('.rq-tabs__tab--active');
35149
- if (!activeTab) return;
35150
- const active = activeTab.closest('.rq-tabs__tooltip') || activeTab;
35151
- const start = active.offsetLeft;
35152
- const end = start + active.offsetWidth;
35153
- const viewStart = viewport.scrollLeft;
35154
- const viewEnd = viewStart + viewport.clientWidth;
35155
- if (start < viewStart) {
35156
- this.scrollToLeft(start - SCROLL_EDGE_MARGIN);
35157
- } else if (end > viewEnd) {
35158
- this.scrollToLeft(end - viewport.clientWidth + SCROLL_EDGE_MARGIN);
35641
+ if (segment.focusable) classes.push('rq-progress__segment--focusable');
35642
+ let tag = 'span';
35643
+ let attrs = {};
35644
+ if (segment.interactive) {
35645
+ tag = 'button';
35646
+ attrs = {
35647
+ type: 'button',
35648
+ 'aria-label': segment.ariaLabel
35649
+ };
35650
+ classes.push('rq-progress__segment--interactive');
35651
+ } else if (segment.tooltipText) {
35652
+ // Solo tooltip: foco con teclado para abrirlo, como el Avatar de
35653
+ // AvatarGroup.
35654
+ attrs = {
35655
+ tabindex: '0',
35656
+ role: 'img',
35657
+ 'aria-label': segment.ariaLabel
35658
+ };
35159
35659
  }
35660
+ return {
35661
+ ...segment,
35662
+ tag,
35663
+ attrs,
35664
+ classes,
35665
+ style,
35666
+ // Dentro del Tooltip el ancho lo lleva el wrapper.
35667
+ innerStyle: {
35668
+ width: '100%',
35669
+ ...segment.background
35670
+ }
35671
+ };
35160
35672
  },
35161
- scrollToLeft(left) {
35162
- const viewport = this.$refs.viewport;
35163
- const target = Math.max(0, left);
35164
- if (typeof viewport.scrollTo === 'function') {
35165
- viewport.scrollTo({
35166
- left: target,
35167
- behavior: 'smooth'
35168
- });
35169
- } else {
35170
- viewport.scrollLeft = target;
35171
- }
35673
+ onSegmentClick(index) {
35674
+ const segment = this.normalizedSegments[index];
35675
+ if (!segment || !segment.interactive) return;
35676
+ this.$emit('segment-click', {
35677
+ index,
35678
+ segment: this.segments[index]
35679
+ });
35172
35680
  }
35173
35681
  }
35174
35682
  };
@@ -35182,108 +35690,79 @@ var __vue_render__$v = function () {
35182
35690
  var _h = _vm.$createElement;
35183
35691
  var _c = _vm._self._c || _h;
35184
35692
  return _c("div", _vm._g({
35185
- class: _vm.classes
35186
- }, _vm.$listeners), [_vm.canScrollPrev ? _c("button", {
35187
- staticClass: "rq-tabs__scroll-btn rq-tabs__scroll-btn--prev",
35693
+ staticClass: "rq-progress-field"
35694
+ }, _vm.$listeners), [_vm.label ? _c("div", {
35695
+ staticClass: "rq-progress-field__header"
35696
+ }, [_c("span", {
35697
+ staticClass: "rq-progress-field__label",
35188
35698
  attrs: {
35189
- type: "button",
35190
- "aria-label": "Desplazar tabs a la izquierda"
35191
- },
35192
- on: {
35193
- click: function ($event) {
35194
- return _vm.scrollByPage(-1);
35195
- }
35699
+ id: _vm.labelId
35196
35700
  }
35197
- }, [_c(_vm.chevronLeftIcon, {
35198
- tag: "component",
35701
+ }, [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _vm.showValue ? _c("span", {
35702
+ staticClass: "rq-progress-field__value"
35703
+ }, [_vm._v(_vm._s(_vm.percent) + "%")]) : _vm._e()]) : _vm._e(), _vm._v(" "), _c("progress", {
35704
+ staticClass: "rq-progress-field__native",
35199
35705
  attrs: {
35200
- size: _vm.scrollIconSize
35706
+ max: "100",
35707
+ "aria-labelledby": _vm.label ? _vm.labelId : null
35708
+ },
35709
+ domProps: {
35710
+ value: _vm.percent
35201
35711
  }
35202
- })], 1) : _vm._e(), _vm._v(" "), _c("div", {
35203
- ref: "viewport",
35204
- staticClass: "rq-tabs__viewport",
35205
- on: {
35206
- scroll: _vm.updateScrollState
35712
+ }, [_vm._v("\n " + _vm._s(_vm.percent) + "%\n ")]), _vm._v(" "), _vm.focusable ? _c("div", {
35713
+ class: _vm.classes,
35714
+ attrs: {
35715
+ role: "group",
35716
+ "aria-labelledby": _vm.label ? _vm.labelId : null
35207
35717
  }
35208
- }, [_vm.loading ? _vm._l(_vm.skeletonWidths, function (w, i) {
35209
- return _c("div", {
35210
- key: "skeleton-" + i,
35211
- staticClass: "rq-tabs__tab rq-tabs__tab--skeleton"
35212
- }, [_c("Skeleton", {
35213
- attrs: {
35214
- width: w + "px",
35215
- height: _vm.skeletonHeight
35216
- }
35217
- })], 1);
35218
- }) : _vm._l(_vm.processedTabs, function (tab) {
35219
- return [tab.tooltipText ? _c("Tooltip", {
35220
- key: tab.id,
35221
- staticClass: "rq-tabs__tooltip",
35718
+ }, [_vm._l(_vm.normalizedSegments, function (segment, index) {
35719
+ return [segment.tooltipText ? _c("Tooltip", {
35720
+ key: index,
35721
+ staticClass: "rq-progress__segment-tooltip",
35722
+ style: {
35723
+ width: segment.width + "%"
35724
+ },
35222
35725
  attrs: {
35223
- text: tab.tooltipText,
35224
- side: tab.tooltipSide || "top"
35726
+ text: segment.tooltipText,
35727
+ side: segment.tooltipSide
35225
35728
  }
35226
- }, [_c("button", {
35227
- class: _vm.tabClasses(tab),
35228
- attrs: {
35229
- type: "button",
35230
- disabled: !!tab.disabled
35231
- },
35729
+ }, [_c(segment.tag, _vm._b({
35730
+ tag: "component",
35731
+ class: segment.classes,
35732
+ style: segment.innerStyle,
35232
35733
  on: {
35233
35734
  click: function ($event) {
35234
- return _vm.selectTab(tab);
35735
+ return _vm.onSegmentClick(index);
35235
35736
  }
35236
35737
  }
35237
- }, [tab.iconComponent ? _c(tab.iconComponent, {
35738
+ }, "component", segment.attrs, false))], 1) : _c(segment.tag, _vm._b({
35739
+ key: index,
35238
35740
  tag: "component",
35239
- staticClass: "rq-tabs__tab-icon",
35240
- attrs: {
35241
- size: _vm.iconSize
35242
- }
35243
- }) : _vm._e(), _vm._v(" "), tab.label ? _c("span", {
35244
- staticClass: "rq-tabs__tab-label"
35245
- }, [_vm._v(_vm._s(tab.label))]) : _vm._e(), _vm._v(" "), tab.counter !== undefined ? _c("span", {
35246
- staticClass: "rq-tabs__tab-counter"
35247
- }, [_vm._v(_vm._s(tab.counter))]) : _vm._e()], 1)]) : _c("button", {
35248
- key: tab.id,
35249
- class: _vm.tabClasses(tab),
35250
- attrs: {
35251
- type: "button",
35252
- disabled: !!tab.disabled
35253
- },
35741
+ class: segment.classes,
35742
+ style: segment.style,
35254
35743
  on: {
35255
35744
  click: function ($event) {
35256
- return _vm.selectTab(tab);
35745
+ return _vm.onSegmentClick(index);
35257
35746
  }
35258
35747
  }
35259
- }, [tab.iconComponent ? _c(tab.iconComponent, {
35260
- tag: "component",
35261
- staticClass: "rq-tabs__tab-icon",
35262
- attrs: {
35263
- size: _vm.iconSize
35264
- }
35265
- }) : _vm._e(), _vm._v(" "), tab.label ? _c("span", {
35266
- staticClass: "rq-tabs__tab-label"
35267
- }, [_vm._v(_vm._s(tab.label))]) : _vm._e(), _vm._v(" "), tab.counter !== undefined ? _c("span", {
35268
- staticClass: "rq-tabs__tab-counter"
35269
- }, [_vm._v(_vm._s(tab.counter))]) : _vm._e()], 1)];
35270
- })], 2), _vm._v(" "), _vm.canScrollNext ? _c("button", {
35271
- staticClass: "rq-tabs__scroll-btn rq-tabs__scroll-btn--next",
35748
+ }, "component", segment.attrs, false))];
35749
+ })], 2) : _c("div", {
35750
+ class: _vm.classes,
35272
35751
  attrs: {
35273
- type: "button",
35274
- "aria-label": "Desplazar tabs a la derecha"
35275
- },
35276
- on: {
35277
- click: function ($event) {
35278
- return _vm.scrollByPage(1);
35279
- }
35752
+ "aria-hidden": "true"
35280
35753
  }
35281
- }, [_c(_vm.chevronRightIcon, {
35282
- tag: "component",
35283
- attrs: {
35284
- size: _vm.scrollIconSize
35754
+ }, [_vm.segments.length ? _vm._l(_vm.normalizedSegments, function (segment, index) {
35755
+ return _c("span", {
35756
+ key: index,
35757
+ class: segment.classes,
35758
+ style: segment.style
35759
+ });
35760
+ }) : _c("span", {
35761
+ staticClass: "rq-progress__fill",
35762
+ style: {
35763
+ width: _vm.percent + "%"
35285
35764
  }
35286
- })], 1) : _vm._e()]);
35765
+ })], 2)]);
35287
35766
  };
35288
35767
  var __vue_staticRenderFns__$v = [];
35289
35768
  __vue_render__$v._withStripped = true;
@@ -35916,8 +36395,8 @@ const searchInputVariants = cva('rq-search-input', {
35916
36395
  var script$s = {
35917
36396
  name: 'SearchInput',
35918
36397
  components: {
35919
- Input: __vue_component__$R,
35920
- Button: __vue_component__$Q,
36398
+ Input: __vue_component__$S,
36399
+ Button: __vue_component__$R,
35921
36400
  X
35922
36401
  },
35923
36402
  props: {
@@ -36169,7 +36648,7 @@ const selectionBarVariants = cva('rq-selection-bar', {
36169
36648
  var script$q = {
36170
36649
  name: 'SelectionBar',
36171
36650
  components: {
36172
- Button: __vue_component__$Q
36651
+ Button: __vue_component__$R
36173
36652
  },
36174
36653
  props: {
36175
36654
  count: {
@@ -36329,7 +36808,7 @@ const DEFAULT_ICONS$1 = {
36329
36808
  var script$p = {
36330
36809
  name: 'Toast',
36331
36810
  components: {
36332
- Icon: __vue_component__$H
36811
+ Icon: __vue_component__$J
36333
36812
  },
36334
36813
  props: {
36335
36814
  variant: {
@@ -36442,7 +36921,7 @@ const riskBadgesVariants = cva('rq-risk-badges', {
36442
36921
  var script$o = {
36443
36922
  name: 'RiskBadges',
36444
36923
  components: {
36445
- Badge: __vue_component__$I
36924
+ Badge: __vue_component__$K
36446
36925
  },
36447
36926
  inheritAttrs: false,
36448
36927
  props: {
@@ -36904,7 +37383,7 @@ const DEFAULT_ICONS = {
36904
37383
  var script$l = {
36905
37384
  name: 'InfoAlert',
36906
37385
  components: {
36907
- Icon: __vue_component__$H
37386
+ Icon: __vue_component__$J
36908
37387
  },
36909
37388
  props: {
36910
37389
  variant: {
@@ -37025,8 +37504,8 @@ const ICON_SIZE_BY_BUTTON_SIZE = {
37025
37504
  var script$k = {
37026
37505
  name: 'IconButton',
37027
37506
  components: {
37028
- Button: __vue_component__$Q,
37029
- Icon: __vue_component__$H
37507
+ Button: __vue_component__$R,
37508
+ Icon: __vue_component__$J
37030
37509
  },
37031
37510
  props: {
37032
37511
  // Ligadura Material Symbols del icono (ej: "add", "delete")
@@ -37184,7 +37663,7 @@ const formFieldVariants = cva('rq-form-field', {
37184
37663
  var script$j = {
37185
37664
  name: 'FormField',
37186
37665
  components: {
37187
- Icon: __vue_component__$H
37666
+ Icon: __vue_component__$J
37188
37667
  },
37189
37668
  props: {
37190
37669
  label: {
@@ -37618,8 +38097,8 @@ const avatarGroupVariants = cva('rq-avatar-group', {
37618
38097
  var script$g = {
37619
38098
  name: 'AvatarGroup',
37620
38099
  components: {
37621
- Avatar: __vue_component__$C,
37622
- Tooltip: __vue_component__$B
38100
+ Avatar: __vue_component__$E,
38101
+ Tooltip: __vue_component__$D
37623
38102
  },
37624
38103
  props: {
37625
38104
  items: {
@@ -37895,7 +38374,7 @@ let uid$2 = 0;
37895
38374
  var script$e = {
37896
38375
  name: 'FileInput',
37897
38376
  components: {
37898
- Button: __vue_component__$Q
38377
+ Button: __vue_component__$R
37899
38378
  },
37900
38379
  props: {
37901
38380
  label: {
@@ -38090,7 +38569,7 @@ var script$d = {
38090
38569
  name: 'FileList',
38091
38570
  components: {
38092
38571
  Card: __vue_component__$i,
38093
- Icon: __vue_component__$H,
38572
+ Icon: __vue_component__$J,
38094
38573
  IconButton: __vue_component__$k
38095
38574
  },
38096
38575
  props: {
@@ -38247,7 +38726,7 @@ const kpiVariants = cva('rq-kpi', {
38247
38726
  var script$c = {
38248
38727
  name: 'Kpi',
38249
38728
  components: {
38250
- Icon: __vue_component__$H
38729
+ Icon: __vue_component__$J
38251
38730
  },
38252
38731
  props: {
38253
38732
  label: {
@@ -38530,7 +39009,7 @@ var script$a = {
38530
39009
  name: 'RichRadioGroup',
38531
39010
  inheritAttrs: false,
38532
39011
  components: {
38533
- Radio: __vue_component__$D
39012
+ Radio: __vue_component__$F
38534
39013
  },
38535
39014
  model: {
38536
39015
  prop: 'modelValue',
@@ -38766,8 +39245,8 @@ const entryType = item => {
38766
39245
  var script$9 = {
38767
39246
  name: 'Combobox',
38768
39247
  components: {
38769
- Icon: __vue_component__$H,
38770
- Checkbox: __vue_component__$L,
39248
+ Icon: __vue_component__$J,
39249
+ Checkbox: __vue_component__$N,
38771
39250
  Dropdown: __vue_component__$u
38772
39251
  },
38773
39252
  inheritAttrs: false,
@@ -39228,7 +39707,7 @@ const __vue_component__$9 = /*#__PURE__*/normalizeComponent({
39228
39707
  var script$8 = {
39229
39708
  name: 'DropdownItem',
39230
39709
  components: {
39231
- Icon: __vue_component__$H
39710
+ Icon: __vue_component__$J
39232
39711
  },
39233
39712
  inject: {
39234
39713
  menu: {
@@ -42758,6 +43237,45 @@ function useTable(props, emit) {
42758
43237
  }
42759
43238
 
42760
43239
  // --- Handlers de selección de filas ---
43240
+ const rowKey = row => String(row[props.rowId]);
43241
+
43242
+ // Selección controlada (opcional): si el padre pasa selectedRowIds, ese
43243
+ // array inicializa y re-sincroniza la selección interna; los cambios del
43244
+ // usuario se avisan con update:selected-row-ids (patrón .sync). Con null
43245
+ // (default) la selección es interna, como siempre. deep: el padre puede
43246
+ // reemplazar el array o mutarlo (push/splice).
43247
+ const isSelectionControlled = () => props.selectedRowIds != null;
43248
+ vue.watch(() => props.selectedRowIds, ids => {
43249
+ if (ids == null) return;
43250
+ const sel = {};
43251
+ ids.forEach(id => {
43252
+ sel[String(id)] = true;
43253
+ });
43254
+ rowSelection.value = sel;
43255
+ }, {
43256
+ immediate: true,
43257
+ deep: true
43258
+ });
43259
+
43260
+ // Ids seleccionados con su tipo original (no el String interno). En modo
43261
+ // controlado conserva los ids que no están en las filas actuales (p. ej.
43262
+ // otra página de una tabla paginada en el servidor): la tabla solo decide
43263
+ // sobre las filas que muestra.
43264
+ function selectedIdsFrom(sel) {
43265
+ const ids = props.rows.filter(row => sel[rowKey(row)]).map(row => row[props.rowId]);
43266
+ if (!isSelectionControlled()) return ids;
43267
+ const visible = new Set(props.rows.map(rowKey));
43268
+ const outside = props.selectedRowIds.filter(id => !visible.has(String(id)) && sel[String(id)]);
43269
+ return [...outside, ...ids];
43270
+ }
43271
+
43272
+ // update:selected-row-ids va ANTES que select: select sigue siendo el
43273
+ // último evento de cada cambio, como antes de existir la selección controlada.
43274
+ function commitSelection(sel, selectedRows) {
43275
+ rowSelection.value = sel;
43276
+ emit('update:selected-row-ids', selectedIdsFrom(sel));
43277
+ emit('select', selectedRows);
43278
+ }
42761
43279
  const allSelected = vue.computed(() => {
42762
43280
  if (!props.rows.length) return false;
42763
43281
  return props.rows.every(row => rowSelection.value[String(row[props.rowId])]);
@@ -42772,25 +43290,29 @@ function useTable(props, emit) {
42772
43290
  } else {
42773
43291
  sel[rowId] = true;
42774
43292
  }
42775
- rowSelection.value = sel;
42776
- emit('select', props.rows.filter(row => sel[String(row[props.rowId])]));
43293
+ commitSelection(sel, props.rows.filter(row => sel[rowKey(row)]));
42777
43294
  }
43295
+
43296
+ // Seleccionar/deseleccionar todo actúa sobre las filas visibles. En modo
43297
+ // controlado se conserva la selección de las filas que no están en `rows`.
42778
43298
  function toggleSelectAll() {
43299
+ const sel = isSelectionControlled() ? {
43300
+ ...rowSelection.value
43301
+ } : {};
42779
43302
  if (allSelected.value) {
42780
- rowSelection.value = {};
42781
- emit('select', []);
43303
+ props.rows.forEach(row => {
43304
+ delete sel[rowKey(row)];
43305
+ });
43306
+ commitSelection(sel, []);
42782
43307
  } else {
42783
- const sel = {};
42784
43308
  props.rows.forEach(row => {
42785
- sel[String(row[props.rowId])] = true;
43309
+ sel[rowKey(row)] = true;
42786
43310
  });
42787
- rowSelection.value = sel;
42788
- emit('select', [...props.rows]);
43311
+ commitSelection(sel, [...props.rows]);
42789
43312
  }
42790
43313
  }
42791
43314
  function clearSelection() {
42792
- rowSelection.value = {};
42793
- emit('select', []);
43315
+ commitSelection({}, []);
42794
43316
  }
42795
43317
 
42796
43318
  // --- Handlers de chevron ---
@@ -43063,14 +43585,29 @@ function useTable(props, emit) {
43063
43585
  //
43064
43586
  //
43065
43587
  //
43588
+ //
43589
+ //
43590
+ //
43591
+ //
43592
+ //
43593
+ //
43594
+ //
43595
+ //
43596
+ //
43597
+
43066
43598
 
43599
+ // Controles que se quedan con su propio click/teclado dentro de una fila
43600
+ // operable (rowsFocusable). [tabindex] cubre la celda de expandir y cualquier
43601
+ // widget propio del consumidor; los tabindex="-1" (p. ej. el botón interno
43602
+ // del chevron de expandir) también, porque siguen siendo parte de un control.
43603
+ const ROW_CONTROL_SELECTOR = ['a[href]', 'button', 'input', 'select', 'textarea', 'label', 'summary', '[contenteditable=""]', '[contenteditable="true"]', '[tabindex]', '[role="button"]', '[role="link"]', '[role="checkbox"]', '[role="switch"]', '[role="menuitem"]', '[role="option"]', '[role="tab"]'].join(',');
43067
43604
  var script$5 = {
43068
43605
  name: 'Table',
43069
43606
  components: {
43070
- Checkbox: __vue_component__$L,
43071
- Icon: __vue_component__$H,
43072
- Skeleton: __vue_component__$G,
43073
- Tooltip: __vue_component__$B
43607
+ Checkbox: __vue_component__$N,
43608
+ Icon: __vue_component__$J,
43609
+ Skeleton: __vue_component__$I,
43610
+ Tooltip: __vue_component__$D
43074
43611
  },
43075
43612
  props: {
43076
43613
  rows: {
@@ -43103,10 +43640,36 @@ var script$5 = {
43103
43640
  type: Boolean,
43104
43641
  default: false
43105
43642
  },
43643
+ // Selección controlada (opcional): ids de las filas seleccionadas. Con
43644
+ // null (default) la selección es interna; con un array, lo inicializa y
43645
+ // re-sincroniza, y cada cambio emite update:selected-row-ids → usar
43646
+ // :selected-row-ids.sync. Puede incluir ids que no están en `rows` (otras
43647
+ // páginas): se conservan al seleccionar/deseleccionar las visibles.
43648
+ selectedRowIds: {
43649
+ type: Array,
43650
+ default: null
43651
+ },
43106
43652
  rowId: {
43107
43653
  type: String,
43108
43654
  default: 'id'
43109
43655
  },
43656
+ // Filas operables con teclado, para cuando la fila es una acción (abre un
43657
+ // detalle, filtra otra vista): cada fila entra al orden de tabulación y
43658
+ // Enter / Espacio emiten row-click, igual que el click. Los clicks y
43659
+ // teclas que nacen en un control propio de la fila (checkbox, botón o
43660
+ // enlace en una celda, columna de expandir) no disparan row-click.
43661
+ rowsFocusable: {
43662
+ type: Boolean,
43663
+ default: false
43664
+ },
43665
+ // Ids de las filas marcadas como activas (p. ej. la fila elegida como
43666
+ // filtro). Se marcan con aria-current="true" y la clase
43667
+ // rq-table__tr--active. Es independiente de la selección con checkbox
43668
+ // (selectedRowIds). null (default) = ninguna.
43669
+ activeRowIds: {
43670
+ type: Array,
43671
+ default: null
43672
+ },
43110
43673
  maxHeight: {
43111
43674
  type: Number,
43112
43675
  default: 460
@@ -43209,6 +43772,11 @@ var script$5 = {
43209
43772
  subtitle: this.emptyState?.subtitle || ''
43210
43773
  };
43211
43774
  },
43775
+ // Ids activos normalizados a string, igual que getRowId de useTable, para
43776
+ // que un id numérico encuentre su fila aunque venga como string o número
43777
+ activeRowIdSet() {
43778
+ return this.activeRowIds ? new Set(this.activeRowIds.map(String)) : null;
43779
+ },
43212
43780
  // Offset sticky de la columna de selección: se corre a la derecha
43213
43781
  // del ancho de la columna de expandir, cuando ambas están activas
43214
43782
  selectColOffset() {
@@ -43216,6 +43784,40 @@ var script$5 = {
43216
43784
  }
43217
43785
  },
43218
43786
  methods: {
43787
+ isRowActive(row) {
43788
+ return !!this.activeRowIdSet && this.activeRowIdSet.has(row.id);
43789
+ },
43790
+ // Sin rowsFocusable se emite como siempre (el click que sube desde un
43791
+ // botón de una celda también dispara row-click). Con rowsFocusable la
43792
+ // fila es una acción y sus controles internos son otras acciones: un
43793
+ // Enter sobre un botón de la celda genera su propio click nativo, y si
43794
+ // ese click subiera a la fila dispararía las dos cosas.
43795
+ onRowClick(row, event) {
43796
+ if (this.rowsFocusable && this.isFromRowControl(event)) return;
43797
+ this.$emit('row-click', row.original);
43798
+ },
43799
+ // Enter y Espacio sobre la fila misma (no sobre un control de adentro,
43800
+ // que se queda con su teclado). La tecla mantenida no repite la acción
43801
+ // y Espacio no scrollea la página. Con modificadores no hace nada, para
43802
+ // no pisar atajos del navegador o del lector de pantalla.
43803
+ onRowKeydown(row, event) {
43804
+ if (!this.rowsFocusable || event.target !== event.currentTarget) return;
43805
+ if (event.key !== 'Enter' && event.key !== ' ') return;
43806
+ if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;
43807
+ event.preventDefault();
43808
+ if (event.repeat) return;
43809
+ this.$emit('row-click', row.original);
43810
+ },
43811
+ // ¿El evento nace en un control interactivo propio dentro de la fila?
43812
+ // Se busca desde el target hacia arriba y solo cuenta si el control está
43813
+ // dentro de la fila (closest podría encontrar uno que la envuelve).
43814
+ isFromRowControl(event) {
43815
+ const rowEl = event.currentTarget;
43816
+ const target = event.target;
43817
+ if (!rowEl || !target || target === rowEl || typeof target.closest !== 'function') return false;
43818
+ const control = target.closest(ROW_CONTROL_SELECTOR);
43819
+ return !!control && control !== rowEl && rowEl.contains(control);
43820
+ },
43219
43821
  getColumnDef(columnKey) {
43220
43822
  return this.columns.find(c => c.key === columnKey) || {};
43221
43823
  },
@@ -43607,11 +44209,20 @@ var __vue_render__$5 = function () {
43607
44209
  key: row.id,
43608
44210
  staticClass: "rq-table__tr rq-table__tr--body",
43609
44211
  class: {
43610
- "rq-table__tr--selected": !!_vm.rowSelection[row.id]
44212
+ "rq-table__tr--selected": !!_vm.rowSelection[row.id],
44213
+ "rq-table__tr--focusable": _vm.rowsFocusable,
44214
+ "rq-table__tr--active": _vm.isRowActive(row)
44215
+ },
44216
+ attrs: {
44217
+ tabindex: _vm.rowsFocusable ? 0 : null,
44218
+ "aria-current": _vm.isRowActive(row) ? "true" : null
43611
44219
  },
43612
44220
  on: {
43613
44221
  click: function ($event) {
43614
- return _vm.$emit("row-click", row.original);
44222
+ return _vm.onRowClick(row, $event);
44223
+ },
44224
+ keydown: function ($event) {
44225
+ return _vm.onRowKeydown(row, $event);
43615
44226
  }
43616
44227
  }
43617
44228
  }, [_vm.expandable ? _c("td", {
@@ -43924,6 +44535,10 @@ const dataTableVariants = cva('rq-data-table', {
43924
44535
  //
43925
44536
  //
43926
44537
  //
44538
+ //
44539
+ //
44540
+ //
44541
+ //
43927
44542
 
43928
44543
  var script$4 = {
43929
44544
  name: 'DataTable',
@@ -43932,7 +44547,7 @@ var script$4 = {
43932
44547
  SearchInput: __vue_component__$s,
43933
44548
  PageSizeSelect: __vue_component__$r,
43934
44549
  SelectionBar: __vue_component__$q,
43935
- Pagination: __vue_component__$w
44550
+ Pagination: __vue_component__$y
43936
44551
  },
43937
44552
  props: {
43938
44553
  rows: {
@@ -43979,10 +44594,27 @@ var script$4 = {
43979
44594
  type: Boolean,
43980
44595
  default: false
43981
44596
  },
44597
+ // Se reenvía a Table (ver Table.selectedRowIds). Con selectedRowIds el
44598
+ // contador de SelectionBar cuenta esos ids (incluye los de otras páginas).
44599
+ selectedRowIds: {
44600
+ type: Array,
44601
+ default: null
44602
+ },
43982
44603
  rowId: {
43983
44604
  type: String,
43984
44605
  default: 'id'
43985
44606
  },
44607
+ // Se reenvían a Table: filas operables con teclado (Enter / Espacio
44608
+ // emiten row-click) y filas marcadas como activas con aria-current
44609
+ // (ver Table.rowsFocusable y Table.activeRowIds).
44610
+ rowsFocusable: {
44611
+ type: Boolean,
44612
+ default: false
44613
+ },
44614
+ activeRowIds: {
44615
+ type: Array,
44616
+ default: null
44617
+ },
43986
44618
  maxHeight: {
43987
44619
  type: Number,
43988
44620
  default: 460
@@ -44044,7 +44676,11 @@ var script$4 = {
44044
44676
  },
44045
44677
  data() {
44046
44678
  return {
44047
- selectedRows: []
44679
+ selectedRows: [],
44680
+ // Copia de selectedRowIds que también sigue los cambios del usuario
44681
+ // (update:selected-row-ids de Table). Así el contador refleja la
44682
+ // selección aunque el padre no use .sync, igual que la tabla.
44683
+ selectedIds: []
44048
44684
  };
44049
44685
  },
44050
44686
  computed: {
@@ -44060,8 +44696,16 @@ var script$4 = {
44060
44696
  toRecord() {
44061
44697
  return Math.min(this.page * this.pageSize, this.total);
44062
44698
  },
44699
+ // Filas seleccionadas de la página actual. Con selectedRowIds se derivan
44700
+ // de los ids (así ya están desde el primer render, sin esperar un
44701
+ // select); sin él, son las que emitió Table en el último select.
44702
+ visibleSelectedRows() {
44703
+ if (!this.selectedRowIds) return this.selectedRows;
44704
+ const ids = new Set(this.selectedIds.map(String));
44705
+ return this.rows.filter(row => ids.has(String(row[this.rowId])));
44706
+ },
44063
44707
  selectedCount() {
44064
- return this.selectedRows.length;
44708
+ return this.selectedRowIds ? this.selectedIds.length : this.selectedRows.length;
44065
44709
  },
44066
44710
  mergedTexts() {
44067
44711
  return {
@@ -44084,11 +44728,24 @@ var script$4 = {
44084
44728
  return this.mergedTexts.showingRecords.replace('{from}', this.fromRecord).replace('{to}', this.toRecord).replace('{total}', this.total);
44085
44729
  }
44086
44730
  },
44731
+ watch: {
44732
+ selectedRowIds: {
44733
+ handler(ids) {
44734
+ if (ids) this.selectedIds = [...ids];
44735
+ },
44736
+ immediate: true,
44737
+ deep: true
44738
+ }
44739
+ },
44087
44740
  methods: {
44088
44741
  onSelect(rows) {
44089
44742
  this.selectedRows = rows;
44090
44743
  this.$emit('select', rows);
44091
44744
  },
44745
+ onSelectedRowIds(ids) {
44746
+ this.selectedIds = ids;
44747
+ this.$emit('update:selected-row-ids', ids);
44748
+ },
44092
44749
  onClearSelection() {
44093
44750
  this.$refs.table.clearSelection();
44094
44751
  }
@@ -44139,14 +44796,14 @@ var __vue_render__$4 = function () {
44139
44796
  on: {
44140
44797
  clear: _vm.onClearSelection,
44141
44798
  delete: function ($event) {
44142
- return _vm.$emit("delete-selected", _vm.selectedRows);
44799
+ return _vm.$emit("delete-selected", _vm.visibleSelectedRows);
44143
44800
  }
44144
44801
  },
44145
44802
  scopedSlots: _vm._u([_vm.$scopedSlots["selection-actions"] ? {
44146
44803
  key: "actions",
44147
44804
  fn: function () {
44148
44805
  return [_vm._t("selection-actions", null, {
44149
- rows: _vm.selectedRows
44806
+ rows: _vm.visibleSelectedRows
44150
44807
  })];
44151
44808
  },
44152
44809
  proxy: true
@@ -44159,7 +44816,10 @@ var __vue_render__$4 = function () {
44159
44816
  "column-order": _vm.columnOrder,
44160
44817
  "pinned-columns": _vm.pinnedColumns,
44161
44818
  selectable: _vm.selectable,
44819
+ "selected-row-ids": _vm.selectedRowIds,
44162
44820
  "row-id": _vm.rowId,
44821
+ "rows-focusable": _vm.rowsFocusable,
44822
+ "active-row-ids": _vm.activeRowIds,
44163
44823
  "max-height": _vm.maxHeight,
44164
44824
  expandable: _vm.expandable,
44165
44825
  "row-expandable": _vm.rowExpandable,
@@ -44178,6 +44838,7 @@ var __vue_render__$4 = function () {
44178
44838
  return _vm.$emit("row-click", $event);
44179
44839
  },
44180
44840
  select: _vm.onSelect,
44841
+ "update:selected-row-ids": _vm.onSelectedRowIds,
44181
44842
  "update:column-order": function ($event) {
44182
44843
  return _vm.$emit("update:column-order", $event);
44183
44844
  },
@@ -44338,6 +44999,8 @@ const datePickerVariants = cva('rq-datepicker', {
44338
44999
  //
44339
45000
  //
44340
45001
  //
45002
+ //
45003
+ //
44341
45004
 
44342
45005
  const pad = n => String(n).padStart(2, '0');
44343
45006
  const formatDate = date => `${pad(date.getDate())}/${pad(date.getMonth() + 1)}/${date.getFullYear()}`;
@@ -44349,8 +45012,8 @@ var script$3 = {
44349
45012
  name: 'DatePicker',
44350
45013
  components: {
44351
45014
  DateRangePicker,
44352
- Button: __vue_component__$Q,
44353
- Icon: __vue_component__$H
45015
+ Button: __vue_component__$R,
45016
+ Icon: __vue_component__$J
44354
45017
  },
44355
45018
  props: {
44356
45019
  startDate: {
@@ -44433,6 +45096,16 @@ var script$3 = {
44433
45096
  applyLabel: {
44434
45097
  type: String,
44435
45098
  default: null
45099
+ },
45100
+ // null = no controlado (abre y cierra con su propio botón, como siempre).
45101
+ // true/false = controlado por el consumidor con :open.sync.
45102
+ open: {
45103
+ type: Boolean,
45104
+ default: null
45105
+ },
45106
+ hideTrigger: {
45107
+ type: Boolean,
45108
+ default: false
44436
45109
  }
44437
45110
  },
44438
45111
  data() {
@@ -44442,6 +45115,9 @@ var script$3 = {
44442
45115
  };
44443
45116
  },
44444
45117
  computed: {
45118
+ controlContainerClass() {
45119
+ return this.hideTrigger ? 'rq-datepicker__anchor' : 'rq-datepicker__trigger';
45120
+ },
44445
45121
  classes() {
44446
45122
  return datePickerVariants({
44447
45123
  open: this.isOpen,
@@ -44476,11 +45152,37 @@ var script$3 = {
44476
45152
  return this.presetRanges ? this.texts.applyRange : this.texts.apply;
44477
45153
  }
44478
45154
  },
45155
+ watch: {
45156
+ open(value) {
45157
+ if (value !== null) this.syncOpen(value);
45158
+ }
45159
+ },
45160
+ mounted() {
45161
+ if (this.open) this.syncOpen(true);
45162
+ },
45163
+ beforeDestroy() {
45164
+ clearTimeout(this.openTimer);
45165
+ },
44479
45166
  methods: {
44480
45167
  applyDayClasses,
44481
45168
  onToggle(open) {
44482
45169
  if (open) this.now = new Date();
44483
45170
  this.isOpen = open;
45171
+ if (open !== this.open) this.$emit('update:open', open);
45172
+ },
45173
+ // Abre o cierra desde la prop open. La apertura espera al siguiente ciclo:
45174
+ // si viene del clic de un control externo, ese mismo clic llegaría al body
45175
+ // y la librería lo tomaría como un clic afuera, cerrando el popover.
45176
+ syncOpen(value) {
45177
+ clearTimeout(this.openTimer);
45178
+ if (!value) {
45179
+ if (this.$refs.picker) this.$refs.picker.clickAway();
45180
+ return;
45181
+ }
45182
+ this.openTimer = setTimeout(() => {
45183
+ const picker = this.$refs.picker;
45184
+ if (picker && !picker.open) picker.togglePicker(true, true);
45185
+ });
44484
45186
  },
44485
45187
  pickerLocale() {
44486
45188
  const locale = {
@@ -44536,7 +45238,7 @@ var __vue_render__$3 = function () {
44536
45238
  "locale-data": _vm.pickerLocale(),
44537
45239
  opens: _vm.opens,
44538
45240
  "date-format": _vm.applyDayClasses,
44539
- "control-container-class": "rq-datepicker__trigger"
45241
+ "control-container-class": _vm.controlContainerClass
44540
45242
  },
44541
45243
  on: {
44542
45244
  toggle: _vm.onToggle,
@@ -44549,7 +45251,11 @@ var __vue_render__$3 = function () {
44549
45251
  fn: function (ref) {
44550
45252
  var start = ref.startDate;
44551
45253
  var end = ref.endDate;
44552
- return [_c("button", {
45254
+ return [_vm.hideTrigger ? _c("span", {
45255
+ attrs: {
45256
+ "aria-hidden": "true"
45257
+ }
45258
+ }) : _c("button", {
44553
45259
  staticClass: "rq-datepicker__control",
44554
45260
  attrs: {
44555
45261
  type: "button",
@@ -44675,7 +45381,7 @@ const dialogVariants = cva('rq-dialog', {
44675
45381
  var script$2 = {
44676
45382
  name: 'Dialog',
44677
45383
  components: {
44678
- Button: __vue_component__$Q
45384
+ Button: __vue_component__$R
44679
45385
  },
44680
45386
  props: {
44681
45387
  title: {
@@ -44725,8 +45431,10 @@ var script$2 = {
44725
45431
  document.removeEventListener('keydown', this.handleKeydown);
44726
45432
  },
44727
45433
  methods: {
45434
+ // Un Escape que ya atendió un control de adentro (p. ej. Combobox o
45435
+ // Dropdown al cerrar su panel, que hacen preventDefault) no cancela.
44728
45436
  handleKeydown(e) {
44729
- if (e.key === 'Escape' && this.open) this.$emit('cancel');
45437
+ if (e.key === 'Escape' && this.open && !e.defaultPrevented) this.$emit('cancel');
44730
45438
  },
44731
45439
  emitConfirm() {
44732
45440
  this.$emit('confirm');
@@ -44980,8 +45688,11 @@ var script$1 = {
44980
45688
  this.locked = shouldLock;
44981
45689
  if (shouldLock) lockScroll(this.scrollTargets);else unlockScroll(this.scrollTargets);
44982
45690
  },
45691
+ // Un Escape que ya atendió un control de adentro (p. ej. Combobox o
45692
+ // Dropdown al cerrar su panel, que hacen preventDefault) no cierra el
45693
+ // drawer: solo cierra la lista.
44983
45694
  handleKeydown(e) {
44984
- if (e.key === 'Escape' && this.open) {
45695
+ if (e.key === 'Escape' && this.open && !e.defaultPrevented) {
44985
45696
  this.$emit('close');
44986
45697
  }
44987
45698
  }
@@ -45129,7 +45840,7 @@ const sidebarVariants = cva('rq-sidebar', {
45129
45840
  var script = {
45130
45841
  name: 'Sidebar',
45131
45842
  components: {
45132
- Icon: __vue_component__$H
45843
+ Icon: __vue_component__$J
45133
45844
  },
45134
45845
  model: {
45135
45846
  prop: 'value',
@@ -45302,16 +46013,16 @@ const __vue_component__ = /*#__PURE__*/normalizeComponent({
45302
46013
  staticRenderFns: __vue_staticRenderFns__
45303
46014
  }, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);
45304
46015
 
45305
- exports.Avatar = __vue_component__$C;
46016
+ exports.Avatar = __vue_component__$E;
45306
46017
  exports.AvatarGroup = __vue_component__$g;
45307
- exports.Badge = __vue_component__$I;
46018
+ exports.Badge = __vue_component__$K;
45308
46019
  exports.Breadcrumb = __vue_component__$n;
45309
- exports.Button = __vue_component__$Q;
46020
+ exports.Button = __vue_component__$R;
45310
46021
  exports.Calendar = __vue_component__$6;
45311
46022
  exports.Card = __vue_component__$i;
45312
- exports.Checkbox = __vue_component__$L;
45313
- exports.CheckboxGroup = __vue_component__$z;
45314
- exports.Chip = __vue_component__$J;
46023
+ exports.Checkbox = __vue_component__$N;
46024
+ exports.CheckboxGroup = __vue_component__$B;
46025
+ exports.Chip = __vue_component__$L;
45315
46026
  exports.ChipTabs = __vue_component__$b;
45316
46027
  exports.Combobox = __vue_component__$9;
45317
46028
  exports.DataTable = __vue_component__$4;
@@ -45324,37 +46035,38 @@ exports.DropdownItem = __vue_component__$8;
45324
46035
  exports.FileInput = __vue_component__$e;
45325
46036
  exports.FileList = __vue_component__$d;
45326
46037
  exports.FormField = __vue_component__$j;
45327
- exports.Icon = __vue_component__$H;
46038
+ exports.Icon = __vue_component__$J;
45328
46039
  exports.IconButton = __vue_component__$k;
45329
46040
  exports.InfoAlert = __vue_component__$l;
45330
- exports.Input = __vue_component__$R;
46041
+ exports.Input = __vue_component__$S;
45331
46042
  exports.Kpi = __vue_component__$c;
45332
- exports.Link = __vue_component__$O;
46043
+ exports.LineTabs = __vue_component__$w;
46044
+ exports.Link = __vue_component__$P;
45333
46045
  exports.PageSizeSelect = __vue_component__$r;
45334
- exports.Pagination = __vue_component__$w;
45335
- exports.Progress = __vue_component__$N;
45336
- exports.Radio = __vue_component__$D;
45337
- exports.RichCheckboxGroup = __vue_component__$A;
46046
+ exports.Pagination = __vue_component__$y;
46047
+ exports.Progress = __vue_component__$v;
46048
+ exports.Radio = __vue_component__$F;
46049
+ exports.RichCheckboxGroup = __vue_component__$C;
45338
46050
  exports.RichRadioGroup = __vue_component__$a;
45339
- exports.RichSwitchGroup = __vue_component__$x;
46051
+ exports.RichSwitchGroup = __vue_component__$z;
45340
46052
  exports.RiskBadges = __vue_component__$o;
45341
- exports.RqButton = __vue_component__$T;
45342
- exports.RqInput = __vue_component__$S;
46053
+ exports.RqButton = __vue_component__$U;
46054
+ exports.RqInput = __vue_component__$T;
45343
46055
  exports.SearchInput = __vue_component__$s;
45344
- exports.Select = __vue_component__$F;
46056
+ exports.Select = __vue_component__$H;
45345
46057
  exports.SelectionBar = __vue_component__$q;
45346
46058
  exports.Sidebar = __vue_component__;
45347
- exports.Skeleton = __vue_component__$G;
45348
- exports.Spinner = __vue_component__$M;
46059
+ exports.Skeleton = __vue_component__$I;
46060
+ exports.Spinner = __vue_component__$O;
45349
46061
  exports.Stepper = __vue_component__$f;
45350
- exports.Switch = __vue_component__$K;
45351
- exports.SwitchGroup = __vue_component__$y;
46062
+ exports.Switch = __vue_component__$M;
46063
+ exports.SwitchGroup = __vue_component__$A;
45352
46064
  exports.Table = __vue_component__$5;
45353
- exports.Tabs = __vue_component__$v;
45354
- exports.Textarea = __vue_component__$E;
46065
+ exports.Tabs = __vue_component__$x;
46066
+ exports.Textarea = __vue_component__$G;
45355
46067
  exports.Timeline = __vue_component__$h;
45356
46068
  exports.Toast = __vue_component__$p;
45357
46069
  exports.ToastContainer = __vue_component__$m;
45358
- exports.Tooltip = __vue_component__$B;
46070
+ exports.Tooltip = __vue_component__$D;
45359
46071
  exports.Topbar = __vue_component__$t;
45360
- exports.Typography = __vue_component__$P;
46072
+ exports.Typography = __vue_component__$Q;