@robuust-digital/vue-components 2.4.0-beta.9 → 2.4.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/CHANGELOG.md CHANGED
@@ -1,3 +1,39 @@
1
+ ## 2.4.0 (10-04-2026)
2
+
3
+ ### Added
4
+
5
+ * `Pagination`: Added `prevIcon` and `nextIcon` props to customize previous/next navigation icons
6
+ * `Pagination`: Added `prevIcon` and `nextIcon` slots for full control over previous/next navigation icon rendering
7
+ * `Pagination`: Added `--rvc-pagination-border-color` CSS variable for pagination button border customization
8
+ * `DataTable`: Added striped row token hooks (`--rvc-table-striped-cell-border-color`, `--rvc-table-striped-cell-border-style`, `--rvc-table-striped-cell-border-width`, `--rvc-table-striped-row-bg-color-hover`)
9
+ * `Pagination`: Added token hooks for active state and navigation layout (`--rvc-pagination-bg-color-active`, `--rvc-pagination-nav-gap-md`, `--rvc-pagination-nav-gap-xl`, `--rvc-pagination-icon-color`)
10
+ * `Tabs`: Added button variant border token hooks (`--rvc-tabs-tab-button-border-width`, `--rvc-tabs-tab-button-border-style`, `--rvc-tabs-tab-button-border-color`, `--rvc-tabs-tab-button-border-color-active`)
11
+ * `Badge`: Added border token hooks (`--rvc-badge-border-width`, `--rvc-badge-border-style`, `--rvc-badge-border-color`)
12
+ * `EmptyState`: Added border token hooks (`--rvc-empty-state-border-width`, `--rvc-empty-state-border-style`, `--rvc-empty-state-border-color`)
13
+ * `DataTable`: Added support for forwarding `prevIcon` and `nextIcon` props to the built-in `Pagination` component
14
+
15
+ ### Updated
16
+
17
+ * `Pagination` and `DataTable` documentation: Added examples and prop documentation for custom pagination navigation icons
18
+ * Updated `DataTable`, `Pagination`, `Tabs`, `Badge`, and `EmptyState` docs with new CSS variables
19
+
20
+ ## 2.3.5 (09-04-2026)
21
+
22
+ ### Added
23
+
24
+ * `DataTable`: Added `--rvc-table-head-color` CSS variable to customize header text color
25
+
26
+ ### Changed
27
+
28
+ * `DataTable`: Increased sort icon hover hint visibility by changing `.rvc-table-sort-icon-invisible` opacity from `0.3` to `0.5`
29
+
30
+ ## 2.3.4 (25-03-2026)
31
+
32
+ ### Fixed
33
+
34
+ * `DataTable`: Forward built-in pagination props (`perPage`, `perPageLabel`, `perPageOptions`, `fromLabel`) to the `Pagination` component
35
+ * `Pagination`: Keep the per-page select in sync when `perPage` is updated externally
36
+
1
37
  ## 2.3.3 (23-01-2026)
2
38
 
3
39
  ### Updated
@@ -1,6 +1,6 @@
1
- import { openBlock as l, createElementBlock as n, createElementVNode as u, defineComponent as w, Fragment as k, renderList as V, renderSlot as c, createTextVNode as M, toDisplayString as g, createVNode as L, unref as h, normalizeClass as y, createBlock as C, resolveDynamicComponent as P, withCtx as T, createCommentVNode as $, computed as B, useAttrs as O, ref as x, withDirectives as A, mergeProps as p, vModelDynamic as N, normalizeProps as F, guardReactiveProps as E, vModelSelect as H, vModelText as D } from "vue";
1
+ import { openBlock as l, createElementBlock as n, createElementVNode as u, defineComponent as w, Fragment as k, renderList as V, renderSlot as c, createTextVNode as x, toDisplayString as g, createVNode as I, unref as h, normalizeClass as p, createBlock as C, resolveDynamicComponent as P, withCtx as O, createCommentVNode as $, computed as B, useAttrs as A, ref as S, withDirectives as M, mergeProps as y, vModelDynamic as F, normalizeProps as j, guardReactiveProps as E, vModelSelect as H, vModelText as D } from "vue";
2
2
  import { r as R } from "./XMarkIcon-CPr_Rd8y.js";
3
- import { u as I } from "./FormInput.vue_vue_type_script_setup_true_lang-Bg7YPGyY.js";
3
+ import { u as T } from "./FormInput.vue_vue_type_script_setup_true_lang-Bg7YPGyY.js";
4
4
  import { S as U } from "./icon-spinner-BYCMrTdL.js";
5
5
  import { r as Z } from "./ChevronDownIcon-BYWciGnh.js";
6
6
  function K(e, r) {
@@ -33,7 +33,7 @@ function q(e, r) {
33
33
  })
34
34
  ]);
35
35
  }
36
- const G = { class: "rvc-accordion" }, J = ["open", "name"], Q = ["innerHTML"], Ae = /* @__PURE__ */ w({
36
+ const G = { class: "rvc-accordion" }, J = ["open", "name"], Q = ["innerHTML"], Me = /* @__PURE__ */ w({
37
37
  __name: "Accordion",
38
38
  props: {
39
39
  items: {},
@@ -42,39 +42,39 @@ const G = { class: "rvc-accordion" }, J = ["open", "name"], Q = ["innerHTML"], A
42
42
  contentClass: {}
43
43
  },
44
44
  setup(e) {
45
- return (r, d) => (l(), n("div", G, [
46
- (l(!0), n(k, null, V(e.items, (v, s) => (l(), n("details", {
45
+ return (r, v) => (l(), n("div", G, [
46
+ (l(!0), n(k, null, V(e.items, (f, s) => (l(), n("details", {
47
47
  key: s,
48
48
  open: e.defaultOpenIndex === s,
49
49
  name: e.name
50
50
  }, [
51
51
  u("summary", null, [
52
52
  c(r.$slots, "summary", {
53
- item: v,
53
+ item: f,
54
54
  index: s
55
55
  }, () => [
56
- M(g(v.title) + " ", 1),
56
+ x(g(f.title) + " ", 1),
57
57
  c(r.$slots, "icon", { classList: "rvc-accordion-icon" }, () => [
58
- L(h(q), { class: "rvc-accordion-icon" })
58
+ I(h(q), { class: "rvc-accordion-icon" })
59
59
  ])
60
60
  ])
61
61
  ]),
62
62
  u("div", {
63
- class: y(["rvc-accordion-content", e.contentClass])
63
+ class: p(["rvc-accordion-content", e.contentClass])
64
64
  }, [
65
65
  c(r.$slots, "content", {
66
- item: v,
66
+ item: f,
67
67
  index: s
68
68
  }, () => [
69
69
  u("div", {
70
- innerHTML: v.content
70
+ innerHTML: f.content
71
71
  }, null, 8, Q)
72
72
  ])
73
73
  ], 2)
74
74
  ], 8, J))), 128))
75
75
  ]));
76
76
  }
77
- }), W = { class: "rvc-alert-title" }, Ie = /* @__PURE__ */ w({
77
+ }), W = { class: "rvc-alert-title" }, Te = /* @__PURE__ */ w({
78
78
  __name: "Alert",
79
79
  props: {
80
80
  as: { default: "div" },
@@ -85,10 +85,10 @@ const G = { class: "rvc-accordion" }, J = ["open", "name"], Q = ["innerHTML"], A
85
85
  },
86
86
  emits: ["alert:close"],
87
87
  setup(e) {
88
- return (r, d) => (l(), C(P(e.as), {
89
- class: y(["rvc-alert", `rvc-alert-${e.type}`])
88
+ return (r, v) => (l(), C(P(e.as), {
89
+ class: p(["rvc-alert", `rvc-alert-${e.type}`])
90
90
  }, {
91
- default: T(() => [
91
+ default: O(() => [
92
92
  c(r.$slots, "icon", {}, () => [
93
93
  e.icon ? (l(), C(P(e.icon), {
94
94
  key: 0,
@@ -106,9 +106,9 @@ const G = { class: "rvc-accordion" }, J = ["open", "name"], Q = ["innerHTML"], A
106
106
  key: 0,
107
107
  type: "button",
108
108
  class: "rvc-alert-close",
109
- onClick: d[0] || (d[0] = (v) => r.$emit("alert:close"))
109
+ onClick: v[0] || (v[0] = (f) => r.$emit("alert:close"))
110
110
  }, [
111
- L(h(R))
111
+ I(h(R))
112
112
  ])) : $("", !0)
113
113
  ])
114
114
  ]),
@@ -118,7 +118,7 @@ const G = { class: "rvc-accordion" }, J = ["open", "name"], Q = ["innerHTML"], A
118
118
  }), X = { class: "rvc-checkbox-input" }, Y = {
119
119
  key: 0,
120
120
  class: "rvc-checkbox-label"
121
- }, Oe = /* @__PURE__ */ w({
121
+ }, Ae = /* @__PURE__ */ w({
122
122
  inheritAttrs: !1,
123
123
  __name: "Checkbox",
124
124
  props: {
@@ -128,29 +128,29 @@ const G = { class: "rvc-accordion" }, J = ["open", "name"], Q = ["innerHTML"], A
128
128
  },
129
129
  emits: ["update:modelValue"],
130
130
  setup(e, { emit: r }) {
131
- const d = e, v = r, s = B({
132
- get: () => d.modelValue,
133
- set: (t) => v("update:modelValue", t)
134
- }), { hasModelBinding: f } = I(), m = O(), a = B(() => ({
131
+ const v = e, f = r, s = B({
132
+ get: () => v.modelValue,
133
+ set: (t) => f("update:modelValue", t)
134
+ }), { hasModelBinding: d } = T(), m = A(), a = B(() => ({
135
135
  ...m,
136
136
  type: "checkbox"
137
- })), o = x(null);
137
+ })), o = S(null);
138
138
  return (t, i) => (l(), n("label", {
139
- class: y(["rvc-checkbox", e.rootClass])
139
+ class: p(["rvc-checkbox", e.rootClass])
140
140
  }, [
141
141
  u("div", X, [
142
- h(f) ? A((l(), n("input", p({ key: 0 }, a.value, {
142
+ h(d) ? M((l(), n("input", y({ key: 0 }, a.value, {
143
143
  ref_key: "input",
144
144
  ref: o,
145
145
  "onUpdate:modelValue": i[0] || (i[0] = (b) => s.value = b)
146
146
  }), null, 16)), [
147
- [N, s.value]
148
- ]) : (l(), n("input", p({ key: 1 }, a.value, {
147
+ [F, s.value]
148
+ ]) : (l(), n("input", y({ key: 1 }, a.value, {
149
149
  ref_key: "input",
150
150
  ref: o
151
151
  }), null, 16)),
152
152
  c(t.$slots, "icon", {}, () => [
153
- L(h(K))
153
+ I(h(K))
154
154
  ])
155
155
  ]),
156
156
  c(t.$slots, "default", { label: e.label }, () => [
@@ -204,7 +204,7 @@ function te(e, r) {
204
204
  })
205
205
  ]);
206
206
  }
207
- const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
207
+ const ae = ["value"], le = ["value"], N = /* @__PURE__ */ w({
208
208
  inheritAttrs: !1,
209
209
  __name: "FormSelect",
210
210
  props: {
@@ -219,12 +219,12 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
219
219
  },
220
220
  emits: ["update:modelValue"],
221
221
  setup(e, { emit: r }) {
222
- const d = e, v = r, s = B({
223
- get: () => d.modelValue,
224
- set: (a) => v("update:modelValue", a)
225
- }), { hasModelBinding: f } = I(), m = x(null);
222
+ const v = e, f = r, s = B({
223
+ get: () => v.modelValue,
224
+ set: (a) => f("update:modelValue", a)
225
+ }), { hasModelBinding: d } = T(), m = S(null);
226
226
  return (a, o) => (l(), n("div", {
227
- class: y([
227
+ class: p([
228
228
  "rvc-select",
229
229
  `rvc-select-${e.size}`,
230
230
  e.rootClass
@@ -236,8 +236,8 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
236
236
  }, () => [
237
237
  (l(), C(P(e.prefixIcon), { "aria-hidden": "true" }))
238
238
  ]) : $("", !0),
239
- c(a.$slots, "select", F(E(a.$attrs)), () => [
240
- h(f) ? A((l(), n("select", p({ key: 0 }, a.$attrs, {
239
+ c(a.$slots, "select", j(E(a.$attrs)), () => [
240
+ h(d) ? M((l(), n("select", y({ key: 0 }, a.$attrs, {
241
241
  ref_key: "select",
242
242
  ref: m,
243
243
  "onUpdate:modelValue": o[0] || (o[0] = (t) => s.value = t)
@@ -250,7 +250,7 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
250
250
  ])
251
251
  ], 16)), [
252
252
  [H, s.value]
253
- ]) : (l(), n("select", p({ key: 1 }, a.$attrs, {
253
+ ]) : (l(), n("select", y({ key: 1 }, a.$attrs, {
254
254
  ref_key: "select",
255
255
  ref: m
256
256
  }), [
@@ -270,40 +270,42 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
270
270
  }), ne = {
271
271
  key: 0,
272
272
  class: "rvc-pagination"
273
- }, se = ["value"], oe = { class: "rvc-pagination-info" }, ie = { class: "rvc-pagination-nav-list" }, re = ["disabled", "onClick"], ce = { key: 2 }, ue = { key: 3 }, de = /* @__PURE__ */ w({
273
+ }, oe = ["value"], se = { class: "rvc-pagination-info" }, ie = { class: "rvc-pagination-nav-list" }, re = ["disabled", "onClick"], ce = { key: 2 }, ue = { key: 3 }, de = /* @__PURE__ */ w({
274
274
  __name: "Pagination",
275
275
  props: {
276
276
  pagination: {},
277
277
  perPage: { default: 10 },
278
278
  perPageLabel: { default: "per page" },
279
279
  perPageOptions: { default: () => [10, 20, 50] },
280
- fromLabel: { default: "of" }
280
+ fromLabel: { default: "of" },
281
+ prevIcon: { type: [Function, Object, null], default: null },
282
+ nextIcon: { type: [Function, Object, null], default: null }
281
283
  },
282
284
  emits: ["pagination:change", "pagination:perPage"],
283
285
  setup(e, { emit: r }) {
284
- const d = e, v = r, s = x(d.perPage);
285
- return (f, m) => e.pagination?.total ? (l(), n("div", ne, [
286
- c(f.$slots, "perPage", p(e.pagination, { perPage: s.value }), () => [
287
- L(j, {
286
+ const v = e, f = r, s = B({
287
+ get: () => v.perPage,
288
+ set: (d) => f("pagination:perPage", Number(d))
289
+ });
290
+ return (d, m) => e.pagination?.total ? (l(), n("div", ne, [
291
+ c(d.$slots, "perPage", y(e.pagination, { perPage: s.value }), () => [
292
+ I(N, {
288
293
  modelValue: s.value,
289
- "onUpdate:modelValue": [
290
- m[0] || (m[0] = (a) => s.value = a),
291
- m[1] || (m[1] = (a) => v("pagination:perPage", Number(a)))
292
- ],
294
+ "onUpdate:modelValue": m[0] || (m[0] = (a) => s.value = a),
293
295
  size: "sm",
294
296
  "root-class": "rvc-pagination-per-page"
295
297
  }, {
296
- default: T(() => [
298
+ default: O(() => [
297
299
  (l(!0), n(k, null, V(e.perPageOptions, (a) => (l(), n("option", {
298
300
  key: `pagination-items-per-page-option-${a}`,
299
301
  value: a
300
- }, g(a) + " " + g(e.perPageLabel), 9, se))), 128))
302
+ }, g(a) + " " + g(e.perPageLabel), 9, oe))), 128))
301
303
  ]),
302
304
  _: 1
303
305
  }, 8, ["modelValue"])
304
306
  ]),
305
- c(f.$slots, "info", p(e.pagination, { fromLabel: e.fromLabel }), () => [
306
- u("div", oe, g(e.pagination.from) + " - " + g(e.pagination.to) + " " + g(e.fromLabel) + " " + g(e.pagination.total), 1)
307
+ c(d.$slots, "info", y(e.pagination, { fromLabel: e.fromLabel }), () => [
308
+ u("div", se, g(e.pagination.from) + " - " + g(e.pagination.to) + " " + g(e.fromLabel) + " " + g(e.pagination.total), 1)
307
309
  ]),
308
310
  u("nav", null, [
309
311
  u("ol", ie, [
@@ -314,34 +316,46 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
314
316
  u("button", {
315
317
  type: "button",
316
318
  disabled: a.label === "..." || !a.url,
317
- class: y([
319
+ class: p([
318
320
  "rvc-pagination-button",
319
321
  { "rvc-pagination-button-active": a.active }
320
322
  ]),
321
- onClick: (t) => a.url && v("pagination:change", a.url)
323
+ onClick: (t) => a.url && f("pagination:change", a.url)
322
324
  }, [
323
- a.url !== "..." && o === 0 ? (l(), C(h(ee), {
325
+ a.url !== "..." && o === 0 ? c(d.$slots, "prevIcon", {
324
326
  key: 0,
325
- "aria-hidden": "true",
326
- class: y([
327
- "rvc-pagination-button-icon",
328
- { "rvc-pagination-button-icon-disabled": !a.url }
329
- ])
330
- }, null, 8, ["class"])) : a.label !== "..." && o === e.pagination.links.length - 1 ? (l(), C(h(te), {
327
+ icon: e.prevIcon,
328
+ link: a,
329
+ index: o
330
+ }, () => [
331
+ (l(), C(P(e.prevIcon || h(ee)), {
332
+ "aria-hidden": "true",
333
+ class: p([
334
+ "rvc-pagination-button-icon",
335
+ { "rvc-pagination-button-icon-disabled": !a.url }
336
+ ])
337
+ }, null, 8, ["class"]))
338
+ ]) : a.label !== "..." && o === e.pagination.links.length - 1 ? c(d.$slots, "nextIcon", {
331
339
  key: 1,
332
- "aria-hidden": "true",
333
- class: y([
334
- "rvc-pagination-button-icon",
335
- { "rvc-pagination-button-icon-disabled": !a.url }
336
- ])
337
- }, null, 8, ["class"])) : a.label === "..." ? (l(), n("span", ce, " ... ")) : (l(), n("span", ue, g(a.label), 1))
340
+ icon: e.nextIcon,
341
+ link: a,
342
+ index: o
343
+ }, () => [
344
+ (l(), C(P(e.nextIcon || h(te)), {
345
+ "aria-hidden": "true",
346
+ class: p([
347
+ "rvc-pagination-button-icon",
348
+ { "rvc-pagination-button-icon-disabled": !a.url }
349
+ ])
350
+ }, null, 8, ["class"]))
351
+ ]) : a.label === "..." ? (l(), n("span", ce, " ... ")) : (l(), n("span", ue, g(a.label), 1))
338
352
  ], 10, re)
339
353
  ]))), 128))
340
354
  ])
341
355
  ])
342
356
  ])) : $("", !0);
343
357
  }
344
- }), ve = { key: 0 }, fe = ["aria-label", "onClick"], ge = ["innerHTML"], me = { key: 1 }, be = ["colspan"], ye = { key: 2 }, pe = ["colspan"], $e = { class: "rvc-table-spinner-wrapper" }, he = { key: 1 }, Ne = /* @__PURE__ */ w({
358
+ }), ve = { key: 0 }, fe = ["aria-label", "onClick"], ge = ["innerHTML"], be = { key: 1 }, me = ["colspan"], pe = { key: 2 }, ye = ["colspan"], $e = { class: "rvc-table-spinner-wrapper" }, he = { key: 1 }, Fe = /* @__PURE__ */ w({
345
359
  __name: "DataTable",
346
360
  props: {
347
361
  headers: { default: () => [] },
@@ -351,26 +365,32 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
351
365
  striped: { type: Boolean, default: !1 },
352
366
  spinning: { type: Boolean, default: !1 },
353
367
  pagination: { default: null },
368
+ perPage: { default: 10 },
369
+ perPageLabel: { default: "per page" },
370
+ perPageOptions: { default: () => [10, 20, 50] },
371
+ fromLabel: { default: "of" },
372
+ prevIcon: { type: [Function, Object, null], default: null },
373
+ nextIcon: { type: [Function, Object, null], default: null },
354
374
  wrapperClass: { default: "" },
355
375
  defaultSort: { default: null }
356
376
  },
357
377
  emits: ["table:sortBy", "pagination:change", "pagination:perPage"],
358
378
  setup(e, { emit: r }) {
359
- const d = e, v = r, s = x(d.defaultSort), f = (a) => d.headers.find((o) => o.key === a), m = (a) => {
379
+ const v = e, f = r, s = S(v.defaultSort), d = (a) => v.headers.find((o) => o.key === a), m = (a) => {
360
380
  a.key && (!s.value || s.value.key !== a.key ? s.value = {
361
381
  key: a.key,
362
382
  direction: "asc"
363
383
  } : s.value.direction === "asc" ? s.value = {
364
384
  key: a.key,
365
385
  direction: "desc"
366
- } : s.value = null, v("table:sortBy", s.value));
386
+ } : s.value = null, f("table:sortBy", s.value));
367
387
  };
368
388
  return (a, o) => (l(), n("div", null, [
369
389
  u("div", {
370
- class: y(["rvc-table-wrapper", e.wrapperClass])
390
+ class: p(["rvc-table-wrapper", e.wrapperClass])
371
391
  }, [
372
392
  u("table", {
373
- class: y([{ "rvc-table-striped": e.striped }, "rvc-table"])
393
+ class: p([{ "rvc-table-striped": e.striped }, "rvc-table"])
374
394
  }, [
375
395
  e.headers.length ? (l(), n("thead", ve, [
376
396
  c(a.$slots, "headers", { headers: e.headers }, () => [
@@ -379,7 +399,7 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
379
399
  header: t,
380
400
  index: i
381
401
  }, () => [
382
- (l(), n("th", p({ ref_for: !0 }, { ...t, id: String(t.id) }, {
402
+ (l(), n("th", y({ ref_for: !0 }, { ...t, id: String(t.id) }, {
383
403
  key: `rvc-table-header-${t.id}`,
384
404
  class: {
385
405
  "rvc-table-text-left": t.align === "left" || !t.align,
@@ -391,7 +411,7 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
391
411
  key: 0,
392
412
  type: "button",
393
413
  "aria-label": `Sort on ${t.label}`,
394
- class: y([
414
+ class: p([
395
415
  "rvc-table-sort-button",
396
416
  {
397
417
  "rvc-table-sort-button-center": t.align === "center",
@@ -404,10 +424,10 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
404
424
  sortBy: s.value,
405
425
  header: t
406
426
  }, () => [
407
- M(g(t.label), 1)
427
+ x(g(t.label), 1)
408
428
  ]),
409
- L(h(_), {
410
- class: y([
429
+ I(h(_), {
430
+ class: p([
411
431
  "rvc-table-sort-icon",
412
432
  {
413
433
  "rvc-table-sort-icon-visible": s.value?.key === t.key,
@@ -421,7 +441,7 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
421
441
  sortBy: s.value,
422
442
  header: t
423
443
  }, () => [
424
- M(g(t.label), 1)
444
+ x(g(t.label), 1)
425
445
  ])
426
446
  ], 16))
427
447
  ])), 256))
@@ -440,26 +460,26 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
440
460
  item: t,
441
461
  index: i
442
462
  }, () => [
443
- (l(!0), n(k, null, V(t, (b, S) => (l(), n("td", p({
444
- key: `rvc-table-row-${i}-column-${S}-${t.id}`
463
+ (l(!0), n(k, null, V(t, (b, L) => (l(), n("td", y({
464
+ key: `rvc-table-row-${i}-column-${L}-${t.id}`
445
465
  }, { ref_for: !0 }, t.attrs, {
446
466
  class: {
447
- "rvc-table-text-left": f(String(S))?.align === "left" || !f(String(S))?.align,
448
- "rvc-table-text-center": f(String(S))?.align === "center",
449
- "rvc-table-text-right": f(String(S))?.align === "right"
467
+ "rvc-table-text-left": d(String(L))?.align === "left" || !d(String(L))?.align,
468
+ "rvc-table-text-center": d(String(L))?.align === "center",
469
+ "rvc-table-text-right": d(String(L))?.align === "right"
450
470
  },
451
471
  innerHTML: b
452
472
  }), null, 16, ge))), 128))
453
473
  ])
454
474
  ]))
455
- ])), 256)) : !e.items.length && !e.spinning ? (l(), n("tr", me, [
475
+ ])), 256)) : !e.items.length && !e.spinning ? (l(), n("tr", be, [
456
476
  u("td", {
457
477
  colspan: e.headers.length,
458
478
  class: "rvc-table-state"
459
479
  }, [
460
480
  u("p", null, g(e.noResultsText), 1)
461
- ], 8, be)
462
- ])) : (l(), n("tr", ye, [
481
+ ], 8, me)
482
+ ])) : (l(), n("tr", pe, [
463
483
  u("td", {
464
484
  colspan: e.headers.length,
465
485
  class: "rvc-table-state"
@@ -474,10 +494,10 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
474
494
  "aria-hidden": "true",
475
495
  class: "rvc-table-spinner"
476
496
  })) : $("", !0),
477
- M(" " + g(e.loadingText), 1)
497
+ x(" " + g(e.loadingText), 1)
478
498
  ])
479
499
  ])
480
- ], 8, pe)
500
+ ], 8, ye)
481
501
  ]))
482
502
  ]),
483
503
  a.$slots.footer ? (l(), n("tfoot", he, [
@@ -488,19 +508,25 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
488
508
  ])) : $("", !0)
489
509
  ], 2)
490
510
  ], 2),
491
- e.pagination ? c(a.$slots, "pagination", F(p({ key: 0 }, e.pagination)), () => [
492
- L(de, {
511
+ e.pagination ? c(a.$slots, "pagination", j(y({ key: 0 }, e.pagination)), () => [
512
+ I(de, {
493
513
  pagination: e.pagination,
494
- "onPagination:change": o[0] || (o[0] = (t) => v("pagination:change", t)),
495
- "onPagination:perPage": o[1] || (o[1] = (t) => v("pagination:perPage", t))
496
- }, null, 8, ["pagination"])
514
+ "per-page": e.perPage,
515
+ "per-page-label": e.perPageLabel,
516
+ "per-page-options": e.perPageOptions,
517
+ "from-label": e.fromLabel,
518
+ "prev-icon": e.prevIcon,
519
+ "next-icon": e.nextIcon,
520
+ "onPagination:change": o[0] || (o[0] = (t) => f("pagination:change", t)),
521
+ "onPagination:perPage": o[1] || (o[1] = (t) => f("pagination:perPage", t))
522
+ }, null, 8, ["pagination", "per-page", "per-page-label", "per-page-options", "from-label", "prev-icon", "next-icon"])
497
523
  ]) : $("", !0)
498
524
  ]));
499
525
  }
500
526
  }), ke = {
501
527
  key: 1,
502
528
  class: "rvc-empty-state-title"
503
- }, Fe = /* @__PURE__ */ w({
529
+ }, je = /* @__PURE__ */ w({
504
530
  __name: "EmptyState",
505
531
  props: {
506
532
  title: {},
@@ -508,8 +534,8 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
508
534
  icon: { type: [Function, Object, null] }
509
535
  },
510
536
  setup(e) {
511
- return (r, d) => (l(), n("div", {
512
- class: y(["rvc-empty-state", { "rvc-empty-state-bg": e.background }])
537
+ return (r, v) => (l(), n("div", {
538
+ class: p(["rvc-empty-state", { "rvc-empty-state-bg": e.background }])
513
539
  }, [
514
540
  e.icon ? (l(), C(P(e.icon), {
515
541
  key: 0,
@@ -519,7 +545,7 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
519
545
  c(r.$slots, "default")
520
546
  ], 2));
521
547
  }
522
- }), je = /* @__PURE__ */ w({
548
+ }), Ne = /* @__PURE__ */ w({
523
549
  __name: "FormTextarea",
524
550
  props: {
525
551
  modelValue: { default: void 0 },
@@ -527,26 +553,26 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
527
553
  },
528
554
  emits: ["update:modelValue"],
529
555
  setup(e, { emit: r }) {
530
- const d = e, v = r, { hasModelBinding: s } = I(), f = x(null), m = B({
531
- get: () => d.modelValue,
532
- set: (o) => v("update:modelValue", o)
556
+ const v = e, f = r, { hasModelBinding: s } = T(), d = S(null), m = B({
557
+ get: () => v.modelValue,
558
+ set: (o) => f("update:modelValue", o)
533
559
  }), a = B(() => [
534
560
  "rvc-textarea",
535
- `rvc-textarea-${d.size}`
561
+ `rvc-textarea-${v.size}`
536
562
  ]);
537
- return (o, t) => h(s) ? A((l(), n("textarea", {
563
+ return (o, t) => h(s) ? M((l(), n("textarea", {
538
564
  key: 0,
539
565
  ref_key: "textarea",
540
- ref: f,
566
+ ref: d,
541
567
  "onUpdate:modelValue": t[0] || (t[0] = (i) => m.value = i),
542
- class: y(a.value)
568
+ class: p(a.value)
543
569
  }, null, 2)), [
544
570
  [D, m.value]
545
571
  ]) : (l(), n("textarea", {
546
572
  key: 1,
547
573
  ref_key: "textarea",
548
- ref: f,
549
- class: y(a.value)
574
+ ref: d,
575
+ class: p(a.value)
550
576
  }, null, 2));
551
577
  }
552
578
  }), Ve = { class: "rvc-radio-input" }, we = { class: "rvc-radio-label" }, ze = /* @__PURE__ */ w({
@@ -559,24 +585,24 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
559
585
  },
560
586
  emits: ["update:modelValue"],
561
587
  setup(e, { emit: r }) {
562
- const d = e, v = r, s = B({
563
- get: () => d.modelValue,
564
- set: (t) => v("update:modelValue", t)
565
- }), { hasModelBinding: f } = I(), m = O(), a = B(() => ({
588
+ const v = e, f = r, s = B({
589
+ get: () => v.modelValue,
590
+ set: (t) => f("update:modelValue", t)
591
+ }), { hasModelBinding: d } = T(), m = A(), a = B(() => ({
566
592
  ...m,
567
593
  type: "radio"
568
- })), o = x(null);
594
+ })), o = S(null);
569
595
  return (t, i) => (l(), n("label", {
570
- class: y(["rvc-radio", e.rootClass])
596
+ class: p(["rvc-radio", e.rootClass])
571
597
  }, [
572
598
  u("div", Ve, [
573
- h(f) ? A((l(), n("input", p({ key: 0 }, a.value, {
599
+ h(d) ? M((l(), n("input", y({ key: 0 }, a.value, {
574
600
  ref_key: "input",
575
601
  ref: o,
576
602
  "onUpdate:modelValue": i[0] || (i[0] = (b) => s.value = b)
577
603
  }), null, 16)), [
578
- [N, s.value]
579
- ]) : (l(), n("input", p({ key: 1 }, a.value, {
604
+ [F, s.value]
605
+ ]) : (l(), n("input", y({ key: 1 }, a.value, {
580
606
  ref_key: "input",
581
607
  ref: o
582
608
  }), null, 16))
@@ -596,59 +622,59 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
596
622
  },
597
623
  emits: ["update:modelValue", "tabs:change"],
598
624
  setup(e, { emit: r }) {
599
- const d = e, v = r, s = () => {
600
- const o = d.tabs.findIndex((t) => t.active);
625
+ const v = e, f = r, s = () => {
626
+ const o = v.tabs.findIndex((t) => t.active);
601
627
  return o >= 0 ? o : 0;
602
- }, f = B({
603
- get: () => d.modelValue ?? s(),
628
+ }, d = B({
629
+ get: () => v.modelValue ?? s(),
604
630
  set: (o) => {
605
- const t = d.tabs[o];
606
- v("update:modelValue", o), t && v("tabs:change", t);
631
+ const t = v.tabs[o];
632
+ f("update:modelValue", o), t && f("tabs:change", t);
607
633
  }
608
634
  }), m = (o) => {
609
635
  const i = +o.target.value;
610
- f.value = i;
611
- const b = d.tabs[i];
636
+ d.value = i;
637
+ const b = v.tabs[i];
612
638
  b?.selectEvent && b.selectEvent();
613
639
  }, a = (o) => {
614
640
  const {
615
641
  active: t,
616
642
  as: i,
617
643
  bindAs: b,
618
- selectEvent: S,
619
- name: Se,
644
+ selectEvent: L,
645
+ name: Pe,
620
646
  ...z
621
647
  } = o;
622
648
  return z;
623
649
  };
624
650
  return (o, t) => (l(), n(k, null, [
625
- u("div", p(o.$attrs, {
651
+ u("div", y(o.$attrs, {
626
652
  class: ["rvc-tabs", { "rvc-tabs-buttons": e.tabStyle === "buttons" }]
627
653
  }), [
628
654
  u("nav", Ce, [
629
- (l(!0), n(k, null, V(e.tabs, (i, b) => (l(), C(P(i.as ? i.as : "button"), p({ ref_for: !0 }, a(i), {
655
+ (l(!0), n(k, null, V(e.tabs, (i, b) => (l(), C(P(i.as ? i.as : "button"), y({ ref_for: !0 }, a(i), {
630
656
  key: `${b}-tab-item`,
631
657
  as: i.bindAs ? i.bindAs : void 0,
632
- class: ["rvc-tab", { "rvc-tab-active": f.value === b }],
633
- onClick: (S) => f.value = b
658
+ class: ["rvc-tab", { "rvc-tab-active": d.value === b }],
659
+ onClick: (L) => d.value = b
634
660
  }), {
635
- default: T(() => [
636
- M(g(i.name), 1)
661
+ default: O(() => [
662
+ x(g(i.name), 1)
637
663
  ]),
638
664
  _: 2
639
665
  }, 1040, ["as", "class", "onClick"]))), 128))
640
666
  ])
641
667
  ], 16),
642
- L(j, p(o.$attrs, {
668
+ I(N, y(o.$attrs, {
643
669
  "root-class": "rvc-tabs-select",
644
- value: f.value,
670
+ value: d.value,
645
671
  onChange: m
646
672
  }), {
647
- default: T(() => [
673
+ default: O(() => [
648
674
  (l(!0), n(k, null, V(e.tabs, (i, b) => (l(), n("option", {
649
675
  key: `${b}-tab-item-select-option`,
650
676
  value: b,
651
- selected: f.value === b
677
+ selected: d.value === b
652
678
  }, g(i.name), 9, Be))), 128))
653
679
  ]),
654
680
  _: 1
@@ -657,13 +683,13 @@ const ae = ["value"], le = ["value"], j = /* @__PURE__ */ w({
657
683
  }
658
684
  });
659
685
  export {
660
- Ae as _,
661
- Ie as a,
662
- Oe as b,
663
- Ne as c,
664
- Fe as d,
665
- j as e,
666
- je as f,
686
+ Me as _,
687
+ Te as a,
688
+ Ae as b,
689
+ Fe as c,
690
+ je as d,
691
+ N as e,
692
+ Ne as f,
667
693
  de as g,
668
694
  ze as h,
669
695
  Ee as i
@@ -5,6 +5,9 @@
5
5
  --rvc-badge-padding-y: calc(var(--spacing) * 1.5);
6
6
  --rvc-badge-font-weight: var(--font-weight-medium);
7
7
  --rvc-badge-border-radius: calc(infinity * 1px);
8
+ --rvc-badge-border-width: 0;
9
+ --rvc-badge-border-style: solid;
10
+ --rvc-badge-border-color: transparent;
8
11
  --rvc-badge-font-size: var(--text-base);
9
12
  --rvc-badge-gap: calc(var(--spacing) * 1);
10
13
 
@@ -61,6 +64,7 @@
61
64
  height: var(--rvc-badge-height);
62
65
  padding-block: var(--rvc-badge-padding-y);
63
66
  padding-inline: var(--rvc-badge-padding-x);
67
+ border: var(--rvc-badge-border-width) var(--rvc-badge-border-style) var(--rvc-badge-border-color);
64
68
  border-radius: var(--rvc-badge-border-radius);
65
69
  background-color: var(--rvc-badge-bg-color);
66
70
  color: var(--rvc-badge-color);
@@ -1,5 +1,8 @@
1
1
  :root {
2
2
  --rvc-empty-state-border-radius: var(--rvc-base-border-radius);
3
+ --rvc-empty-state-border-width: 0;
4
+ --rvc-empty-state-border-style: solid;
5
+ --rvc-empty-state-border-color: transparent;
3
6
  --rvc-empty-state-color: var(--color-slate-700);
4
7
  --rvc-empty-state-bg-color: var(--color-slate-50);
5
8
  --rvc-empty-state-padding-x: calc(var(--spacing) * 12);
@@ -15,6 +18,7 @@
15
18
 
16
19
  @layer components {
17
20
  .rvc-empty-state {
21
+ border: var(--rvc-empty-state-border-width) var(--rvc-empty-state-border-style) var(--rvc-empty-state-border-color);
18
22
  color: var(--rvc-empty-state-color);
19
23
  font-size: var(--rvc-empty-state-font-size);
20
24
 
@@ -1,4 +1,4 @@
1
- import { _ as e, a as s, b as t, c as r, d as m, e as p, f as x, g as c, h as f, i } from "../_shared/Tabs.vue_vue_type_script_setup_true_lang-KdVe2QbW.js";
1
+ import { _ as e, a as s, b as t, c as r, d as m, e as p, f as x, g as c, h as f, i } from "../_shared/Tabs.vue_vue_type_script_setup_true_lang-B0RIqYLz.js";
2
2
  import { _ as b } from "../_shared/ChevronDownIcon-BYWciGnh.js";
3
3
  import { _ } from "../_shared/ButtonBase.vue_vue_type_script_setup_true_lang-ZYVNEyNx.js";
4
4
  import { _ as l } from "../_shared/FormInput.vue_vue_type_script_setup_true_lang-Bg7YPGyY.js";
@@ -9,9 +9,14 @@
9
9
  --rvc-pagination-color: var(--color-slate-600);
10
10
  --rvc-pagination-color-active: var(--color-slate-800);
11
11
  --rvc-pagination-bg-color: transparent;
12
+ --rvc-pagination-bg-color-active: var(--rvc-pagination-bg-color);
12
13
  --rvc-pagination-bg-color-hover: var(--color-slate-100);
14
+ --rvc-pagination-border-color: transparent;
15
+ --rvc-pagination-nav-gap-md: calc(var(--spacing) * 0.5);
16
+ --rvc-pagination-nav-gap-xl: calc(var(--spacing) * 1);
13
17
  --rvc-pagination-info-color: var(--color-slate-400);
14
18
  --rvc-pagination-info-font-size: var(--text-sm);
19
+ --rvc-pagination-icon-color: var(--color-slate-800);
15
20
  }
16
21
 
17
22
  @layer components {
@@ -36,6 +41,7 @@
36
41
  width: var(--rvc-pagination-size);
37
42
  height: var(--rvc-pagination-size);
38
43
  transition: color, background-color var(--rvc-pagination-transition-duration) var(--rvc-pagination-transition-timing-function);
44
+ border: 1px solid var(--rvc-pagination-border-color);
39
45
  border-radius: var(--rvc-pagination-border-radius);
40
46
  background-color: var(--rvc-pagination-bg-color);
41
47
  color: var(--rvc-pagination-color);
@@ -44,6 +50,7 @@
44
50
  text-align: center;
45
51
 
46
52
  &.rvc-pagination-button-active {
53
+ background-color: var(--rvc-pagination-bg-color-active);
47
54
  color: var(--rvc-pagination-color-active);
48
55
  font-weight: var(--rvc-pagination-font-weight-active);
49
56
  }
@@ -70,11 +77,11 @@
70
77
  justify-content: flex-end;
71
78
 
72
79
  @media (width >= theme(--breakpoint-md)) {
73
- gap: calc(var(--spacing) * 0.5);
80
+ gap: var(--rvc-pagination-nav-gap-md);
74
81
  }
75
82
 
76
83
  @media (width >= theme(--breakpoint-xl)) {
77
- gap: calc(var(--spacing) * 1);
84
+ gap: var(--rvc-pagination-nav-gap-xl);
78
85
  }
79
86
  }
80
87
 
@@ -97,7 +104,7 @@
97
104
  .rvc-pagination-button-icon {
98
105
  width: calc(var(--spacing) * 5);
99
106
  height: calc(var(--spacing) * 5);
100
- color: var(--color-slate-800);
107
+ color: var(--rvc-pagination-icon-color);
101
108
 
102
109
  &.rvc-pagination-button-icon-disabled {
103
110
  opacity: 0.5;
@@ -5,6 +5,7 @@
5
5
  --rvc-table-border-style: var(--rvc-base-border-style);
6
6
  --rvc-table-border-width: var(--rvc-base-border-width);
7
7
  --rvc-table-head-bg-color: var(--color-slate-200);
8
+ --rvc-table-head-color: inherit;
8
9
  --rvc-table-bg-color: var(--color-slate-50);
9
10
  --rvc-table-font-size: var(--text-sm);
10
11
  --rvc-table-head-font-size: var(--text-sm);
@@ -15,6 +16,9 @@
15
16
  --rvc-table-white-space: nowrap;
16
17
  --rvc-table-line-height: 1.1;
17
18
  --rvc-table-spinner-size: calc(var(--spacing) * 5);
19
+ --rvc-table-striped-cell-border-color: transparent;
20
+ --rvc-table-striped-cell-border-style: solid;
21
+ --rvc-table-striped-cell-border-width: 0;
18
22
  }
19
23
 
20
24
  @layer components {
@@ -39,6 +43,11 @@
39
43
 
40
44
  td {
41
45
  padding-inline: var(--rvc-table-padding-x);
46
+ border-bottom: var(--rvc-table-striped-cell-border-width) var(--rvc-table-striped-cell-border-style) var(--rvc-table-striped-cell-border-color);
47
+ }
48
+
49
+ tr:hover td {
50
+ background-color: var(--rvc-table-striped-row-bg-color-hover);
42
51
  }
43
52
  }
44
53
 
@@ -62,6 +71,7 @@
62
71
 
63
72
  th {
64
73
  padding-block: var(--rvc-table-padding-y);
74
+ color: var(--rvc-table-head-color);
65
75
  font-size: var(--rvc-table-head-font-size);
66
76
  font-weight: var(--rvc-table-head-font-weight);
67
77
  line-height: var(--rvc-table-line-height);
@@ -92,13 +102,14 @@
92
102
  display: flex;
93
103
  width: 100%;
94
104
  column-gap: calc(var(--spacing) * 1.5);
105
+ color: inherit;
95
106
 
96
107
  &:hover {
97
108
  text-decoration: underline;
98
109
  }
99
110
 
100
111
  &:hover .rvc-table-sort-icon-invisible {
101
- opacity: 0.3;
112
+ opacity: 0.5;
102
113
  }
103
114
  }
104
115
 
@@ -16,6 +16,10 @@
16
16
  --rvc-tabs-tab-active-border-color: var(--color-indigo-600);
17
17
  --rvc-tabs-tab-button-height: calc(var(--spacing) * 9);
18
18
  --rvc-tabs-tab-button-padding-x: calc(var(--spacing) * 3);
19
+ --rvc-tabs-tab-button-border-width: 0;
20
+ --rvc-tabs-tab-button-border-style: solid;
21
+ --rvc-tabs-tab-button-border-color: transparent;
22
+ --rvc-tabs-tab-button-border-color-active: var(--rvc-tabs-tab-button-border-color);
19
23
  --rvc-tabs-tab-active-button-bg-color: var(--color-indigo-100);
20
24
  }
21
25
 
@@ -43,10 +47,12 @@
43
47
  height: var(--rvc-tabs-tab-button-height);
44
48
  padding-bottom: 0;
45
49
  padding-inline: var(--rvc-tabs-tab-button-padding-x);
50
+ border: var(--rvc-tabs-tab-button-border-width) var(--rvc-tabs-tab-button-border-style) var(--rvc-tabs-tab-button-border-color);
46
51
  border-bottom: 0;
47
52
  border-radius: var(--rvc-tabs-tab-button-border-radius);
48
53
 
49
54
  &.rvc-tab-active {
55
+ border-color: var(--rvc-tabs-tab-button-border-color-active);
50
56
  background-color: var(--rvc-tabs-tab-active-button-bg-color);
51
57
  }
52
58
  }
package/dist/core.d.ts CHANGED
@@ -20,6 +20,8 @@ perPage: number;
20
20
  perPageLabel: string;
21
21
  perPageOptions: number[];
22
22
  fromLabel: string;
23
+ prevIcon: Icon | null;
24
+ nextIcon: Icon | null;
23
25
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
24
26
 
25
27
  declare const __VLS_component_11: DefineComponent<RadioProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
@@ -88,6 +90,12 @@ declare const __VLS_component_6: DefineComponent<DataTableProps, {}, {}, {}, {},
88
90
  }>, {
89
91
  spinning: boolean;
90
92
  pagination: DataTablePagination | null;
93
+ perPage: number;
94
+ perPageLabel: string;
95
+ perPageOptions: number[];
96
+ fromLabel: string;
97
+ prevIcon: Icon | null;
98
+ nextIcon: Icon | null;
91
99
  headers: DataTableHeader[];
92
100
  noResultsText: string;
93
101
  loadingText: string;
@@ -165,6 +173,16 @@ declare function __VLS_template_10(): {
165
173
  to: number;
166
174
  links: PaginationLink[];
167
175
  }): any;
176
+ prevIcon?(_: {
177
+ icon: Icon | null;
178
+ link: PaginationLink;
179
+ index: number;
180
+ }): any;
181
+ nextIcon?(_: {
182
+ icon: Icon | null;
183
+ link: PaginationLink;
184
+ index: number;
185
+ }): any;
168
186
  };
169
187
  refs: {};
170
188
  rootEl: any;
@@ -532,6 +550,12 @@ declare interface DataTableProps {
532
550
  striped?: boolean;
533
551
  spinning?: boolean;
534
552
  pagination?: DataTablePagination | null;
553
+ perPage?: number;
554
+ perPageLabel?: string;
555
+ perPageOptions?: number[];
556
+ fromLabel?: string;
557
+ prevIcon?: Icon | null;
558
+ nextIcon?: Icon | null;
535
559
  wrapperClass?: string;
536
560
  defaultSort?: DataTableSortBy | null;
537
561
  }
@@ -626,6 +650,8 @@ declare interface PaginationProps {
626
650
  perPageLabel?: string;
627
651
  perPageOptions?: number[];
628
652
  fromLabel?: string;
653
+ prevIcon?: Icon | null;
654
+ nextIcon?: Icon | null;
629
655
  }
630
656
 
631
657
  export declare const Radio: __VLS_WithTemplateSlots_11<typeof __VLS_component_11, __VLS_TemplateResult_11["slots"]>;
@@ -1,4 +1,4 @@
1
- import { _ as r, a as t, b as e, c as s, d as m, e as p, f as x, g as f, h as _, i } from "../_shared/Tabs.vue_vue_type_script_setup_true_lang-KdVe2QbW.js";
1
+ import { _ as r, a as t, b as e, c as s, d as m, e as p, f as x, g as f, h as _, i } from "../_shared/Tabs.vue_vue_type_script_setup_true_lang-B0RIqYLz.js";
2
2
  import { _ as d } from "../_shared/ChevronDownIcon-BYWciGnh.js";
3
3
  import { _ as n } from "../_shared/ButtonBase.vue_vue_type_script_setup_true_lang-ZYVNEyNx.js";
4
4
  import { _ as h } from "../_shared/FormInput.vue_vue_type_script_setup_true_lang-Bg7YPGyY.js";
package/dist/index.d.ts CHANGED
@@ -30,6 +30,8 @@ perPage: number;
30
30
  perPageLabel: string;
31
31
  perPageOptions: number[];
32
32
  fromLabel: string;
33
+ prevIcon: Icon | null;
34
+ nextIcon: Icon | null;
33
35
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
34
36
 
35
37
  declare const __VLS_component_11: DefineComponent<RadioProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
@@ -250,6 +252,12 @@ declare const __VLS_component_6: DefineComponent<DataTableProps, {}, {}, {}, {},
250
252
  }>, {
251
253
  spinning: boolean;
252
254
  pagination: DataTablePagination | null;
255
+ perPage: number;
256
+ perPageLabel: string;
257
+ perPageOptions: number[];
258
+ fromLabel: string;
259
+ prevIcon: Icon | null;
260
+ nextIcon: Icon | null;
253
261
  headers: DataTableHeader[];
254
262
  noResultsText: string;
255
263
  loadingText: string;
@@ -327,6 +335,16 @@ declare function __VLS_template_10(): {
327
335
  to: number;
328
336
  links: PaginationLink[];
329
337
  }): any;
338
+ prevIcon?(_: {
339
+ icon: Icon | null;
340
+ link: PaginationLink;
341
+ index: number;
342
+ }): any;
343
+ nextIcon?(_: {
344
+ icon: Icon | null;
345
+ link: PaginationLink;
346
+ index: number;
347
+ }): any;
330
348
  };
331
349
  refs: {};
332
350
  rootEl: any;
@@ -1103,6 +1121,12 @@ declare interface DataTableProps {
1103
1121
  striped?: boolean;
1104
1122
  spinning?: boolean;
1105
1123
  pagination?: DataTablePagination | null;
1124
+ perPage?: number;
1125
+ perPageLabel?: string;
1126
+ perPageOptions?: number[];
1127
+ fromLabel?: string;
1128
+ prevIcon?: Icon | null;
1129
+ nextIcon?: Icon | null;
1106
1130
  wrapperClass?: string;
1107
1131
  defaultSort?: DataTableSortBy | null;
1108
1132
  }
@@ -1254,6 +1278,8 @@ declare interface PaginationProps {
1254
1278
  perPageLabel?: string;
1255
1279
  perPageOptions?: number[];
1256
1280
  fromLabel?: string;
1281
+ prevIcon?: Icon | null;
1282
+ nextIcon?: Icon | null;
1257
1283
  }
1258
1284
 
1259
1285
  export declare const Radio: __VLS_WithTemplateSlots_11<typeof __VLS_component_11, __VLS_TemplateResult_11["slots"]>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robuust-digital/vue-components",
3
- "version": "2.4.0-beta.9",
3
+ "version": "2.4.0",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"