@goliapkg/gds 1.0.10 → 1.4.2

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 (108) hide show
  1. package/README.md +10 -6
  2. package/dist/{avatar-By0U5Vts.js → avatar-l3SaMCmU.js} +10 -10
  3. package/dist/avatar-l3SaMCmU.js.map +1 -0
  4. package/dist/index.js +25 -25
  5. package/dist/l2-primitives/divider.d.ts +11 -2
  6. package/dist/l2-primitives/divider.d.ts.map +1 -1
  7. package/dist/l2-primitives/index.d.ts +1 -1
  8. package/dist/l2-primitives/index.d.ts.map +1 -1
  9. package/dist/l2-primitives/index.js +10 -10
  10. package/dist/l2-primitives/input.d.ts +6 -0
  11. package/dist/l2-primitives/input.d.ts.map +1 -1
  12. package/dist/l2-primitives/number-input.d.ts +4 -0
  13. package/dist/l2-primitives/number-input.d.ts.map +1 -1
  14. package/dist/{l2-primitives-BIiL8hFH.js → l2-primitives-Le0006ck.js} +105 -81
  15. package/dist/l2-primitives-Le0006ck.js.map +1 -0
  16. package/dist/l3-atoms/avatar-badge.d.ts +1 -0
  17. package/dist/l3-atoms/avatar-badge.d.ts.map +1 -1
  18. package/dist/l3-atoms/avatar.d.ts +2 -0
  19. package/dist/l3-atoms/avatar.d.ts.map +1 -1
  20. package/dist/l3-atoms/checkbox.d.ts +7 -0
  21. package/dist/l3-atoms/checkbox.d.ts.map +1 -1
  22. package/dist/l3-atoms/index.d.ts +4 -4
  23. package/dist/l3-atoms/index.d.ts.map +1 -1
  24. package/dist/l3-atoms/index.js +6 -6
  25. package/dist/l3-atoms/status-badge.d.ts +8 -0
  26. package/dist/l3-atoms/status-badge.d.ts.map +1 -1
  27. package/dist/l3-atoms/status-dot.d.ts +4 -0
  28. package/dist/l3-atoms/status-dot.d.ts.map +1 -1
  29. package/dist/l3-atoms/toggle-group.d.ts +16 -2
  30. package/dist/l3-atoms/toggle-group.d.ts.map +1 -1
  31. package/dist/{l3-atoms-CsN9IA9J.js → l3-atoms-BxDg3rXt.js} +196 -189
  32. package/dist/{l3-atoms-CsN9IA9J.js.map → l3-atoms-BxDg3rXt.js.map} +1 -1
  33. package/dist/l4-molecules/alert.d.ts +7 -1
  34. package/dist/l4-molecules/alert.d.ts.map +1 -1
  35. package/dist/l4-molecules/dialog.d.ts +8 -2
  36. package/dist/l4-molecules/dialog.d.ts.map +1 -1
  37. package/dist/l4-molecules/index.d.ts +3 -3
  38. package/dist/l4-molecules/index.d.ts.map +1 -1
  39. package/dist/l4-molecules/index.js +3 -3
  40. package/dist/l4-molecules/tabs.d.ts +1 -2
  41. package/dist/l4-molecules/tabs.d.ts.map +1 -1
  42. package/dist/{l4-molecules-DHsPjYhl.js → l4-molecules-DftsX-gO.js} +212 -205
  43. package/dist/l4-molecules-DftsX-gO.js.map +1 -0
  44. package/dist/l5-organisms/data-table/data-table-body.d.ts +31 -0
  45. package/dist/l5-organisms/data-table/data-table-body.d.ts.map +1 -0
  46. package/dist/l5-organisms/data-table/data-table-head.d.ts +22 -0
  47. package/dist/l5-organisms/data-table/data-table-head.d.ts.map +1 -0
  48. package/dist/l5-organisms/data-table/data-table-pagination.d.ts +13 -0
  49. package/dist/l5-organisms/data-table/data-table-pagination.d.ts.map +1 -0
  50. package/dist/l5-organisms/data-table/data-table-toolbar.d.ts +19 -0
  51. package/dist/l5-organisms/data-table/data-table-toolbar.d.ts.map +1 -0
  52. package/dist/l5-organisms/data-table/data-table-types.d.ts +88 -0
  53. package/dist/l5-organisms/data-table/data-table-types.d.ts.map +1 -0
  54. package/dist/l5-organisms/data-table/data-table-utils.d.ts +13 -0
  55. package/dist/l5-organisms/data-table/data-table-utils.d.ts.map +1 -0
  56. package/dist/l5-organisms/data-table/data-table.d.ts +6 -0
  57. package/dist/l5-organisms/data-table/data-table.d.ts.map +1 -0
  58. package/dist/l5-organisms/data-table/index.d.ts +4 -0
  59. package/dist/l5-organisms/data-table/index.d.ts.map +1 -0
  60. package/dist/l5-organisms/gantt-chart/gantt-chart-types.d.ts +52 -0
  61. package/dist/l5-organisms/gantt-chart/gantt-chart-types.d.ts.map +1 -0
  62. package/dist/l5-organisms/gantt-chart/gantt-chart-utils.d.ts +11 -0
  63. package/dist/l5-organisms/gantt-chart/gantt-chart-utils.d.ts.map +1 -0
  64. package/dist/l5-organisms/gantt-chart/gantt-chart.d.ts +3 -0
  65. package/dist/l5-organisms/gantt-chart/gantt-chart.d.ts.map +1 -0
  66. package/dist/l5-organisms/gantt-chart/index.d.ts +3 -0
  67. package/dist/l5-organisms/gantt-chart/index.d.ts.map +1 -0
  68. package/dist/l5-organisms/index.d.ts +4 -2
  69. package/dist/l5-organisms/index.d.ts.map +1 -1
  70. package/dist/l5-organisms/index.js +2 -2
  71. package/dist/l5-organisms/table.d.ts +12 -0
  72. package/dist/l5-organisms/table.d.ts.map +1 -1
  73. package/dist/{l5-organisms-z8mU4eoy.js → l5-organisms-Di1Bm_R6.js} +1352 -292
  74. package/dist/l5-organisms-Di1Bm_R6.js.map +1 -0
  75. package/dist/l6-charts/annotated-chart.d.ts +18 -0
  76. package/dist/l6-charts/annotated-chart.d.ts.map +1 -0
  77. package/dist/l6-charts/bullet-chart.d.ts +11 -0
  78. package/dist/l6-charts/bullet-chart.d.ts.map +1 -0
  79. package/dist/l6-charts/donut-gauge.d.ts +14 -0
  80. package/dist/l6-charts/donut-gauge.d.ts.map +1 -0
  81. package/dist/l6-charts/flame-chart.d.ts +13 -0
  82. package/dist/l6-charts/flame-chart.d.ts.map +1 -0
  83. package/dist/l6-charts/index.d.ts +12 -0
  84. package/dist/l6-charts/index.d.ts.map +1 -1
  85. package/dist/l6-charts/index.js +2 -2
  86. package/dist/l6-charts/realtime-chart.d.ts +13 -0
  87. package/dist/l6-charts/realtime-chart.d.ts.map +1 -0
  88. package/dist/l6-charts/waterfall-chart.d.ts +12 -0
  89. package/dist/l6-charts/waterfall-chart.d.ts.map +1 -0
  90. package/dist/l6-charts-Bn9RQLbe.js +2145 -0
  91. package/dist/l6-charts-Bn9RQLbe.js.map +1 -0
  92. package/dist/l7-patterns/index.js +1 -1
  93. package/dist/{l7-patterns-E9ls7Nw6.js → l7-patterns-BCpw0-CS.js} +4 -4
  94. package/dist/{l7-patterns-E9ls7Nw6.js.map → l7-patterns-BCpw0-CS.js.map} +1 -1
  95. package/dist/{resize-handle-CktEYqwi.js → resize-handle-ilSc7QRM.js} +6 -3
  96. package/dist/{resize-handle-CktEYqwi.js.map → resize-handle-ilSc7QRM.js.map} +1 -1
  97. package/dist/{spinner-D8Ti-TFe.js → spinner-N7UNjdsQ.js} +66 -23
  98. package/dist/spinner-N7UNjdsQ.js.map +1 -0
  99. package/package.json +1 -1
  100. package/dist/avatar-By0U5Vts.js.map +0 -1
  101. package/dist/l2-primitives-BIiL8hFH.js.map +0 -1
  102. package/dist/l4-molecules-DHsPjYhl.js.map +0 -1
  103. package/dist/l5-organisms/data-table.d.ts +0 -24
  104. package/dist/l5-organisms/data-table.d.ts.map +0 -1
  105. package/dist/l5-organisms-z8mU4eoy.js.map +0 -1
  106. package/dist/l6-charts-DYnr5B9X.js +0 -1743
  107. package/dist/l6-charts-DYnr5B9X.js.map +0 -1
  108. package/dist/spinner-D8Ti-TFe.js.map +0 -1
@@ -55,40 +55,56 @@ var d = n("inline-flex items-center gds-gap-xs underline-offset-2 transition-col
55
55
  ...i,
56
56
  children: t
57
57
  });
58
- }), _ = o(function({ className: t, icon: n, orientation: r = "horizontal", ...i }, a) {
59
- return r === "vertical" ? /* @__PURE__ */ l("div", {
60
- className: e("inline-flex h-full flex-col items-center", n !== void 0 && "gds-gap-sm", t),
58
+ }), _ = n("", {
59
+ variants: { variant: {
60
+ solid: "border-solid",
61
+ dashed: "border-dashed",
62
+ dotted: "border-dotted"
63
+ } },
64
+ defaultVariants: { variant: "solid" }
65
+ }), v = o(function({ className: t, icon: n, label: r, orientation: i = "horizontal", variant: a = "solid", ...o }, s) {
66
+ let d = _({ variant: a });
67
+ return i === "vertical" ? /* @__PURE__ */ l("div", {
68
+ className: e("inline-flex h-full flex-col items-center", (n !== void 0 || r !== void 0) && "gds-gap-sm", t),
61
69
  "data-component": "divider",
62
- ref: a,
63
- ...i,
64
- children: n === void 0 ? /* @__PURE__ */ l("div", { className: "h-full border-l border-border" }) : /* @__PURE__ */ u(c, { children: [
65
- /* @__PURE__ */ l("div", { className: "flex-1 border-l border-border" }),
66
- /* @__PURE__ */ l("span", {
70
+ ref: s,
71
+ ...o,
72
+ children: n !== void 0 || r !== void 0 ? /* @__PURE__ */ u(c, { children: [
73
+ /* @__PURE__ */ l("div", { className: e("flex-1 border-l border-border", d) }),
74
+ n !== void 0 && /* @__PURE__ */ l("span", {
67
75
  className: "shrink-0 text-fg-muted/50 gds-icon-child-sm",
68
76
  children: n
69
77
  }),
70
- /* @__PURE__ */ l("div", { className: "flex-1 border-l border-border" })
71
- ] })
72
- }) : n === void 0 ? /* @__PURE__ */ l("div", {
73
- className: e("h-px w-full bg-border/50", t),
74
- "data-component": "divider",
75
- ref: a,
76
- ...i
77
- }) : /* @__PURE__ */ u("div", {
78
+ r !== void 0 && /* @__PURE__ */ l("span", {
79
+ className: "shrink-0 text-fg-muted/50 gds-text-caption",
80
+ children: r
81
+ }),
82
+ /* @__PURE__ */ l("div", { className: e("flex-1 border-l border-border", d) })
83
+ ] }) : /* @__PURE__ */ l("div", { className: e("h-full border-l border-border", d) })
84
+ }) : n !== void 0 || r !== void 0 ? /* @__PURE__ */ u("div", {
78
85
  className: e("flex items-center gds-gap-sm", t),
79
86
  "data-component": "divider",
80
- ref: a,
81
- ...i,
87
+ ref: s,
88
+ ...o,
82
89
  children: [
83
- /* @__PURE__ */ l("div", { className: "flex-1 border-t border-border" }),
84
- /* @__PURE__ */ l("span", {
90
+ /* @__PURE__ */ l("div", { className: e("flex-1 border-t border-border", d) }),
91
+ n !== void 0 && /* @__PURE__ */ l("span", {
85
92
  className: "shrink-0 text-fg-muted/50 gds-icon-child-sm",
86
93
  children: n
87
94
  }),
88
- /* @__PURE__ */ l("div", { className: "flex-1 border-t border-border" })
95
+ r !== void 0 && /* @__PURE__ */ l("span", {
96
+ className: "shrink-0 text-fg-muted/50 gds-text-caption select-none",
97
+ children: r
98
+ }),
99
+ /* @__PURE__ */ l("div", { className: e("flex-1 border-t border-border", d) })
89
100
  ]
101
+ }) : /* @__PURE__ */ l("div", {
102
+ className: e("h-px w-full", a === "solid" ? "bg-border/50" : e("border-t border-border", d), t),
103
+ "data-component": "divider",
104
+ ref: s,
105
+ ...o
90
106
  });
91
- }), v = n("inline-block shrink-0 gds-radius-badge", {
107
+ }), y = n("inline-block shrink-0 gds-radius-badge", {
92
108
  defaultVariants: {
93
109
  color: "accent",
94
110
  size: "default"
@@ -107,18 +123,18 @@ var d = n("inline-flex items-center gds-gap-xs underline-offset-2 transition-col
107
123
  sm: "h-1.5 w-1.5"
108
124
  }
109
125
  }
110
- }), y = o(function({ className: t, color: n, label: r, pulse: i = !1, size: a, ...o }, s) {
126
+ }), b = o(function({ className: t, color: n, label: r, pulse: i = !1, size: a, ...o }, s) {
111
127
  return /* @__PURE__ */ u("span", {
112
128
  className: e("relative inline-flex items-center", r !== void 0 && "gds-gap-sm", t),
113
129
  "data-component": "dot",
114
130
  ref: s,
115
131
  ...o,
116
132
  children: [
117
- /* @__PURE__ */ l("span", { className: v({
133
+ /* @__PURE__ */ l("span", { className: y({
118
134
  color: n,
119
135
  size: a
120
136
  }) }),
121
- i && /* @__PURE__ */ l("span", { className: e("absolute inset-0 animate-ping gds-radius-badge opacity-40", v({
137
+ i && /* @__PURE__ */ l("span", { className: e("absolute inset-0 animate-ping gds-radius-badge opacity-40", y({
122
138
  color: n,
123
139
  size: a
124
140
  })) }),
@@ -128,7 +144,7 @@ var d = n("inline-flex items-center gds-gap-xs underline-offset-2 transition-col
128
144
  })
129
145
  ]
130
146
  });
131
- }), b = o(function({ children: t, color: n = "var(--gds-accent)", width: r = 2, offset: i = 2, className: a }, o) {
147
+ }), x = o(function({ children: t, color: n = "var(--gds-accent)", width: r = 2, offset: i = 2, className: a }, o) {
132
148
  let s = {
133
149
  "--focus-ring-color": n,
134
150
  "--focus-ring-width": `${r}px`,
@@ -141,7 +157,7 @@ var d = n("inline-flex items-center gds-gap-xs underline-offset-2 transition-col
141
157
  style: s,
142
158
  children: t
143
159
  });
144
- }), x = {
160
+ }), S = {
145
161
  sm: {
146
162
  blur: 20,
147
163
  opacity: 15,
@@ -158,22 +174,22 @@ var d = n("inline-flex items-center gds-gap-xs underline-offset-2 transition-col
158
174
  spread: 12
159
175
  }
160
176
  };
161
- function S(e, t) {
177
+ function C(e, t) {
162
178
  return `${`0 0 ${t.blur}px ${t.spread}px color-mix(in srgb, ${e} ${t.opacity}%, transparent)`}, ${`0 0 ${Math.round(t.blur * .4)}px ${Math.round(t.spread * .5)}px color-mix(in srgb, ${e} ${Math.round(t.opacity * 1.5)}%, transparent)`}`;
163
179
  }
164
- var C = o(function({ children: t, className: n, color: r = "var(--gds-accent)", intensity: i = "default", radius: a }, o) {
165
- let s = x[i];
180
+ var w = o(function({ children: t, className: n, color: r = "var(--gds-accent)", intensity: i = "default", radius: a }, o) {
181
+ let s = S[i];
166
182
  return /* @__PURE__ */ l("div", {
167
183
  ref: o,
168
184
  "data-component": "glow-effect",
169
185
  className: e("relative", n),
170
186
  style: {
171
187
  borderRadius: a === void 0 ? void 0 : `${a}px`,
172
- boxShadow: S(r, s)
188
+ boxShadow: C(r, s)
173
189
  },
174
190
  children: t
175
191
  });
176
- }), w = o(function({ children: t, gradient: n = "linear-gradient(135deg, var(--gds-accent), var(--gds-success))", width: r = 1, radius: i = 12, className: a }, o) {
192
+ }), T = o(function({ children: t, gradient: n = "linear-gradient(135deg, var(--gds-accent), var(--gds-success))", width: r = 1, radius: i = 12, className: a }, o) {
177
193
  let s = Math.max(0, i - r);
178
194
  return /* @__PURE__ */ l("div", {
179
195
  ref: o,
@@ -190,7 +206,7 @@ var C = o(function({ children: t, className: n, color: r = "var(--gds-accent)",
190
206
  children: t
191
207
  })
192
208
  });
193
- }), T = {
209
+ }), E = {
194
210
  default: {
195
211
  container: "gap-1.5",
196
212
  dot: "h-2 w-2"
@@ -203,7 +219,7 @@ var C = o(function({ children: t, className: n, color: r = "var(--gds-accent)",
203
219
  container: "gap-1",
204
220
  dot: "h-1.5 w-1.5"
205
221
  }
206
- }, E = {
222
+ }, D = {
207
223
  default: {
208
224
  bar: "w-1 h-4",
209
225
  container: "gap-1 h-4"
@@ -216,17 +232,17 @@ var C = o(function({ children: t, className: n, color: r = "var(--gds-accent)",
216
232
  bar: "w-0.5 h-3",
217
233
  container: "gap-0.5 h-3"
218
234
  }
219
- }, D = {
235
+ }, O = {
220
236
  default: "h-4 w-4",
221
237
  lg: "h-6 w-6",
222
238
  sm: "h-3 w-3"
223
- }, O = {
239
+ }, k = {
224
240
  default: "h-4 w-4 border-2",
225
241
  lg: "h-6 w-6 border-[3px]",
226
242
  sm: "h-3 w-3 border-[1.5px]"
227
243
  };
228
244
  o(function({ className: t, size: n = "default" }, r) {
229
- let i = T[n];
245
+ let i = E[n];
230
246
  return /* @__PURE__ */ l("div", {
231
247
  className: e("inline-flex items-center", i.container, t),
232
248
  "data-component": "loading-dots",
@@ -245,8 +261,8 @@ o(function({ className: t, size: n = "default" }, r) {
245
261
  }, t))
246
262
  });
247
263
  });
248
- var k = o(function({ className: t, size: n = "default" }, r) {
249
- let i = E[n];
264
+ var A = o(function({ className: t, size: n = "default" }, r) {
265
+ let i = D[n];
250
266
  return /* @__PURE__ */ l("div", {
251
267
  className: e("inline-flex items-center", i.container, t),
252
268
  "data-component": "loading-bars",
@@ -266,27 +282,27 @@ var k = o(function({ className: t, size: n = "default" }, r) {
266
282
  }
267
283
  }, t))
268
284
  });
269
- }), A = o(function({ className: t, size: n = "default" }, r) {
285
+ }), j = o(function({ className: t, size: n = "default" }, r) {
270
286
  return /* @__PURE__ */ l("div", {
271
287
  className: e("inline-flex items-center justify-center", t),
272
288
  "data-component": "loading-pulse",
273
289
  ref: r,
274
290
  role: "status",
275
291
  children: /* @__PURE__ */ l("span", {
276
- className: e("rounded-full bg-accent", D[n]),
292
+ className: e("rounded-full bg-accent", O[n]),
277
293
  style: { animation: "loading-pulse 2s infinite ease-in-out" }
278
294
  })
279
295
  });
280
- }), j = o(function({ className: t, size: n = "default" }, r) {
296
+ }), M = o(function({ className: t, size: n = "default" }, r) {
281
297
  return /* @__PURE__ */ l("div", {
282
298
  className: e("inline-flex items-center justify-center", t),
283
299
  "data-component": "loading-ring",
284
300
  ref: r,
285
301
  role: "status",
286
- children: /* @__PURE__ */ l("span", { className: e("animate-spin rounded-full border-accent border-t-transparent", O[n]) })
302
+ children: /* @__PURE__ */ l("span", { className: e("animate-spin rounded-full border-accent border-t-transparent", k[n]) })
287
303
  });
288
- }), M = o(function({ className: t, size: n = "default" }, r) {
289
- let i = T[n];
304
+ }), N = o(function({ className: t, size: n = "default" }, r) {
305
+ let i = E[n];
290
306
  return /* @__PURE__ */ l("div", {
291
307
  className: e("inline-flex items-end", i.container, t),
292
308
  "data-component": "loading-wave",
@@ -306,19 +322,19 @@ var k = o(function({ className: t, size: n = "default" }, r) {
306
322
  }
307
323
  }, t))
308
324
  });
309
- }), N = "flex items-center justify-center select-none px-2 text-fg-muted hover:text-fg hover:bg-bg-tertiary transition-colors disabled:cursor-not-allowed disabled:opacity-50", P = o(function({ direction: t, disabled: n, onClick: r }, i) {
325
+ }), P = "flex items-center justify-center select-none px-2 text-fg-muted hover:text-fg hover:bg-bg-tertiary transition-colors disabled:cursor-not-allowed disabled:opacity-50", F = o(function({ direction: t, disabled: n, onClick: r }, i) {
310
326
  let a = t === "decrement";
311
327
  return /* @__PURE__ */ l("button", {
312
328
  ref: i,
313
329
  "aria-label": t,
314
- className: e(N, a ? "rounded-l-[inherit] border-r border-border" : "rounded-r-[inherit] border-l border-border"),
330
+ className: e(P, a ? "rounded-l-[inherit] border-r border-border" : "rounded-r-[inherit] border-l border-border"),
315
331
  disabled: n,
316
332
  onClick: r,
317
333
  tabIndex: -1,
318
334
  type: "button",
319
335
  children: a ? "-" : "+"
320
336
  });
321
- }), F = n("flex items-center gds-radius-input border bg-bg text-fg transition-colors [&:has(input:focus-visible)]:ring-2 [&:has(input:focus-visible)]:ring-accent [&:has(input:focus-visible)]:ring-offset-1 [&:has(input:focus-visible)]:ring-offset-bg", {
337
+ }), I = n("flex items-center gds-radius-input border bg-bg text-fg transition-colors [&:has(input:focus-visible)]:ring-2 [&:has(input:focus-visible)]:ring-accent [&:has(input:focus-visible)]:ring-offset-1 [&:has(input:focus-visible)]:ring-offset-bg", {
322
338
  compoundVariants: [{
323
339
  error: !0,
324
340
  className: "[&:has(input:focus-visible)]:ring-danger"
@@ -338,84 +354,92 @@ var k = o(function({ className: t, size: n = "default" }, r) {
338
354
  }
339
355
  }
340
356
  });
341
- function I(e, t, n) {
357
+ function L(e, t, n) {
342
358
  let r = e;
343
359
  return t !== void 0 && r < t && (r = t), n !== void 0 && r > n && (r = n), r;
344
360
  }
345
- var L = o(function({ className: n, disabled: r, error: i, glass: a, inputSize: o, max: c, min: d, onChange: f, placeholder: p, step: m = 1, value: h }, g) {
346
- let _ = s(() => {
347
- f(I((h ?? 0) - m, d, c));
361
+ var R = o(function({ className: n, disabled: r, error: i, glass: a, inputSize: o, max: c, min: d, onChange: f, placeholder: p, prefix: m, step: h = 1, suffix: g, value: _ }, v) {
362
+ let y = s(() => {
363
+ f(L((_ ?? 0) - h, d, c));
348
364
  }, [
365
+ _,
349
366
  h,
350
- m,
351
367
  d,
352
368
  c,
353
369
  f
354
- ]), v = s(() => {
355
- f(I((h ?? 0) + m, d, c));
370
+ ]), b = s(() => {
371
+ f(L((_ ?? 0) + h, d, c));
356
372
  }, [
373
+ _,
357
374
  h,
358
- m,
359
375
  d,
360
376
  c,
361
377
  f
362
- ]), y = s((e) => {
378
+ ]), x = s((e) => {
363
379
  let t = e.target.value;
364
380
  if (t === "") {
365
381
  f(null);
366
382
  return;
367
383
  }
368
384
  let n = Number(t);
369
- Number.isNaN(n) || f(I(n, d, c));
385
+ Number.isNaN(n) || f(L(n, d, c));
370
386
  }, [
371
387
  d,
372
388
  c,
373
389
  f
374
- ]), b = s((e) => {
375
- e.key === "ArrowUp" && (e.preventDefault(), v()), e.key === "ArrowDown" && (e.preventDefault(), _());
376
- }, [v, _]);
390
+ ]), S = s((e) => {
391
+ e.key === "ArrowUp" && (e.preventDefault(), b()), e.key === "ArrowDown" && (e.preventDefault(), y());
392
+ }, [b, y]);
377
393
  return /* @__PURE__ */ u("div", {
378
- className: e(F({
394
+ className: e(I({
379
395
  error: i,
380
396
  inputSize: o
381
397
  }), t(a), a === !0 && "border-white/10 bg-bg/60", r === !0 && "cursor-not-allowed opacity-50", n),
382
398
  "data-component": "number-input",
383
399
  children: [
384
- /* @__PURE__ */ l(P, {
400
+ /* @__PURE__ */ l(F, {
385
401
  direction: "decrement",
386
402
  disabled: r,
387
- onClick: _
403
+ onClick: y
404
+ }),
405
+ m !== void 0 && /* @__PURE__ */ l("span", {
406
+ className: "shrink-0 select-none pl-1 text-fg-muted/50",
407
+ children: m
388
408
  }),
389
409
  /* @__PURE__ */ l("input", {
390
410
  className: e("min-w-0 flex-1 bg-transparent text-center outline-none placeholder:text-fg-muted/50", "[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none"),
391
411
  disabled: r,
392
- onChange: y,
393
- onKeyDown: b,
412
+ onChange: x,
413
+ onKeyDown: S,
394
414
  placeholder: p,
395
- ref: g,
415
+ ref: v,
396
416
  type: "number",
397
- value: h ?? ""
417
+ value: _ ?? ""
418
+ }),
419
+ g !== void 0 && /* @__PURE__ */ l("span", {
420
+ className: "shrink-0 select-none pr-1 text-fg-muted/50",
421
+ children: g
398
422
  }),
399
- /* @__PURE__ */ l(P, {
423
+ /* @__PURE__ */ l(F, {
400
424
  direction: "increment",
401
425
  disabled: r,
402
- onClick: v
426
+ onClick: b
403
427
  })
404
428
  ]
405
429
  });
406
- }), R = o(function({ visible: n, glass: r, onClick: i, className: a }, o) {
430
+ }), z = o(function({ visible: n, glass: r, onClick: i, className: a }, o) {
407
431
  return n ? /* @__PURE__ */ l("div", {
408
432
  className: e("fixed inset-0 z-40", r === !0 ? t(!0) : "bg-black/50", a),
409
433
  "data-component": "screen-overlay",
410
434
  onClick: i,
411
435
  ref: o
412
436
  }) : null;
413
- }), z = o(function(e, t) {
414
- return a(/* @__PURE__ */ l(R, {
437
+ }), B = o(function(e, t) {
438
+ return a(/* @__PURE__ */ l(z, {
415
439
  ref: t,
416
440
  ...e
417
441
  }));
418
- }), B = o(function({ children: t, className: n, maxHeight: r, orientation: i = "vertical", style: a, ...o }, s) {
442
+ }), V = o(function({ children: t, className: n, maxHeight: r, orientation: i = "vertical", style: a, ...o }, s) {
419
443
  return /* @__PURE__ */ l("div", {
420
444
  className: e(i === "vertical" && "overflow-x-hidden overflow-y-auto", i === "horizontal" && "overflow-x-auto overflow-y-hidden", i === "both" && "overflow-auto", n),
421
445
  "data-component": "scroll-area",
@@ -427,7 +451,7 @@ var L = o(function({ className: n, disabled: r, error: i, glass: a, inputSize: o
427
451
  ...o,
428
452
  children: t
429
453
  });
430
- }), V = o(function({ className: t, height: n = "20px", rounded: r = !1, width: i = "100%", ...a }, o) {
454
+ }), H = o(function({ className: t, height: n = "20px", rounded: r = !1, width: i = "100%", ...a }, o) {
431
455
  return /* @__PURE__ */ l("div", {
432
456
  className: e("relative overflow-hidden bg-fg-muted/10", r ? "rounded-full" : "rounded-md", t),
433
457
  "data-component": "shimmer",
@@ -439,7 +463,7 @@ var L = o(function({ className: n, disabled: r, error: i, glass: a, inputSize: o
439
463
  ...a,
440
464
  children: /* @__PURE__ */ l("div", { className: "absolute inset-0 animate-[shimmer_1.5s_ease-in-out_infinite] bg-gradient-to-r from-transparent via-fg-muted/5 to-transparent" })
441
465
  });
442
- }), H = o(function({ targetId: t = "main-content", label: n = "Skip to content", className: r }, i) {
466
+ }), U = o(function({ targetId: t = "main-content", label: n = "Skip to content", className: r }, i) {
443
467
  return /* @__PURE__ */ l("a", {
444
468
  ref: i,
445
469
  className: e("absolute left-2 top-2 z-50 -translate-y-full rounded bg-accent px-3 py-2 text-sm font-medium text-accent-fg transition-transform focus:translate-y-0 focus:outline-none", r),
@@ -447,7 +471,7 @@ var L = o(function({ className: n, disabled: r, error: i, glass: a, inputSize: o
447
471
  href: `#${t}`,
448
472
  children: n
449
473
  });
450
- }), U = o(function({ className: t, disabled: n = !1, max: r = 100, min: a = 0, onChange: o, step: s = 1, value: c = 0, ...d }, f) {
474
+ }), W = o(function({ className: t, disabled: n = !1, max: r = 100, min: a = 0, onChange: o, step: s = 1, value: c = 0, ...d }, f) {
451
475
  return /* @__PURE__ */ u("div", {
452
476
  className: e("flex items-center gap-3", t),
453
477
  "data-component": "slider",
@@ -467,7 +491,7 @@ var L = o(function({ className: n, disabled: r, error: i, glass: a, inputSize: o
467
491
  children: c
468
492
  })]
469
493
  });
470
- }), W = o(function({ children: t, lines: n = 1, expanded: r = !1, onToggle: i, className: a }, o) {
494
+ }), G = o(function({ children: t, lines: n = 1, expanded: r = !1, onToggle: i, className: a }, o) {
471
495
  let s = !r, c = n === 1, u = i !== void 0, d = !c && s ? {
472
496
  display: "-webkit-box",
473
497
  WebkitLineClamp: n,
@@ -485,7 +509,7 @@ var L = o(function({ className: n, disabled: r, error: i, glass: a, inputSize: o
485
509
  tabIndex: u ? 0 : void 0,
486
510
  children: t
487
511
  });
488
- }), G = o(function({ as: t = "span", children: n, className: i }, a) {
512
+ }), K = o(function({ as: t = "span", children: n, className: i }, a) {
489
513
  return /* @__PURE__ */ l(t, {
490
514
  ref: a,
491
515
  className: e(r, i),
@@ -494,6 +518,6 @@ var L = o(function({ className: n, disabled: r, error: i, glass: a, inputSize: o
494
518
  });
495
519
  });
496
520
  //#endregion
497
- export { f as C, m as S, y as _, V as a, g as b, L as c, A as d, j as f, b as g, C as h, H as i, F as l, w as m, W as n, B as o, M as p, U as r, z as s, G as t, k as u, v, d as w, h as x, _ as y };
521
+ export { m as C, h as S, d as T, b as _, H as a, _ as b, R as c, j as d, M as f, x as g, w as h, U as i, I as l, T as m, G as n, V as o, N as p, W as r, B as s, K as t, A as u, y as v, f as w, g as x, v as y };
498
522
 
499
- //# sourceMappingURL=l2-primitives-BIiL8hFH.js.map
523
+ //# sourceMappingURL=l2-primitives-Le0006ck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l2-primitives-Le0006ck.js","names":[],"sources":["../src/l2-primitives/anchor.tsx","../src/l2-primitives/badge-dot.tsx","../src/l2-primitives/container.tsx","../src/l2-primitives/divider.tsx","../src/l2-primitives/dot.tsx","../src/l2-primitives/focus-ring.tsx","../src/l2-primitives/glow-effect.tsx","../src/l2-primitives/gradient-border.tsx","../src/l2-primitives/loading.tsx","../src/l2-primitives/number-stepper.tsx","../src/l2-primitives/number-input.tsx","../src/l2-primitives/screen-overlay.tsx","../src/l2-primitives/scroll-area.tsx","../src/l2-primitives/shimmer.tsx","../src/l2-primitives/skip-nav.tsx","../src/l2-primitives/slider.tsx","../src/l2-primitives/truncate.tsx","../src/l2-primitives/visually-hidden.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst anchorVariants = cva(\n 'inline-flex items-center gds-gap-xs underline-offset-2 transition-colors hover:underline ' +\n focusCls,\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: 'text-accent hover:text-accent/80',\n muted: 'text-fg-muted hover:text-fg',\n },\n },\n },\n)\n\ntype AnchorProps = React.AnchorHTMLAttributes<HTMLAnchorElement> &\n VariantProps<typeof anchorVariants> & {\n external?: boolean\n externalIcon?: ReactNode\n }\n\nexport const Anchor = forwardRef<HTMLAnchorElement, AnchorProps>(\n function Anchor(\n { children, className, external = false, externalIcon, variant, ...props },\n ref,\n ) {\n return (\n <a\n className={cx(anchorVariants({ variant }), className)}\n data-component=\"anchor\"\n ref={ref}\n {...(external && {\n rel: 'noopener noreferrer',\n target: '_blank',\n })}\n {...props}\n >\n {children}\n {external && externalIcon !== undefined && (\n <span className=\"gds-icon-child-xs\">{externalIcon}</span>\n )}\n </a>\n )\n },\n)\n\nexport { anchorVariants }\nexport type { AnchorProps }\n","import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\nconst colorMap = {\n accent: 'bg-accent',\n danger: 'bg-danger',\n success: 'bg-success',\n} as const\n\ntype BadgeDotProps = React.HTMLAttributes<HTMLDivElement> & {\n children: ReactNode\n color?: 'accent' | 'danger' | 'success'\n show?: boolean\n}\n\nexport const BadgeDot = forwardRef<HTMLDivElement, BadgeDotProps>(\n function BadgeDot({ children, className, color = 'danger', show = true, ...props }, ref) {\n return (\n <div\n className={cx('relative inline-flex', className)}\n data-component=\"badge-dot\"\n ref={ref}\n {...props}\n >\n {children}\n {show && (\n <span\n className={cx('absolute -right-0.5 -top-0.5 h-1.5 w-1.5 rounded-full', colorMap[color])}\n />\n )}\n </div>\n )\n },\n)\n\nexport type { BadgeDotProps }\n","// container — responsive max-width wrapper with size variants\nimport { cva } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst containerVariants = cva('mx-auto w-full px-4', {\n defaultVariants: { size: 'default' },\n variants: {\n size: {\n default: 'max-w-screen-md',\n full: 'max-w-full',\n lg: 'max-w-screen-lg',\n sm: 'max-w-screen-sm',\n xl: 'max-w-screen-xl',\n },\n },\n})\n\ntype ContainerProps = React.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof containerVariants> & {\n children: ReactNode\n }\n\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n function Container({ children, className, size, ...props }, ref) {\n return (\n <div\n className={cx(containerVariants({ size }), className)}\n data-component=\"container\"\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nexport { containerVariants }\nexport type { ContainerProps }\n","import { cva } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst dividerVariants = cva('', {\n variants: {\n variant: {\n solid: 'border-solid',\n dashed: 'border-dashed',\n dotted: 'border-dotted',\n },\n },\n defaultVariants: { variant: 'solid' },\n})\n\ntype DividerProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof dividerVariants> & {\n icon?: ReactNode\n label?: string\n orientation?: 'horizontal' | 'vertical'\n}\n\nconst Divider = forwardRef<HTMLDivElement, DividerProps>(\n function Divider({ className, icon, label, orientation = 'horizontal', variant = 'solid', ...props }, ref) {\n const variantCls = dividerVariants({ variant })\n\n if (orientation === 'vertical') {\n return (\n <div\n className={cx('inline-flex h-full flex-col items-center', (icon !== undefined || label !== undefined) && 'gds-gap-sm', className)}\n data-component=\"divider\"\n ref={ref}\n {...props}\n >\n {icon !== undefined || label !== undefined ? (\n <>\n <div className={cx('flex-1 border-l border-border', variantCls)} />\n {icon !== undefined && <span className=\"shrink-0 text-fg-muted/50 gds-icon-child-sm\">{icon}</span>}\n {label !== undefined && <span className=\"shrink-0 text-fg-muted/50 gds-text-caption\">{label}</span>}\n <div className={cx('flex-1 border-l border-border', variantCls)} />\n </>\n ) : (\n <div className={cx('h-full border-l border-border', variantCls)} />\n )}\n </div>\n )\n }\n\n if (icon !== undefined || label !== undefined) {\n return (\n <div\n className={cx('flex items-center gds-gap-sm', className)}\n data-component=\"divider\"\n ref={ref}\n {...props}\n >\n <div className={cx('flex-1 border-t border-border', variantCls)} />\n {icon !== undefined && <span className=\"shrink-0 text-fg-muted/50 gds-icon-child-sm\">{icon}</span>}\n {label !== undefined && <span className=\"shrink-0 text-fg-muted/50 gds-text-caption select-none\">{label}</span>}\n <div className={cx('flex-1 border-t border-border', variantCls)} />\n </div>\n )\n }\n\n return (\n <div\n className={cx('h-px w-full', variant === 'solid' ? 'bg-border/50' : cx('border-t border-border', variantCls), className)}\n data-component=\"divider\"\n ref={ref}\n {...props}\n />\n )\n },\n)\n\nexport { Divider, dividerVariants }\nexport type { DividerProps }\n","import { cva } from 'class-variance-authority'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst dotVariants = cva('inline-block shrink-0 gds-radius-badge', {\n defaultVariants: {\n color: 'accent',\n size: 'default',\n },\n variants: {\n color: {\n accent: 'bg-accent',\n danger: 'bg-danger',\n muted: 'bg-fg-muted/30',\n success: 'bg-success',\n warning: 'bg-warning',\n },\n size: {\n default: 'h-2 w-2',\n lg: 'h-3 w-3',\n sm: 'h-1.5 w-1.5',\n },\n },\n})\n\ntype DotProps = React.HTMLAttributes<HTMLSpanElement> &\n VariantProps<typeof dotVariants> & {\n label?: string\n pulse?: boolean\n }\n\nexport const Dot = forwardRef<HTMLSpanElement, DotProps>(\n function Dot({ className, color, label, pulse = false, size, ...props }, ref) {\n return (\n <span\n className={cx('relative inline-flex items-center', label !== undefined && 'gds-gap-sm', className)}\n data-component=\"dot\"\n ref={ref}\n {...props}\n >\n <span className={dotVariants({ color, size })} />\n {pulse && (\n <span\n className={cx(\n 'absolute inset-0 animate-ping gds-radius-badge opacity-40',\n dotVariants({ color, size }),\n )}\n />\n )}\n {label !== undefined && (\n <span className=\"gds-text-label text-fg-muted\">{label}</span>\n )}\n </span>\n )\n },\n)\n\nexport { dotVariants }\nexport type { DotProps }\n","import type { CSSProperties, ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype FocusRingProps = {\n children: ReactNode\n color?: string\n width?: number\n offset?: number\n className?: string\n}\n\nconst FocusRing = forwardRef<HTMLSpanElement, FocusRingProps>(function FocusRing(\n { children, color = 'var(--gds-accent)', width = 2, offset = 2, className },\n ref,\n) {\n const style: CSSProperties = {\n '--focus-ring-color': color,\n '--focus-ring-width': `${width}px`,\n '--focus-ring-offset': `${offset}px`,\n } as CSSProperties\n\n return (\n <span\n ref={ref}\n className={cx(\n 'relative inline-flex [&:focus-within]:outline [&:focus-within]:outline-[length:var(--focus-ring-width)] [&:focus-within]:outline-[color:var(--focus-ring-color)] [&:focus-within]:outline-offset-[var(--focus-ring-offset)]',\n className,\n )}\n data-component=\"focus-ring\"\n style={style}\n >\n {children}\n </span>\n )\n})\n\nexport { FocusRing }\nexport type { FocusRingProps }\n","// glow-effect — container that adds a colored glow/aura behind its content via box-shadow\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype GlowIntensity = 'sm' | 'default' | 'lg'\n\ntype IntensityConfig = {\n blur: number\n opacity: number\n spread: number\n}\n\nconst intensityMap: Record<GlowIntensity, IntensityConfig> = {\n sm: { blur: 20, opacity: 15, spread: 4 },\n default: { blur: 32, opacity: 18, spread: 8 },\n lg: { blur: 48, opacity: 25, spread: 12 },\n}\n\nfunction buildShadow(color: string, config: IntensityConfig): string {\n const outer = `0 0 ${config.blur}px ${config.spread}px color-mix(in srgb, ${color} ${config.opacity}%, transparent)`\n const innerBlur = Math.round(config.blur * 0.4)\n const innerSpread = Math.round(config.spread * 0.5)\n const innerOpacity = Math.round(config.opacity * 1.5)\n const inner = `0 0 ${innerBlur}px ${innerSpread}px color-mix(in srgb, ${color} ${innerOpacity}%, transparent)`\n return `${outer}, ${inner}`\n}\n\nexport type GlowEffectProps = {\n children: React.ReactNode\n className?: string\n color?: string\n intensity?: GlowIntensity\n radius?: number\n}\n\nexport const GlowEffect = forwardRef<HTMLDivElement, GlowEffectProps>(\n function GlowEffect(\n { children, className, color = 'var(--gds-accent)', intensity = 'default', radius },\n ref,\n ) {\n const config = intensityMap[intensity]\n return (\n <div\n ref={ref}\n data-component=\"glow-effect\"\n className={cx('relative', className)}\n style={{\n borderRadius: radius !== undefined ? `${radius}px` : undefined,\n boxShadow: buildShadow(color, config),\n }}\n >\n {children}\n </div>\n )\n },\n)\n","// gradient-border — container with a gradient border via background-clip trick\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\nexport type GradientBorderProps = {\n children: React.ReactNode\n gradient?: string\n width?: number\n radius?: number\n className?: string\n}\n\nexport const GradientBorder = forwardRef<HTMLDivElement, GradientBorderProps>(\n function GradientBorder(\n {\n children,\n gradient = 'linear-gradient(135deg, var(--gds-accent), var(--gds-success))',\n width = 1,\n radius = 12,\n className,\n },\n ref,\n ) {\n const innerRadius = Math.max(0, radius - width)\n\n return (\n <div\n ref={ref}\n data-component=\"gradient-border\"\n className={cx(className)}\n style={{ background: gradient, padding: width, borderRadius: radius }}\n >\n <div\n className=\"bg-bg\"\n style={{ borderRadius: innerRadius }}\n >\n {children}\n </div>\n </div>\n )\n },\n)\n","// loading — loading indicator variants (dots, bars, pulse, ring, wave)\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype LoadingSize = 'default' | 'lg' | 'sm'\n\ntype LoadingProps = {\n className?: string\n size?: LoadingSize\n}\n\nconst sizeClasses: Record<LoadingSize, { container: string; dot: string }> = {\n default: { container: 'gap-1.5', dot: 'h-2 w-2' },\n lg: { container: 'gap-2', dot: 'h-3 w-3' },\n sm: { container: 'gap-1', dot: 'h-1.5 w-1.5' },\n}\n\nconst barSizeClasses: Record<LoadingSize, { bar: string; container: string }> = {\n default: { bar: 'w-1 h-4', container: 'gap-1 h-4' },\n lg: { bar: 'w-1.5 h-6', container: 'gap-1.5 h-6' },\n sm: { bar: 'w-0.5 h-3', container: 'gap-0.5 h-3' },\n}\n\nconst pulseSizeClasses: Record<LoadingSize, string> = {\n default: 'h-4 w-4',\n lg: 'h-6 w-6',\n sm: 'h-3 w-3',\n}\n\nconst ringSizeClasses: Record<LoadingSize, string> = {\n default: 'h-4 w-4 border-2',\n lg: 'h-6 w-6 border-[3px]',\n sm: 'h-3 w-3 border-[1.5px]',\n}\n\nexport const LoadingDots = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingDots({ className, size = 'default' }, ref) {\n const s = sizeClasses[size]\n return (\n <div\n className={cx('inline-flex items-center', s.container, className)}\n data-component=\"loading-dots\"\n ref={ref}\n role=\"status\"\n >\n {[0, 1, 2].map((i) => (\n <span\n className={cx('rounded-full bg-accent', s.dot)}\n key={i}\n style={{\n animation: 'loading-dots 1.4s infinite ease-in-out both',\n animationDelay: `${i * 0.16}s`,\n }}\n />\n ))}\n </div>\n )\n },\n)\n\nexport const LoadingBars = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingBars({ className, size = 'default' }, ref) {\n const s = barSizeClasses[size]\n return (\n <div\n className={cx('inline-flex items-center', s.container, className)}\n data-component=\"loading-bars\"\n ref={ref}\n role=\"status\"\n >\n {[0, 1, 2, 3, 4].map((i) => (\n <span\n className={cx('rounded-sm bg-accent', s.bar)}\n key={i}\n style={{\n animation: 'loading-bars 1.2s infinite ease-in-out',\n animationDelay: `${i * 0.1}s`,\n }}\n />\n ))}\n </div>\n )\n },\n)\n\nexport const LoadingPulse = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingPulse({ className, size = 'default' }, ref) {\n return (\n <div\n className={cx('inline-flex items-center justify-center', className)}\n data-component=\"loading-pulse\"\n ref={ref}\n role=\"status\"\n >\n <span\n className={cx('rounded-full bg-accent', pulseSizeClasses[size])}\n style={{ animation: 'loading-pulse 2s infinite ease-in-out' }}\n />\n </div>\n )\n },\n)\n\nexport const LoadingRing = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingRing({ className, size = 'default' }, ref) {\n return (\n <div\n className={cx('inline-flex items-center justify-center', className)}\n data-component=\"loading-ring\"\n ref={ref}\n role=\"status\"\n >\n <span\n className={cx(\n 'animate-spin rounded-full border-accent border-t-transparent',\n ringSizeClasses[size],\n )}\n />\n </div>\n )\n },\n)\n\nexport const LoadingWave = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingWave({ className, size = 'default' }, ref) {\n const s = sizeClasses[size]\n return (\n <div\n className={cx('inline-flex items-end', s.container, className)}\n data-component=\"loading-wave\"\n ref={ref}\n role=\"status\"\n >\n {[0, 1, 2, 3, 4].map((i) => (\n <span\n className={cx('rounded-full bg-fg-muted', s.dot)}\n key={i}\n style={{\n animation: 'loading-wave 1.2s infinite ease-in-out',\n animationDelay: `${i * 0.1}s`,\n }}\n />\n ))}\n </div>\n )\n },\n)\n\nexport type { LoadingProps, LoadingSize }\n","// number-stepper — increment/decrement buttons for number-input\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype NumberStepperProps = {\n direction: 'decrement' | 'increment'\n disabled?: boolean\n onClick: () => void\n}\n\nconst btnBase =\n 'flex items-center justify-center select-none px-2 text-fg-muted hover:text-fg hover:bg-bg-tertiary transition-colors disabled:cursor-not-allowed disabled:opacity-50'\n\nconst NumberStepper = forwardRef<HTMLButtonElement, NumberStepperProps>(function NumberStepper(\n { direction, disabled, onClick },\n ref,\n) {\n const isDecrement = direction === 'decrement'\n return (\n <button\n ref={ref}\n aria-label={direction}\n className={cx(\n btnBase,\n isDecrement ? 'rounded-l-[inherit] border-r border-border' : 'rounded-r-[inherit] border-l border-border',\n )}\n disabled={disabled}\n onClick={onClick}\n tabIndex={-1}\n type=\"button\"\n >\n {isDecrement ? '-' : '+'}\n </button>\n )\n})\n\nexport { NumberStepper }\nexport type { NumberStepperProps }\n","import { cva } from 'class-variance-authority'\nimport { forwardRef, useCallback } from 'react'\n\nimport { cx } from '../utils/cx'\nimport { glassClass } from '../utils/glass'\nimport type { VariantProps } from '../utils/types'\nimport { NumberStepper } from './number-stepper'\n\nconst numberInputVariants = cva(\n 'flex items-center gds-radius-input border bg-bg text-fg transition-colors ' +\n '[&:has(input:focus-visible)]:ring-2 [&:has(input:focus-visible)]:ring-accent [&:has(input:focus-visible)]:ring-offset-1 [&:has(input:focus-visible)]:ring-offset-bg',\n {\n compoundVariants: [\n {\n error: true,\n className:\n '[&:has(input:focus-visible)]:ring-danger',\n },\n ],\n defaultVariants: {\n error: false,\n inputSize: 'default',\n },\n variants: {\n error: {\n false: 'border-border hover:border-border-strong',\n true: 'border-danger',\n },\n inputSize: {\n default: 'gds-h gds-text-body',\n sm: 'gds-h-sm gds-text-label',\n },\n },\n },\n)\n\ntype NumberInputProps = VariantProps<typeof numberInputVariants> & {\n className?: string\n disabled?: boolean\n glass?: boolean\n max?: number\n min?: number\n onChange: (value: number | null) => void\n placeholder?: string\n prefix?: string\n step?: number\n suffix?: string\n value: number | null\n}\n\nfunction clamp(val: number, min?: number, max?: number): number {\n let result = val\n if (min !== undefined && result < min) {\n result = min\n }\n if (max !== undefined && result > max) {\n result = max\n }\n return result\n}\n\nconst NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n function NumberInput(\n { className, disabled, error, glass, inputSize, max, min, onChange, placeholder, prefix, step = 1, suffix, value },\n ref,\n ) {\n const handleDecrement = useCallback(() => {\n const base = value ?? 0\n onChange(clamp(base - step, min, max))\n }, [value, step, min, max, onChange])\n\n const handleIncrement = useCallback(() => {\n const base = value ?? 0\n onChange(clamp(base + step, min, max))\n }, [value, step, min, max, onChange])\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n if (raw === '') {\n onChange(null)\n return\n }\n const parsed = Number(raw)\n if (Number.isNaN(parsed)) {\n return\n }\n onChange(clamp(parsed, min, max))\n },\n [min, max, onChange],\n )\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n handleIncrement()\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n handleDecrement()\n }\n },\n [handleIncrement, handleDecrement],\n )\n\n return (\n <div\n className={cx(\n numberInputVariants({ error, inputSize }),\n glassClass(glass),\n glass === true && 'border-white/10 bg-bg/60',\n disabled === true && 'cursor-not-allowed opacity-50',\n className,\n )}\n data-component=\"number-input\"\n >\n <NumberStepper direction=\"decrement\" disabled={disabled} onClick={handleDecrement} />\n {prefix !== undefined && <span className=\"shrink-0 select-none pl-1 text-fg-muted/50\">{prefix}</span>}\n <input\n className={cx(\n 'min-w-0 flex-1 bg-transparent text-center outline-none placeholder:text-fg-muted/50',\n '[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none',\n )}\n disabled={disabled}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={ref}\n type=\"number\"\n value={value ?? ''}\n />\n {suffix !== undefined && <span className=\"shrink-0 select-none pr-1 text-fg-muted/50\">{suffix}</span>}\n <NumberStepper direction=\"increment\" disabled={disabled} onClick={handleIncrement} />\n </div>\n )\n },\n)\n\nexport { NumberInput,numberInputVariants }\nexport type { NumberInputProps }\n","import { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport { glassClass } from '../utils/glass'\nimport { renderPortal } from '../utils/portal'\n\ntype ScreenOverlayProps = {\n visible: boolean\n glass?: boolean\n onClick?: () => void\n className?: string\n}\n\nconst ScreenOverlayInner = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n function ScreenOverlayInner({ visible, glass, onClick, className }, ref) {\n if (!visible) return null\n\n return (\n <div\n className={cx(\n 'fixed inset-0 z-40',\n glass === true ? glassClass(true) : 'bg-black/50',\n className,\n )}\n data-component=\"screen-overlay\"\n onClick={onClick}\n ref={ref}\n />\n )\n },\n)\n\nexport const ScreenOverlay = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n function ScreenOverlay(props, ref) {\n return renderPortal(<ScreenOverlayInner ref={ref} {...props} />)\n },\n)\n\nexport type { ScreenOverlayProps }\n","import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype ScrollAreaProps = React.HTMLAttributes<HTMLDivElement> & {\n children: ReactNode\n maxHeight?: number | string\n orientation?: 'both' | 'horizontal' | 'vertical'\n}\n\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n function ScrollArea(\n { children, className, maxHeight, orientation = 'vertical', style, ...props },\n ref,\n ) {\n return (\n <div\n className={cx(\n orientation === 'vertical' && 'overflow-x-hidden overflow-y-auto',\n orientation === 'horizontal' && 'overflow-x-auto overflow-y-hidden',\n orientation === 'both' && 'overflow-auto',\n className,\n )}\n data-component=\"scroll-area\"\n ref={ref}\n style={{\n ...style,\n maxHeight:\n maxHeight !== undefined\n ? typeof maxHeight === 'number'\n ? `${maxHeight}px`\n : maxHeight\n : undefined,\n }}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nexport type { ScrollAreaProps }\n","// shimmer — skeleton shimmer placeholder effect\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype ShimmerProps = React.HTMLAttributes<HTMLDivElement> & {\n height?: string\n rounded?: boolean\n width?: string\n}\n\nexport const Shimmer = forwardRef<HTMLDivElement, ShimmerProps>(\n function Shimmer({ className, height = '20px', rounded = false, width = '100%', ...props }, ref) {\n return (\n <div\n className={cx(\n 'relative overflow-hidden bg-fg-muted/10',\n rounded ? 'rounded-full' : 'rounded-md',\n className,\n )}\n data-component=\"shimmer\"\n ref={ref}\n style={{ width, height }}\n {...props}\n >\n <div className=\"absolute inset-0 animate-[shimmer_1.5s_ease-in-out_infinite] bg-gradient-to-r from-transparent via-fg-muted/5 to-transparent\" />\n </div>\n )\n },\n)\n\nexport type { ShimmerProps }\n","import { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype SkipNavProps = {\n targetId?: string\n label?: string\n className?: string\n}\n\nconst SkipNav = forwardRef<HTMLAnchorElement, SkipNavProps>(function SkipNav(\n { targetId = 'main-content', label = 'Skip to content', className },\n ref,\n) {\n return (\n <a\n ref={ref}\n className={cx(\n 'absolute left-2 top-2 z-50 -translate-y-full rounded bg-accent px-3 py-2 text-sm font-medium text-accent-fg transition-transform focus:translate-y-0 focus:outline-none',\n className,\n )}\n data-component=\"skip-nav\"\n href={`#${targetId}`}\n >\n {label}\n </a>\n )\n})\n\nexport { SkipNav }\nexport type { SkipNavProps }\n","// slider — native range input with value display\nimport { forwardRef } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\n\ntype SliderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> & {\n disabled?: boolean\n max?: number\n min?: number\n onChange?: (value: number) => void\n step?: number\n value?: number\n}\n\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n function Slider(\n { className, disabled = false, max = 100, min = 0, onChange, step = 1, value = 0, ...props },\n ref,\n ) {\n return (\n <div className={cx('flex items-center gap-3', className)} data-component=\"slider\" {...props}>\n <input\n className={cx(\n 'h-1.5 w-full cursor-pointer appearance-none rounded-full bg-bg-tertiary accent-accent',\n disabled && 'cursor-not-allowed opacity-50',\n focusCls,\n )}\n disabled={disabled}\n max={max}\n min={min}\n onChange={(e) => onChange?.(Number(e.target.value))}\n ref={ref}\n step={step}\n type=\"range\"\n value={value}\n />\n <span className=\"w-8 shrink-0 text-right font-mono text-xs text-fg-muted tabular-nums\">\n {value}\n </span>\n </div>\n )\n },\n)\n\nexport type { SliderProps }\n","// truncate — text truncation with ellipsis, single or multi-line clamp\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\nexport type TruncateProps = {\n children: ReactNode\n lines?: number\n expanded?: boolean\n onToggle?: () => void\n className?: string\n}\n\nexport const Truncate = forwardRef<HTMLDivElement, TruncateProps>(\n function Truncate(\n { children, lines = 1, expanded = false, onToggle, className },\n ref,\n ) {\n const shouldClamp = !expanded\n const isSingleLine = lines === 1\n const isInteractive = onToggle !== undefined\n\n const clampStyle = !isSingleLine && shouldClamp\n ? {\n display: '-webkit-box' as const,\n WebkitLineClamp: lines,\n WebkitBoxOrient: 'vertical' as const,\n overflow: 'hidden' as const,\n }\n : undefined\n\n return (\n <div\n ref={ref}\n className={cx(\n isSingleLine && shouldClamp && 'truncate',\n isInteractive && 'cursor-pointer',\n className,\n )}\n style={clampStyle}\n onClick={isInteractive ? onToggle : undefined}\n data-component=\"truncate\"\n data-expanded={expanded ? 'true' : undefined}\n role={isInteractive ? 'button' : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n >\n {children}\n </div>\n )\n },\n)\n","import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { srOnly } from '../utils/a11y'\nimport { cx } from '../utils/cx'\n\ntype VisuallyHiddenProps = {\n as?: 'div' | 'span'\n children: ReactNode\n className?: string\n}\n\nconst VisuallyHidden = forwardRef<HTMLElement, VisuallyHiddenProps>(function VisuallyHidden(\n { as: Tag = 'span', children, className },\n ref,\n) {\n return (\n <Tag ref={ref as never} className={cx(srOnly, className)} data-component=\"visually-hidden\">\n {children}\n </Tag>\n )\n})\n\nexport { VisuallyHidden }\nexport type { VisuallyHiddenProps }\n"],"mappings":"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"}
@@ -7,6 +7,7 @@ export declare const AvatarBadge: import("react").ForwardRefExoticComponent<impo
7
7
  size?: "xs" | "sm" | "default" | "lg" | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
9
9
  glass?: boolean;
10
+ loading?: boolean;
10
11
  name?: string;
11
12
  src?: string;
12
13
  status?: import("./avatar").AvatarStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"avatar-badge.d.ts","sourceRoot":"","sources":["../../src/l3-atoms/avatar-badge.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,KAAK,gBAAgB,GAAG,WAAW,GAAG;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,WAAW;;;;;;;;YAJd,MAAM;eACH,MAAM;mDAoBlB,CAAA;AAED,YAAY,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"avatar-badge.d.ts","sourceRoot":"","sources":["../../src/l3-atoms/avatar-badge.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,KAAK,gBAAgB,GAAG,WAAW,GAAG;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,WAAW;;;;;;;;;YAJd,MAAM;eACH,MAAM;mDAoBlB,CAAA;AAED,YAAY,EAAE,gBAAgB,EAAE,CAAA"}
@@ -5,6 +5,7 @@ declare const avatarVariants: (props?: ({
5
5
  type AvatarStatus = 'away' | 'busy' | 'offline' | 'online';
6
6
  type AvatarProps = React.HTMLAttributes<HTMLSpanElement> & VariantProps<typeof avatarVariants> & {
7
7
  glass?: boolean;
8
+ loading?: boolean;
8
9
  name?: string;
9
10
  src?: string;
10
11
  status?: AvatarStatus;
@@ -13,6 +14,7 @@ export declare const Avatar: import("react").ForwardRefExoticComponent<import("r
13
14
  size?: "xs" | "sm" | "default" | "lg" | null | undefined;
14
15
  } & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
15
16
  glass?: boolean;
17
+ loading?: boolean;
16
18
  name?: string;
17
19
  src?: string;
18
20
  status?: AvatarStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/l3-atoms/avatar.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,QAAA,MAAM,cAAc;;8EAanB,CAAA;AAmCD,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE1D,KAAK,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,GACtD,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB,CAAA;AAEH,eAAO,MAAM,MAAM;;;YANP,OAAO;WACR,MAAM;UACP,MAAM;aACH,YAAY;mDAsCxB,CAAA;AAED,KAAK,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,WAAW;UAHhB,MAAM;kDAyBb,CAAA;AAED,OAAO,EAAE,cAAc,EAAE,CAAA;AACzB,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/l3-atoms/avatar.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,QAAA,MAAM,cAAc;;8EAanB,CAAA;AAmCD,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE1D,KAAK,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,GACtD,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB,CAAA;AAEH,eAAO,MAAM,MAAM;;;YAPP,OAAO;cACL,OAAO;WACV,MAAM;UACP,MAAM;aACH,YAAY;mDAwCxB,CAAA;AAED,KAAK,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,WAAW;UAHhB,MAAM;kDAyBb,CAAA;AAED,OAAO,EAAE,cAAc,EAAE,CAAA;AACzB,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA"}
@@ -11,5 +11,12 @@ export declare const Checkbox: import("react").ForwardRefExoticComponent<Omit<im
11
11
  label?: string;
12
12
  onChange?: (checked: boolean) => void;
13
13
  } & import("react").RefAttributes<HTMLButtonElement>>;
14
+ declare const checkboxVariants: {
15
+ readonly state: {
16
+ readonly checked: "border-accent bg-accent";
17
+ readonly unchecked: "border-border bg-bg hover:border-accent/50";
18
+ };
19
+ };
20
+ export { checkboxVariants };
14
21
  export type { CheckboxProps };
15
22
  //# sourceMappingURL=checkbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/l3-atoms/checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,KAAK,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,GAAG;IACrF,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC,CAAA;AAWD,eAAO,MAAM,QAAQ;cAfT,OAAO;gBACL,SAAS;YACb,MAAM;eACH,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;qDAqDtC,CAAA;AAED,YAAY,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/l3-atoms/checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,KAAK,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,GAAG;IACrF,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC,CAAA;AAWD,eAAO,MAAM,QAAQ;cAfT,OAAO;gBACL,SAAS;YACb,MAAM;eACH,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;qDAqDtC,CAAA;AAED,QAAA,MAAM,gBAAgB;;;;;CAKZ,CAAA;AAEV,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAC3B,YAAY,EAAE,aAAa,EAAE,CAAA"}
@@ -13,7 +13,7 @@ export { Blinking } from './blinking';
13
13
  export type { BounceDotProps } from './bounce-dot';
14
14
  export { BounceDot } from './bounce-dot';
15
15
  export type { CheckboxProps } from './checkbox';
16
- export { Checkbox } from './checkbox';
16
+ export { Checkbox, checkboxVariants } from './checkbox';
17
17
  export type { CheckboxGroupOption, CheckboxGroupProps } from './checkbox-group';
18
18
  export { CheckboxGroup } from './checkbox-group';
19
19
  export type { ChipProps } from './chip';
@@ -109,9 +109,9 @@ export { Sparkle } from './sparkle';
109
109
  export type { StarRatingProps } from './star-rating';
110
110
  export { StarRating } from './star-rating';
111
111
  export type { StatusBadgeProps, StatusType } from './status-badge';
112
- export { StatusBadge } from './status-badge';
112
+ export { StatusBadge, statusBadgeVariants } from './status-badge';
113
113
  export type { StatusDotProps, StatusDotStatus } from './status-dot';
114
- export { StatusDot } from './status-dot';
114
+ export { StatusDot, statusDotVariants } from './status-dot';
115
115
  export type { SwitchProps } from './switch';
116
116
  export { Switch, switchVariants } from './switch';
117
117
  export type { SwitchGroupItem, SwitchGroupProps } from './switch-group';
@@ -125,7 +125,7 @@ export { TextareaCounter } from './textarea-counter';
125
125
  export type { ThemeToggleProps } from './theme-toggle';
126
126
  export { ThemeToggle } from './theme-toggle';
127
127
  export type { ToggleGroupItem, ToggleGroupProps, ToggleGroupSize } from './toggle-group';
128
- export { ToggleGroup } from './toggle-group';
128
+ export { ToggleGroup, toggleGroupVariants, toggleItemVariants } from './toggle-group';
129
129
  export type { TooltipProps } from './tooltip';
130
130
  export { Tooltip } from './tooltip';
131
131
  export type { TrendArrowDirection, TrendArrowProps, TrendArrowSize } from './trend-arrow';