@bridge-ui/vue 0.6.0 → 0.7.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.
Files changed (76) hide show
  1. package/dist/Adapters/I18n/useI18nAdapter.d.ts +1 -1
  2. package/dist/Adapters/I18n/useI18nAdapter.js +4 -1
  3. package/dist/Components/Accordion/Accordion.vue_vue_type_script_setup_true_lang.js +1 -1
  4. package/dist/Components/Accordion/accordion.types.d.ts +2 -2
  5. package/dist/Components/Autocomplete/composables/useAutocomplete.d.ts +1 -1
  6. package/dist/Components/BaseField/BaseField.vue_vue_type_script_setup_true_lang.js +33 -28
  7. package/dist/Components/BaseField/BaseFieldCorner.js +5 -0
  8. package/dist/Components/BaseField/BaseFieldCorner.vue.d.ts +17 -0
  9. package/dist/Components/BaseField/BaseFieldCorner.vue_vue_type_script_setup_true_lang.js +17 -0
  10. package/dist/Components/BaseField/baseField.types.d.ts +4 -2
  11. package/dist/Components/BaseField/composables/useBaseField.d.ts +1 -1
  12. package/dist/Components/BaseField/composables/useBaseField.js +11 -8
  13. package/dist/Components/ColorField/composables/useColorField.d.ts +1 -1
  14. package/dist/Components/DataTable/DataTable.vue_vue_type_script_setup_true_lang.js +154 -131
  15. package/dist/Components/DataTable/DataTablePagination.js +5 -0
  16. package/dist/Components/DataTable/DataTablePagination.vue.d.ts +24 -0
  17. package/dist/Components/DataTable/DataTablePagination.vue_vue_type_script_setup_true_lang.js +40 -0
  18. package/dist/Components/DataTable/composables/useDataTable.d.ts +8 -3
  19. package/dist/Components/DataTable/composables/useDataTable.js +299 -280
  20. package/dist/Components/DataTable/composables/useDataTablePagination.d.ts +69 -0
  21. package/dist/Components/DataTable/composables/useDataTablePagination.js +130 -0
  22. package/dist/Components/DataTable/dataTable.types.d.ts +27 -12
  23. package/dist/Components/DataTable/dataTablePagination.types.d.ts +169 -0
  24. package/dist/Components/DataTable/index.d.ts +2 -1
  25. package/dist/Components/DateField/composables/useDateField.d.ts +1 -1
  26. package/dist/Components/DateRangeField/composables/useDateRangeField.d.ts +1 -1
  27. package/dist/Components/DateTimeField/composables/useDateTimeField.d.ts +1 -1
  28. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.d.ts +1 -1
  29. package/dist/Components/FormField/FilledFormField.vue.d.ts +7 -7
  30. package/dist/Components/FormField/FilledFormField.vue_vue_type_script_setup_true_lang.js +32 -27
  31. package/dist/Components/FormField/FormFieldCorner.js +5 -0
  32. package/dist/Components/FormField/FormFieldCorner.vue.d.ts +17 -0
  33. package/dist/Components/FormField/FormFieldCorner.vue_vue_type_script_setup_true_lang.js +17 -0
  34. package/dist/Components/FormField/NotchedFormField.vue.d.ts +7 -7
  35. package/dist/Components/FormField/NotchedFormField.vue_vue_type_script_setup_true_lang.js +31 -26
  36. package/dist/Components/FormField/OutlinedFormField.vue.d.ts +7 -7
  37. package/dist/Components/FormField/OutlinedFormField.vue_vue_type_script_setup_true_lang.js +32 -27
  38. package/dist/Components/FormField/StackedFormField.vue.d.ts +6 -6
  39. package/dist/Components/FormField/StackedFormField.vue_vue_type_script_setup_true_lang.js +34 -29
  40. package/dist/Components/FormField/UnderlinedFormField.vue.d.ts +7 -7
  41. package/dist/Components/FormField/UnderlinedFormField.vue_vue_type_script_setup_true_lang.js +32 -27
  42. package/dist/Components/FormField/composables/useFormField.d.ts +1 -1
  43. package/dist/Components/FormField/composables/useFormField.js +15 -9
  44. package/dist/Components/FormField/formField.types.d.ts +4 -2
  45. package/dist/Components/NumberField/composables/useNumberField.d.ts +1 -1
  46. package/dist/Components/OtpField/composables/useOtpField.d.ts +1 -1
  47. package/dist/Components/Pagination/Pagination.vue_vue_type_script_setup_true_lang.js +6 -6
  48. package/dist/Components/Pagination/composables/usePagination.d.ts +4 -2
  49. package/dist/Components/Pagination/composables/usePagination.js +125 -127
  50. package/dist/Components/Pagination/pagination.types.d.ts +5 -5
  51. package/dist/Components/PasswordField/composables/usePasswordField.d.ts +1 -1
  52. package/dist/Components/Select/composables/useSelect.d.ts +1 -1
  53. package/dist/Components/Slider/composables/useSlider.d.ts +1 -1
  54. package/dist/Components/Tabs/Tabs.vue_vue_type_script_setup_true_lang.js +2 -2
  55. package/dist/Components/Tabs/composables/useTabs.js +16 -10
  56. package/dist/Components/Tabs/tabs.types.d.ts +3 -3
  57. package/dist/Components/TextField/composables/useTextField.d.ts +1 -1
  58. package/dist/Components/Textarea/composables/useTextarea.d.ts +1 -1
  59. package/dist/Components/TimeField/composables/useTimeField.d.ts +1 -1
  60. package/dist/Components/TimeRangeField/composables/useTimeRangeField.d.ts +1 -1
  61. package/dist/index.d.ts +1 -1
  62. package/dist/index.js +4 -4
  63. package/docs/components/Accordion.md +1 -1
  64. package/docs/components/DataTable.md +5 -11
  65. package/docs/components/I18n.md +65 -24
  66. package/docs/components/Pagination.md +5 -3
  67. package/docs/components/Table.md +2 -2
  68. package/docs/components/Tabs.md +24 -6
  69. package/docs/examples/i18n-dictionary.ts +28 -10
  70. package/docs/examples/i18n-vue-i18n.ts +7 -6
  71. package/docs/examples/icon-fontawesome.ts +4 -0
  72. package/docs/examples/icon-heroicons.ts +5 -1
  73. package/docs/examples/icon-lucide.ts +4 -0
  74. package/docs/examples/icon-phosphor.ts +4 -0
  75. package/docs/examples/icon-tabler.ts +4 -0
  76. package/package.json +2 -2
@@ -437,7 +437,6 @@ export declare function usePasswordField(props: PasswordFieldOwnProps, options?:
437
437
  isNotched: import('vue').ComputedRef<boolean>;
438
438
  isStacked: import('vue').ComputedRef<boolean>;
439
439
  startBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
440
- cornerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
441
440
  headerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
442
441
  isDisabled: import('vue').ComputedRef<boolean>;
443
442
  isReadonly: import('vue').ComputedRef<boolean>;
@@ -455,6 +454,7 @@ export declare function usePasswordField(props: PasswordFieldOwnProps, options?:
455
454
  ariaDescribedBy: import('vue').ComputedRef<string | undefined>;
456
455
  descriptionBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
457
456
  stackedBodyBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
457
+ fieldCornerProps: import('vue').ComputedRef<import('../../Label').LabelProps>;
458
458
  hasInsetLabelRow: import('vue').ComputedRef<boolean>;
459
459
  insetLabelRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
460
460
  stackedInputRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
@@ -441,7 +441,6 @@ export declare function useSelect(props: SelectOwnProps, model: Ref<null | undef
441
441
  isNotched: import('vue').ComputedRef<boolean>;
442
442
  isStacked: import('vue').ComputedRef<boolean>;
443
443
  startBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
444
- cornerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
445
444
  headerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
446
445
  isDisabled: import('vue').ComputedRef<boolean>;
447
446
  isReadonly: import('vue').ComputedRef<boolean>;
@@ -459,6 +458,7 @@ export declare function useSelect(props: SelectOwnProps, model: Ref<null | undef
459
458
  ariaDescribedBy: import('vue').ComputedRef<string | undefined>;
460
459
  descriptionBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
461
460
  stackedBodyBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
461
+ fieldCornerProps: import('vue').ComputedRef<import('../../Label').LabelProps>;
462
462
  hasInsetLabelRow: import('vue').ComputedRef<boolean>;
463
463
  insetLabelRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
464
464
  stackedInputRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
@@ -49,7 +49,6 @@ export declare function useSlider(props: MaybeRefOrGetter<SliderOwnProps>, libDe
49
49
  }>>;
50
50
  controlId: import('vue').ComputedRef<string>;
51
51
  headerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
52
- cornerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
53
52
  isDisabled: import('vue').ComputedRef<boolean>;
54
53
  isReadonly: import('vue').ComputedRef<boolean>;
55
54
  sizeClasses: import('vue').ComputedRef<import('@bridge-ui/core/Tokens').BaseFieldSizeItem | undefined>;
@@ -60,6 +59,7 @@ export declare function useSlider(props: MaybeRefOrGetter<SliderOwnProps>, libDe
60
59
  ariaDescribedBy: import('vue').ComputedRef<string | undefined>;
61
60
  fieldLabelProps: import('vue').ComputedRef<import('../../Label').LabelProps>;
62
61
  descriptionBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
62
+ fieldCornerProps: import('vue').ComputedRef<import('../../Label').LabelProps>;
63
63
  showErrorMessageContent: import('vue').ComputedRef<boolean>;
64
64
  };
65
65
  trackBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {
@@ -29,8 +29,8 @@ var E = /*@__PURE__*/ p({
29
29
  setup(p, { emit: h }) {
30
30
  let E = h, D = p, O = C(p, "modelValue"), { rootBind: k, tabItems: A } = i(D, {
31
31
  size: "md",
32
- variant: "line",
33
- color: "primary",
32
+ color: "dark",
33
+ variant: "pill",
34
34
  keepMounted: !0,
35
35
  activation: "automatic",
36
36
  orientation: "horizontal"
@@ -53,7 +53,13 @@ function y(y, b, x, S) {
53
53
  let L = n({
54
54
  entry: j,
55
55
  props: () => k.value.componentProps
56
- }), R = i(() => g(p, j.value?.tokens?.size)), z = i(() => g(m, j.value?.tokens?.variant)), B = i(() => g(d, j.value?.tokens?.color)), V = i(() => g(f, j.value?.tokens?.orientation)), H = i(() => l(R.value, A.value.size)), U = i(() => l(z.value, A.value.variant)), W = i(() => l(B.value, A.value.color)), G = i(() => l(V.value, A.value.orientation)), K = i(() => ({
56
+ }), R = i(() => g(p, j.value?.tokens?.size)), z = i(() => g(m, j.value?.tokens?.variant)), B = i(() => g(d, j.value?.tokens?.color)), V = i(() => g(f, j.value?.tokens?.orientation)), H = i(() => l(R.value, A.value.size)), U = i(() => l(z.value, A.value.variant)), W = i(() => l(B.value, A.value.color)), G = i(() => l(V.value, A.value.orientation)), K = i(() => A.value.orientation === "vertical"), q = i(() => h({
57
+ [l(G.value, "tab") ?? ""]: !0,
58
+ [l(U.value, "tabVertical") ?? ""]: K.value
59
+ })), J = i(() => h({
60
+ [l(G.value, "list") ?? ""]: !0,
61
+ [l(U.value, "listVertical") ?? ""]: K.value
62
+ })), Y = i(() => ({
57
63
  focusTab: F,
58
64
  id: T,
59
65
  setSelected: N,
@@ -67,33 +73,33 @@ function y(y, b, x, S) {
67
73
  activation: A.value.activation ?? "automatic",
68
74
  orientation: A.value.orientation ?? "horizontal",
69
75
  tokenClasses: {
70
- tabSize: l(H.value, "tab"),
76
+ softFill: !1,
71
77
  iconGap: l(H.value, "gap"),
78
+ tabSize: l(H.value, "tab"),
79
+ tabOrientation: q.value,
72
80
  iconSize: l(H.value, "icon"),
73
81
  listSize: l(H.value, "list"),
82
+ listOrientation: J.value,
74
83
  panelSize: l(H.value, "panel"),
75
84
  tabVariant: l(U.value, "tab"),
76
85
  listVariant: l(U.value, "list"),
77
- tabOrientation: l(G.value, "tab"),
78
86
  colorSelected: l(W.value, "tabSelected"),
79
- listOrientation: l(G.value, "list"),
80
87
  rootOrientation: l(G.value, "root"),
81
88
  panelOrientation: l(G.value, "panel"),
82
89
  tabVariantSelected: l(U.value, "tabSelected"),
83
- colorSelectedSoft: l(W.value, "tabSelectedSoft"),
84
- softFill: A.value.variant === "pill" || A.value.variant === "solid"
90
+ colorSelectedSoft: l(W.value, "tabSelectedSoft")
85
91
  }
86
92
  }));
87
- a(r, K);
88
- let q = i(() => A.value.customProps);
93
+ a(r, Y);
94
+ let X = i(() => A.value.customProps);
89
95
  return {
90
96
  merged: A,
91
- rootBind: i(() => e(q.value?.root, k.value.inheritedAttrs, { class: h({
97
+ rootBind: i(() => e(X.value?.root, k.value.inheritedAttrs, { class: h({
92
98
  [l(G.value, "root") ?? ""]: !0,
93
99
  [l(L.value, "root") ?? ""]: !0
94
100
  }) })),
95
101
  tabItems: O,
96
- contextValue: K
102
+ contextValue: Y
97
103
  };
98
104
  }
99
105
  //#endregion
@@ -70,9 +70,9 @@ export interface TabsOwnProps {
70
70
  */
71
71
  classes?: TabsClasses;
72
72
  /**
73
- * Accent color for the selected tab.
73
+ * Optional text accent for the selected tab. Selected surface comes from `variant`.
74
74
  *
75
- * @default "primary"
75
+ * @default "dark"
76
76
  */
77
77
  color?: MergeProps<TabsColor, TabsColorOverrides>;
78
78
  /**
@@ -103,7 +103,7 @@ export interface TabsOwnProps {
103
103
  /**
104
104
  * Visual style of the tab list / selected tab.
105
105
  *
106
- * @default "line"
106
+ * @default "pill"
107
107
  */
108
108
  variant?: MergeProps<TabsVariant, TabsVariantOverrides>;
109
109
  }
@@ -431,7 +431,6 @@ export declare function useTextField(props: TextFieldOwnProps): {
431
431
  isNotched: import('vue').ComputedRef<boolean>;
432
432
  isStacked: import('vue').ComputedRef<boolean>;
433
433
  startBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
434
- cornerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
435
434
  headerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
436
435
  isDisabled: import('vue').ComputedRef<boolean>;
437
436
  isReadonly: import('vue').ComputedRef<boolean>;
@@ -449,6 +448,7 @@ export declare function useTextField(props: TextFieldOwnProps): {
449
448
  ariaDescribedBy: import('vue').ComputedRef<string | undefined>;
450
449
  descriptionBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
451
450
  stackedBodyBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
451
+ fieldCornerProps: import('vue').ComputedRef<import('../../Label').LabelProps>;
452
452
  hasInsetLabelRow: import('vue').ComputedRef<boolean>;
453
453
  insetLabelRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
454
454
  stackedInputRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
@@ -432,7 +432,6 @@ export declare function useTextarea(props: TextareaOwnProps, textareaRef: Ref<nu
432
432
  isNotched: import('vue').ComputedRef<boolean>;
433
433
  isStacked: import('vue').ComputedRef<boolean>;
434
434
  startBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
435
- cornerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
436
435
  headerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
437
436
  isDisabled: import('vue').ComputedRef<boolean>;
438
437
  isReadonly: import('vue').ComputedRef<boolean>;
@@ -450,6 +449,7 @@ export declare function useTextarea(props: TextareaOwnProps, textareaRef: Ref<nu
450
449
  ariaDescribedBy: import('vue').ComputedRef<string | undefined>;
451
450
  descriptionBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
452
451
  stackedBodyBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
452
+ fieldCornerProps: import('vue').ComputedRef<import('../../Label').LabelProps>;
453
453
  hasInsetLabelRow: import('vue').ComputedRef<boolean>;
454
454
  insetLabelRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
455
455
  stackedInputRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
@@ -442,7 +442,6 @@ export declare function useTimeField(props: TimeFieldOwnProps, model: Ref<null |
442
442
  isNotched: import('vue').ComputedRef<boolean>;
443
443
  isStacked: import('vue').ComputedRef<boolean>;
444
444
  startBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
445
- cornerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
446
445
  headerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
447
446
  isDisabled: import('vue').ComputedRef<boolean>;
448
447
  isReadonly: import('vue').ComputedRef<boolean>;
@@ -460,6 +459,7 @@ export declare function useTimeField(props: TimeFieldOwnProps, model: Ref<null |
460
459
  ariaDescribedBy: import('vue').ComputedRef<string | undefined>;
461
460
  descriptionBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
462
461
  stackedBodyBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
462
+ fieldCornerProps: import('vue').ComputedRef<import('../../Label').LabelProps>;
463
463
  hasInsetLabelRow: import('vue').ComputedRef<boolean>;
464
464
  insetLabelRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
465
465
  stackedInputRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
@@ -442,7 +442,6 @@ export declare function useTimeRangeField(props: TimeRangeFieldOwnProps, model:
442
442
  isNotched: import('vue').ComputedRef<boolean>;
443
443
  isStacked: import('vue').ComputedRef<boolean>;
444
444
  startBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
445
- cornerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
446
445
  headerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
447
446
  isDisabled: import('vue').ComputedRef<boolean>;
448
447
  isReadonly: import('vue').ComputedRef<boolean>;
@@ -460,6 +459,7 @@ export declare function useTimeRangeField(props: TimeRangeFieldOwnProps, model:
460
459
  ariaDescribedBy: import('vue').ComputedRef<string | undefined>;
461
460
  descriptionBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
462
461
  stackedBodyBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
462
+ fieldCornerProps: import('vue').ComputedRef<import('../../Label').LabelProps>;
463
463
  hasInsetLabelRow: import('vue').ComputedRef<boolean>;
464
464
  insetLabelRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
465
465
  stackedInputRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
package/dist/index.d.ts CHANGED
@@ -154,6 +154,6 @@ export { BridgeUIProvider, createBridgeUI, useBridgeUI } from './Provider';
154
154
  export type { BridgeUIContextApi } from './Provider';
155
155
  export { useBreakpoint, useBridgeUIComponent, useBridgeUIMergedRegistryClasses, } from './Utils';
156
156
  export type { UseBreakpointOptions } from './Utils';
157
- export { SEMANTIC_ICON_NAMES, resolveMessage, type I18nAdapter, type IconAdapter, type SemanticIconNameOverrides, } from '@bridge-ui/core/Adapters';
157
+ export { SEMANTIC_ICON_NAMES, interpolateMessage, resolveMessage, selectPluralMessage, type I18nAdapter, type IconAdapter, type SemanticIconNameOverrides, } from '@bridge-ui/core/Adapters';
158
158
  export { BRIDGE_UI_DEFAULT_GLOBAL, mergeBridgeUIComponents, mergeBridgeUIGlobal, resolveBridgeUIOptions, } from '@bridge-ui/core/Config';
159
159
  export { cn } from '@bridge-ui/core/Utils';
package/dist/index.js CHANGED
@@ -166,7 +166,7 @@ import { useToggleItem as mn } from "./Components/ToggleItem/composables/useTogg
166
166
  import hn from "./Components/ToggleItem/ToggleItem.js";
167
167
  import gn from "./Provider/BridgeUIProvider.js";
168
168
  import { createBridgeUI as _n } from "./Provider/createBridgeUI.js";
169
- import { SEMANTIC_ICON_NAMES as vn, resolveMessage as yn } from "@bridge-ui/core/Adapters";
170
- import { cn as bn } from "@bridge-ui/core/Utils";
171
- import { BRIDGE_UI_DEFAULT_GLOBAL as xn, mergeBridgeUIComponents as Sn, mergeBridgeUIGlobal as Cn, resolveBridgeUIOptions as wn } from "@bridge-ui/core/Config";
172
- export { l as ACCORDION_INJECTION_KEY, m as Accordion, _ as AccordionItem, y as Alert, Z as Autocomplete, Q as AutocompleteOption, $ as Avatar, xn as BRIDGE_UI_DEFAULT_GLOBAL, N as BUTTON_GROUP_INJECTION_KEY, te as Badge, ne as BaseField, se as Breadcrumb, oe as BreadcrumbItem, gn as BridgeUIProvider, F as Button, le as ButtonGroup, _e as Calendar, fe as CalendarDate, me as CalendarMonth, xe as CalendarRange, ge as CalendarYear, Ce as Card, De as Checkbox, O as Chip, je as ColorField, Ae as ColorPicker, Fe as DateField, Pe as DatePicker, ze as DateRangeField, Re as DateRangePicker, Ge as DateTimeField, We as DateTimePicker, Ye as DateTimeRangeField, Je as DateTimeRangePicker, be as Divider, R as Drawer, Ze as EmptyState, U as FieldOverlay, Te as FormControl, j as FormField, g as Icon, A as Label, $e as Link, G as List, K as ListItem, q as ListSection, X as Listbox, B as Menu, H as Modal, tt as NumberField, rt as OtpField, at as Pagination, st as PasswordField, Y as Progress, lt as Radio, vn as SEMANTIC_ICON_NAMES, ut as Select, dt as SelectOption, yt as Sidebar, bt as SidebarInset, xt as SidebarList, wt as SidebarListItem, Tt as SidebarProvider, Et as SidebarTrigger, Ot as Skeleton, At as Slider, Mt as Snackbar, Pt as Spinner, It as Step, Rt as Stepper, Bt as Switch, Vt as TABS_INJECTION_KEY, dn as TOGGLE_GROUP_INJECTION_KEY, Ut as Tab, Gt as TabItem, qt as TabList, Yt as TabPanel, Zt as Tabs, tn as TextField, $t as Textarea, on as TimeField, Ue as TimePanel, an as TimePicker, un as TimeRangeField, ln as TimeRangePicker, pn as ToggleGroup, hn as ToggleItem, Ct as Tooltip, bn as cn, _n as createBridgeUI, x as findFirstEnabledOptionIndex, S as findLastEnabledOptionIndex, C as getListboxActiveDescendantId, w as getListboxOptionId, Sn as mergeBridgeUIComponents, Cn as mergeBridgeUIGlobal, T as moveListboxHighlight, wn as resolveBridgeUIOptions, yn as resolveMessage, t as setDateAdapterForTests, i as setI18nAdapterForTests, s as setIconAdapterForTests, p as useAccordion, h as useAccordionItem, v as useAlert, ee as useBadge, re as useBaseField, ie as useBreadcrumb, ae as useBreadcrumbItem, u as useBreakpoint, e as useBridgeUI, d as useBridgeUIComponent, f as useBridgeUIMergedRegistryClasses, P as useButton, ce as useButtonGroup, ue as useCalendar, de as useCalendarDate, pe as useCalendarMonth, ve as useCalendarRange, he as useCalendarYear, Se as useCard, Ee as useCheckbox, D as useChip, Oe as useColorField, ke as useColorPicker, n as useDateAdapter, r as useDateAdapterContext, Me as useDateField, Ne as useDatePicker, Ie as useDateRangeField, Le as useDateRangePicker, Be as useDateTimeField, Ve as useDateTimePicker, Ke as useDateTimeRangeField, qe as useDateTimeRangePicker, ye as useDivider, L as useDrawer, Xe as useEmptyState, I as useFieldOverlay, we as useFormControl, b as useFormField, a as useI18nAdapter, c as useIconAdapter, k as useLabel, Qe as useLink, W as useList, M as useListbox, E as useListboxNavigation, z as useMenu, V as useModal, et as useNumberField, nt as useOtpField, it as usePagination, ot as usePasswordField, J as useProgress, ct as useRadio, o as useResolveMessage, ft as useSidebar, pt as useSidebarInset, mt as useSidebarList, ht as useSidebarListItem, gt as useSidebarProvider, _t as useSidebarShell, vt as useSidebarTrigger, Dt as useSkeleton, kt as useSlider, jt as useSnackbar, Nt as useSpinner, Ft as useStep, Lt as useStepper, zt as useSwitch, Ht as useTab, Wt as useTabItem, Kt as useTabList, Jt as useTabPanel, Xt as useTabs, en as useTextField, Qt as useTextarea, nn as useTimeField, He as useTimePanel, rn as useTimePicker, sn as useTimeRangeField, cn as useTimeRangePicker, fn as useToggleGroup, mn as useToggleItem, St as useTooltip };
169
+ import { SEMANTIC_ICON_NAMES as vn, interpolateMessage as yn, resolveMessage as bn, selectPluralMessage as xn } from "@bridge-ui/core/Adapters";
170
+ import { cn as Sn } from "@bridge-ui/core/Utils";
171
+ import { BRIDGE_UI_DEFAULT_GLOBAL as Cn, mergeBridgeUIComponents as wn, mergeBridgeUIGlobal as Tn, resolveBridgeUIOptions as En } from "@bridge-ui/core/Config";
172
+ export { l as ACCORDION_INJECTION_KEY, m as Accordion, _ as AccordionItem, y as Alert, Z as Autocomplete, Q as AutocompleteOption, $ as Avatar, Cn as BRIDGE_UI_DEFAULT_GLOBAL, N as BUTTON_GROUP_INJECTION_KEY, te as Badge, ne as BaseField, se as Breadcrumb, oe as BreadcrumbItem, gn as BridgeUIProvider, F as Button, le as ButtonGroup, _e as Calendar, fe as CalendarDate, me as CalendarMonth, xe as CalendarRange, ge as CalendarYear, Ce as Card, De as Checkbox, O as Chip, je as ColorField, Ae as ColorPicker, Fe as DateField, Pe as DatePicker, ze as DateRangeField, Re as DateRangePicker, Ge as DateTimeField, We as DateTimePicker, Ye as DateTimeRangeField, Je as DateTimeRangePicker, be as Divider, R as Drawer, Ze as EmptyState, U as FieldOverlay, Te as FormControl, j as FormField, g as Icon, A as Label, $e as Link, G as List, K as ListItem, q as ListSection, X as Listbox, B as Menu, H as Modal, tt as NumberField, rt as OtpField, at as Pagination, st as PasswordField, Y as Progress, lt as Radio, vn as SEMANTIC_ICON_NAMES, ut as Select, dt as SelectOption, yt as Sidebar, bt as SidebarInset, xt as SidebarList, wt as SidebarListItem, Tt as SidebarProvider, Et as SidebarTrigger, Ot as Skeleton, At as Slider, Mt as Snackbar, Pt as Spinner, It as Step, Rt as Stepper, Bt as Switch, Vt as TABS_INJECTION_KEY, dn as TOGGLE_GROUP_INJECTION_KEY, Ut as Tab, Gt as TabItem, qt as TabList, Yt as TabPanel, Zt as Tabs, tn as TextField, $t as Textarea, on as TimeField, Ue as TimePanel, an as TimePicker, un as TimeRangeField, ln as TimeRangePicker, pn as ToggleGroup, hn as ToggleItem, Ct as Tooltip, Sn as cn, _n as createBridgeUI, x as findFirstEnabledOptionIndex, S as findLastEnabledOptionIndex, C as getListboxActiveDescendantId, w as getListboxOptionId, yn as interpolateMessage, wn as mergeBridgeUIComponents, Tn as mergeBridgeUIGlobal, T as moveListboxHighlight, En as resolveBridgeUIOptions, bn as resolveMessage, xn as selectPluralMessage, t as setDateAdapterForTests, i as setI18nAdapterForTests, s as setIconAdapterForTests, p as useAccordion, h as useAccordionItem, v as useAlert, ee as useBadge, re as useBaseField, ie as useBreadcrumb, ae as useBreadcrumbItem, u as useBreakpoint, e as useBridgeUI, d as useBridgeUIComponent, f as useBridgeUIMergedRegistryClasses, P as useButton, ce as useButtonGroup, ue as useCalendar, de as useCalendarDate, pe as useCalendarMonth, ve as useCalendarRange, he as useCalendarYear, Se as useCard, Ee as useCheckbox, D as useChip, Oe as useColorField, ke as useColorPicker, n as useDateAdapter, r as useDateAdapterContext, Me as useDateField, Ne as useDatePicker, Ie as useDateRangeField, Le as useDateRangePicker, Be as useDateTimeField, Ve as useDateTimePicker, Ke as useDateTimeRangeField, qe as useDateTimeRangePicker, ye as useDivider, L as useDrawer, Xe as useEmptyState, I as useFieldOverlay, we as useFormControl, b as useFormField, a as useI18nAdapter, c as useIconAdapter, k as useLabel, Qe as useLink, W as useList, M as useListbox, E as useListboxNavigation, z as useMenu, V as useModal, et as useNumberField, nt as useOtpField, it as usePagination, ot as usePasswordField, J as useProgress, ct as useRadio, o as useResolveMessage, ft as useSidebar, pt as useSidebarInset, mt as useSidebarList, ht as useSidebarListItem, gt as useSidebarProvider, _t as useSidebarShell, vt as useSidebarTrigger, Dt as useSkeleton, kt as useSlider, jt as useSnackbar, Nt as useSpinner, Ft as useStep, Lt as useStepper, zt as useSwitch, Ht as useTab, Wt as useTabItem, Kt as useTabList, Jt as useTabPanel, Xt as useTabs, en as useTextField, Qt as useTextarea, nn as useTimeField, He as useTimePanel, rn as useTimePicker, sn as useTimeRangeField, cn as useTimeRangePicker, fn as useToggleGroup, mn as useToggleItem, St as useTooltip };
@@ -1,6 +1,6 @@
1
1
  # Accordion
2
2
 
3
- Expandable sections for FAQs, settings groups, and stacked content. Single or multiple panels open at once. Compose with `AccordionItem`.
3
+ Expandable sections for FAQs, settings groups, and stacked content. Single or multiple panels open at once. Compose with `AccordionItem`. Expanded items stay on the same quiet text color; `color` optionally accents the open trigger.
4
4
 
5
5
  ## Import
6
6
 
@@ -26,7 +26,7 @@ import { DataTable } from "@bridge-ui/vue/Components/DataTable";
26
26
 
27
27
  ### Variants
28
28
 
29
- DataTable chrome (`plain` / `ghost` / `bordered`). Built-in `Pagination` follows the matching variant unless the `pagination` slot overrides it:
29
+ DataTable chrome (`plain` / `ghost` / `bordered`). The built-in footer pager is first / previous / next / last and does not follow table variant:
30
30
 
31
31
  ```vue
32
32
  <DataTable :rows="users" variant="plain" :columns="columns" />
@@ -34,12 +34,6 @@ DataTable chrome (`plain` / `ghost` / `bordered`). Built-in `Pagination` follows
34
34
  <DataTable :rows="users" variant="bordered" :columns="columns" />
35
35
  ```
36
36
 
37
- | DataTable `variant` | Pagination `variant` |
38
- | ------------------- | -------------------- |
39
- | `plain` | `text` |
40
- | `ghost` | `ghost` |
41
- | `bordered` | `outlined` |
42
-
43
37
  `striped` is independent of variant:
44
38
 
45
39
  ```vue
@@ -66,7 +60,7 @@ DataTable chrome (`plain` / `ghost` / `bordered`). Built-in `Pagination` follows
66
60
 
67
61
  ### Selection + pagination
68
62
 
69
- Built-in Pagination when `page` is set with `page-count` or `total-count` (server fetch stays in the app). `page` + `per-page` without those totals slices `rows` locally. `per-page` also renders a Select (`per-page-options`, default 10 / 25 / 50 / 100). `#pagination` and `#perPage` replace each control:
63
+ The chrome footer shows a selection summary when `selection` is bound, a per-page Select when `per-page` is set (`per-page-options`, default 10 / 25 / 50 / 100), and a first / previous / next / last pager when `page` is set with `page-count` or `total-count` (server fetch stays in the app). `page` + `per-page` without those totals slices `rows` locally. `#selected`, `#pagination`, and `#perPage` replace each control:
70
64
 
71
65
  ```vue
72
66
  <DataTable
@@ -98,7 +92,7 @@ Client paging slices `rows`. Server paging with a total uses `total-count` inste
98
92
  />
99
93
  ```
100
94
 
101
- Slot replaces the built-in Pagination and/or per-page Select (`#pagination` / `#perPage`; slot props match the built-ins):
95
+ Slot replaces the built-in footer controls (`#selected` / `#pagination` / `#perPage`; slot props match the built-ins):
102
96
 
103
97
  ```vue
104
98
  <DataTable :rows="users" :columns="columns" :get-row-id="(row) => row.id">
@@ -141,7 +135,7 @@ When `page` and `page-count` (or `total-count`) are set, DataTable does not sort
141
135
 
142
136
  ### Empty, loading, and footer
143
137
 
144
- Empty rows render `EmptyState` at the table `size`, with the semantic `inbox` icon and the i18n title `"No data"`. `#empty` replaces it. `loading` keeps the table visible. `loadingVariant="overlay"` (default) dims the table with a spin; `loadingVariant="bar"` dims the table and draws a progress line under the header. `#loading` replaces the indicator. `#footer` renders below the table, above pagination:
138
+ Empty rows render `EmptyState` at the table `size`, with the semantic `inbox` icon and the i18n title `"No data"`. `#empty` replaces it. `loading` keeps the table visible. `loadingVariant="overlay"` (default) dims the table with a spin; `loadingVariant="bar"` dims the table and draws a progress line under the header. `#loading` replaces the indicator. `#footer` renders below the table, above the chrome footer:
145
139
 
146
140
  ```vue
147
141
  <DataTable :rows="[]" :columns="columns" :loading="isLoading">
@@ -180,7 +174,7 @@ const columns = [
180
174
  ];
181
175
  ```
182
176
 
183
- Table-level slots stay `empty` / `expanded` / `footer` / `item.{id}` / `item` / `loading` / `pagination` / `perPage` / `search` / `toolbar` / `toolbarActions`. `#item` is a catch-all when `#item.{id}` is not set.
177
+ Table-level slots stay `empty` / `expanded` / `footer` / `item.{id}` / `item` / `loading` / `pagination` / `perPage` / `search` / `selected` / `toolbar` / `toolbarActions`. `#item` is a catch-all when `#item.{id}` is not set.
184
178
 
185
179
  ### Selection
186
180
 
@@ -1,6 +1,6 @@
1
1
  # i18n
2
2
 
3
- Bridge chrome strings (aria-labels, empty/loading copy) resolve through an optional i18n adapter on `BridgeUIProvider` / `createBridgeUI` (`global.i18n`). Without an adapter, the English source string is returned as-is.
3
+ Bridge chrome strings (aria-labels, empty/loading copy) resolve through an optional i18n adapter on `BridgeUIProvider` / `createBridgeUI` (`global.i18n`). Without an adapter, the English source string is returned, with `{{name}}` replaced from `params`, and `|` plural forms when `count` is set.
4
4
 
5
5
  Lookup is **gettext-style**: the source English text is the key. Multi-locale
6
6
  adapters can keep the active locale internally via optional `setLocale`.
@@ -11,10 +11,14 @@ const resolveMessage = useResolveMessage();
11
11
  resolveMessage("Hide password");
12
12
  ```
13
13
 
14
- `useResolveMessage` reads the active adapter from context. **Interpolation and
15
- pluralization are the adapter’s job** (vue-i18n, i18next, or a custom `t`).
16
- Bridge `setLocale` updates `global.locale` and calls optional `adapter.setLocale`
17
- persistence (localStorage, backend) stays in the app.
14
+ `useResolveMessage` reads the active adapter from context. **Pluralization
15
+ uses the `count` argument** on `t(message, count, params)`: vue-i18n / i18next
16
+ handle it in `t`; dictionary adapters call `selectPluralMessage` on `|` forms
17
+ (`one | other`). Without an adapter, `resolveMessage` still replaces `{{name}}`
18
+ and picks `|` forms when `count` is set. Adapters that used `t(message, params)`
19
+ should move interpolation vars to the third argument. Bridge `setLocale`
20
+ updates `global.locale` and calls optional `adapter.setLocale` — persistence
21
+ (localStorage, backend) stays in the app.
18
22
 
19
23
  Implement `I18nAdapter` as a plain object — Bridge only defines the interface.
20
24
 
@@ -44,8 +48,9 @@ const resolveMessage = useResolveMessage();
44
48
 
45
49
  ### Dictionary adapter
46
50
 
47
- Locale-keyed source→string map (no replace/plural). Optional `setLocale`
48
- updates the active locale used by `t`.
51
+ Locale-keyed source→string map with `{{name}}` replace. Plural values use
52
+ `one | other` (or `zero | one | other`). Optional `setLocale` updates the
53
+ active locale used by `t`.
49
54
 
50
55
  ```ts
51
56
  import { createBridgeUI } from "@bridge-ui/vue";
@@ -61,14 +66,20 @@ const bridge = createBridgeUI({
61
66
  ### Custom adapter
62
67
 
63
68
  ```ts
64
- import { get } from "es-toolkit/compat";
65
- import type { I18nAdapter } from "@bridge-ui/vue";
69
+ import { get, isNil } from "es-toolkit/compat";
70
+ import {
71
+ interpolateMessage,
72
+ selectPluralMessage,
73
+ type I18nAdapter,
74
+ } from "@bridge-ui/vue";
66
75
 
67
76
  const messages: Record<string, Record<string, string>> = {
68
77
  "pt-BR": {
69
78
  Close: "Fechar",
70
79
  "Hide password": "Ocultar senha",
71
80
  "Clear selection": "Limpar seleção",
81
+ "{{selected}} of {{total}} row(s) selected.":
82
+ "{{selected}} de {{total}} linha selecionada. | {{selected}} de {{total}} linhas selecionadas.",
72
83
  },
73
84
  };
74
85
 
@@ -78,8 +89,13 @@ const i18n: I18nAdapter = {
78
89
  setLocale(next) {
79
90
  locale = next;
80
91
  },
81
- t(message) {
82
- return get(messages, [locale, message], message);
92
+ t(message, count, params) {
93
+ const translated = get(messages, [locale, message], message);
94
+ const template = isNil(count)
95
+ ? translated
96
+ : selectPluralMessage(translated, count);
97
+
98
+ return interpolateMessage(template, params);
83
99
  },
84
100
  };
85
101
  ```
@@ -94,7 +110,7 @@ const vueI18n = createI18n({ legacy: false, locale: "en-US", messages: {} });
94
110
  const i18n = createVueI18nAdapter(vueI18n.global);
95
111
 
96
112
  const resolveMessage = useResolveMessage();
97
- resolveMessage("{count} item", { count: 3 });
113
+ resolveMessage("{count} item", 3);
98
114
  // → vue-i18n handles interpolation / plural rules
99
115
 
100
116
  setLocale("pt-BR"); // Bridge locale + i18n.locale via adapter.setLocale
@@ -104,22 +120,47 @@ Other ready examples:
104
120
 
105
121
  | File | Library | Replace / plural |
106
122
  | -------------------- | -------------------- | ---------------- |
107
- | `i18n-dictionary.ts` | In-memory dictionary | No (static map) |
123
+ | `i18n-dictionary.ts` | In-memory dictionary | Yes (`\|` forms) |
108
124
  | `i18n-vue-i18n.ts` | vue-i18n | Yes (via lib) |
109
125
 
110
126
  ## Chrome strings
111
127
 
112
- | Source (key) |
113
- | ----------------- |
114
- | `Close` |
115
- | `Loading...` |
116
- | `No options` |
117
- | `Show password` |
118
- | `Hide password` |
119
- | `Clear selection` |
120
- | `Increment value` |
121
- | `Decrement value` |
128
+ | Source (key) |
129
+ | -------------------------------------------- |
130
+ | `OK` |
131
+ | `Next` |
132
+ | `Close` |
133
+ | `Reset` |
134
+ | `Search` |
135
+ | `Columns` |
136
+ | `Loading` |
137
+ | `No data` |
138
+ | `Previous` |
139
+ | `Last page` |
140
+ | `Expand row` |
141
+ | `First page` |
142
+ | `Loading...` |
143
+ | `No options` |
144
+ | `Pagination` |
145
+ | `Select row` |
146
+ | `Filter column` |
147
+ | `Hide password` |
148
+ | `Rows per page` |
149
+ | `Show password` |
150
+ | `Cancel sorting` |
151
+ | `Sort ascending` |
152
+ | `Clear selection` |
153
+ | `Decrement value` |
154
+ | `Increment value` |
155
+ | `Select all rows` |
156
+ | `Sort descending` |
157
+ | `Select all items` |
158
+ | `Page {{page}} of {{count}}` |
159
+ | `{{selected}} of {{total}} row(s) selected.` |
160
+
161
+ The selection summary calls `t` with `count` (selected rows). Dictionary
162
+ values for that key use `one | other`.
122
163
 
123
164
  ## Related components
124
165
 
125
- BridgeUIProvider, PasswordField, NumberField, Select, Listbox, Snackbar
166
+ BridgeUIProvider, DataTable, Pagination, PasswordField, NumberField, Select, Listbox, Snackbar
@@ -1,6 +1,6 @@
1
1
  # Pagination
2
2
 
3
- Page controls for lists and tables: previous/next, page numbers, and a simple cursor-friendly prev/next mode.
3
+ Page controls for lists and tables: previous/next with labels, page numbers, and a simple cursor-friendly prev/next mode. `Previous` and `Next` resolve through the i18n adapter.
4
4
 
5
5
  ## Import
6
6
 
@@ -27,15 +27,17 @@ const page = ref(1);
27
27
 
28
28
  ### Variants
29
29
 
30
+ `ghost` (default), `text`, `outlined`.
31
+
30
32
  ```vue
31
- <Pagination :count="12" v-model="page" variant="text" />
32
33
  <Pagination :count="12" v-model="page" variant="ghost" />
34
+ <Pagination :count="12" v-model="page" variant="text" />
33
35
  <Pagination :count="12" v-model="page" variant="outlined" />
34
36
  ```
35
37
 
36
38
  ### Rounded
37
39
 
38
- Applies to `ghost` item corners and the `outlined` group / edge controls.
40
+ Applies to `ghost` and `text` item corners and the `outlined` group / edge controls.
39
41
 
40
42
  ```vue
41
43
  <Pagination :count="12" rounded="lg" v-model="page" variant="ghost" />
@@ -46,7 +46,7 @@ Same three chrome treatments as `DataTable`. Pair with `Pagination` under the ta
46
46
 
47
47
  ```vue
48
48
  <Table variant="plain" />
49
- <Pagination :count="12" v-model="page" variant="text" />
49
+ <Pagination :count="12" v-model="page" variant="ghost" />
50
50
 
51
51
  <Table variant="ghost" />
52
52
  <Pagination :count="12" v-model="page" variant="ghost" />
@@ -57,7 +57,7 @@ Same three chrome treatments as `DataTable`. Pair with `Pagination` under the ta
57
57
 
58
58
  | Table `variant` | Pagination `variant` |
59
59
  | --------------- | -------------------- |
60
- | `plain` | `text` |
60
+ | `plain` | `ghost` |
61
61
  | `ghost` | `ghost` |
62
62
  | `bordered` | `outlined` |
63
63
 
@@ -1,6 +1,6 @@
1
1
  # Tabs
2
2
 
3
- Organize related content into tabbed views. Use with `TabList`, `Tab`, and `TabPanel`. Selected accent uses the semantic `color` palette; inactive tabs use `dark-*`.
3
+ Organize related content into tabbed views. Use with `TabList`, `Tab`, and `TabPanel`. The selected tab uses a quiet surface from `variant`; `color` optionally tints selected text and the `line` / `solid` / `enclosed` indicator.
4
4
 
5
5
  ## Import
6
6
 
@@ -90,10 +90,28 @@ import { TabPanel } from "@bridge-ui/vue/Components/TabPanel";
90
90
 
91
91
  ### Variants
92
92
 
93
- `line` (default), `plain`, `pill`, `solid`, `enclosed`.
93
+ `pill` (default), `line`, `plain`, `solid`, `enclosed`.
94
94
 
95
95
  ```vue
96
- <Tabs v-model="tab" variant="line" color="primary">
96
+ <Tabs v-model="tab">
97
+ <TabList>
98
+ <Tab value="one">One</Tab>
99
+ <Tab value="two">Two</Tab>
100
+ </TabList>
101
+ <TabPanel value="one">First</TabPanel>
102
+ <TabPanel value="two">Second</TabPanel>
103
+ </Tabs>
104
+
105
+ <Tabs v-model="tab" variant="line">
106
+ <TabList>
107
+ <Tab value="one">One</Tab>
108
+ <Tab value="two">Two</Tab>
109
+ </TabList>
110
+ <TabPanel value="one">First</TabPanel>
111
+ <TabPanel value="two">Second</TabPanel>
112
+ </Tabs>
113
+
114
+ <Tabs v-model="tab" variant="plain">
97
115
  <TabList>
98
116
  <Tab value="one">One</Tab>
99
117
  <Tab value="two">Two</Tab>
@@ -102,7 +120,7 @@ import { TabPanel } from "@bridge-ui/vue/Components/TabPanel";
102
120
  <TabPanel value="two">Second</TabPanel>
103
121
  </Tabs>
104
122
 
105
- <Tabs color="dark" v-model="tab" variant="pill">
123
+ <Tabs v-model="tab" variant="solid">
106
124
  <TabList>
107
125
  <Tab value="one">One</Tab>
108
126
  <Tab value="two">Two</Tab>
@@ -152,11 +170,11 @@ import { TabPanel } from "@bridge-ui/vue/Components/TabPanel";
152
170
  | Prop | Type | Default |
153
171
  | ------------- | ----------------- | -------------- |
154
172
  | `activation` | `TabsActivation` | `"automatic"` |
155
- | `color` | `TabsColor` | `"primary"` |
173
+ | `color` | `TabsColor` | `"dark"` |
156
174
  | `keepMounted` | `boolean` | `true` |
157
175
  | `orientation` | `TabsOrientation` | `"horizontal"` |
158
176
  | `size` | `TabsSize` | `"md"` |
159
- | `variant` | `TabsVariant` | `"line"` |
177
+ | `variant` | `TabsVariant` | `"pill"` |
160
178
 
161
179
  ### v-model
162
180