dxd-style-code 0.1.9 → 0.1.11

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 (104) hide show
  1. package/dist/dxd-style-code.js +1861 -1862
  2. package/dist/dxd-style-code.umd.cjs +2 -2
  3. package/dist/style.css +1 -1
  4. package/package.json +1 -1
  5. package/src/components/atoms/DXAvatar/DXAvatar.vue +1 -1
  6. package/src/components/atoms/DXBadge/DXBadge.vue +3 -3
  7. package/src/components/{typography → atoms}/DXBlockquote/DXBlockquote.stories.js +1 -1
  8. package/src/components/{layout → atoms}/DXBox/DXBox.stories.js +1 -1
  9. package/src/components/{layout → atoms}/DXBox/DXBox.vue +2 -2
  10. package/src/components/atoms/DXButton/DXButton.vue +3 -3
  11. package/src/components/atoms/DXCard/DXCard.vue +1 -1
  12. package/src/components/atoms/DXCheckbox/DXCheckbox.vue +2 -2
  13. package/src/components/{typography → atoms}/DXCode/DXCode.stories.js +1 -1
  14. package/src/components/{layout → atoms}/DXContainer/DXContainer.stories.js +1 -1
  15. package/src/components/{layout → atoms}/DXContainer/DXContainer.vue +2 -2
  16. package/src/components/atoms/DXDivider/DXDivider.vue +2 -2
  17. package/src/components/atoms/DXDropdownItem/DXDropdownItem.vue +3 -3
  18. package/src/components/{layout → atoms}/DXFlex/DXFlex.stories.js +1 -1
  19. package/src/components/{layout → atoms}/DXFlex/DXFlex.vue +2 -2
  20. package/src/components/{layout → atoms}/DXGrid/DXGrid.stories.js +1 -1
  21. package/src/components/{layout → atoms}/DXGrid/DXGrid.vue +3 -3
  22. package/src/components/{typography → atoms}/DXHeading/DXHeading.stories.js +1 -1
  23. package/src/components/{typography → atoms}/DXHeading/DXHeading.vue +1 -1
  24. package/src/components/atoms/DXIcon/DXIcon.vue +2 -2
  25. package/src/components/atoms/DXIconWrapper/DXIconWrapper.vue +2 -2
  26. package/src/components/atoms/DXInputAddon/DXInputAddon.vue +1 -1
  27. package/src/components/{typography → atoms}/DXLabel/DXLabel.stories.js +1 -1
  28. package/src/components/{typography → atoms}/DXLabel/DXLabel.vue +1 -1
  29. package/src/components/atoms/DXLink/DXLink.vue +3 -3
  30. package/src/components/{typography → atoms}/DXList/DXList.stories.js +1 -1
  31. package/src/components/atoms/DXLoader/DXLoader.vue +2 -2
  32. package/src/components/atoms/DXProgress/DXProgress.vue +3 -3
  33. package/src/components/atoms/DXQuote/DXQuote.vue +1 -1
  34. package/src/components/atoms/DXRadio/DXRadio.vue +2 -2
  35. package/src/components/atoms/DXSlider/DXSlider.vue +3 -3
  36. package/src/components/{layout → atoms}/DXSpacer/DXSpacer.stories.js +1 -1
  37. package/src/components/{layout → atoms}/DXSpacer/DXSpacer.vue +1 -1
  38. package/src/components/{layout → atoms}/DXStack/DXStack.stories.js +1 -1
  39. package/src/components/{layout → atoms}/DXStack/DXStack.vue +2 -2
  40. package/src/components/atoms/DXTags/DXTags.vue +3 -3
  41. package/src/components/{typography → atoms}/DXText/DXText.stories.js +1 -1
  42. package/src/components/{typography → atoms}/DXText/DXText.vue +1 -1
  43. package/src/components/atoms/DXToast/DXToast.vue +1 -1
  44. package/src/components/atoms/DXToggle/DXToggle.vue +4 -4
  45. package/src/components/atoms/DXToggleButton/DXToggleButton.vue +3 -3
  46. package/src/components/atoms/DXTooltip/DXTooltip.vue +3 -3
  47. package/src/components/atoms/index.js +13 -1
  48. package/src/components/index.js +1 -7
  49. package/src/components/molecules/DXDataFilter/DXDataFilter.vue +2 -2
  50. package/src/components/molecules/DXInput/DXInput.vue +2 -2
  51. package/src/components/molecules/DXMenu/DXMenu.vue +1 -1
  52. package/src/components/molecules/DXPasswordInput/DXPasswordInput.vue +1 -1
  53. package/src/components/molecules/DXRating/DXRating.vue +2 -2
  54. package/src/components/molecules/DXSearchBar/DXSearchBar.vue +2 -2
  55. package/src/components/molecules/DXSelect/DXSelect.vue +2 -2
  56. package/src/components/molecules/DXStatCard/DXStatCard.vue +4 -4
  57. package/src/components/molecules/DXTextarea/DXTextarea.vue +1 -1
  58. package/src/components/organisms/DXAccordion/DXAccordion.vue +2 -2
  59. package/src/components/organisms/DXAppLayout/DXAppLayout.stories.js +1 -1
  60. package/src/components/organisms/DXAppLayout/DXAppLayout.vue +3 -3
  61. package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.vue +2 -2
  62. package/src/components/organisms/DXChartContainer/DXChartContainer.vue +2 -2
  63. package/src/components/organisms/DXChatInterface/DXChatInterface.vue +2 -2
  64. package/src/components/organisms/DXCommentSection/DXCommentSection.vue +2 -2
  65. package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.vue +2 -2
  66. package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.vue +2 -2
  67. package/src/components/organisms/DXDataTable/DXDataTable.vue +1 -1
  68. package/src/components/organisms/DXFormWizard/DXFormWizard.vue +1 -1
  69. package/src/components/organisms/DXHeaderBar/DXHeaderBar.vue +2 -2
  70. package/src/components/organisms/DXMediaGallery/DXMediaGallery.vue +3 -3
  71. package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.vue +2 -2
  72. package/src/components/organisms/DXReportGenerator/DXReportGenerator.vue +2 -2
  73. package/src/components/organisms/DXSettingsPanel/DXSettingsPanel.vue +2 -2
  74. package/src/components/organisms/DXSidebar/DXSidebar.vue +1 -1
  75. package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.vue +1 -1
  76. package/src/components/organisms/DXSidebarMenu/DXSidebarMenuItem.vue +1 -1
  77. package/src/components/organisms/DXTable/DXTable.vue +6 -6
  78. package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.vue +2 -2
  79. package/src/components/organisms/DXWizard/DXWizard.vue +2 -2
  80. package/src/components/utilities/DXAnimatePresence/DXAnimatePresence.vue +2 -2
  81. package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.stories.js +1 -1
  82. package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.vue +1 -1
  83. package/src/components/utilities/DXObserver/DXObserver.vue +1 -1
  84. package/src/components/utilities/DXStaggeredAnimation/DXStaggeredAnimation.vue +1 -1
  85. package/src/components/utilities/DXThemeProvider/DXThemeProvider.vue +1 -1
  86. package/src/components/utilities/DXTransitionGroup/DXTransitionGroup.vue +2 -2
  87. package/src/index.js +1 -7
  88. package/src/components/layout/index.js +0 -8
  89. package/src/components/typography/index.js +0 -8
  90. /package/src/components/{typography → atoms}/DXBlockquote/DXBlockquote.vue +0 -0
  91. /package/src/components/{typography → atoms}/DXBlockquote/index.js +0 -0
  92. /package/src/components/{layout → atoms}/DXBox/index.js +0 -0
  93. /package/src/components/{typography → atoms}/DXCode/DXCode.vue +0 -0
  94. /package/src/components/{typography → atoms}/DXCode/index.js +0 -0
  95. /package/src/components/{layout → atoms}/DXContainer/index.js +0 -0
  96. /package/src/components/{layout → atoms}/DXFlex/index.js +0 -0
  97. /package/src/components/{layout → atoms}/DXGrid/index.js +0 -0
  98. /package/src/components/{typography → atoms}/DXHeading/index.js +0 -0
  99. /package/src/components/{typography → atoms}/DXLabel/index.js +0 -0
  100. /package/src/components/{typography → atoms}/DXList/DXList.vue +0 -0
  101. /package/src/components/{typography → atoms}/DXList/index.js +0 -0
  102. /package/src/components/{layout → atoms}/DXSpacer/index.js +0 -0
  103. /package/src/components/{layout → atoms}/DXStack/index.js +0 -0
  104. /package/src/components/{typography → atoms}/DXText/index.js +0 -0
@@ -1,4 +1,4 @@
1
- import { createElementBlock as r, openBlock as o, createElementVNode as f, computed as d, createBlock as L, resolveDynamicComponent as ve, normalizeClass as p, withCtx as j, renderSlot as N, createCommentVNode as b, createTextVNode as G, toDisplayString as T, normalizeStyle as we, ref as H, watch as se, onBeforeUnmount as nt, Teleport as wl, createVNode as P, Transition as Oe, normalizeProps as Nt, guardReactiveProps as Rt, withKeys as me, withModifiers as ce, mergeProps as Qe, useSlots as ft, inject as $t, unref as O, onMounted as Ce, onUnmounted as Ht, Fragment as K, renderList as J, provide as Ye, nextTick as qe, createSlots as da, withDirectives as Ze, vShow as ua, isRef as yt, vModelText as aa, vModelSelect as on, resolveComponent as kl, defineComponent as sn, h as ga, getCurrentInstance as rn, useCssVars as Cl, TransitionGroup as dn } from "vue";
1
+ import { createElementBlock as r, openBlock as o, createElementVNode as f, computed as d, createBlock as L, resolveDynamicComponent as ve, normalizeClass as p, ref as H, watch as se, toDisplayString as T, onBeforeUnmount as nt, Teleport as wl, createVNode as P, Transition as Oe, normalizeProps as Nt, guardReactiveProps as Rt, withCtx as j, createCommentVNode as b, renderSlot as N, createTextVNode as G, withKeys as me, withModifiers as ce, mergeProps as Qe, useSlots as ft, inject as $t, unref as O, normalizeStyle as we, onMounted as Ce, onUnmounted as Ht, Fragment as K, renderList as J, provide as Ye, nextTick as qe, createSlots as da, withDirectives as Ze, vShow as ua, isRef as yt, vModelText as aa, vModelSelect as on, resolveComponent as kl, defineComponent as sn, h as ga, getCurrentInstance as rn, useCssVars as Cl, TransitionGroup as dn } from "vue";
2
2
  function un(e, a) {
3
3
  return o(), r("svg", {
4
4
  xmlns: "http://www.w3.org/2000/svg",
@@ -244,1726 +244,1221 @@ function bn(e, a) {
244
244
  })
245
245
  ]);
246
246
  }
247
- const de = {
248
- // Для Alert/Toast и общих компонентов
249
- default: {
250
- bg: "bg-slate-50",
251
- text: "text-slate-800",
252
- // Для Alert/Toast (используется в useVariantClasses)
253
- border: "border-slate-200",
254
- icon: null,
255
- iconColor: "text-slate-500",
256
- // Для тегов
257
- tag: "bg-slate-100 text-slate-800 border-slate-200",
258
- // Для прогресс-бара
259
- progress: "bg-slate-800",
260
- // Для divider
261
- divider: "border-slate-200",
262
- // Для лоадера
263
- loader: {
264
- border: "border-slate-300",
265
- borderTop: "border-t-slate-900",
266
- text: "text-slate-600"
247
+ function fe(e, a = "input") {
248
+ var l, n, s, i;
249
+ const t = {
250
+ button: {
251
+ xs: "h-7 px-2.5 py-1 text-xs",
252
+ sm: "h-8 px-3 py-1.5 text-xs",
253
+ md: "h-10 px-4 py-2.5 text-sm",
254
+ lg: "h-12 px-5 py-3 text-base",
255
+ xl: "h-14 px-6 py-3.5 text-lg"
267
256
  },
268
- // Для слайдера
269
- slider: {
270
- track: "bg-slate-200",
271
- thumb: "bg-slate-900",
272
- thumbHover: "bg-slate-800",
273
- tick: "bg-slate-400",
274
- text: "text-slate-700",
275
- textActive: "text-slate-900",
276
- textValue: "text-slate-900"
277
- }
278
- },
279
- slate: {
280
- bg: "bg-slate-50",
281
- text: "text-slate-800",
282
- border: "border-slate-200",
283
- icon: null,
284
- iconColor: "text-slate-500",
285
- // Для Checkbox
286
- checkbox: {
287
- unchecked: "border-slate-300 bg-white hover:border-slate-400",
288
- checked: "border-slate-700 bg-slate-700 hover:bg-slate-600",
289
- ring: "focus:ring-slate-900/10"
257
+ buttonIcon: {
258
+ xs: "h-7 w-7 text-xs",
259
+ sm: "h-8 w-8 text-xs",
260
+ md: "h-10 w-10 text-sm",
261
+ lg: "h-12 w-12 text-sm",
262
+ xl: "h-14 w-14 text-base"
290
263
  },
291
- // Для Radio
292
- radio: {
293
- unchecked: "border-slate-300 bg-white hover:border-slate-400",
294
- checked: "border-slate-700 bg-slate-50 hover:border-slate-600",
295
- ring: "focus:ring-slate-900/10",
296
- dot: "bg-slate-700"
264
+ input: {
265
+ xs: "h-7 px-2.5 py-1 text-xs",
266
+ sm: "h-8 px-3 py-1.5 text-xs",
267
+ md: "h-10 px-4 py-2.5 text-sm",
268
+ lg: "h-12 px-5 py-3 text-base",
269
+ xl: "h-14 px-6 py-3.5 text-lg"
297
270
  },
298
- // Для текста
299
- text: "text-slate-700",
300
- // Для тегов
301
- tag: "bg-slate-100 text-slate-800 border-slate-200",
302
- // Для прогресс-бара
303
- progress: "bg-slate-800",
304
- // Для divider
305
- divider: "border-slate-200",
306
- // Для лоадера
307
- loader: {
308
- border: "border-slate-300",
309
- borderTop: "border-t-slate-700",
310
- text: "text-slate-700"
271
+ icon: {
272
+ xs: "w-3 h-3",
273
+ sm: "w-4 h-4",
274
+ md: "w-5 h-5",
275
+ lg: "w-6 h-6",
276
+ xl: "w-8 h-8"
311
277
  },
312
- // Для слайдера
313
- slider: {
314
- track: "bg-slate-200",
315
- thumb: "bg-slate-700",
316
- thumbHover: "bg-slate-600",
317
- tick: "bg-slate-400",
318
- text: "text-slate-700",
319
- textActive: "text-slate-900",
320
- textValue: "text-slate-900"
278
+ text: {
279
+ xs: "text-xs",
280
+ sm: "text-sm",
281
+ md: "text-base",
282
+ lg: "text-lg",
283
+ xl: "text-xl"
321
284
  },
322
- // Для toggle
323
- toggle: {
324
- checked: "bg-slate-700",
325
- unchecked: "bg-slate-200",
326
- ring: "focus:ring-slate-700/10"
327
- }
328
- },
329
- primary: {
330
- bg: "bg-slate-50",
331
- text: "text-slate-800",
332
- border: "border-slate-200",
333
- icon: null,
334
- iconColor: "text-slate-500",
335
- // Для Checkbox
336
285
  checkbox: {
337
- unchecked: "border-slate-300 bg-white hover:border-slate-400",
338
- checked: "border-slate-900 bg-slate-900 hover:bg-slate-800",
339
- ring: "focus:ring-slate-900/10"
286
+ xs: "h-3 w-3",
287
+ sm: "h-4 w-4",
288
+ md: "h-5 w-5",
289
+ lg: "h-6 w-6",
290
+ xl: "h-6 w-6"
340
291
  },
341
- // Для Radio
342
292
  radio: {
343
- unchecked: "border-slate-300 bg-white hover:border-slate-400",
344
- checked: "border-slate-900 bg-slate-50 hover:border-slate-800",
345
- ring: "focus:ring-slate-900/10",
346
- dot: "bg-slate-900"
293
+ xs: "h-3 w-3",
294
+ sm: "h-3.5 w-3.5",
295
+ md: "h-4 w-4",
296
+ lg: "h-5 w-5",
297
+ xl: "h-6 w-6"
347
298
  },
348
- // Для текста
349
- text: "text-slate-900",
350
- // Для тегов
351
- tag: "bg-blue-100 text-blue-800 border-blue-200",
352
- // Для прогресс-бара
353
- progress: "bg-slate-800",
354
- // Для divider
355
- divider: "border-slate-200",
356
- // Для tooltip
357
- tooltip: "bg-slate-900 text-white",
358
- // Для лоадера
359
- loader: {
360
- border: "border-slate-300",
361
- borderTop: "border-t-slate-900",
362
- text: "text-slate-900"
299
+ avatar: {
300
+ xs: "h-6 w-6",
301
+ sm: "h-8 w-8",
302
+ md: "h-10 w-10",
303
+ lg: "h-12 w-12",
304
+ xl: "h-16 w-16"
363
305
  },
364
- // Для слайдера
365
- slider: {
366
- track: "bg-slate-200",
367
- thumb: "bg-slate-900",
368
- thumbHover: "bg-slate-800",
369
- tick: "bg-slate-400",
370
- text: "text-slate-700",
371
- textActive: "text-slate-900",
372
- textValue: "text-slate-900"
306
+ loader: {
307
+ xs: "w-2 h-2",
308
+ sm: "w-3 h-3",
309
+ md: "w-4 h-4",
310
+ lg: "w-5 h-5",
311
+ xl: "w-6 h-6"
373
312
  },
374
- // Для toggle
375
- toggle: {
376
- checked: "bg-slate-900",
377
- unchecked: "bg-slate-200",
378
- ring: "focus:ring-slate-900/10"
379
- }
380
- },
381
- info: {
382
- bg: "bg-blue-50",
383
- text: "text-blue-800",
384
- border: "border-blue-200",
385
- icon: Pa,
386
- iconColor: "text-blue-500",
387
- // Для Checkbox
388
- checkbox: {
389
- unchecked: "border-slate-300 bg-white hover:border-blue-400",
390
- checked: "border-blue-600 bg-blue-600 hover:bg-blue-500",
391
- ring: "focus:ring-blue-500/10"
313
+ progress: {
314
+ xs: "h-1",
315
+ sm: "h-2",
316
+ md: "h-3",
317
+ lg: "h-4"
392
318
  },
393
- // Для Radio
394
- radio: {
395
- unchecked: "border-slate-300 bg-white hover:border-blue-400",
396
- checked: "border-blue-600 bg-blue-50 hover:border-blue-500",
397
- ring: "focus:ring-blue-500/10",
398
- dot: "bg-blue-600"
319
+ inputAddon: {
320
+ xs: "h-7",
321
+ sm: "h-8",
322
+ md: "h-10",
323
+ lg: "h-12",
324
+ xl: "h-14"
399
325
  },
400
- // Для текста
401
- text: "text-blue-700",
402
- // Для тегов
403
- tag: "bg-cyan-100 text-cyan-800 border-cyan-200",
404
- // Для прогресс-бара
405
- progress: "bg-blue-500",
406
- // Для divider
407
- divider: "border-blue-200",
408
- // Для tooltip
409
- tooltip: "bg-blue-600 text-white",
410
- // Для лоадера
411
- loader: {
412
- border: "border-blue-300",
413
- borderTop: "border-t-blue-600",
414
- text: "text-blue-700"
326
+ sliderTrack: {
327
+ xs: "h-1",
328
+ // 4px
329
+ sm: "h-1.5",
330
+ // 6px
331
+ md: "h-2",
332
+ // 8px
333
+ lg: "h-2.5",
334
+ // 10px
335
+ xl: "h-3"
336
+ // 12px
415
337
  },
416
- // Для слайдера
417
- slider: {
418
- track: "bg-blue-200",
419
- thumb: "bg-blue-600",
420
- thumbHover: "bg-blue-500",
421
- tick: "bg-blue-400",
422
- text: "text-blue-700",
423
- textActive: "text-blue-900",
424
- textValue: "text-blue-900"
338
+ sliderThumb: {
339
+ xs: "w-3 h-3",
340
+ // 12px
341
+ sm: "w-4 h-4",
342
+ // 16px
343
+ md: "w-5 h-5",
344
+ // 20px
345
+ lg: "w-6 h-6",
346
+ // 24px
347
+ xl: "w-7 h-7"
348
+ // 28px
425
349
  },
426
- // Для toggle
427
- toggle: {
428
- checked: "bg-blue-600",
429
- unchecked: "bg-slate-200",
430
- ring: "focus:ring-blue-500/10"
431
- }
432
- },
433
- success: {
434
- bg: "bg-emerald-50",
435
- text: "text-emerald-800",
436
- border: "border-emerald-200",
437
- icon: ca,
438
- iconColor: "text-emerald-500",
439
- // Для Checkbox
440
- checkbox: {
441
- unchecked: "border-slate-300 bg-white hover:border-emerald-400",
442
- checked: "border-emerald-600 bg-emerald-600 hover:bg-emerald-500",
443
- ring: "focus:ring-emerald-500/10"
444
- },
445
- // Для Radio
446
- radio: {
447
- unchecked: "border-slate-300 bg-white hover:border-emerald-400",
448
- checked: "border-emerald-600 bg-emerald-50 hover:border-emerald-500",
449
- ring: "focus:ring-emerald-500/10",
450
- dot: "bg-emerald-600"
451
- },
452
- // Для текста
453
- text: "text-emerald-700",
454
- // Для тегов
455
- tag: "bg-green-100 text-green-800 border-green-200",
456
- // Для прогресс-бара
457
- progress: "bg-emerald-500",
458
- // Для divider
459
- divider: "border-emerald-200",
460
- // Для tooltip
461
- tooltip: "bg-emerald-600 text-white",
462
- // Для лоадера
463
- loader: {
464
- border: "border-emerald-300",
465
- borderTop: "border-t-emerald-600",
466
- text: "text-emerald-700"
350
+ spacing: {
351
+ none: "gap-0",
352
+ xs: "gap-1",
353
+ sm: "gap-2",
354
+ md: "gap-4",
355
+ lg: "gap-6",
356
+ xl: "gap-8"
467
357
  },
468
- // Для слайдера
469
- slider: {
470
- track: "bg-emerald-200",
471
- thumb: "bg-emerald-600",
472
- thumbHover: "bg-emerald-500",
473
- tick: "bg-emerald-400",
474
- text: "text-emerald-700",
475
- textActive: "text-emerald-900",
476
- textValue: "text-emerald-900"
358
+ tooltip: {
359
+ xs: "px-2 py-1 text-xs",
360
+ sm: "px-2.5 py-1.5 text-xs",
361
+ md: "px-3 py-2 text-sm",
362
+ lg: "px-4 py-3 text-base",
363
+ xl: "px-5 py-4 text-lg"
477
364
  },
478
- // Для toggle
479
365
  toggle: {
480
- checked: "bg-emerald-600",
481
- unchecked: "bg-slate-200",
482
- ring: "focus:ring-emerald-500/10"
483
- }
484
- },
485
- warning: {
486
- bg: "bg-amber-50",
487
- text: "text-amber-800",
488
- border: "border-amber-200",
489
- icon: Oa,
490
- iconColor: "text-amber-500",
491
- // Для Checkbox
492
- checkbox: {
493
- unchecked: "border-slate-300 bg-white hover:border-amber-400",
494
- checked: "border-amber-600 bg-amber-600 hover:bg-amber-500",
495
- ring: "focus:ring-amber-500/10"
496
- },
497
- // Для Radio
498
- radio: {
499
- unchecked: "border-slate-300 bg-white hover:border-amber-400",
500
- checked: "border-amber-600 bg-amber-50 hover:border-amber-500",
501
- ring: "focus:ring-amber-500/10",
502
- dot: "bg-amber-600"
503
- },
504
- // Для текста
505
- text: "text-amber-700",
506
- // Для тегов
507
- tag: "bg-yellow-100 text-yellow-800 border-yellow-200",
508
- // Для прогресс-бара
509
- progress: "bg-amber-500",
510
- // Для divider
511
- divider: "border-amber-200",
512
- // Для tooltip
513
- tooltip: "bg-amber-600 text-white",
514
- // Для лоадера
515
- loader: {
516
- border: "border-amber-300",
517
- borderTop: "border-t-amber-600",
518
- text: "text-amber-700"
519
- },
520
- // Для слайдера
521
- slider: {
522
- track: "bg-amber-200",
523
- thumb: "bg-amber-600",
524
- thumbHover: "bg-amber-500",
525
- tick: "bg-amber-400",
526
- text: "text-amber-700",
527
- textActive: "text-amber-900",
528
- textValue: "text-amber-900"
366
+ xs: { track: "h-4 w-7", thumb: "h-3 w-3" },
367
+ sm: { track: "h-5 w-9", thumb: "h-3.5 w-3.5" },
368
+ md: { track: "h-6 w-11", thumb: "h-4 w-4" },
369
+ lg: { track: "h-7 w-14", thumb: "h-5 w-5" },
370
+ xl: { track: "h-8 w-16", thumb: "h-6 w-6" }
529
371
  },
530
- // Для toggle
531
- toggle: {
532
- checked: "bg-amber-600",
533
- unchecked: "bg-slate-200",
534
- ring: "focus:ring-amber-500/10"
372
+ badge: {
373
+ sm: "px-2 py-1 text-[11px]",
374
+ md: "px-2.5 py-1.5 text-xs"
535
375
  }
536
- },
537
- danger: {
538
- bg: "bg-rose-50",
539
- text: "text-rose-800",
540
- border: "border-rose-200",
541
- icon: zl,
542
- iconColor: "text-rose-500",
543
- // Для Checkbox
544
- checkbox: {
545
- unchecked: "border-slate-300 bg-white hover:border-rose-400",
546
- checked: "border-rose-600 bg-rose-600 hover:bg-rose-500",
547
- ring: "focus:ring-rose-500/10"
548
- },
549
- // Для Radio
550
- radio: {
551
- unchecked: "border-slate-300 bg-white hover:border-rose-400",
552
- checked: "border-rose-600 bg-rose-50 hover:border-rose-500",
553
- ring: "focus:ring-rose-500/10",
554
- dot: "bg-rose-600"
376
+ };
377
+ return a === "toggle" ? ((l = t[a]) == null ? void 0 : l[e]) || ((n = t[a]) == null ? void 0 : n.md) || { track: "", thumb: "" } : ((s = t[a]) == null ? void 0 : s[e]) || ((i = t[a]) == null ? void 0 : i.md) || "";
378
+ }
379
+ const yn = {
380
+ enterActiveClass: "transition-all duration-200 ease-out",
381
+ enterFromClass: "opacity-0 max-h-0",
382
+ enterToClass: "opacity-100 max-h-96",
383
+ leaveActiveClass: "transition-all duration-200 ease-in",
384
+ leaveFromClass: "opacity-100 max-h-96",
385
+ leaveToClass: "opacity-0 max-h-0"
386
+ }, Pt = {
387
+ enterActiveClass: "transition-opacity duration-200 ease-out",
388
+ enterFromClass: "opacity-0",
389
+ enterToClass: "opacity-100",
390
+ leaveActiveClass: "transition-opacity duration-200 ease-in",
391
+ leaveFromClass: "opacity-100",
392
+ leaveToClass: "opacity-0"
393
+ }, ja = {
394
+ enterActiveClass: "transition-all duration-200 ease-out",
395
+ enterFromClass: "opacity-0 scale-95",
396
+ enterToClass: "opacity-100 scale-100",
397
+ leaveActiveClass: "transition-all duration-200 ease-in",
398
+ leaveFromClass: "opacity-100 scale-100",
399
+ leaveToClass: "opacity-0 scale-95"
400
+ }, Fa = {
401
+ enterActiveClass: "transition-all duration-300 ease-out",
402
+ enterFromClass: "opacity-0 translate-x-full",
403
+ enterToClass: "opacity-100 translate-x-0",
404
+ leaveActiveClass: "transition-all duration-300 ease-in",
405
+ leaveFromClass: "opacity-100 translate-x-0",
406
+ leaveToClass: "opacity-0 translate-x-full"
407
+ }, Na = {
408
+ enterActiveClass: "transition-all duration-300 ease-out",
409
+ enterFromClass: "opacity-0 -translate-x-full",
410
+ enterToClass: "opacity-100 translate-x-0",
411
+ leaveActiveClass: "transition-all duration-300 ease-in",
412
+ leaveFromClass: "opacity-100 translate-x-0",
413
+ leaveToClass: "opacity-0 -translate-x-full"
414
+ }, Ra = {
415
+ enterActiveClass: "transition-all duration-300 ease-out",
416
+ enterFromClass: "opacity-0 translate-y-full",
417
+ enterToClass: "opacity-100 translate-y-0",
418
+ leaveActiveClass: "transition-all duration-300 ease-in",
419
+ leaveFromClass: "opacity-100 translate-y-0",
420
+ leaveToClass: "opacity-0 translate-y-full"
421
+ }, Ha = {
422
+ enterActiveClass: "transition-all duration-300 ease-out",
423
+ enterFromClass: "opacity-0 -translate-y-full",
424
+ enterToClass: "opacity-100 translate-y-0",
425
+ leaveActiveClass: "transition-all duration-300 ease-in",
426
+ leaveFromClass: "opacity-100 translate-y-0",
427
+ leaveToClass: "opacity-0 -translate-y-full"
428
+ };
429
+ function xn(e = "top") {
430
+ const a = {
431
+ top: {
432
+ enterFrom: "opacity-0 translate-y-1",
433
+ enterTo: "opacity-100 translate-y-0",
434
+ leaveFrom: "opacity-100 translate-y-0",
435
+ leaveTo: "opacity-0 translate-y-1"
555
436
  },
556
- // Для текста
557
- text: "text-rose-700",
558
- // Для тегов
559
- tag: "bg-red-100 text-red-800 border-red-200",
560
- // Для прогресс-бара
561
- progress: "bg-rose-500",
562
- // Для divider
563
- divider: "border-rose-200",
564
- // Для tooltip
565
- tooltip: "bg-rose-600 text-white",
566
- // Для лоадера
567
- loader: {
568
- border: "border-rose-300",
569
- borderTop: "border-t-rose-600",
570
- text: "text-rose-700"
437
+ bottom: {
438
+ enterFrom: "opacity-0 -translate-y-1",
439
+ enterTo: "opacity-100 translate-y-0",
440
+ leaveFrom: "opacity-100 translate-y-0",
441
+ leaveTo: "opacity-0 -translate-y-1"
571
442
  },
572
- // Для слайдера
573
- slider: {
574
- track: "bg-rose-200",
575
- thumb: "bg-rose-600",
576
- thumbHover: "bg-rose-500",
577
- tick: "bg-rose-400",
578
- text: "text-rose-700",
579
- textActive: "text-rose-900",
580
- textValue: "text-rose-900"
443
+ left: {
444
+ enterFrom: "opacity-0 translate-x-1",
445
+ enterTo: "opacity-100 translate-x-0",
446
+ leaveFrom: "opacity-100 translate-x-0",
447
+ leaveTo: "opacity-0 translate-x-1"
581
448
  },
582
- // Для toggle
583
- toggle: {
584
- checked: "bg-rose-600",
585
- unchecked: "bg-slate-200",
586
- ring: "focus:ring-rose-500/10"
449
+ right: {
450
+ enterFrom: "opacity-0 -translate-x-1",
451
+ enterTo: "opacity-100 translate-x-0",
452
+ leaveFrom: "opacity-100 translate-x-0",
453
+ leaveTo: "opacity-0 -translate-x-1"
587
454
  }
588
- },
589
- // Специальные варианты для текста
590
- muted: {
591
- text: "text-slate-500"
592
- },
593
- // Специальные варианты для divider
594
- light: {
595
- divider: "border-slate-100"
596
- },
597
- dark: {
598
- divider: "border-slate-300",
599
- // Для tooltip
600
- tooltip: "bg-slate-900 text-white"
601
- },
602
- // Специальные варианты для tooltip
603
- tooltipLight: {
604
- tooltip: "bg-white text-slate-900 border border-slate-200 shadow-lg"
605
- }
606
- };
607
- function eg(e) {
608
- const a = de[e] || de.info;
609
- return `${a.bg} ${a.text} ${a.border}`;
610
- }
611
- function tg(e) {
612
- return (de[e] || de.info).icon;
613
- }
614
- function yn(e) {
615
- return de[e] || de.info;
616
- }
617
- function xn(e) {
618
- return (de[e] || de.primary).checkbox || de.primary.checkbox;
619
- }
620
- function al(e) {
621
- return (de[e] || de.primary).radio || de.primary.radio;
622
- }
623
- function ja(e) {
624
- return e === "default" ? "text-slate-700" : (de[e] || de.default).text || "text-slate-700";
625
- }
626
- function wn(e) {
627
- return (de[e] || de.default).tag || de.default.tag;
628
- }
629
- function kn(e) {
630
- return (de[e] || de.default).progress || de.default.progress;
631
- }
632
- function Cn(e) {
633
- return (de[e] || de.default).loader || de.default.loader;
634
- }
635
- const ll = {
636
- horizontal: {
637
- thin: {
638
- light: "border-t border-slate-100",
639
- default: "border-t border-slate-200",
640
- dark: "border-t border-slate-300"
641
- },
642
- default: {
643
- light: "border-t border-slate-100",
644
- default: "border-t border-slate-200",
645
- dark: "border-t border-slate-300"
646
- },
647
- thick: {
648
- light: "border-t-2 border-slate-100",
649
- default: "border-t-2 border-slate-200",
650
- dark: "border-t-2 border-slate-300"
651
- }
652
- },
653
- vertical: {
654
- thin: {
655
- light: "border-l border-slate-100",
656
- default: "border-l border-slate-200",
657
- dark: "border-l border-slate-300"
658
- },
659
- default: {
660
- light: "border-l border-slate-100",
661
- default: "border-l border-slate-200",
662
- dark: "border-l border-slate-300"
663
- },
664
- thick: {
665
- light: "border-l-2 border-slate-100",
666
- default: "border-l-2 border-slate-200",
667
- dark: "border-l-2 border-slate-300"
668
- }
669
- }
670
- };
671
- function Sn(e, a, t) {
672
- var n, s, i, c;
673
- const l = e === "vertical" ? "vertical" : "horizontal";
674
- return ((s = (n = ll[l]) == null ? void 0 : n[a]) == null ? void 0 : s[t]) || ((c = (i = ll[l]) == null ? void 0 : i.default) == null ? void 0 : c.default) || "border-t border-slate-200";
675
- }
676
- function $n(e) {
677
- var t;
678
- return e === "light" ? ((t = de.tooltipLight) == null ? void 0 : t.tooltip) || "bg-white text-slate-900 border border-slate-200 shadow-lg" : (de[e] || de.dark).tooltip || de.dark.tooltip;
679
- }
680
- function Dn(e = "top") {
681
- const a = {
682
- top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
683
- bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
684
- left: "right-full top-1/2 -translate-y-1/2 mr-2",
685
- right: "left-full top-1/2 -translate-y-1/2 ml-2"
686
- };
687
- return a[e] || a.top;
688
- }
689
- function zn(e, a) {
690
- var i;
691
- const t = "absolute w-0 h-0 border-4", l = {
692
- top: {
693
- dark: "top-full left-1/2 -translate-x-1/2 border-t-slate-900 border-l-transparent border-r-transparent border-b-transparent",
694
- light: "top-full left-1/2 -translate-x-1/2 border-t-white border-l-transparent border-r-transparent border-b-transparent",
695
- primary: "top-full left-1/2 -translate-x-1/2 border-t-slate-900 border-l-transparent border-r-transparent border-b-transparent",
696
- info: "top-full left-1/2 -translate-x-1/2 border-t-blue-600 border-l-transparent border-r-transparent border-b-transparent",
697
- success: "top-full left-1/2 -translate-x-1/2 border-t-emerald-600 border-l-transparent border-r-transparent border-b-transparent",
698
- warning: "top-full left-1/2 -translate-x-1/2 border-t-amber-600 border-l-transparent border-r-transparent border-b-transparent",
699
- danger: "top-full left-1/2 -translate-x-1/2 border-t-rose-600 border-l-transparent border-r-transparent border-b-transparent"
700
- },
701
- bottom: {
702
- dark: "bottom-full left-1/2 -translate-x-1/2 border-b-slate-900 border-l-transparent border-r-transparent border-t-transparent",
703
- light: "bottom-full left-1/2 -translate-x-1/2 border-b-white border-l-transparent border-r-transparent border-t-transparent",
704
- primary: "bottom-full left-1/2 -translate-x-1/2 border-b-slate-900 border-l-transparent border-r-transparent border-t-transparent",
705
- info: "bottom-full left-1/2 -translate-x-1/2 border-b-blue-600 border-l-transparent border-r-transparent border-t-transparent",
706
- success: "bottom-full left-1/2 -translate-x-1/2 border-b-emerald-600 border-l-transparent border-r-transparent border-t-transparent",
707
- warning: "bottom-full left-1/2 -translate-x-1/2 border-b-amber-600 border-l-transparent border-r-transparent border-t-transparent",
708
- danger: "bottom-full left-1/2 -translate-x-1/2 border-b-rose-600 border-l-transparent border-r-transparent border-t-transparent"
709
- },
710
- left: {
711
- dark: "left-full top-1/2 -translate-y-1/2 border-l-slate-900 border-t-transparent border-b-transparent border-r-transparent",
712
- light: "left-full top-1/2 -translate-y-1/2 border-l-white border-t-transparent border-b-transparent border-r-transparent",
713
- primary: "left-full top-1/2 -translate-y-1/2 border-l-slate-900 border-t-transparent border-b-transparent border-r-transparent",
714
- info: "left-full top-1/2 -translate-y-1/2 border-l-blue-600 border-t-transparent border-b-transparent border-r-transparent",
715
- success: "left-full top-1/2 -translate-y-1/2 border-l-emerald-600 border-t-transparent border-b-transparent border-r-transparent",
716
- warning: "left-full top-1/2 -translate-y-1/2 border-l-amber-600 border-t-transparent border-b-transparent border-r-transparent",
717
- danger: "left-full top-1/2 -translate-y-1/2 border-l-rose-600 border-t-transparent border-b-transparent border-r-transparent"
718
- },
719
- right: {
720
- dark: "right-full top-1/2 -translate-y-1/2 border-r-slate-900 border-t-transparent border-b-transparent border-l-transparent",
721
- light: "right-full top-1/2 -translate-y-1/2 border-r-white border-t-transparent border-b-transparent border-l-transparent",
722
- primary: "right-full top-1/2 -translate-y-1/2 border-r-slate-900 border-t-transparent border-b-transparent border-l-transparent",
723
- info: "right-full top-1/2 -translate-y-1/2 border-r-blue-600 border-t-transparent border-b-transparent border-l-transparent",
724
- success: "right-full top-1/2 -translate-y-1/2 border-r-emerald-600 border-t-transparent border-b-transparent border-l-transparent",
725
- warning: "right-full top-1/2 -translate-y-1/2 border-r-amber-600 border-t-transparent border-b-transparent border-l-transparent",
726
- danger: "right-full top-1/2 -translate-y-1/2 border-r-rose-600 border-t-transparent border-b-transparent border-l-transparent"
727
- }
728
- }, n = a || "dark";
729
- return `${t} ${((i = l[e || "top"]) == null ? void 0 : i[n]) || l.top.dark}`;
730
- }
731
- function An(e) {
732
- return (de[e] || de.primary).slider || de.primary.slider;
733
- }
734
- function Vn(e, a = !1) {
735
- const l = (de[e] || de.slate).toggle || de.slate.toggle;
455
+ }, t = a[e] || a.top;
736
456
  return {
737
- checked: l.checked,
738
- unchecked: l.unchecked,
739
- ring: l.ring,
740
- current: a ? l.checked : l.unchecked
741
- };
742
- }
743
- function Bn(e) {
744
- const a = {
745
- slate: "bg-slate-50 text-slate-700 border-slate-100",
746
- success: "bg-emerald-50 text-emerald-700 border-emerald-100",
747
- warning: "bg-amber-50 text-amber-700 border-amber-100",
748
- danger: "bg-rose-50 text-rose-700 border-rose-100",
749
- info: "bg-blue-50 text-blue-700 border-blue-100"
457
+ enterActiveClass: "transition-all duration-150 ease-out",
458
+ enterFromClass: t.enterFrom,
459
+ enterToClass: t.enterTo,
460
+ leaveActiveClass: "transition-all duration-150 ease-in",
461
+ leaveFromClass: t.leaveFrom,
462
+ leaveToClass: t.leaveTo
750
463
  };
751
- return a[e] || a.slate;
752
464
  }
753
- function Fa(e) {
465
+ const wn = {
466
+ enterActiveClass: "transition-all duration-150 ease-out",
467
+ enterFromClass: "opacity-0 translate-y-1",
468
+ enterToClass: "opacity-100 translate-y-0",
469
+ leaveActiveClass: "transition-all duration-150 ease-in",
470
+ leaveFromClass: "opacity-100 translate-y-0",
471
+ leaveToClass: "opacity-0 translate-y-1"
472
+ };
473
+ function Al(e = "fade") {
754
474
  const a = {
755
- // Основные варианты
756
- primary: "bg-slate-800 text-white hover:bg-slate-700",
757
- secondary: "bg-slate-200 text-slate-700 hover:bg-slate-300",
758
- ghost: "text-slate-700 hover:bg-slate-100 bg-transparent",
759
- outline: "border border-slate-200 text-slate-700 hover:border-slate-300 bg-white",
760
- // Семантические варианты
761
- success: "bg-emerald-600 text-white hover:bg-emerald-500",
762
- warning: "bg-amber-600 text-white hover:bg-amber-500",
763
- danger: "bg-rose-600 text-white hover:bg-rose-500",
764
- info: "bg-blue-600 text-white hover:bg-blue-500",
765
- // Дополнительные варианты
766
- link: "text-blue-600 hover:text-blue-700 underline-offset-2 hover:underline bg-transparent",
767
- soft: "bg-slate-50 text-slate-700 hover:bg-slate-100"
475
+ collapse: yn,
476
+ fade: Pt,
477
+ "fade-scale": ja,
478
+ "slide-right": Fa,
479
+ "slide-left": Na,
480
+ "slide-up": Ra,
481
+ "slide-down": Ha,
482
+ "tooltip-custom": wn
768
483
  };
769
- return a[e] || a.primary;
484
+ return a[e] || a.fade;
770
485
  }
771
- function In(e) {
772
- const a = {
773
- default: "text-slate-700 hover:bg-slate-50",
774
- danger: "text-rose-600 hover:bg-rose-50",
775
- success: "text-emerald-600 hover:bg-emerald-50"
486
+ const Vl = Al;
487
+ function qa(e = "none", a = "icon", t = !1) {
488
+ const l = {
489
+ none: "",
490
+ wiggle: "dx-icon-wiggle",
491
+ scale: "dx-icon-scale",
492
+ rotate: "dx-icon-rotate"
493
+ }, n = {
494
+ none: "",
495
+ wiggle: "dx-icon-wiggle-group",
496
+ scale: "dx-icon-scale-group",
497
+ rotate: "dx-icon-rotate-group"
498
+ }, s = {
499
+ none: "",
500
+ wiggle: "dx-btn-wiggle",
501
+ scale: "dx-btn-scale",
502
+ rotate: "dx-btn-rotate"
503
+ }, i = {
504
+ none: "",
505
+ wiggle: "dx-btn-wiggle-group",
506
+ scale: "dx-btn-scale-group",
507
+ rotate: "dx-btn-rotate-group"
508
+ }, c = {
509
+ none: "",
510
+ fade: "dx-animate-fade-in",
511
+ "fade-out": "dx-animate-fade-out",
512
+ slide: "dx-animate-slide-in",
513
+ bounce: "dx-animate-bounce-slow",
514
+ pulse: "dx-animate-pulse",
515
+ spin: "dx-animate-spin",
516
+ shake: "dx-animate-shake"
517
+ }, u = {
518
+ none: "",
519
+ stripes: "dx-animate-stripes"
520
+ }, g = {
521
+ none: "",
522
+ custom: "dx-tooltip-custom"
523
+ // Можно использовать для кастомных анимаций через CSS
524
+ }, h = {
525
+ none: "",
526
+ smooth: "transition-transform duration-200 ease-in-out"
527
+ // Плавная анимация движения индикатора
776
528
  };
777
- return a[e] || a.default;
529
+ return a === "icon" ? t ? n[e] || "" : l[e] || "" : a === "button" ? t ? i[e] || "" : s[e] || "" : a === "progress" ? u[e] || "" : a === "tooltip" ? g[e] || "" : a === "toggle" ? h[e] || h.smooth : c[e] || "";
778
530
  }
779
- const ag = {
780
- __name: "DXHeading",
531
+ const W = {
532
+ __name: "DXIcon",
781
533
  props: {
782
- /** Уровень заголовка: 1-6 */
783
- level: { type: [Number, String], default: 1 },
784
- /** Размер (переопределяет level): xs | sm | md | lg | xl | 2xl | 3xl | 4xl */
785
- size: { type: String, default: "" },
786
- /** Вес шрифта: normal | medium | semibold | bold */
787
- weight: { type: String, default: "semibold" },
788
- /** Цвет: default | muted | primary | success | warning | danger */
789
- color: { type: String, default: "default" },
790
- /** Обрезать текст с ... */
791
- truncate: { type: Boolean, default: !1 }
534
+ /** Heroicon компонент */
535
+ icon: { type: [Object, Function], required: !0 },
536
+ /** Размер: xs | sm | md | lg | xl */
537
+ size: { type: String, default: "md" },
538
+ /** Анимация при hover: none | wiggle | scale | rotate */
539
+ animation: { type: String, default: "none" },
540
+ /** Использовать group-hover вместо обычного hover */
541
+ groupHover: { type: Boolean, default: !1 },
542
+ /** Дополнительные классы */
543
+ class: { type: [String, Array, Object], default: "" }
792
544
  },
793
545
  setup(e) {
794
- const a = e, t = d(() => `h${a.level}`), l = {
795
- xs: "text-xs",
796
- sm: "text-sm",
797
- md: "text-base",
798
- lg: "text-lg",
799
- xl: "text-xl",
800
- "2xl": "text-2xl",
801
- "3xl": "text-3xl",
802
- "4xl": "text-4xl"
803
- }, n = {
804
- 1: "text-4xl",
805
- 2: "text-3xl",
806
- 3: "text-2xl",
807
- 4: "text-xl",
808
- 5: "text-lg",
809
- 6: "text-base"
810
- }, s = {
811
- normal: "font-normal",
812
- medium: "font-medium",
813
- semibold: "font-semibold",
814
- bold: "font-bold"
815
- }, i = d(() => [
816
- a.size ? l[a.size] : n[a.level],
817
- s[a.weight] || s.semibold,
818
- ja(a.color),
819
- "tracking-tight",
820
- a.truncate && "truncate"
546
+ const a = e, t = d(() => [
547
+ fe(a.size, "icon"),
548
+ qa(a.animation, "icon", a.groupHover),
549
+ a.class
821
550
  ]);
822
- return (c, u) => (o(), L(ve(t.value), {
823
- class: p(i.value),
824
- "data-component": "DXHeading",
825
- "data-level": e.level,
826
- "data-weight": e.weight,
827
- "data-color": e.color
828
- }, {
829
- default: j(() => [
830
- N(c.$slots, "default")
831
- ]),
832
- _: 3
833
- }, 8, ["class", "data-level", "data-weight", "data-color"]));
551
+ return (l, n) => (o(), L(ve(e.icon), {
552
+ class: p(t.value),
553
+ "data-component": "DXIcon",
554
+ "data-size": e.size,
555
+ "data-animation": e.animation
556
+ }, null, 8, ["class", "data-size", "data-animation"]));
834
557
  }
835
- }, lg = {
836
- __name: "DXText",
558
+ }, kn = ["data-size", "data-shape"], Cn = ["src", "alt"], Sn = "relative inline-flex items-center justify-center overflow-hidden bg-slate-100 transition-transform group", $n = "w-full h-full object-cover", Dn = "font-medium text-slate-600 uppercase", zn = "text-slate-400", la = {
559
+ __name: "DXAvatar",
837
560
  props: {
838
- /** Тег: p | span | div */
839
- tag: { type: String, default: "p" },
561
+ /** URL изображения */
562
+ src: { type: String, default: "" },
563
+ /** Alt текст */
564
+ alt: { type: String, default: "Avatar" },
565
+ /** Инициалы (если нет изображения) */
566
+ initials: { type: String, default: "" },
840
567
  /** Размер: xs | sm | md | lg | xl */
841
568
  size: { type: String, default: "md" },
842
- /** Вес шрифта: normal | medium | semibold | bold */
843
- weight: { type: String, default: "normal" },
844
- /** Цвет: default | muted | primary | success | warning | danger */
845
- color: { type: String, default: "default" },
846
- /** Выравнивание: left | center | right | justify */
847
- align: { type: String, default: "left" },
848
- /** Обрезать текст с ... */
849
- truncate: { type: Boolean, default: !1 },
850
- /** Максимум строк (line-clamp) */
851
- lines: { type: Number, default: 0 }
569
+ /** Форма: circle | square */
570
+ shape: { type: String, default: "circle" },
571
+ /** Кастомная иконка для fallback (по умолчанию UserIcon) */
572
+ icon: { type: [Object, Function], default: null },
573
+ /** Анимация иконки при hover: none | wiggle | scale | rotate */
574
+ iconAnimation: { type: String, default: "wiggle" }
852
575
  },
853
576
  setup(e) {
854
- const a = e, t = {
855
- xs: "text-xs",
856
- sm: "text-sm",
857
- md: "text-base",
858
- lg: "text-lg",
859
- xl: "text-xl"
860
- }, l = {
861
- normal: "font-normal",
862
- medium: "font-medium",
863
- semibold: "font-semibold",
864
- bold: "font-bold"
577
+ const a = e, t = H(!1);
578
+ se(() => a.src, () => {
579
+ t.value = !1;
580
+ });
581
+ const l = {
582
+ circle: "rounded-full",
583
+ square: "rounded-lg"
865
584
  }, n = {
866
- left: "text-left",
867
- center: "text-center",
868
- right: "text-right",
869
- justify: "text-justify"
870
- }, s = d(() => [
871
- t[a.size] || t.md,
872
- l[a.weight] || l.normal,
873
- ja(a.color),
874
- n[a.align] || n.left,
875
- "leading-relaxed",
876
- a.truncate && "truncate",
877
- a.lines > 0 && `line-clamp-${a.lines}`
878
- ]);
879
- return (i, c) => (o(), L(ve(e.tag), {
585
+ xs: "text-xs",
586
+ sm: "text-xs",
587
+ md: "text-sm",
588
+ lg: "text-base",
589
+ xl: "text-lg"
590
+ }, s = d(
591
+ () => [
592
+ Sn,
593
+ fe(a.size, "avatar"),
594
+ l[a.shape] || l.circle,
595
+ { "hover:scale-105": a.iconAnimation !== "none" }
596
+ ]
597
+ ), i = d(() => $n), c = d(() => [
598
+ Dn,
599
+ n[a.size] || n.md
600
+ ]), u = d(() => zn), g = d(() => a.icon || pn), h = {
601
+ xs: "sm",
602
+ sm: "sm",
603
+ md: "md",
604
+ lg: "lg",
605
+ xl: "xl"
606
+ }, m = d(() => h[a.size] || "md");
607
+ return (y, w) => (o(), r("div", {
880
608
  class: p(s.value),
881
- "data-component": "DXText",
609
+ "data-component": "DXAvatar",
882
610
  "data-size": e.size,
883
- "data-weight": e.weight,
884
- "data-color": e.color
885
- }, {
886
- default: j(() => [
887
- N(i.$slots, "default")
888
- ]),
889
- _: 3
890
- }, 8, ["class", "data-size", "data-weight", "data-color"]));
891
- }
892
- }, Tn = ["for"], En = {
893
- key: 0,
894
- class: "text-rose-500 ml-0.5"
895
- }, ng = {
896
- __name: "DXLabel",
897
- props: {
898
- /** ID связанного input */
899
- htmlFor: { type: String, default: "" },
900
- /** Размер: xs | sm | md | lg */
901
- size: { type: String, default: "sm" },
902
- /** Вес шрифта: normal | medium | semibold */
903
- weight: { type: String, default: "medium" },
904
- /** Цвет: default | muted | primary */
905
- color: { type: String, default: "default" },
906
- /** Обязательное поле */
907
- required: { type: Boolean, default: !1 }
908
- },
909
- setup(e) {
910
- const a = e, t = {
911
- xs: "text-xs",
912
- sm: "text-sm",
913
- md: "text-base",
914
- lg: "text-lg"
915
- }, l = {
916
- normal: "font-normal",
917
- medium: "font-medium",
918
- semibold: "font-semibold"
919
- }, n = d(() => [
920
- "block",
921
- t[a.size] || t.sm,
922
- l[a.weight] || l.medium,
923
- ja(a.color)
924
- ]);
925
- return (s, i) => (o(), r("label", {
926
- class: p(n.value),
927
- for: e.htmlFor,
928
- "data-component": "DXLabel"
611
+ "data-shape": e.shape
929
612
  }, [
930
- N(s.$slots, "default"),
931
- e.required ? (o(), r("span", En, "*")) : b("", !0)
932
- ], 10, Tn));
933
- }
934
- }, Mn = { key: 0 }, og = {
935
- __name: "DXCode",
936
- props: {
937
- /** Блочный код (pre) или inline */
938
- block: { type: Boolean, default: !1 },
939
- /** Размер: xs | sm | md */
940
- size: { type: String, default: "sm" },
941
- /** Показывать номера строк (только для block) */
942
- lineNumbers: { type: Boolean, default: !1 }
943
- },
944
- setup(e) {
945
- const a = e, t = {
946
- xs: "text-xs",
947
- sm: "text-sm",
948
- md: "text-base"
949
- }, l = d(() => a.block ? [
950
- "block w-full overflow-x-auto rounded-xl bg-slate-900 text-slate-100 p-4",
951
- t[a.size] || t.sm,
952
- "font-mono leading-relaxed"
953
- ] : [
954
- "inline-block px-1.5 py-0.5 rounded bg-slate-100 text-slate-800",
955
- t[a.size] || t.sm,
956
- "font-mono"
957
- ]);
958
- return (n, s) => (o(), L(ve(e.block ? "pre" : "code"), {
959
- class: p(l.value),
960
- "data-component": "DXCode",
961
- "data-block": e.block
962
- }, {
963
- default: j(() => [
964
- e.block ? (o(), r("code", Mn, [
965
- N(n.$slots, "default")
966
- ])) : N(n.$slots, "default", { key: 1 })
967
- ]),
968
- _: 3
969
- }, 8, ["class", "data-block"]));
613
+ e.src && !t.value ? (o(), r("img", {
614
+ key: 0,
615
+ src: e.src,
616
+ alt: e.alt,
617
+ class: p(i.value),
618
+ onError: w[0] || (w[0] = (C) => t.value = !0)
619
+ }, null, 42, Cn)) : e.initials ? (o(), r("span", {
620
+ key: 1,
621
+ class: p(c.value)
622
+ }, T(e.initials), 3)) : (o(), L(W, {
623
+ key: 2,
624
+ icon: g.value,
625
+ size: m.value,
626
+ animation: e.iconAnimation,
627
+ "group-hover": e.iconAnimation !== "none",
628
+ class: p(u.value)
629
+ }, null, 8, ["icon", "size", "animation", "group-hover", "class"]))
630
+ ], 10, kn));
970
631
  }
971
- }, Xn = ["data-variant"], Ln = {
972
- key: 0,
973
- class: "mt-2 text-sm text-slate-500"
974
- }, sg = {
975
- __name: "DXBlockquote",
632
+ }, An = ["data-blur", "data-dismissible"], Ua = {
633
+ __name: "DXBackdrop",
976
634
  props: {
977
- /** Вариант: default | bordered | highlighted */
978
- variant: { type: String, default: "bordered" },
979
- /** Размер: sm | md | lg */
980
- size: { type: String, default: "md" },
981
- /** Источник цитаты */
982
- cite: { type: String, default: "" }
635
+ /** Показать/скрыть backdrop */
636
+ show: { type: Boolean, default: !1 },
637
+ /** Уровень размытия: none | sm | md | lg | xl */
638
+ blur: { type: String, default: "sm", validator: (e) => ["none", "sm", "md", "lg", "xl"].includes(e) },
639
+ /** Цвет фона (Tailwind класс): bg-slate-900/40 | bg-black/50 */
640
+ backgroundColor: { type: String, default: "bg-slate-900/40" },
641
+ /** z-index: 0 | 10 | 20 | 30 | 40 | 50 | auto */
642
+ zIndex: {
643
+ type: String,
644
+ default: "50",
645
+ validator: (e) => ["0", "10", "20", "30", "40", "50", "auto"].includes(e)
646
+ },
647
+ /** Можно ли закрыть кликом */
648
+ dismissible: { type: Boolean, default: !0 },
649
+ /** Блокировать скролл body */
650
+ lockScroll: { type: Boolean, default: !0 }
983
651
  },
984
- setup(e) {
985
- const a = e, t = {
986
- sm: "text-sm",
987
- md: "text-base",
988
- lg: "text-lg"
989
- }, l = {
990
- default: "text-slate-600 italic",
991
- bordered: "border-l-4 border-slate-300 pl-4 text-slate-600 italic",
992
- highlighted: "bg-slate-50 border-l-4 border-slate-400 pl-4 pr-4 py-3 rounded-r-lg text-slate-700"
993
- }, n = d(() => [
994
- t[a.size] || t.md,
995
- l[a.variant] || l.bordered,
996
- "leading-relaxed"
997
- ]);
998
- return (s, i) => (o(), r("blockquote", {
999
- class: p(n.value),
1000
- "data-component": "DXBlockquote",
1001
- "data-variant": e.variant
1002
- }, [
1003
- N(s.$slots, "default"),
1004
- e.cite || s.$slots.cite ? (o(), r("footer", Ln, [
1005
- i[0] || (i[0] = G("", -1)),
1006
- f("cite", null, [
1007
- N(s.$slots, "cite", {}, () => [
1008
- G(T(e.cite), 1)
1009
- ])
1010
- ])
1011
- ])) : b("", !0)
1012
- ], 10, Xn));
1013
- }
1014
- }, rg = {
1015
- __name: "DXList",
1016
- props: {
1017
- /** Нумерованный список */
1018
- ordered: { type: Boolean, default: !1 },
1019
- /** Стиль маркеров: disc | circle | square | decimal | none */
1020
- marker: { type: String, default: "" },
1021
- /** Размер: sm | md | lg */
1022
- size: { type: String, default: "md" },
1023
- /** Отступ между элементами: none | sm | md | lg */
1024
- spacing: { type: String, default: "sm" }
1025
- },
1026
- setup(e) {
1027
- const a = e, t = {
1028
- sm: "text-sm",
1029
- md: "text-base",
1030
- lg: "text-lg"
1031
- }, l = {
1032
- none: "space-y-0",
1033
- sm: "space-y-1",
1034
- md: "space-y-2",
1035
- lg: "space-y-3"
1036
- }, n = {
1037
- disc: "list-disc",
1038
- circle: "list-circle",
1039
- square: "list-square",
1040
- decimal: "list-decimal",
1041
- none: "list-none"
1042
- }, s = d(() => [
1043
- t[a.size] || t.md,
1044
- l[a.spacing] || l.sm,
1045
- a.marker ? n[a.marker] : a.ordered ? "list-decimal" : "list-disc",
1046
- "pl-5 text-slate-700"
1047
- ]);
1048
- return (i, c) => (o(), L(ve(e.ordered ? "ol" : "ul"), {
1049
- class: p(s.value),
1050
- "data-component": "DXList"
1051
- }, {
1052
- default: j(() => [
1053
- N(i.$slots, "default")
1054
- ]),
1055
- _: 3
1056
- }, 8, ["class"]));
1057
- }
1058
- };
1059
- function oe(e, a = "padding") {
1060
- const t = {
1061
- none: "0",
1062
- xs: "1",
1063
- // 4px
1064
- sm: "2",
1065
- // 8px
1066
- md: "4",
1067
- // 16px
1068
- lg: "6",
1069
- // 24px
1070
- xl: "8"
1071
- // 32px
1072
- }, l = {
1073
- padding: "p",
1074
- paddingX: "px",
1075
- paddingY: "py",
1076
- margin: "m",
1077
- marginX: "mx",
1078
- marginY: "my"
1079
- };
1080
- if (e === "none")
1081
- return `${l[a]}-0`;
1082
- const n = t[e];
1083
- return n ? `${l[a]}-${n}` : "";
1084
- }
1085
- function F(e, ...a) {
1086
- const t = [e];
1087
- return a.forEach((l) => {
1088
- l && t.push(l);
1089
- }), t;
1090
- }
1091
- const On = ["data-size", "data-padding", "data-center"], Pn = "w-full", jn = {
1092
- __name: "DXContainer",
1093
- props: {
1094
- /** Максимальная ширина: sm | md | lg | xl | 2xl | full */
1095
- size: { type: String, default: "lg" },
1096
- /** Центрировать контейнер */
1097
- center: { type: Boolean, default: !0 },
1098
- /** Горизонтальные отступы: none | xs | sm | md | lg | xl */
1099
- padding: { type: String, default: "md" }
1100
- },
1101
- setup(e) {
1102
- const a = e, t = d(() => {
1103
- const s = {
1104
- sm: "max-w-screen-sm",
1105
- md: "max-w-screen-md",
1106
- lg: "max-w-screen-lg",
1107
- xl: "max-w-screen-xl",
1108
- "2xl": "max-w-screen-2xl",
1109
- full: "max-w-full"
1110
- };
1111
- return s[a.size] || s.lg;
1112
- }), l = d(() => oe(a.padding, "paddingX")), n = d(
1113
- () => F(
1114
- Pn,
1115
- t.value,
1116
- l.value,
1117
- {
1118
- "mx-auto": a.center
1119
- }
1120
- )
1121
- );
1122
- return (s, i) => (o(), r("div", {
1123
- class: p(n.value),
1124
- "data-component": "DXContainer",
1125
- "data-size": e.size,
1126
- "data-padding": e.padding,
1127
- "data-center": e.center
1128
- }, [
1129
- N(s.$slots, "default")
1130
- ], 10, On));
652
+ emits: ["click", "close"],
653
+ setup(e, { emit: a }) {
654
+ const t = {
655
+ enterActiveClass: "transition-opacity duration-200 ease-out",
656
+ enterFromClass: "opacity-0",
657
+ enterToClass: "opacity-100",
658
+ leaveActiveClass: "transition-opacity duration-200 ease-in",
659
+ leaveFromClass: "opacity-100",
660
+ leaveToClass: "opacity-0"
661
+ }, l = e, n = a, s = {
662
+ none: "backdrop-blur-none",
663
+ sm: "backdrop-blur-sm",
664
+ md: "backdrop-blur",
665
+ lg: "backdrop-blur-lg",
666
+ xl: "backdrop-blur-xl"
667
+ }, i = {
668
+ 0: "z-0",
669
+ 10: "z-10",
670
+ 20: "z-20",
671
+ 30: "z-30",
672
+ 40: "z-40",
673
+ 50: "z-50",
674
+ auto: "z-auto"
675
+ }, c = d(() => [
676
+ "fixed inset-0",
677
+ s[l.blur],
678
+ l.backgroundColor || "bg-slate-900/40",
679
+ i[l.zIndex] || "z-50",
680
+ l.dismissible && "cursor-pointer"
681
+ ]), u = (g) => {
682
+ g.target === g.currentTarget && (n("click", g), l.dismissible && n("close"));
683
+ };
684
+ return se(() => l.show, (g) => {
685
+ l.lockScroll && document.body.classList.toggle("overflow-hidden", g);
686
+ }, { immediate: !0 }), nt(() => {
687
+ l.lockScroll && document.body.classList.remove("overflow-hidden");
688
+ }), (g, h) => (o(), L(wl, { to: "body" }, [
689
+ P(Oe, Nt(Rt(t)), {
690
+ default: j(() => [
691
+ e.show ? (o(), r("div", {
692
+ key: 0,
693
+ class: p(c.value),
694
+ onClick: u,
695
+ "data-component": "DXBackdrop",
696
+ "data-blur": e.blur,
697
+ "data-dismissible": e.dismissible
698
+ }, [
699
+ N(g.$slots, "default")
700
+ ], 10, An)) : b("", !0)
701
+ ]),
702
+ _: 3
703
+ }, 16)
704
+ ]));
1131
705
  }
1132
- };
1133
- function fe(e, a = "input") {
1134
- var l, n, s, i;
1135
- const t = {
1136
- button: {
1137
- xs: "h-7 px-2.5 py-1 text-xs",
1138
- sm: "h-8 px-3 py-1.5 text-xs",
1139
- md: "h-10 px-4 py-2.5 text-sm",
1140
- lg: "h-12 px-5 py-3 text-base",
1141
- xl: "h-14 px-6 py-3.5 text-lg"
1142
- },
1143
- buttonIcon: {
1144
- xs: "h-7 w-7 text-xs",
1145
- sm: "h-8 w-8 text-xs",
1146
- md: "h-10 w-10 text-sm",
1147
- lg: "h-12 w-12 text-sm",
1148
- xl: "h-14 w-14 text-base"
1149
- },
1150
- input: {
1151
- xs: "h-7 px-2.5 py-1 text-xs",
1152
- sm: "h-8 px-3 py-1.5 text-xs",
1153
- md: "h-10 px-4 py-2.5 text-sm",
1154
- lg: "h-12 px-5 py-3 text-base",
1155
- xl: "h-14 px-6 py-3.5 text-lg"
1156
- },
1157
- icon: {
1158
- xs: "w-3 h-3",
1159
- sm: "w-4 h-4",
1160
- md: "w-5 h-5",
1161
- lg: "w-6 h-6",
1162
- xl: "w-8 h-8"
1163
- },
1164
- text: {
1165
- xs: "text-xs",
1166
- sm: "text-sm",
1167
- md: "text-base",
1168
- lg: "text-lg",
1169
- xl: "text-xl"
706
+ }, de = {
707
+ // Для Alert/Toast и общих компонентов
708
+ default: {
709
+ bg: "bg-slate-50",
710
+ text: "text-slate-800",
711
+ // Для Alert/Toast (используется в useVariantClasses)
712
+ border: "border-slate-200",
713
+ icon: null,
714
+ iconColor: "text-slate-500",
715
+ // Для тегов
716
+ tag: "bg-slate-100 text-slate-800 border-slate-200",
717
+ // Для прогресс-бара
718
+ progress: "bg-slate-800",
719
+ // Для divider
720
+ divider: "border-slate-200",
721
+ // Для лоадера
722
+ loader: {
723
+ border: "border-slate-300",
724
+ borderTop: "border-t-slate-900",
725
+ text: "text-slate-600"
1170
726
  },
727
+ // Для слайдера
728
+ slider: {
729
+ track: "bg-slate-200",
730
+ thumb: "bg-slate-900",
731
+ thumbHover: "bg-slate-800",
732
+ tick: "bg-slate-400",
733
+ text: "text-slate-700",
734
+ textActive: "text-slate-900",
735
+ textValue: "text-slate-900"
736
+ }
737
+ },
738
+ slate: {
739
+ bg: "bg-slate-50",
740
+ text: "text-slate-800",
741
+ border: "border-slate-200",
742
+ icon: null,
743
+ iconColor: "text-slate-500",
744
+ // Для Checkbox
1171
745
  checkbox: {
1172
- xs: "h-3 w-3",
1173
- sm: "h-4 w-4",
1174
- md: "h-5 w-5",
1175
- lg: "h-6 w-6",
1176
- xl: "h-6 w-6"
746
+ unchecked: "border-slate-300 bg-white hover:border-slate-400",
747
+ checked: "border-slate-700 bg-slate-700 hover:bg-slate-600",
748
+ ring: "focus:ring-slate-900/10"
1177
749
  },
750
+ // Для Radio
1178
751
  radio: {
1179
- xs: "h-3 w-3",
1180
- sm: "h-3.5 w-3.5",
1181
- md: "h-4 w-4",
1182
- lg: "h-5 w-5",
1183
- xl: "h-6 w-6"
1184
- },
1185
- avatar: {
1186
- xs: "h-6 w-6",
1187
- sm: "h-8 w-8",
1188
- md: "h-10 w-10",
1189
- lg: "h-12 w-12",
1190
- xl: "h-16 w-16"
752
+ unchecked: "border-slate-300 bg-white hover:border-slate-400",
753
+ checked: "border-slate-700 bg-slate-50 hover:border-slate-600",
754
+ ring: "focus:ring-slate-900/10",
755
+ dot: "bg-slate-700"
1191
756
  },
757
+ // Для текста
758
+ text: "text-slate-700",
759
+ // Для тегов
760
+ tag: "bg-slate-100 text-slate-800 border-slate-200",
761
+ // Для прогресс-бара
762
+ progress: "bg-slate-800",
763
+ // Для divider
764
+ divider: "border-slate-200",
765
+ // Для лоадера
1192
766
  loader: {
1193
- xs: "w-2 h-2",
1194
- sm: "w-3 h-3",
1195
- md: "w-4 h-4",
1196
- lg: "w-5 h-5",
1197
- xl: "w-6 h-6"
1198
- },
1199
- progress: {
1200
- xs: "h-1",
1201
- sm: "h-2",
1202
- md: "h-3",
1203
- lg: "h-4"
767
+ border: "border-slate-300",
768
+ borderTop: "border-t-slate-700",
769
+ text: "text-slate-700"
1204
770
  },
1205
- inputAddon: {
1206
- xs: "h-7",
1207
- sm: "h-8",
1208
- md: "h-10",
1209
- lg: "h-12",
1210
- xl: "h-14"
771
+ // Для слайдера
772
+ slider: {
773
+ track: "bg-slate-200",
774
+ thumb: "bg-slate-700",
775
+ thumbHover: "bg-slate-600",
776
+ tick: "bg-slate-400",
777
+ text: "text-slate-700",
778
+ textActive: "text-slate-900",
779
+ textValue: "text-slate-900"
1211
780
  },
1212
- sliderTrack: {
1213
- xs: "h-1",
1214
- // 4px
1215
- sm: "h-1.5",
1216
- // 6px
1217
- md: "h-2",
1218
- // 8px
1219
- lg: "h-2.5",
1220
- // 10px
1221
- xl: "h-3"
1222
- // 12px
781
+ // Для toggle
782
+ toggle: {
783
+ checked: "bg-slate-700",
784
+ unchecked: "bg-slate-200",
785
+ ring: "focus:ring-slate-700/10"
786
+ }
787
+ },
788
+ primary: {
789
+ bg: "bg-slate-50",
790
+ text: "text-slate-800",
791
+ border: "border-slate-200",
792
+ icon: null,
793
+ iconColor: "text-slate-500",
794
+ // Для Checkbox
795
+ checkbox: {
796
+ unchecked: "border-slate-300 bg-white hover:border-slate-400",
797
+ checked: "border-slate-900 bg-slate-900 hover:bg-slate-800",
798
+ ring: "focus:ring-slate-900/10"
1223
799
  },
1224
- sliderThumb: {
1225
- xs: "w-3 h-3",
1226
- // 12px
1227
- sm: "w-4 h-4",
1228
- // 16px
1229
- md: "w-5 h-5",
1230
- // 20px
1231
- lg: "w-6 h-6",
1232
- // 24px
1233
- xl: "w-7 h-7"
1234
- // 28px
800
+ // Для Radio
801
+ radio: {
802
+ unchecked: "border-slate-300 bg-white hover:border-slate-400",
803
+ checked: "border-slate-900 bg-slate-50 hover:border-slate-800",
804
+ ring: "focus:ring-slate-900/10",
805
+ dot: "bg-slate-900"
1235
806
  },
1236
- spacing: {
1237
- none: "gap-0",
1238
- xs: "gap-1",
1239
- sm: "gap-2",
1240
- md: "gap-4",
1241
- lg: "gap-6",
1242
- xl: "gap-8"
807
+ // Для текста
808
+ text: "text-slate-900",
809
+ // Для тегов
810
+ tag: "bg-blue-100 text-blue-800 border-blue-200",
811
+ // Для прогресс-бара
812
+ progress: "bg-slate-800",
813
+ // Для divider
814
+ divider: "border-slate-200",
815
+ // Для tooltip
816
+ tooltip: "bg-slate-900 text-white",
817
+ // Для лоадера
818
+ loader: {
819
+ border: "border-slate-300",
820
+ borderTop: "border-t-slate-900",
821
+ text: "text-slate-900"
1243
822
  },
1244
- tooltip: {
1245
- xs: "px-2 py-1 text-xs",
1246
- sm: "px-2.5 py-1.5 text-xs",
1247
- md: "px-3 py-2 text-sm",
1248
- lg: "px-4 py-3 text-base",
1249
- xl: "px-5 py-4 text-lg"
823
+ // Для слайдера
824
+ slider: {
825
+ track: "bg-slate-200",
826
+ thumb: "bg-slate-900",
827
+ thumbHover: "bg-slate-800",
828
+ tick: "bg-slate-400",
829
+ text: "text-slate-700",
830
+ textActive: "text-slate-900",
831
+ textValue: "text-slate-900"
1250
832
  },
833
+ // Для toggle
1251
834
  toggle: {
1252
- xs: { track: "h-4 w-7", thumb: "h-3 w-3" },
1253
- sm: { track: "h-5 w-9", thumb: "h-3.5 w-3.5" },
1254
- md: { track: "h-6 w-11", thumb: "h-4 w-4" },
1255
- lg: { track: "h-7 w-14", thumb: "h-5 w-5" },
1256
- xl: { track: "h-8 w-16", thumb: "h-6 w-6" }
835
+ checked: "bg-slate-900",
836
+ unchecked: "bg-slate-200",
837
+ ring: "focus:ring-slate-900/10"
838
+ }
839
+ },
840
+ info: {
841
+ bg: "bg-blue-50",
842
+ text: "text-blue-800",
843
+ border: "border-blue-200",
844
+ icon: Pa,
845
+ iconColor: "text-blue-500",
846
+ // Для Checkbox
847
+ checkbox: {
848
+ unchecked: "border-slate-300 bg-white hover:border-blue-400",
849
+ checked: "border-blue-600 bg-blue-600 hover:bg-blue-500",
850
+ ring: "focus:ring-blue-500/10"
1257
851
  },
1258
- badge: {
1259
- sm: "px-2 py-1 text-[11px]",
1260
- md: "px-2.5 py-1.5 text-xs"
852
+ // Для Radio
853
+ radio: {
854
+ unchecked: "border-slate-300 bg-white hover:border-blue-400",
855
+ checked: "border-blue-600 bg-blue-50 hover:border-blue-500",
856
+ ring: "focus:ring-blue-500/10",
857
+ dot: "bg-blue-600"
858
+ },
859
+ // Для текста
860
+ text: "text-blue-700",
861
+ // Для тегов
862
+ tag: "bg-cyan-100 text-cyan-800 border-cyan-200",
863
+ // Для прогресс-бара
864
+ progress: "bg-blue-500",
865
+ // Для divider
866
+ divider: "border-blue-200",
867
+ // Для tooltip
868
+ tooltip: "bg-blue-600 text-white",
869
+ // Для лоадера
870
+ loader: {
871
+ border: "border-blue-300",
872
+ borderTop: "border-t-blue-600",
873
+ text: "text-blue-700"
874
+ },
875
+ // Для слайдера
876
+ slider: {
877
+ track: "bg-blue-200",
878
+ thumb: "bg-blue-600",
879
+ thumbHover: "bg-blue-500",
880
+ tick: "bg-blue-400",
881
+ text: "text-blue-700",
882
+ textActive: "text-blue-900",
883
+ textValue: "text-blue-900"
884
+ },
885
+ // Для toggle
886
+ toggle: {
887
+ checked: "bg-blue-600",
888
+ unchecked: "bg-slate-200",
889
+ ring: "focus:ring-blue-500/10"
1261
890
  }
1262
- };
1263
- return a === "toggle" ? ((l = t[a]) == null ? void 0 : l[e]) || ((n = t[a]) == null ? void 0 : n.md) || { track: "", thumb: "" } : ((s = t[a]) == null ? void 0 : s[e]) || ((i = t[a]) == null ? void 0 : i.md) || "";
1264
- }
1265
- const Fn = "grid", Nn = {
1266
- __name: "DXGrid",
1267
- props: {
1268
- /** Количество колонок: 1-12 или auto */
1269
- cols: { type: [Number, String], default: 12 },
1270
- /** Количество колонок на sm */
1271
- colsSm: { type: [Number, String], default: "" },
1272
- /** Количество колонок на md */
1273
- colsMd: { type: [Number, String], default: "" },
1274
- /** Количество колонок на lg */
1275
- colsLg: { type: [Number, String], default: "" },
1276
- /** Отступ между элементами: none | xs | sm | md | lg | xl */
1277
- gap: { type: String, default: "md" },
1278
- /** Горизонтальный отступ */
1279
- gapX: { type: String, default: "" },
1280
- /** Вертикальный отступ */
1281
- gapY: { type: String, default: "" }
1282
891
  },
1283
- setup(e) {
1284
- const a = e, t = d(() => ({
1285
- 1: "grid-cols-1",
1286
- 2: "grid-cols-2",
1287
- 3: "grid-cols-3",
1288
- 4: "grid-cols-4",
1289
- 5: "grid-cols-5",
1290
- 6: "grid-cols-6",
1291
- 7: "grid-cols-7",
1292
- 8: "grid-cols-8",
1293
- 9: "grid-cols-9",
1294
- 10: "grid-cols-10",
1295
- 11: "grid-cols-11",
1296
- 12: "grid-cols-12",
1297
- auto: "grid-cols-[repeat(auto-fit,minmax(250px,1fr))]"
1298
- })[a.cols] || `grid-cols-${a.cols}`), l = d(() => {
1299
- const c = {};
1300
- return a.colsSm && (c[`sm:grid-cols-${a.colsSm}`] = !0), a.colsMd && (c[`md:grid-cols-${a.colsMd}`] = !0), a.colsLg && (c[`lg:grid-cols-${a.colsLg}`] = !0), Object.keys(c).length > 0 ? c : null;
1301
- }), n = d(() => {
1302
- if (a.gapX || a.gapY) {
1303
- const c = {};
1304
- if (a.gapX) {
1305
- const u = oe(a.gapX, "padding"), g = u ? u.match(/-(\d+)$/) : null;
1306
- g ? c[`gap-x-${g[1]}`] = !0 : a.gapX === "none" ? c["gap-x-0"] = !0 : c[`gap-x-${a.gapX}`] = !0;
1307
- }
1308
- if (a.gapY) {
1309
- const u = oe(a.gapY, "padding"), g = u ? u.match(/-(\d+)$/) : null;
1310
- g ? c[`gap-y-${g[1]}`] = !0 : a.gapY === "none" ? c["gap-y-0"] = !0 : c[`gap-y-${a.gapY}`] = !0;
1311
- }
1312
- return Object.keys(c).length > 0 ? c : null;
1313
- }
1314
- return fe(a.gap, "spacing") || "gap-4";
1315
- }), s = d(
1316
- () => F(
1317
- Fn,
1318
- t.value,
1319
- l.value,
1320
- n.value
1321
- )
1322
- ), i = d(() => a.cols === "auto" ? {} : {});
1323
- return (c, u) => (o(), r("div", {
1324
- class: p(s.value),
1325
- style: we(i.value),
1326
- "data-component": "DXGrid"
1327
- }, [
1328
- N(c.$slots, "default")
1329
- ], 6));
1330
- }
1331
- }, Rn = "", ig = {
1332
- __name: "DXFlex",
1333
- props: {
1334
- /** Направление: row | row-reverse | col | col-reverse */
1335
- direction: { type: String, default: "row" },
1336
- /** Выравнивание по главной оси: start | center | end | between | around | evenly */
1337
- justify: { type: String, default: "start" },
1338
- /** Выравнивание по поперечной оси: start | center | end | stretch | baseline */
1339
- align: { type: String, default: "center" },
1340
- /** Перенос: nowrap | wrap | wrap-reverse */
1341
- wrap: { type: String, default: "nowrap" },
1342
- /** Отступ между элементами: none | xs | sm | md | lg | xl */
1343
- gap: { type: String, default: "md" },
1344
- /** Inline flex */
1345
- inline: { type: Boolean, default: !1 }
1346
- },
1347
- setup(e) {
1348
- const a = e, t = d(() => a.inline ? "inline-flex" : "flex"), l = d(() => {
1349
- const g = {
1350
- row: "flex-row",
1351
- "row-reverse": "flex-row-reverse",
1352
- col: "flex-col",
1353
- "col-reverse": "flex-col-reverse"
1354
- };
1355
- return g[a.direction] || g.row;
1356
- }), n = d(() => {
1357
- const g = {
1358
- start: "justify-start",
1359
- center: "justify-center",
1360
- end: "justify-end",
1361
- between: "justify-between",
1362
- around: "justify-around",
1363
- evenly: "justify-evenly"
1364
- };
1365
- return g[a.justify] || g.start;
1366
- }), s = d(() => {
1367
- const g = {
1368
- start: "items-start",
1369
- center: "items-center",
1370
- end: "items-end",
1371
- stretch: "items-stretch",
1372
- baseline: "items-baseline"
1373
- };
1374
- return g[a.align] || g.center;
1375
- }), i = d(() => {
1376
- const g = {
1377
- nowrap: "flex-nowrap",
1378
- wrap: "flex-wrap",
1379
- "wrap-reverse": "flex-wrap-reverse"
1380
- };
1381
- return g[a.wrap] || g.nowrap;
1382
- }), c = d(() => fe(a.gap, "spacing") || "gap-4"), u = d(
1383
- () => F(
1384
- Rn,
1385
- t.value,
1386
- l.value,
1387
- n.value,
1388
- s.value,
1389
- i.value,
1390
- c.value
1391
- )
1392
- );
1393
- return (g, h) => (o(), r("div", {
1394
- class: p(u.value),
1395
- "data-component": "DXFlex"
1396
- }, [
1397
- N(g.$slots, "default")
1398
- ], 2));
1399
- }
1400
- }, Hn = ["data-direction", "data-gap", "data-align", "data-justify"], qn = "flex", dg = {
1401
- __name: "DXStack",
1402
- props: {
1403
- /** Направление: vertical | horizontal */
1404
- direction: { type: String, default: "vertical" },
1405
- /** Отступ между элементами: none | xs | sm | md | lg | xl | 2xl */
1406
- gap: { type: String, default: "md" },
1407
- /** Выравнивание: start | center | end | stretch */
1408
- align: { type: String, default: "stretch" },
1409
- /** Распределение: start | center | end | between | around */
1410
- justify: { type: String, default: "start" },
1411
- /** Разделители между элементами */
1412
- dividers: { type: Boolean, default: !1 }
1413
- },
1414
- setup(e) {
1415
- const a = e, t = d(() => a.direction === "horizontal" ? "flex-row" : "flex-col"), l = d(() => a.gap === "2xl" ? "gap-12" : fe(a.gap, "spacing") || "gap-4"), n = d(() => {
1416
- const u = {
1417
- start: "items-start",
1418
- center: "items-center",
1419
- end: "items-end",
1420
- stretch: "items-stretch"
1421
- };
1422
- return u[a.align] || u.stretch;
1423
- }), s = d(() => {
1424
- const u = {
1425
- start: "justify-start",
1426
- center: "justify-center",
1427
- end: "justify-end",
1428
- between: "justify-between",
1429
- around: "justify-around"
1430
- };
1431
- return u[a.justify] || u.start;
1432
- }), i = d(() => a.dividers ? a.direction === "horizontal" ? "divide-x divide-slate-200" : "divide-y divide-slate-200" : null), c = d(
1433
- () => F(
1434
- qn,
1435
- t.value,
1436
- l.value,
1437
- n.value,
1438
- s.value,
1439
- i.value
1440
- )
1441
- );
1442
- return (u, g) => (o(), r("div", {
1443
- class: p(c.value),
1444
- "data-component": "DXStack",
1445
- "data-direction": e.direction,
1446
- "data-gap": e.gap,
1447
- "data-align": e.align,
1448
- "data-justify": e.justify
1449
- }, [
1450
- N(u.$slots, "default")
1451
- ], 10, Hn));
1452
- }
1453
- }, ug = {
1454
- __name: "DXSpacer",
1455
- props: {
1456
- /** Размер: xs | sm | md | lg | xl или число в пикселях */
1457
- size: { type: [String, Number], default: "md" },
1458
- /** Направление: vertical | horizontal | both */
1459
- direction: { type: String, default: "vertical" },
1460
- /** Занять всё доступное пространство (flex-grow) */
1461
- grow: { type: Boolean, default: !1 }
892
+ success: {
893
+ bg: "bg-emerald-50",
894
+ text: "text-emerald-800",
895
+ border: "border-emerald-200",
896
+ icon: ca,
897
+ iconColor: "text-emerald-500",
898
+ // Для Checkbox
899
+ checkbox: {
900
+ unchecked: "border-slate-300 bg-white hover:border-emerald-400",
901
+ checked: "border-emerald-600 bg-emerald-600 hover:bg-emerald-500",
902
+ ring: "focus:ring-emerald-500/10"
903
+ },
904
+ // Для Radio
905
+ radio: {
906
+ unchecked: "border-slate-300 bg-white hover:border-emerald-400",
907
+ checked: "border-emerald-600 bg-emerald-50 hover:border-emerald-500",
908
+ ring: "focus:ring-emerald-500/10",
909
+ dot: "bg-emerald-600"
910
+ },
911
+ // Для текста
912
+ text: "text-emerald-700",
913
+ // Для тегов
914
+ tag: "bg-green-100 text-green-800 border-green-200",
915
+ // Для прогресс-бара
916
+ progress: "bg-emerald-500",
917
+ // Для divider
918
+ divider: "border-emerald-200",
919
+ // Для tooltip
920
+ tooltip: "bg-emerald-600 text-white",
921
+ // Для лоадера
922
+ loader: {
923
+ border: "border-emerald-300",
924
+ borderTop: "border-t-emerald-600",
925
+ text: "text-emerald-700"
926
+ },
927
+ // Для слайдера
928
+ slider: {
929
+ track: "bg-emerald-200",
930
+ thumb: "bg-emerald-600",
931
+ thumbHover: "bg-emerald-500",
932
+ tick: "bg-emerald-400",
933
+ text: "text-emerald-700",
934
+ textActive: "text-emerald-900",
935
+ textValue: "text-emerald-900"
936
+ },
937
+ // Для toggle
938
+ toggle: {
939
+ checked: "bg-emerald-600",
940
+ unchecked: "bg-slate-200",
941
+ ring: "focus:ring-emerald-500/10"
942
+ }
1462
943
  },
1463
- setup(e) {
1464
- const a = e, t = {
1465
- xs: { v: "h-1", h: "w-1" },
1466
- sm: { v: "h-2", h: "w-2" },
1467
- md: { v: "h-4", h: "w-4" },
1468
- lg: { v: "h-8", h: "w-8" },
1469
- xl: { v: "h-12", h: "w-12" }
1470
- }, l = d(() => {
1471
- if (a.grow)
1472
- return F("flex-grow");
1473
- if (typeof a.size == "number")
1474
- return F();
1475
- const s = t[a.size];
1476
- return s ? a.direction === "horizontal" ? F(s.h) : a.direction === "both" ? F(s.v, s.h) : F(s.v) : F();
1477
- }), n = d(() => {
1478
- if (a.grow) return {};
1479
- if (typeof a.size == "number") {
1480
- const s = `${a.size}px`;
1481
- return a.direction === "horizontal" ? { width: s } : a.direction === "both" ? { height: s, width: s } : { height: s };
1482
- }
1483
- return {};
1484
- });
1485
- return (s, i) => (o(), r("div", {
1486
- class: p(l.value),
1487
- style: we(n.value),
1488
- "data-component": "DXSpacer",
1489
- "aria-hidden": "true"
1490
- }, null, 6));
1491
- }
1492
- }, cg = {
1493
- __name: "DXBox",
1494
- props: {
1495
- /** HTML тег */
1496
- tag: { type: String, default: "div" },
1497
- /** Padding: none | xs | sm | md | lg | xl */
1498
- p: { type: String, default: "" },
1499
- /** Padding X (horizontal) */
1500
- px: { type: String, default: "" },
1501
- /** Padding Y (vertical) */
1502
- py: { type: String, default: "" },
1503
- /** Margin: none | xs | sm | md | lg | xl | auto */
1504
- m: { type: String, default: "" },
1505
- /** Margin X (horizontal) */
1506
- mx: { type: String, default: "" },
1507
- /** Margin Y (vertical) */
1508
- my: { type: String, default: "" },
1509
- /** Скругление: none | sm | md | lg | xl | 2xl | full */
1510
- rounded: { type: String, default: "" },
1511
- /** Фон: white | slate | transparent */
1512
- bg: { type: String, default: "" },
1513
- /** Тень: none | sm | md | lg | xl */
1514
- shadow: { type: String, default: "" },
1515
- /** Рамка */
1516
- border: { type: Boolean, default: !1 }
944
+ warning: {
945
+ bg: "bg-amber-50",
946
+ text: "text-amber-800",
947
+ border: "border-amber-200",
948
+ icon: Oa,
949
+ iconColor: "text-amber-500",
950
+ // Для Checkbox
951
+ checkbox: {
952
+ unchecked: "border-slate-300 bg-white hover:border-amber-400",
953
+ checked: "border-amber-600 bg-amber-600 hover:bg-amber-500",
954
+ ring: "focus:ring-amber-500/10"
955
+ },
956
+ // Для Radio
957
+ radio: {
958
+ unchecked: "border-slate-300 bg-white hover:border-amber-400",
959
+ checked: "border-amber-600 bg-amber-50 hover:border-amber-500",
960
+ ring: "focus:ring-amber-500/10",
961
+ dot: "bg-amber-600"
962
+ },
963
+ // Для текста
964
+ text: "text-amber-700",
965
+ // Для тегов
966
+ tag: "bg-yellow-100 text-yellow-800 border-yellow-200",
967
+ // Для прогресс-бара
968
+ progress: "bg-amber-500",
969
+ // Для divider
970
+ divider: "border-amber-200",
971
+ // Для tooltip
972
+ tooltip: "bg-amber-600 text-white",
973
+ // Для лоадера
974
+ loader: {
975
+ border: "border-amber-300",
976
+ borderTop: "border-t-amber-600",
977
+ text: "text-amber-700"
978
+ },
979
+ // Для слайдера
980
+ slider: {
981
+ track: "bg-amber-200",
982
+ thumb: "bg-amber-600",
983
+ thumbHover: "bg-amber-500",
984
+ tick: "bg-amber-400",
985
+ text: "text-amber-700",
986
+ textActive: "text-amber-900",
987
+ textValue: "text-amber-900"
988
+ },
989
+ // Для toggle
990
+ toggle: {
991
+ checked: "bg-amber-600",
992
+ unchecked: "bg-slate-200",
993
+ ring: "focus:ring-amber-500/10"
994
+ }
1517
995
  },
1518
- setup(e) {
1519
- const a = e, t = d(() => {
1520
- const u = {};
1521
- if (a.p) {
1522
- const g = oe(a.p, "padding");
1523
- g && (u[g] = !0);
1524
- }
1525
- if (a.px) {
1526
- const g = oe(a.px, "paddingX");
1527
- g && (u[g] = !0);
1528
- }
1529
- if (a.py) {
1530
- const g = oe(a.py, "paddingY");
1531
- g && (u[g] = !0);
1532
- }
1533
- return Object.keys(u).length > 0 ? u : null;
1534
- }), l = d(() => {
1535
- const u = {};
1536
- if (a.m)
1537
- if (a.m === "auto")
1538
- u["m-auto"] = !0;
1539
- else {
1540
- const g = oe(a.m, "margin");
1541
- g && (u[g] = !0);
1542
- }
1543
- if (a.mx)
1544
- if (a.mx === "auto")
1545
- u["mx-auto"] = !0;
1546
- else {
1547
- const g = oe(a.mx, "marginX");
1548
- g && (u[g] = !0);
1549
- }
1550
- if (a.my)
1551
- if (a.my === "auto")
1552
- u["my-auto"] = !0;
1553
- else {
1554
- const g = oe(a.my, "marginY");
1555
- g && (u[g] = !0);
1556
- }
1557
- return Object.keys(u).length > 0 ? u : null;
1558
- }), n = d(() => a.rounded ? {
1559
- none: "rounded-none",
1560
- sm: "rounded-sm",
1561
- md: "rounded-md",
1562
- lg: "rounded-lg",
1563
- xl: "rounded-xl",
1564
- "2xl": "rounded-2xl",
1565
- full: "rounded-full"
1566
- }[a.rounded] || `rounded-${a.rounded}` : null), s = d(() => a.bg ? {
1567
- white: "bg-white",
1568
- slate: "bg-slate-50",
1569
- transparent: "bg-transparent"
1570
- }[a.bg] || a.bg : null), i = d(() => a.shadow ? {
1571
- none: "shadow-none",
1572
- sm: "shadow-sm",
1573
- md: "shadow",
1574
- lg: "shadow-lg",
1575
- xl: "shadow-xl"
1576
- }[a.shadow] || `shadow-${a.shadow}` : null), c = d(
1577
- () => F(
1578
- t.value,
1579
- l.value,
1580
- n.value,
1581
- s.value,
1582
- i.value,
1583
- {
1584
- "border border-slate-200": a.border
1585
- }
1586
- )
1587
- );
1588
- return (u, g) => (o(), L(ve(e.tag), {
1589
- class: p(c.value),
1590
- "data-component": "DXBox"
1591
- }, {
1592
- default: j(() => [
1593
- N(u.$slots, "default")
1594
- ]),
1595
- _: 3
1596
- }, 8, ["class"]));
996
+ danger: {
997
+ bg: "bg-rose-50",
998
+ text: "text-rose-800",
999
+ border: "border-rose-200",
1000
+ icon: zl,
1001
+ iconColor: "text-rose-500",
1002
+ // Для Checkbox
1003
+ checkbox: {
1004
+ unchecked: "border-slate-300 bg-white hover:border-rose-400",
1005
+ checked: "border-rose-600 bg-rose-600 hover:bg-rose-500",
1006
+ ring: "focus:ring-rose-500/10"
1007
+ },
1008
+ // Для Radio
1009
+ radio: {
1010
+ unchecked: "border-slate-300 bg-white hover:border-rose-400",
1011
+ checked: "border-rose-600 bg-rose-50 hover:border-rose-500",
1012
+ ring: "focus:ring-rose-500/10",
1013
+ dot: "bg-rose-600"
1014
+ },
1015
+ // Для текста
1016
+ text: "text-rose-700",
1017
+ // Для тегов
1018
+ tag: "bg-red-100 text-red-800 border-red-200",
1019
+ // Для прогресс-бара
1020
+ progress: "bg-rose-500",
1021
+ // Для divider
1022
+ divider: "border-rose-200",
1023
+ // Для tooltip
1024
+ tooltip: "bg-rose-600 text-white",
1025
+ // Для лоадера
1026
+ loader: {
1027
+ border: "border-rose-300",
1028
+ borderTop: "border-t-rose-600",
1029
+ text: "text-rose-700"
1030
+ },
1031
+ // Для слайдера
1032
+ slider: {
1033
+ track: "bg-rose-200",
1034
+ thumb: "bg-rose-600",
1035
+ thumbHover: "bg-rose-500",
1036
+ tick: "bg-rose-400",
1037
+ text: "text-rose-700",
1038
+ textActive: "text-rose-900",
1039
+ textValue: "text-rose-900"
1040
+ },
1041
+ // Для toggle
1042
+ toggle: {
1043
+ checked: "bg-rose-600",
1044
+ unchecked: "bg-slate-200",
1045
+ ring: "focus:ring-rose-500/10"
1046
+ }
1047
+ },
1048
+ // Специальные варианты для текста
1049
+ muted: {
1050
+ text: "text-slate-500"
1051
+ },
1052
+ // Специальные варианты для divider
1053
+ light: {
1054
+ divider: "border-slate-100"
1055
+ },
1056
+ dark: {
1057
+ divider: "border-slate-300",
1058
+ // Для tooltip
1059
+ tooltip: "bg-slate-900 text-white"
1060
+ },
1061
+ // Специальные варианты для tooltip
1062
+ tooltipLight: {
1063
+ tooltip: "bg-white text-slate-900 border border-slate-200 shadow-lg"
1064
+ }
1065
+ };
1066
+ function eg(e) {
1067
+ const a = de[e] || de.info;
1068
+ return `${a.bg} ${a.text} ${a.border}`;
1069
+ }
1070
+ function tg(e) {
1071
+ return (de[e] || de.info).icon;
1072
+ }
1073
+ function Vn(e) {
1074
+ return de[e] || de.info;
1075
+ }
1076
+ function Bn(e) {
1077
+ return (de[e] || de.primary).checkbox || de.primary.checkbox;
1078
+ }
1079
+ function al(e) {
1080
+ return (de[e] || de.primary).radio || de.primary.radio;
1081
+ }
1082
+ function Za(e) {
1083
+ return e === "default" ? "text-slate-700" : (de[e] || de.default).text || "text-slate-700";
1084
+ }
1085
+ function In(e) {
1086
+ return (de[e] || de.default).tag || de.default.tag;
1087
+ }
1088
+ function Tn(e) {
1089
+ return (de[e] || de.default).progress || de.default.progress;
1090
+ }
1091
+ function En(e) {
1092
+ return (de[e] || de.default).loader || de.default.loader;
1093
+ }
1094
+ const ll = {
1095
+ horizontal: {
1096
+ thin: {
1097
+ light: "border-t border-slate-100",
1098
+ default: "border-t border-slate-200",
1099
+ dark: "border-t border-slate-300"
1100
+ },
1101
+ default: {
1102
+ light: "border-t border-slate-100",
1103
+ default: "border-t border-slate-200",
1104
+ dark: "border-t border-slate-300"
1105
+ },
1106
+ thick: {
1107
+ light: "border-t-2 border-slate-100",
1108
+ default: "border-t-2 border-slate-200",
1109
+ dark: "border-t-2 border-slate-300"
1110
+ }
1111
+ },
1112
+ vertical: {
1113
+ thin: {
1114
+ light: "border-l border-slate-100",
1115
+ default: "border-l border-slate-200",
1116
+ dark: "border-l border-slate-300"
1117
+ },
1118
+ default: {
1119
+ light: "border-l border-slate-100",
1120
+ default: "border-l border-slate-200",
1121
+ dark: "border-l border-slate-300"
1122
+ },
1123
+ thick: {
1124
+ light: "border-l-2 border-slate-100",
1125
+ default: "border-l-2 border-slate-200",
1126
+ dark: "border-l-2 border-slate-300"
1127
+ }
1597
1128
  }
1598
- }, Un = {
1599
- enterActiveClass: "transition-all duration-200 ease-out",
1600
- enterFromClass: "opacity-0 max-h-0",
1601
- enterToClass: "opacity-100 max-h-96",
1602
- leaveActiveClass: "transition-all duration-200 ease-in",
1603
- leaveFromClass: "opacity-100 max-h-96",
1604
- leaveToClass: "opacity-0 max-h-0"
1605
- }, Pt = {
1606
- enterActiveClass: "transition-opacity duration-200 ease-out",
1607
- enterFromClass: "opacity-0",
1608
- enterToClass: "opacity-100",
1609
- leaveActiveClass: "transition-opacity duration-200 ease-in",
1610
- leaveFromClass: "opacity-100",
1611
- leaveToClass: "opacity-0"
1612
- }, Na = {
1613
- enterActiveClass: "transition-all duration-200 ease-out",
1614
- enterFromClass: "opacity-0 scale-95",
1615
- enterToClass: "opacity-100 scale-100",
1616
- leaveActiveClass: "transition-all duration-200 ease-in",
1617
- leaveFromClass: "opacity-100 scale-100",
1618
- leaveToClass: "opacity-0 scale-95"
1619
- }, Ra = {
1620
- enterActiveClass: "transition-all duration-300 ease-out",
1621
- enterFromClass: "opacity-0 translate-x-full",
1622
- enterToClass: "opacity-100 translate-x-0",
1623
- leaveActiveClass: "transition-all duration-300 ease-in",
1624
- leaveFromClass: "opacity-100 translate-x-0",
1625
- leaveToClass: "opacity-0 translate-x-full"
1626
- }, Ha = {
1627
- enterActiveClass: "transition-all duration-300 ease-out",
1628
- enterFromClass: "opacity-0 -translate-x-full",
1629
- enterToClass: "opacity-100 translate-x-0",
1630
- leaveActiveClass: "transition-all duration-300 ease-in",
1631
- leaveFromClass: "opacity-100 translate-x-0",
1632
- leaveToClass: "opacity-0 -translate-x-full"
1633
- }, qa = {
1634
- enterActiveClass: "transition-all duration-300 ease-out",
1635
- enterFromClass: "opacity-0 translate-y-full",
1636
- enterToClass: "opacity-100 translate-y-0",
1637
- leaveActiveClass: "transition-all duration-300 ease-in",
1638
- leaveFromClass: "opacity-100 translate-y-0",
1639
- leaveToClass: "opacity-0 translate-y-full"
1640
- }, Ua = {
1641
- enterActiveClass: "transition-all duration-300 ease-out",
1642
- enterFromClass: "opacity-0 -translate-y-full",
1643
- enterToClass: "opacity-100 translate-y-0",
1644
- leaveActiveClass: "transition-all duration-300 ease-in",
1645
- leaveFromClass: "opacity-100 translate-y-0",
1646
- leaveToClass: "opacity-0 -translate-y-full"
1647
1129
  };
1648
- function Zn(e = "top") {
1130
+ function Mn(e, a, t) {
1131
+ var n, s, i, c;
1132
+ const l = e === "vertical" ? "vertical" : "horizontal";
1133
+ return ((s = (n = ll[l]) == null ? void 0 : n[a]) == null ? void 0 : s[t]) || ((c = (i = ll[l]) == null ? void 0 : i.default) == null ? void 0 : c.default) || "border-t border-slate-200";
1134
+ }
1135
+ function Xn(e) {
1136
+ var t;
1137
+ return e === "light" ? ((t = de.tooltipLight) == null ? void 0 : t.tooltip) || "bg-white text-slate-900 border border-slate-200 shadow-lg" : (de[e] || de.dark).tooltip || de.dark.tooltip;
1138
+ }
1139
+ function Ln(e = "top") {
1649
1140
  const a = {
1141
+ top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
1142
+ bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
1143
+ left: "right-full top-1/2 -translate-y-1/2 mr-2",
1144
+ right: "left-full top-1/2 -translate-y-1/2 ml-2"
1145
+ };
1146
+ return a[e] || a.top;
1147
+ }
1148
+ function On(e, a) {
1149
+ var i;
1150
+ const t = "absolute w-0 h-0 border-4", l = {
1650
1151
  top: {
1651
- enterFrom: "opacity-0 translate-y-1",
1652
- enterTo: "opacity-100 translate-y-0",
1653
- leaveFrom: "opacity-100 translate-y-0",
1654
- leaveTo: "opacity-0 translate-y-1"
1152
+ dark: "top-full left-1/2 -translate-x-1/2 border-t-slate-900 border-l-transparent border-r-transparent border-b-transparent",
1153
+ light: "top-full left-1/2 -translate-x-1/2 border-t-white border-l-transparent border-r-transparent border-b-transparent",
1154
+ primary: "top-full left-1/2 -translate-x-1/2 border-t-slate-900 border-l-transparent border-r-transparent border-b-transparent",
1155
+ info: "top-full left-1/2 -translate-x-1/2 border-t-blue-600 border-l-transparent border-r-transparent border-b-transparent",
1156
+ success: "top-full left-1/2 -translate-x-1/2 border-t-emerald-600 border-l-transparent border-r-transparent border-b-transparent",
1157
+ warning: "top-full left-1/2 -translate-x-1/2 border-t-amber-600 border-l-transparent border-r-transparent border-b-transparent",
1158
+ danger: "top-full left-1/2 -translate-x-1/2 border-t-rose-600 border-l-transparent border-r-transparent border-b-transparent"
1655
1159
  },
1656
1160
  bottom: {
1657
- enterFrom: "opacity-0 -translate-y-1",
1658
- enterTo: "opacity-100 translate-y-0",
1659
- leaveFrom: "opacity-100 translate-y-0",
1660
- leaveTo: "opacity-0 -translate-y-1"
1161
+ dark: "bottom-full left-1/2 -translate-x-1/2 border-b-slate-900 border-l-transparent border-r-transparent border-t-transparent",
1162
+ light: "bottom-full left-1/2 -translate-x-1/2 border-b-white border-l-transparent border-r-transparent border-t-transparent",
1163
+ primary: "bottom-full left-1/2 -translate-x-1/2 border-b-slate-900 border-l-transparent border-r-transparent border-t-transparent",
1164
+ info: "bottom-full left-1/2 -translate-x-1/2 border-b-blue-600 border-l-transparent border-r-transparent border-t-transparent",
1165
+ success: "bottom-full left-1/2 -translate-x-1/2 border-b-emerald-600 border-l-transparent border-r-transparent border-t-transparent",
1166
+ warning: "bottom-full left-1/2 -translate-x-1/2 border-b-amber-600 border-l-transparent border-r-transparent border-t-transparent",
1167
+ danger: "bottom-full left-1/2 -translate-x-1/2 border-b-rose-600 border-l-transparent border-r-transparent border-t-transparent"
1661
1168
  },
1662
1169
  left: {
1663
- enterFrom: "opacity-0 translate-x-1",
1664
- enterTo: "opacity-100 translate-x-0",
1665
- leaveFrom: "opacity-100 translate-x-0",
1666
- leaveTo: "opacity-0 translate-x-1"
1170
+ dark: "left-full top-1/2 -translate-y-1/2 border-l-slate-900 border-t-transparent border-b-transparent border-r-transparent",
1171
+ light: "left-full top-1/2 -translate-y-1/2 border-l-white border-t-transparent border-b-transparent border-r-transparent",
1172
+ primary: "left-full top-1/2 -translate-y-1/2 border-l-slate-900 border-t-transparent border-b-transparent border-r-transparent",
1173
+ info: "left-full top-1/2 -translate-y-1/2 border-l-blue-600 border-t-transparent border-b-transparent border-r-transparent",
1174
+ success: "left-full top-1/2 -translate-y-1/2 border-l-emerald-600 border-t-transparent border-b-transparent border-r-transparent",
1175
+ warning: "left-full top-1/2 -translate-y-1/2 border-l-amber-600 border-t-transparent border-b-transparent border-r-transparent",
1176
+ danger: "left-full top-1/2 -translate-y-1/2 border-l-rose-600 border-t-transparent border-b-transparent border-r-transparent"
1667
1177
  },
1668
1178
  right: {
1669
- enterFrom: "opacity-0 -translate-x-1",
1670
- enterTo: "opacity-100 translate-x-0",
1671
- leaveFrom: "opacity-100 translate-x-0",
1672
- leaveTo: "opacity-0 -translate-x-1"
1179
+ dark: "right-full top-1/2 -translate-y-1/2 border-r-slate-900 border-t-transparent border-b-transparent border-l-transparent",
1180
+ light: "right-full top-1/2 -translate-y-1/2 border-r-white border-t-transparent border-b-transparent border-l-transparent",
1181
+ primary: "right-full top-1/2 -translate-y-1/2 border-r-slate-900 border-t-transparent border-b-transparent border-l-transparent",
1182
+ info: "right-full top-1/2 -translate-y-1/2 border-r-blue-600 border-t-transparent border-b-transparent border-l-transparent",
1183
+ success: "right-full top-1/2 -translate-y-1/2 border-r-emerald-600 border-t-transparent border-b-transparent border-l-transparent",
1184
+ warning: "right-full top-1/2 -translate-y-1/2 border-r-amber-600 border-t-transparent border-b-transparent border-l-transparent",
1185
+ danger: "right-full top-1/2 -translate-y-1/2 border-r-rose-600 border-t-transparent border-b-transparent border-l-transparent"
1673
1186
  }
1674
- }, t = a[e] || a.top;
1675
- return {
1676
- enterActiveClass: "transition-all duration-150 ease-out",
1677
- enterFromClass: t.enterFrom,
1678
- enterToClass: t.enterTo,
1679
- leaveActiveClass: "transition-all duration-150 ease-in",
1680
- leaveFromClass: t.leaveFrom,
1681
- leaveToClass: t.leaveTo
1682
- };
1187
+ }, n = a || "dark";
1188
+ return `${t} ${((i = l[e || "top"]) == null ? void 0 : i[n]) || l.top.dark}`;
1683
1189
  }
1684
- const Wn = {
1685
- enterActiveClass: "transition-all duration-150 ease-out",
1686
- enterFromClass: "opacity-0 translate-y-1",
1687
- enterToClass: "opacity-100 translate-y-0",
1688
- leaveActiveClass: "transition-all duration-150 ease-in",
1689
- leaveFromClass: "opacity-100 translate-y-0",
1690
- leaveToClass: "opacity-0 translate-y-1"
1691
- };
1692
- function Al(e = "fade") {
1693
- const a = {
1694
- collapse: Un,
1695
- fade: Pt,
1696
- "fade-scale": Na,
1697
- "slide-right": Ra,
1698
- "slide-left": Ha,
1699
- "slide-up": qa,
1700
- "slide-down": Ua,
1701
- "tooltip-custom": Wn
1190
+ function Pn(e) {
1191
+ return (de[e] || de.primary).slider || de.primary.slider;
1192
+ }
1193
+ function jn(e, a = !1) {
1194
+ const l = (de[e] || de.slate).toggle || de.slate.toggle;
1195
+ return {
1196
+ checked: l.checked,
1197
+ unchecked: l.unchecked,
1198
+ ring: l.ring,
1199
+ current: a ? l.checked : l.unchecked
1702
1200
  };
1703
- return a[e] || a.fade;
1704
1201
  }
1705
- const Vl = Al;
1706
- function Za(e = "none", a = "icon", t = !1) {
1707
- const l = {
1708
- none: "",
1709
- wiggle: "dx-icon-wiggle",
1710
- scale: "dx-icon-scale",
1711
- rotate: "dx-icon-rotate"
1712
- }, n = {
1713
- none: "",
1714
- wiggle: "dx-icon-wiggle-group",
1715
- scale: "dx-icon-scale-group",
1716
- rotate: "dx-icon-rotate-group"
1717
- }, s = {
1718
- none: "",
1719
- wiggle: "dx-btn-wiggle",
1720
- scale: "dx-btn-scale",
1721
- rotate: "dx-btn-rotate"
1722
- }, i = {
1723
- none: "",
1724
- wiggle: "dx-btn-wiggle-group",
1725
- scale: "dx-btn-scale-group",
1726
- rotate: "dx-btn-rotate-group"
1727
- }, c = {
1728
- none: "",
1729
- fade: "dx-animate-fade-in",
1730
- "fade-out": "dx-animate-fade-out",
1731
- slide: "dx-animate-slide-in",
1732
- bounce: "dx-animate-bounce-slow",
1733
- pulse: "dx-animate-pulse",
1734
- spin: "dx-animate-spin",
1735
- shake: "dx-animate-shake"
1736
- }, u = {
1737
- none: "",
1738
- stripes: "dx-animate-stripes"
1739
- }, g = {
1740
- none: "",
1741
- custom: "dx-tooltip-custom"
1742
- // Можно использовать для кастомных анимаций через CSS
1743
- }, h = {
1744
- none: "",
1745
- smooth: "transition-transform duration-200 ease-in-out"
1746
- // Плавная анимация движения индикатора
1202
+ function Fn(e) {
1203
+ const a = {
1204
+ slate: "bg-slate-50 text-slate-700 border-slate-100",
1205
+ success: "bg-emerald-50 text-emerald-700 border-emerald-100",
1206
+ warning: "bg-amber-50 text-amber-700 border-amber-100",
1207
+ danger: "bg-rose-50 text-rose-700 border-rose-100",
1208
+ info: "bg-blue-50 text-blue-700 border-blue-100"
1747
1209
  };
1748
- return a === "icon" ? t ? n[e] || "" : l[e] || "" : a === "button" ? t ? i[e] || "" : s[e] || "" : a === "progress" ? u[e] || "" : a === "tooltip" ? g[e] || "" : a === "toggle" ? h[e] || h.smooth : c[e] || "";
1210
+ return a[e] || a.slate;
1749
1211
  }
1750
- const W = {
1751
- __name: "DXIcon",
1212
+ function Wa(e) {
1213
+ const a = {
1214
+ // Основные варианты
1215
+ primary: "bg-slate-800 text-white hover:bg-slate-700",
1216
+ secondary: "bg-slate-200 text-slate-700 hover:bg-slate-300",
1217
+ ghost: "text-slate-700 hover:bg-slate-100 bg-transparent",
1218
+ outline: "border border-slate-200 text-slate-700 hover:border-slate-300 bg-white",
1219
+ // Семантические варианты
1220
+ success: "bg-emerald-600 text-white hover:bg-emerald-500",
1221
+ warning: "bg-amber-600 text-white hover:bg-amber-500",
1222
+ danger: "bg-rose-600 text-white hover:bg-rose-500",
1223
+ info: "bg-blue-600 text-white hover:bg-blue-500",
1224
+ // Дополнительные варианты
1225
+ link: "text-blue-600 hover:text-blue-700 underline-offset-2 hover:underline bg-transparent",
1226
+ soft: "bg-slate-50 text-slate-700 hover:bg-slate-100"
1227
+ };
1228
+ return a[e] || a.primary;
1229
+ }
1230
+ function Nn(e) {
1231
+ const a = {
1232
+ default: "text-slate-700 hover:bg-slate-50",
1233
+ danger: "text-rose-600 hover:bg-rose-50",
1234
+ success: "text-emerald-600 hover:bg-emerald-50"
1235
+ };
1236
+ return a[e] || a.default;
1237
+ }
1238
+ function F(e, ...a) {
1239
+ const t = [e];
1240
+ return a.forEach((l) => {
1241
+ l && t.push(l);
1242
+ }), t;
1243
+ }
1244
+ const Rn = ["data-variant", "data-size"], Hn = "inline-flex items-center gap-1 rounded-full border font-semibold", dt = {
1245
+ __name: "DXBadge",
1752
1246
  props: {
1753
- /** Heroicon компонент */
1754
- icon: { type: [Object, Function], required: !0 },
1755
- /** Размер: xs | sm | md | lg | xl */
1756
- size: { type: String, default: "md" },
1757
- /** Анимация при hover: none | wiggle | scale | rotate */
1758
- animation: { type: String, default: "none" },
1759
- /** Использовать group-hover вместо обычного hover */
1760
- groupHover: { type: Boolean, default: !1 },
1761
- /** Дополнительные классы */
1762
- class: { type: [String, Array, Object], default: "" }
1247
+ /** Вариант оформления: slate | success | warning | danger | info */
1248
+ variant: { type: String, default: "slate" },
1249
+ /** Размер: sm | md */
1250
+ size: { type: String, default: "sm" },
1251
+ /** Иконка слева */
1252
+ iconLeft: { type: [Object, Function], default: null },
1253
+ /** Иконка справа */
1254
+ iconRight: { type: [Object, Function], default: null }
1763
1255
  },
1764
1256
  setup(e) {
1765
- const a = e, t = d(() => [
1766
- fe(a.size, "icon"),
1767
- Za(a.animation, "icon", a.groupHover),
1768
- a.class
1769
- ]);
1770
- return (l, n) => (o(), L(ve(e.icon), {
1257
+ const a = e, t = d(
1258
+ () => F(
1259
+ Hn,
1260
+ fe(a.size, "badge"),
1261
+ Fn(a.variant)
1262
+ )
1263
+ );
1264
+ return (l, n) => (o(), r("span", {
1771
1265
  class: p(t.value),
1772
- "data-component": "DXIcon",
1773
- "data-size": e.size,
1774
- "data-animation": e.animation
1775
- }, null, 8, ["class", "data-size", "data-animation"]));
1776
- }
1777
- }, Gn = ["data-size", "data-shape"], Yn = ["src", "alt"], Kn = "relative inline-flex items-center justify-center overflow-hidden bg-slate-100 transition-transform group", Qn = "w-full h-full object-cover", Jn = "font-medium text-slate-600 uppercase", _n = "text-slate-400", la = {
1778
- __name: "DXAvatar",
1779
- props: {
1780
- /** URL изображения */
1781
- src: { type: String, default: "" },
1782
- /** Alt текст */
1783
- alt: { type: String, default: "Avatar" },
1784
- /** Инициалы (если нет изображения) */
1785
- initials: { type: String, default: "" },
1786
- /** Размер: xs | sm | md | lg | xl */
1787
- size: { type: String, default: "md" },
1788
- /** Форма: circle | square */
1789
- shape: { type: String, default: "circle" },
1790
- /** Кастомная иконка для fallback (по умолчанию UserIcon) */
1791
- icon: { type: [Object, Function], default: null },
1792
- /** Анимация иконки при hover: none | wiggle | scale | rotate */
1793
- iconAnimation: { type: String, default: "wiggle" }
1794
- },
1795
- setup(e) {
1796
- const a = e, t = H(!1);
1797
- se(() => a.src, () => {
1798
- t.value = !1;
1799
- });
1800
- const l = {
1801
- circle: "rounded-full",
1802
- square: "rounded-lg"
1803
- }, n = {
1804
- xs: "text-xs",
1805
- sm: "text-xs",
1806
- md: "text-sm",
1807
- lg: "text-base",
1808
- xl: "text-lg"
1809
- }, s = d(
1810
- () => [
1811
- Kn,
1812
- fe(a.size, "avatar"),
1813
- l[a.shape] || l.circle,
1814
- { "hover:scale-105": a.iconAnimation !== "none" }
1815
- ]
1816
- ), i = d(() => Qn), c = d(() => [
1817
- Jn,
1818
- n[a.size] || n.md
1819
- ]), u = d(() => _n), g = d(() => a.icon || pn), h = {
1820
- xs: "sm",
1821
- sm: "sm",
1822
- md: "md",
1823
- lg: "lg",
1824
- xl: "xl"
1825
- }, m = d(() => h[a.size] || "md");
1826
- return (y, w) => (o(), r("div", {
1827
- class: p(s.value),
1828
- "data-component": "DXAvatar",
1829
- "data-size": e.size,
1830
- "data-shape": e.shape
1266
+ "data-component": "DXBadge",
1267
+ "data-variant": e.variant,
1268
+ "data-size": e.size
1831
1269
  }, [
1832
- e.src && !t.value ? (o(), r("img", {
1270
+ e.iconLeft ? (o(), L(W, {
1833
1271
  key: 0,
1834
- src: e.src,
1835
- alt: e.alt,
1836
- class: p(i.value),
1837
- onError: w[0] || (w[0] = (C) => t.value = !0)
1838
- }, null, 42, Yn)) : e.initials ? (o(), r("span", {
1272
+ icon: e.iconLeft,
1273
+ size: "xs",
1274
+ animation: "none"
1275
+ }, null, 8, ["icon"])) : b("", !0),
1276
+ N(l.$slots, "default"),
1277
+ e.iconRight ? (o(), L(W, {
1839
1278
  key: 1,
1840
- class: p(c.value)
1841
- }, T(e.initials), 3)) : (o(), L(W, {
1842
- key: 2,
1843
- icon: g.value,
1844
- size: m.value,
1845
- animation: e.iconAnimation,
1846
- "group-hover": e.iconAnimation !== "none",
1847
- class: p(u.value)
1848
- }, null, 8, ["icon", "size", "animation", "group-hover", "class"]))
1849
- ], 10, Gn));
1279
+ icon: e.iconRight,
1280
+ size: "xs",
1281
+ animation: "none"
1282
+ }, null, 8, ["icon"])) : b("", !0)
1283
+ ], 10, Rn));
1850
1284
  }
1851
- }, eo = ["data-blur", "data-dismissible"], Wa = {
1852
- __name: "DXBackdrop",
1285
+ }, qn = ["data-variant"], Un = {
1286
+ key: 0,
1287
+ class: "mt-2 text-sm text-slate-500"
1288
+ }, ag = {
1289
+ __name: "DXBlockquote",
1853
1290
  props: {
1854
- /** Показать/скрыть backdrop */
1855
- show: { type: Boolean, default: !1 },
1856
- /** Уровень размытия: none | sm | md | lg | xl */
1857
- blur: { type: String, default: "sm", validator: (e) => ["none", "sm", "md", "lg", "xl"].includes(e) },
1858
- /** Цвет фона (Tailwind класс): bg-slate-900/40 | bg-black/50 */
1859
- backgroundColor: { type: String, default: "bg-slate-900/40" },
1860
- /** z-index: 0 | 10 | 20 | 30 | 40 | 50 | auto */
1861
- zIndex: {
1862
- type: String,
1863
- default: "50",
1864
- validator: (e) => ["0", "10", "20", "30", "40", "50", "auto"].includes(e)
1865
- },
1866
- /** Можно ли закрыть кликом */
1867
- dismissible: { type: Boolean, default: !0 },
1868
- /** Блокировать скролл body */
1869
- lockScroll: { type: Boolean, default: !0 }
1291
+ /** Вариант: default | bordered | highlighted */
1292
+ variant: { type: String, default: "bordered" },
1293
+ /** Размер: sm | md | lg */
1294
+ size: { type: String, default: "md" },
1295
+ /** Источник цитаты */
1296
+ cite: { type: String, default: "" }
1870
1297
  },
1871
- emits: ["click", "close"],
1872
- setup(e, { emit: a }) {
1873
- const t = {
1874
- enterActiveClass: "transition-opacity duration-200 ease-out",
1875
- enterFromClass: "opacity-0",
1876
- enterToClass: "opacity-100",
1877
- leaveActiveClass: "transition-opacity duration-200 ease-in",
1878
- leaveFromClass: "opacity-100",
1879
- leaveToClass: "opacity-0"
1880
- }, l = e, n = a, s = {
1881
- none: "backdrop-blur-none",
1882
- sm: "backdrop-blur-sm",
1883
- md: "backdrop-blur",
1884
- lg: "backdrop-blur-lg",
1885
- xl: "backdrop-blur-xl"
1886
- }, i = {
1887
- 0: "z-0",
1888
- 10: "z-10",
1889
- 20: "z-20",
1890
- 30: "z-30",
1891
- 40: "z-40",
1892
- 50: "z-50",
1893
- auto: "z-auto"
1894
- }, c = d(() => [
1895
- "fixed inset-0",
1896
- s[l.blur],
1897
- l.backgroundColor || "bg-slate-900/40",
1898
- i[l.zIndex] || "z-50",
1899
- l.dismissible && "cursor-pointer"
1900
- ]), u = (g) => {
1901
- g.target === g.currentTarget && (n("click", g), l.dismissible && n("close"));
1902
- };
1903
- return se(() => l.show, (g) => {
1904
- l.lockScroll && document.body.classList.toggle("overflow-hidden", g);
1905
- }, { immediate: !0 }), nt(() => {
1906
- l.lockScroll && document.body.classList.remove("overflow-hidden");
1907
- }), (g, h) => (o(), L(wl, { to: "body" }, [
1908
- P(Oe, Nt(Rt(t)), {
1909
- default: j(() => [
1910
- e.show ? (o(), r("div", {
1911
- key: 0,
1912
- class: p(c.value),
1913
- onClick: u,
1914
- "data-component": "DXBackdrop",
1915
- "data-blur": e.blur,
1916
- "data-dismissible": e.dismissible
1917
- }, [
1918
- N(g.$slots, "default")
1919
- ], 10, eo)) : b("", !0)
1920
- ]),
1921
- _: 3
1922
- }, 16)
1923
- ]));
1298
+ setup(e) {
1299
+ const a = e, t = {
1300
+ sm: "text-sm",
1301
+ md: "text-base",
1302
+ lg: "text-lg"
1303
+ }, l = {
1304
+ default: "text-slate-600 italic",
1305
+ bordered: "border-l-4 border-slate-300 pl-4 text-slate-600 italic",
1306
+ highlighted: "bg-slate-50 border-l-4 border-slate-400 pl-4 pr-4 py-3 rounded-r-lg text-slate-700"
1307
+ }, n = d(() => [
1308
+ t[a.size] || t.md,
1309
+ l[a.variant] || l.bordered,
1310
+ "leading-relaxed"
1311
+ ]);
1312
+ return (s, i) => (o(), r("blockquote", {
1313
+ class: p(n.value),
1314
+ "data-component": "DXBlockquote",
1315
+ "data-variant": e.variant
1316
+ }, [
1317
+ N(s.$slots, "default"),
1318
+ e.cite || s.$slots.cite ? (o(), r("footer", Un, [
1319
+ i[0] || (i[0] = G("", -1)),
1320
+ f("cite", null, [
1321
+ N(s.$slots, "cite", {}, () => [
1322
+ G(T(e.cite), 1)
1323
+ ])
1324
+ ])
1325
+ ])) : b("", !0)
1326
+ ], 10, qn));
1924
1327
  }
1925
- }, to = ["data-variant", "data-size"], ao = "inline-flex items-center gap-1 rounded-full border font-semibold", dt = {
1926
- __name: "DXBadge",
1328
+ };
1329
+ function oe(e, a = "padding") {
1330
+ const t = {
1331
+ none: "0",
1332
+ xs: "1",
1333
+ // 4px
1334
+ sm: "2",
1335
+ // 8px
1336
+ md: "4",
1337
+ // 16px
1338
+ lg: "6",
1339
+ // 24px
1340
+ xl: "8"
1341
+ // 32px
1342
+ }, l = {
1343
+ padding: "p",
1344
+ paddingX: "px",
1345
+ paddingY: "py",
1346
+ margin: "m",
1347
+ marginX: "mx",
1348
+ marginY: "my"
1349
+ };
1350
+ if (e === "none")
1351
+ return `${l[a]}-0`;
1352
+ const n = t[e];
1353
+ return n ? `${l[a]}-${n}` : "";
1354
+ }
1355
+ const lg = {
1356
+ __name: "DXBox",
1927
1357
  props: {
1928
- /** Вариант оформления: slate | success | warning | danger | info */
1929
- variant: { type: String, default: "slate" },
1930
- /** Размер: sm | md */
1931
- size: { type: String, default: "sm" },
1932
- /** Иконка слева */
1933
- iconLeft: { type: [Object, Function], default: null },
1934
- /** Иконка справа */
1935
- iconRight: { type: [Object, Function], default: null }
1358
+ /** HTML тег */
1359
+ tag: { type: String, default: "div" },
1360
+ /** Padding: none | xs | sm | md | lg | xl */
1361
+ p: { type: String, default: "" },
1362
+ /** Padding X (horizontal) */
1363
+ px: { type: String, default: "" },
1364
+ /** Padding Y (vertical) */
1365
+ py: { type: String, default: "" },
1366
+ /** Margin: none | xs | sm | md | lg | xl | auto */
1367
+ m: { type: String, default: "" },
1368
+ /** Margin X (horizontal) */
1369
+ mx: { type: String, default: "" },
1370
+ /** Margin Y (vertical) */
1371
+ my: { type: String, default: "" },
1372
+ /** Скругление: none | sm | md | lg | xl | 2xl | full */
1373
+ rounded: { type: String, default: "" },
1374
+ /** Фон: white | slate | transparent */
1375
+ bg: { type: String, default: "" },
1376
+ /** Тень: none | sm | md | lg | xl */
1377
+ shadow: { type: String, default: "" },
1378
+ /** Рамка */
1379
+ border: { type: Boolean, default: !1 }
1936
1380
  },
1937
1381
  setup(e) {
1938
- const a = e, t = d(
1382
+ const a = e, t = d(() => {
1383
+ const u = {};
1384
+ if (a.p) {
1385
+ const g = oe(a.p, "padding");
1386
+ g && (u[g] = !0);
1387
+ }
1388
+ if (a.px) {
1389
+ const g = oe(a.px, "paddingX");
1390
+ g && (u[g] = !0);
1391
+ }
1392
+ if (a.py) {
1393
+ const g = oe(a.py, "paddingY");
1394
+ g && (u[g] = !0);
1395
+ }
1396
+ return Object.keys(u).length > 0 ? u : null;
1397
+ }), l = d(() => {
1398
+ const u = {};
1399
+ if (a.m)
1400
+ if (a.m === "auto")
1401
+ u["m-auto"] = !0;
1402
+ else {
1403
+ const g = oe(a.m, "margin");
1404
+ g && (u[g] = !0);
1405
+ }
1406
+ if (a.mx)
1407
+ if (a.mx === "auto")
1408
+ u["mx-auto"] = !0;
1409
+ else {
1410
+ const g = oe(a.mx, "marginX");
1411
+ g && (u[g] = !0);
1412
+ }
1413
+ if (a.my)
1414
+ if (a.my === "auto")
1415
+ u["my-auto"] = !0;
1416
+ else {
1417
+ const g = oe(a.my, "marginY");
1418
+ g && (u[g] = !0);
1419
+ }
1420
+ return Object.keys(u).length > 0 ? u : null;
1421
+ }), n = d(() => a.rounded ? {
1422
+ none: "rounded-none",
1423
+ sm: "rounded-sm",
1424
+ md: "rounded-md",
1425
+ lg: "rounded-lg",
1426
+ xl: "rounded-xl",
1427
+ "2xl": "rounded-2xl",
1428
+ full: "rounded-full"
1429
+ }[a.rounded] || `rounded-${a.rounded}` : null), s = d(() => a.bg ? {
1430
+ white: "bg-white",
1431
+ slate: "bg-slate-50",
1432
+ transparent: "bg-transparent"
1433
+ }[a.bg] || a.bg : null), i = d(() => a.shadow ? {
1434
+ none: "shadow-none",
1435
+ sm: "shadow-sm",
1436
+ md: "shadow",
1437
+ lg: "shadow-lg",
1438
+ xl: "shadow-xl"
1439
+ }[a.shadow] || `shadow-${a.shadow}` : null), c = d(
1939
1440
  () => F(
1940
- ao,
1941
- fe(a.size, "badge"),
1942
- Bn(a.variant)
1441
+ t.value,
1442
+ l.value,
1443
+ n.value,
1444
+ s.value,
1445
+ i.value,
1446
+ {
1447
+ "border border-slate-200": a.border
1448
+ }
1943
1449
  )
1944
1450
  );
1945
- return (l, n) => (o(), r("span", {
1946
- class: p(t.value),
1947
- "data-component": "DXBadge",
1948
- "data-variant": e.variant,
1949
- "data-size": e.size
1950
- }, [
1951
- e.iconLeft ? (o(), L(W, {
1952
- key: 0,
1953
- icon: e.iconLeft,
1954
- size: "xs",
1955
- animation: "none"
1956
- }, null, 8, ["icon"])) : b("", !0),
1957
- N(l.$slots, "default"),
1958
- e.iconRight ? (o(), L(W, {
1959
- key: 1,
1960
- icon: e.iconRight,
1961
- size: "xs",
1962
- animation: "none"
1963
- }, null, 8, ["icon"])) : b("", !0)
1964
- ], 10, to));
1451
+ return (u, g) => (o(), L(ve(e.tag), {
1452
+ class: p(c.value),
1453
+ "data-component": "DXBox"
1454
+ }, {
1455
+ default: j(() => [
1456
+ N(u.$slots, "default")
1457
+ ]),
1458
+ _: 3
1459
+ }, 8, ["class"]));
1965
1460
  }
1966
- }, lo = "btn group inline-flex items-center justify-center gap-2 rounded-xl font-semibold transition focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-60", le = {
1461
+ }, Zn = "btn group inline-flex items-center justify-center gap-2 rounded-xl font-semibold transition focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-60", le = {
1967
1462
  __name: "DXButton",
1968
1463
  props: {
1969
1464
  /** Вариант оформления: primary | secondary | ghost | outline | success | warning | danger | info | link | soft */
@@ -1990,8 +1485,8 @@ const W = {
1990
1485
  setup(e) {
1991
1486
  const a = e, t = d(() => a.to ? "router-link" : a.href ? "a" : "button"), l = d(() => fe(a.size, a.iconOnly ? "buttonIcon" : "button")), n = d(
1992
1487
  () => F(
1993
- lo,
1994
- Fa(a.variant),
1488
+ Zn,
1489
+ Wa(a.variant),
1995
1490
  l.value,
1996
1491
  {
1997
1492
  "w-full": a.block,
@@ -2020,7 +1515,7 @@ const W = {
2020
1515
  _: 3
2021
1516
  }, 8, ["type", "disabled", "to", "href", "target", "rel", "class", "data-variant", "data-size", "data-disabled", "data-icon-only", "data-block"]));
2022
1517
  }
2023
- }, no = ["data-variant", "data-padding"], oo = "bg-white rounded-2xl", ut = {
1518
+ }, Wn = ["data-variant", "data-padding"], Gn = "bg-white rounded-2xl", ut = {
2024
1519
  __name: "DXCard",
2025
1520
  props: {
2026
1521
  /** Вариант: default | bordered | elevated | flat */
@@ -2043,7 +1538,7 @@ const W = {
2043
1538
  elevated: "shadow-lg border border-slate-50",
2044
1539
  flat: "border-0"
2045
1540
  }, l = d(() => [
2046
- oo,
1541
+ Gn,
2047
1542
  t[a.variant],
2048
1543
  oe(a.padding, "padding")
2049
1544
  ]);
@@ -2054,9 +1549,9 @@ const W = {
2054
1549
  "data-padding": e.padding
2055
1550
  }, [
2056
1551
  N(n.$slots, "default")
2057
- ], 10, no));
1552
+ ], 10, Wn));
2058
1553
  }
2059
- }, so = ["data-size", "data-disabled", "data-checked", "data-variant", "data-shape"], ro = ["checked", "value", "disabled"], io = ["aria-checked", "aria-disabled"], uo = "inline-flex items-center gap-2 cursor-pointer mr-4", co = "rounded border-slate-300 text-slate-900 focus:ring-slate-900/10 focus:ring-2 transition flex-shrink-0", fo = "relative flex items-center justify-center border-2 transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-1 flex-shrink-0", xt = {
1554
+ }, Yn = ["data-size", "data-disabled", "data-checked", "data-variant", "data-shape"], Kn = ["checked", "value", "disabled"], Qn = ["aria-checked", "aria-disabled"], Jn = "inline-flex items-center gap-2 cursor-pointer mr-4", _n = "rounded border-slate-300 text-slate-900 focus:ring-slate-900/10 focus:ring-2 transition flex-shrink-0", eo = "relative flex items-center justify-center border-2 transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-1 flex-shrink-0", xt = {
2060
1555
  __name: "DXCheckbox",
2061
1556
  props: {
2062
1557
  /** Значение (v-model) - boolean или массив */
@@ -2111,18 +1606,18 @@ const W = {
2111
1606
  square: "rounded",
2112
1607
  circle: "rounded-full"
2113
1608
  }, i = (x) => ({ xs: "xs", sm: "xs", md: "sm", lg: "md", xl: "md" })[x] || "sm", c = d(() => [
2114
- uo,
1609
+ Jn,
2115
1610
  { "opacity-60 cursor-not-allowed": t.disabled }
2116
1611
  ]), u = d(() => [
2117
1612
  fe(t.size, "text"),
2118
1613
  "text-slate-700 select-none"
2119
1614
  ]), g = d(() => [
2120
- co,
1615
+ _n,
2121
1616
  fe(t.size, "checkbox")
2122
1617
  ]), h = d(() => {
2123
- const x = xn(t.color);
1618
+ const x = Bn(t.color);
2124
1619
  return [
2125
- fo,
1620
+ eo,
2126
1621
  fe(t.size, "checkbox"),
2127
1622
  s[t.shape],
2128
1623
  {
@@ -2168,7 +1663,7 @@ const W = {
2168
1663
  disabled: e.disabled,
2169
1664
  class: p(g.value),
2170
1665
  onChange: C
2171
- }, null, 42, ro)) : (o(), r("div", {
1666
+ }, null, 42, Kn)) : (o(), r("div", {
2172
1667
  key: 1,
2173
1668
  class: p(h.value),
2174
1669
  onClick: $[0] || ($[0] = ce((V) => w(!m.value), ["stop"])),
@@ -2190,17 +1685,95 @@ const W = {
2190
1685
  ]),
2191
1686
  _: 1
2192
1687
  }, 16)
2193
- ], 42, io)),
1688
+ ], 42, Qn)),
2194
1689
  e.label ? (o(), r("span", {
2195
1690
  key: 2,
2196
1691
  class: p(u.value)
2197
1692
  }, T(e.label), 3)) : b("", !0)
2198
- ], 10, so));
1693
+ ], 10, Yn));
1694
+ }
1695
+ }, to = { key: 0 }, ng = {
1696
+ __name: "DXCode",
1697
+ props: {
1698
+ /** Блочный код (pre) или inline */
1699
+ block: { type: Boolean, default: !1 },
1700
+ /** Размер: xs | sm | md */
1701
+ size: { type: String, default: "sm" },
1702
+ /** Показывать номера строк (только для block) */
1703
+ lineNumbers: { type: Boolean, default: !1 }
1704
+ },
1705
+ setup(e) {
1706
+ const a = e, t = {
1707
+ xs: "text-xs",
1708
+ sm: "text-sm",
1709
+ md: "text-base"
1710
+ }, l = d(() => a.block ? [
1711
+ "block w-full overflow-x-auto rounded-xl bg-slate-900 text-slate-100 p-4",
1712
+ t[a.size] || t.sm,
1713
+ "font-mono leading-relaxed"
1714
+ ] : [
1715
+ "inline-block px-1.5 py-0.5 rounded bg-slate-100 text-slate-800",
1716
+ t[a.size] || t.sm,
1717
+ "font-mono"
1718
+ ]);
1719
+ return (n, s) => (o(), L(ve(e.block ? "pre" : "code"), {
1720
+ class: p(l.value),
1721
+ "data-component": "DXCode",
1722
+ "data-block": e.block
1723
+ }, {
1724
+ default: j(() => [
1725
+ e.block ? (o(), r("code", to, [
1726
+ N(n.$slots, "default")
1727
+ ])) : N(n.$slots, "default", { key: 1 })
1728
+ ]),
1729
+ _: 3
1730
+ }, 8, ["class", "data-block"]));
1731
+ }
1732
+ }, ao = ["data-size", "data-padding", "data-center"], lo = "w-full", no = {
1733
+ __name: "DXContainer",
1734
+ props: {
1735
+ /** Максимальная ширина: sm | md | lg | xl | 2xl | full */
1736
+ size: { type: String, default: "lg" },
1737
+ /** Центрировать контейнер */
1738
+ center: { type: Boolean, default: !0 },
1739
+ /** Горизонтальные отступы: none | xs | sm | md | lg | xl */
1740
+ padding: { type: String, default: "md" }
1741
+ },
1742
+ setup(e) {
1743
+ const a = e, t = d(() => {
1744
+ const s = {
1745
+ sm: "max-w-screen-sm",
1746
+ md: "max-w-screen-md",
1747
+ lg: "max-w-screen-lg",
1748
+ xl: "max-w-screen-xl",
1749
+ "2xl": "max-w-screen-2xl",
1750
+ full: "max-w-full"
1751
+ };
1752
+ return s[a.size] || s.lg;
1753
+ }), l = d(() => oe(a.padding, "paddingX")), n = d(
1754
+ () => F(
1755
+ lo,
1756
+ t.value,
1757
+ l.value,
1758
+ {
1759
+ "mx-auto": a.center
1760
+ }
1761
+ )
1762
+ );
1763
+ return (s, i) => (o(), r("div", {
1764
+ class: p(n.value),
1765
+ "data-component": "DXContainer",
1766
+ "data-size": e.size,
1767
+ "data-padding": e.padding,
1768
+ "data-center": e.center
1769
+ }, [
1770
+ N(s.$slots, "default")
1771
+ ], 10, ao));
2199
1772
  }
2200
- }, mo = ["data-orientation", "data-color", "data-thickness", "data-spacing"], go = {
1773
+ }, oo = ["data-orientation", "data-color", "data-thickness", "data-spacing"], so = {
2201
1774
  key: 0,
2202
1775
  class: "flex items-center w-full"
2203
- }, vo = { class: "px-3 text-sm text-slate-500 whitespace-nowrap" }, Ga = {
1776
+ }, ro = { class: "px-3 text-sm text-slate-500 whitespace-nowrap" }, Ga = {
2204
1777
  __name: "DXDivider",
2205
1778
  props: {
2206
1779
  /** Ориентация: horizontal | vertical */
@@ -2217,7 +1790,7 @@ const W = {
2217
1790
  a.orientation === "vertical" ? "inline-flex h-full" : "w-full",
2218
1791
  a.orientation === "horizontal" ? oe(a.spacing, "marginY") : oe(a.spacing, "marginX")
2219
1792
  ]), i = d(() => {
2220
- const c = Sn(
1793
+ const c = Mn(
2221
1794
  a.orientation,
2222
1795
  a.thickness,
2223
1796
  a.color
@@ -2238,11 +1811,11 @@ const W = {
2238
1811
  "data-thickness": a.thickness,
2239
1812
  "data-spacing": a.spacing
2240
1813
  }, [
2241
- n.value && l.value ? (o(), r("div", go, [
1814
+ n.value && l.value ? (o(), r("div", so, [
2242
1815
  f("div", {
2243
1816
  class: p(i.value)
2244
1817
  }, null, 2),
2245
- f("span", vo, [
1818
+ f("span", ro, [
2246
1819
  N(c.$slots, "default")
2247
1820
  ]),
2248
1821
  f("div", {
@@ -2255,10 +1828,10 @@ const W = {
2255
1828
  key: 2,
2256
1829
  class: p(i.value)
2257
1830
  }, null, 2))
2258
- ], 10, mo));
1831
+ ], 10, oo));
2259
1832
  }
2260
1833
  };
2261
- function ho(e, a) {
1834
+ function io(e, a) {
2262
1835
  return o(), r("svg", {
2263
1836
  xmlns: "http://www.w3.org/2000/svg",
2264
1837
  fill: "none",
@@ -2275,7 +1848,7 @@ function ho(e, a) {
2275
1848
  })
2276
1849
  ]);
2277
1850
  }
2278
- function po(e, a) {
1851
+ function uo(e, a) {
2279
1852
  return o(), r("svg", {
2280
1853
  xmlns: "http://www.w3.org/2000/svg",
2281
1854
  fill: "none",
@@ -2292,7 +1865,7 @@ function po(e, a) {
2292
1865
  })
2293
1866
  ]);
2294
1867
  }
2295
- function bo(e, a) {
1868
+ function co(e, a) {
2296
1869
  return o(), r("svg", {
2297
1870
  xmlns: "http://www.w3.org/2000/svg",
2298
1871
  fill: "none",
@@ -2309,7 +1882,7 @@ function bo(e, a) {
2309
1882
  })
2310
1883
  ]);
2311
1884
  }
2312
- function yo(e, a) {
1885
+ function fo(e, a) {
2313
1886
  return o(), r("svg", {
2314
1887
  xmlns: "http://www.w3.org/2000/svg",
2315
1888
  fill: "none",
@@ -2326,7 +1899,7 @@ function yo(e, a) {
2326
1899
  })
2327
1900
  ]);
2328
1901
  }
2329
- function xo(e, a) {
1902
+ function mo(e, a) {
2330
1903
  return o(), r("svg", {
2331
1904
  xmlns: "http://www.w3.org/2000/svg",
2332
1905
  fill: "none",
@@ -2343,7 +1916,7 @@ function xo(e, a) {
2343
1916
  })
2344
1917
  ]);
2345
1918
  }
2346
- function wo(e, a) {
1919
+ function go(e, a) {
2347
1920
  return o(), r("svg", {
2348
1921
  xmlns: "http://www.w3.org/2000/svg",
2349
1922
  fill: "none",
@@ -2377,7 +1950,7 @@ function Bl(e, a) {
2377
1950
  })
2378
1951
  ]);
2379
1952
  }
2380
- function ko(e, a) {
1953
+ function vo(e, a) {
2381
1954
  return o(), r("svg", {
2382
1955
  xmlns: "http://www.w3.org/2000/svg",
2383
1956
  fill: "none",
@@ -2479,7 +2052,7 @@ function ct(e, a) {
2479
2052
  })
2480
2053
  ]);
2481
2054
  }
2482
- function Co(e, a) {
2055
+ function ho(e, a) {
2483
2056
  return o(), r("svg", {
2484
2057
  xmlns: "http://www.w3.org/2000/svg",
2485
2058
  fill: "none",
@@ -2496,7 +2069,7 @@ function Co(e, a) {
2496
2069
  })
2497
2070
  ]);
2498
2071
  }
2499
- function So(e, a) {
2072
+ function po(e, a) {
2500
2073
  return o(), r("svg", {
2501
2074
  xmlns: "http://www.w3.org/2000/svg",
2502
2075
  fill: "none",
@@ -2513,7 +2086,7 @@ function So(e, a) {
2513
2086
  })
2514
2087
  ]);
2515
2088
  }
2516
- function $o(e, a) {
2089
+ function bo(e, a) {
2517
2090
  return o(), r("svg", {
2518
2091
  xmlns: "http://www.w3.org/2000/svg",
2519
2092
  fill: "none",
@@ -2547,7 +2120,7 @@ function Tl(e, a) {
2547
2120
  })
2548
2121
  ]);
2549
2122
  }
2550
- function Do(e, a) {
2123
+ function yo(e, a) {
2551
2124
  return o(), r("svg", {
2552
2125
  xmlns: "http://www.w3.org/2000/svg",
2553
2126
  fill: "none",
@@ -2564,7 +2137,7 @@ function Do(e, a) {
2564
2137
  })
2565
2138
  ]);
2566
2139
  }
2567
- function zo(e, a) {
2140
+ function xo(e, a) {
2568
2141
  return o(), r("svg", {
2569
2142
  xmlns: "http://www.w3.org/2000/svg",
2570
2143
  fill: "none",
@@ -2620,7 +2193,7 @@ function nl(e, a) {
2620
2193
  })
2621
2194
  ]);
2622
2195
  }
2623
- function Ao(e, a) {
2196
+ function wo(e, a) {
2624
2197
  return o(), r("svg", {
2625
2198
  xmlns: "http://www.w3.org/2000/svg",
2626
2199
  fill: "none",
@@ -2637,7 +2210,7 @@ function Ao(e, a) {
2637
2210
  })
2638
2211
  ]);
2639
2212
  }
2640
- function Vo(e, a) {
2213
+ function ko(e, a) {
2641
2214
  return o(), r("svg", {
2642
2215
  xmlns: "http://www.w3.org/2000/svg",
2643
2216
  fill: "none",
@@ -2727,7 +2300,7 @@ function ol(e, a) {
2727
2300
  })
2728
2301
  ]);
2729
2302
  }
2730
- function Bo(e, a) {
2303
+ function Co(e, a) {
2731
2304
  return o(), r("svg", {
2732
2305
  xmlns: "http://www.w3.org/2000/svg",
2733
2306
  fill: "none",
@@ -2761,7 +2334,7 @@ function Ct(e, a) {
2761
2334
  })
2762
2335
  ]);
2763
2336
  }
2764
- function Io(e, a) {
2337
+ function So(e, a) {
2765
2338
  return o(), r("svg", {
2766
2339
  xmlns: "http://www.w3.org/2000/svg",
2767
2340
  fill: "none",
@@ -2778,7 +2351,7 @@ function Io(e, a) {
2778
2351
  })
2779
2352
  ]);
2780
2353
  }
2781
- function To(e, a) {
2354
+ function $o(e, a) {
2782
2355
  return o(), r("svg", {
2783
2356
  xmlns: "http://www.w3.org/2000/svg",
2784
2357
  fill: "none",
@@ -2812,7 +2385,7 @@ function za(e, a) {
2812
2385
  })
2813
2386
  ]);
2814
2387
  }
2815
- function Eo(e, a) {
2388
+ function Do(e, a) {
2816
2389
  return o(), r("svg", {
2817
2390
  xmlns: "http://www.w3.org/2000/svg",
2818
2391
  fill: "none",
@@ -2829,7 +2402,7 @@ function Eo(e, a) {
2829
2402
  })
2830
2403
  ]);
2831
2404
  }
2832
- function Mo(e, a) {
2405
+ function zo(e, a) {
2833
2406
  return o(), r("svg", {
2834
2407
  xmlns: "http://www.w3.org/2000/svg",
2835
2408
  fill: "none",
@@ -2846,7 +2419,7 @@ function Mo(e, a) {
2846
2419
  })
2847
2420
  ]);
2848
2421
  }
2849
- function Xo(e, a) {
2422
+ function Ao(e, a) {
2850
2423
  return o(), r("svg", {
2851
2424
  xmlns: "http://www.w3.org/2000/svg",
2852
2425
  fill: "none",
@@ -2863,7 +2436,7 @@ function Xo(e, a) {
2863
2436
  })
2864
2437
  ]);
2865
2438
  }
2866
- function Lo(e, a) {
2439
+ function Vo(e, a) {
2867
2440
  return o(), r("svg", {
2868
2441
  xmlns: "http://www.w3.org/2000/svg",
2869
2442
  fill: "none",
@@ -2880,7 +2453,7 @@ function Lo(e, a) {
2880
2453
  })
2881
2454
  ]);
2882
2455
  }
2883
- function Oo(e, a) {
2456
+ function Bo(e, a) {
2884
2457
  return o(), r("svg", {
2885
2458
  xmlns: "http://www.w3.org/2000/svg",
2886
2459
  fill: "none",
@@ -2914,7 +2487,7 @@ function Ll(e, a) {
2914
2487
  })
2915
2488
  ]);
2916
2489
  }
2917
- function Po(e, a) {
2490
+ function Io(e, a) {
2918
2491
  return o(), r("svg", {
2919
2492
  xmlns: "http://www.w3.org/2000/svg",
2920
2493
  fill: "none",
@@ -2999,7 +2572,7 @@ function mt(e, a) {
2999
2572
  })
3000
2573
  ]);
3001
2574
  }
3002
- const jo = ["disabled", "data-variant", "data-size", "data-disabled"], Fo = { class: "flex-1 text-left" }, No = "w-full flex items-center gap-3 rounded-lg transition-colors", zt = {
2575
+ const To = ["disabled", "data-variant", "data-size", "data-disabled"], Eo = { class: "flex-1 text-left" }, Mo = "w-full flex items-center gap-3 rounded-lg transition-colors", zt = {
3003
2576
  __name: "DXDropdownItem",
3004
2577
  props: {
3005
2578
  /** Иконка (Heroicon компонент) */
@@ -3037,8 +2610,8 @@ const jo = ["disabled", "data-variant", "data-size", "data-disabled"], Fo = { cl
3037
2610
  setup(e, { emit: a }) {
3038
2611
  const t = e, l = a, n = $t("dropdown", null), s = d(
3039
2612
  () => F(
3040
- No,
3041
- In(t.variant),
2613
+ Mo,
2614
+ Nn(t.variant),
3042
2615
  fe(t.size, "button"),
3043
2616
  {
3044
2617
  "opacity-60 cursor-not-allowed": t.disabled
@@ -3066,7 +2639,7 @@ const jo = ["disabled", "data-variant", "data-size", "data-disabled"], Fo = { cl
3066
2639
  "group-hover": !0,
3067
2640
  class: "flex-shrink-0"
3068
2641
  }, null, 8, ["icon", "size", "animation"])) : b("", !0),
3069
- f("span", Fo, [
2642
+ f("span", Eo, [
3070
2643
  N(u.$slots, "default")
3071
2644
  ]),
3072
2645
  e.submenu ? (o(), L(W, {
@@ -3088,30 +2661,99 @@ const jo = ["disabled", "data-variant", "data-size", "data-disabled"], Fo = { cl
3088
2661
  ]),
3089
2662
  _: 1
3090
2663
  }, 8, ["variant"])) : b("", !0)
3091
- ], 42, jo));
2664
+ ], 42, To));
3092
2665
  }
3093
- }, Ro = {
2666
+ }, Xo = "", og = {
2667
+ __name: "DXFlex",
2668
+ props: {
2669
+ /** Направление: row | row-reverse | col | col-reverse */
2670
+ direction: { type: String, default: "row" },
2671
+ /** Выравнивание по главной оси: start | center | end | between | around | evenly */
2672
+ justify: { type: String, default: "start" },
2673
+ /** Выравнивание по поперечной оси: start | center | end | stretch | baseline */
2674
+ align: { type: String, default: "center" },
2675
+ /** Перенос: nowrap | wrap | wrap-reverse */
2676
+ wrap: { type: String, default: "nowrap" },
2677
+ /** Отступ между элементами: none | xs | sm | md | lg | xl */
2678
+ gap: { type: String, default: "md" },
2679
+ /** Inline flex */
2680
+ inline: { type: Boolean, default: !1 }
2681
+ },
2682
+ setup(e) {
2683
+ const a = e, t = d(() => a.inline ? "inline-flex" : "flex"), l = d(() => {
2684
+ const g = {
2685
+ row: "flex-row",
2686
+ "row-reverse": "flex-row-reverse",
2687
+ col: "flex-col",
2688
+ "col-reverse": "flex-col-reverse"
2689
+ };
2690
+ return g[a.direction] || g.row;
2691
+ }), n = d(() => {
2692
+ const g = {
2693
+ start: "justify-start",
2694
+ center: "justify-center",
2695
+ end: "justify-end",
2696
+ between: "justify-between",
2697
+ around: "justify-around",
2698
+ evenly: "justify-evenly"
2699
+ };
2700
+ return g[a.justify] || g.start;
2701
+ }), s = d(() => {
2702
+ const g = {
2703
+ start: "items-start",
2704
+ center: "items-center",
2705
+ end: "items-end",
2706
+ stretch: "items-stretch",
2707
+ baseline: "items-baseline"
2708
+ };
2709
+ return g[a.align] || g.center;
2710
+ }), i = d(() => {
2711
+ const g = {
2712
+ nowrap: "flex-nowrap",
2713
+ wrap: "flex-wrap",
2714
+ "wrap-reverse": "flex-wrap-reverse"
2715
+ };
2716
+ return g[a.wrap] || g.nowrap;
2717
+ }), c = d(() => fe(a.gap, "spacing") || "gap-4"), u = d(
2718
+ () => F(
2719
+ Xo,
2720
+ t.value,
2721
+ l.value,
2722
+ n.value,
2723
+ s.value,
2724
+ i.value,
2725
+ c.value
2726
+ )
2727
+ );
2728
+ return (g, h) => (o(), r("div", {
2729
+ class: p(u.value),
2730
+ "data-component": "DXFlex"
2731
+ }, [
2732
+ N(g.$slots, "default")
2733
+ ], 2));
2734
+ }
2735
+ }, Lo = {
3094
2736
  class: "w-full",
3095
2737
  "data-component": "DXFormLabel"
3096
- }, Ho = {
2738
+ }, Oo = {
3097
2739
  key: 0,
3098
2740
  class: "flex items-center justify-between mb-1"
3099
- }, qo = {
2741
+ }, Po = {
3100
2742
  key: 0,
3101
2743
  class: "text-sm font-medium text-slate-700"
3102
- }, Uo = {
2744
+ }, jo = {
3103
2745
  key: 0,
3104
2746
  class: "text-rose-500 ml-0.5"
3105
- }, Zo = {
2747
+ }, Fo = {
3106
2748
  key: 1,
3107
2749
  class: "text-xs text-slate-500"
3108
- }, Wo = {
2750
+ }, No = {
3109
2751
  key: 1,
3110
2752
  class: "mt-1 text-xs text-rose-500 flex items-center gap-1"
3111
- }, Go = {
2753
+ }, Ro = {
3112
2754
  key: 2,
3113
2755
  class: "mt-1 text-xs text-slate-500"
3114
- }, Yo = {
2756
+ }, Ho = {
3115
2757
  key: 3,
3116
2758
  class: "mt-1 text-xs text-emerald-600 flex items-center gap-1"
3117
2759
  }, fa = {
@@ -3165,16 +2807,16 @@ const jo = ["disabled", "data-variant", "data-size", "data-disabled"], Fo = { cl
3165
2807
  },
3166
2808
  setup(e) {
3167
2809
  const a = d(() => Sl), t = d(() => ca);
3168
- return (l, n) => (o(), r("div", Ro, [
3169
- e.label || e.showCount ? (o(), r("div", Ho, [
3170
- e.label ? (o(), r("label", qo, [
2810
+ return (l, n) => (o(), r("div", Lo, [
2811
+ e.label || e.showCount ? (o(), r("div", Oo, [
2812
+ e.label ? (o(), r("label", Po, [
3171
2813
  G(T(e.label) + " ", 1),
3172
- e.required ? (o(), r("span", Uo, "*")) : b("", !0)
2814
+ e.required ? (o(), r("span", jo, "*")) : b("", !0)
3173
2815
  ])) : b("", !0),
3174
- e.showCount && e.maxLength ? (o(), r("span", Zo, T(e.currentLength) + " / " + T(e.maxLength), 1)) : b("", !0)
2816
+ e.showCount && e.maxLength ? (o(), r("span", Fo, T(e.currentLength) + " / " + T(e.maxLength), 1)) : b("", !0)
3175
2817
  ])) : b("", !0),
3176
2818
  N(l.$slots, "default"),
3177
- e.error ? (o(), r("p", Wo, [
2819
+ e.error ? (o(), r("p", No, [
3178
2820
  e.showValidationIcon ? (o(), L(W, {
3179
2821
  key: 0,
3180
2822
  icon: a.value,
@@ -3183,8 +2825,8 @@ const jo = ["disabled", "data-variant", "data-size", "data-disabled"], Fo = { cl
3183
2825
  class: "text-rose-500"
3184
2826
  }, null, 8, ["icon"])) : b("", !0),
3185
2827
  G(" " + T(e.error), 1)
3186
- ])) : e.helper ? (o(), r("p", Go, T(e.helper), 1)) : b("", !0),
3187
- e.success && !e.error ? (o(), r("p", Yo, [
2828
+ ])) : e.helper ? (o(), r("p", Ro, T(e.helper), 1)) : b("", !0),
2829
+ e.success && !e.error ? (o(), r("p", Ho, [
3188
2830
  e.showValidationIcon ? (o(), L(W, {
3189
2831
  key: 0,
3190
2832
  icon: t.value,
@@ -3196,8 +2838,130 @@ const jo = ["disabled", "data-variant", "data-size", "data-disabled"], Fo = { cl
3196
2838
  ])) : b("", !0)
3197
2839
  ]));
3198
2840
  }
2841
+ }, qo = "grid", Uo = {
2842
+ __name: "DXGrid",
2843
+ props: {
2844
+ /** Количество колонок: 1-12 или auto */
2845
+ cols: { type: [Number, String], default: 12 },
2846
+ /** Количество колонок на sm */
2847
+ colsSm: { type: [Number, String], default: "" },
2848
+ /** Количество колонок на md */
2849
+ colsMd: { type: [Number, String], default: "" },
2850
+ /** Количество колонок на lg */
2851
+ colsLg: { type: [Number, String], default: "" },
2852
+ /** Отступ между элементами: none | xs | sm | md | lg | xl */
2853
+ gap: { type: String, default: "md" },
2854
+ /** Горизонтальный отступ */
2855
+ gapX: { type: String, default: "" },
2856
+ /** Вертикальный отступ */
2857
+ gapY: { type: String, default: "" }
2858
+ },
2859
+ setup(e) {
2860
+ const a = e, t = d(() => ({
2861
+ 1: "grid-cols-1",
2862
+ 2: "grid-cols-2",
2863
+ 3: "grid-cols-3",
2864
+ 4: "grid-cols-4",
2865
+ 5: "grid-cols-5",
2866
+ 6: "grid-cols-6",
2867
+ 7: "grid-cols-7",
2868
+ 8: "grid-cols-8",
2869
+ 9: "grid-cols-9",
2870
+ 10: "grid-cols-10",
2871
+ 11: "grid-cols-11",
2872
+ 12: "grid-cols-12",
2873
+ auto: "grid-cols-[repeat(auto-fit,minmax(250px,1fr))]"
2874
+ })[a.cols] || `grid-cols-${a.cols}`), l = d(() => {
2875
+ const c = {};
2876
+ return a.colsSm && (c[`sm:grid-cols-${a.colsSm}`] = !0), a.colsMd && (c[`md:grid-cols-${a.colsMd}`] = !0), a.colsLg && (c[`lg:grid-cols-${a.colsLg}`] = !0), Object.keys(c).length > 0 ? c : null;
2877
+ }), n = d(() => {
2878
+ if (a.gapX || a.gapY) {
2879
+ const c = {};
2880
+ if (a.gapX) {
2881
+ const u = oe(a.gapX, "padding"), g = u ? u.match(/-(\d+)$/) : null;
2882
+ g ? c[`gap-x-${g[1]}`] = !0 : a.gapX === "none" ? c["gap-x-0"] = !0 : c[`gap-x-${a.gapX}`] = !0;
2883
+ }
2884
+ if (a.gapY) {
2885
+ const u = oe(a.gapY, "padding"), g = u ? u.match(/-(\d+)$/) : null;
2886
+ g ? c[`gap-y-${g[1]}`] = !0 : a.gapY === "none" ? c["gap-y-0"] = !0 : c[`gap-y-${a.gapY}`] = !0;
2887
+ }
2888
+ return Object.keys(c).length > 0 ? c : null;
2889
+ }
2890
+ return fe(a.gap, "spacing") || "gap-4";
2891
+ }), s = d(
2892
+ () => F(
2893
+ qo,
2894
+ t.value,
2895
+ l.value,
2896
+ n.value
2897
+ )
2898
+ ), i = d(() => a.cols === "auto" ? {} : {});
2899
+ return (c, u) => (o(), r("div", {
2900
+ class: p(s.value),
2901
+ style: we(i.value),
2902
+ "data-component": "DXGrid"
2903
+ }, [
2904
+ N(c.$slots, "default")
2905
+ ], 6));
2906
+ }
2907
+ }, sg = {
2908
+ __name: "DXHeading",
2909
+ props: {
2910
+ /** Уровень заголовка: 1-6 */
2911
+ level: { type: [Number, String], default: 1 },
2912
+ /** Размер (переопределяет level): xs | sm | md | lg | xl | 2xl | 3xl | 4xl */
2913
+ size: { type: String, default: "" },
2914
+ /** Вес шрифта: normal | medium | semibold | bold */
2915
+ weight: { type: String, default: "semibold" },
2916
+ /** Цвет: default | muted | primary | success | warning | danger */
2917
+ color: { type: String, default: "default" },
2918
+ /** Обрезать текст с ... */
2919
+ truncate: { type: Boolean, default: !1 }
2920
+ },
2921
+ setup(e) {
2922
+ const a = e, t = d(() => `h${a.level}`), l = {
2923
+ xs: "text-xs",
2924
+ sm: "text-sm",
2925
+ md: "text-base",
2926
+ lg: "text-lg",
2927
+ xl: "text-xl",
2928
+ "2xl": "text-2xl",
2929
+ "3xl": "text-3xl",
2930
+ "4xl": "text-4xl"
2931
+ }, n = {
2932
+ 1: "text-4xl",
2933
+ 2: "text-3xl",
2934
+ 3: "text-2xl",
2935
+ 4: "text-xl",
2936
+ 5: "text-lg",
2937
+ 6: "text-base"
2938
+ }, s = {
2939
+ normal: "font-normal",
2940
+ medium: "font-medium",
2941
+ semibold: "font-semibold",
2942
+ bold: "font-bold"
2943
+ }, i = d(() => [
2944
+ a.size ? l[a.size] : n[a.level],
2945
+ s[a.weight] || s.semibold,
2946
+ Za(a.color),
2947
+ "tracking-tight",
2948
+ a.truncate && "truncate"
2949
+ ]);
2950
+ return (c, u) => (o(), L(ve(t.value), {
2951
+ class: p(i.value),
2952
+ "data-component": "DXHeading",
2953
+ "data-level": e.level,
2954
+ "data-weight": e.weight,
2955
+ "data-color": e.color
2956
+ }, {
2957
+ default: j(() => [
2958
+ N(c.$slots, "default")
2959
+ ]),
2960
+ _: 3
2961
+ }, 8, ["class", "data-level", "data-weight", "data-color"]));
2962
+ }
3199
2963
  };
3200
- function fg(e, a = []) {
2964
+ function rg(e, a = []) {
3201
2965
  const t = {};
3202
2966
  return a.forEach((l) => {
3203
2967
  const n = e[l];
@@ -3216,7 +2980,7 @@ function jl(e = {}) {
3216
2980
  }
3217
2981
  }), a;
3218
2982
  }
3219
- function mg(e, a = []) {
2983
+ function ig(e, a = []) {
3220
2984
  const t = {};
3221
2985
  return a.forEach((l) => {
3222
2986
  if (e[l] === !0) {
@@ -3225,7 +2989,7 @@ function mg(e, a = []) {
3225
2989
  }
3226
2990
  }), t;
3227
2991
  }
3228
- const Ko = "absolute pointer-events-none", Ft = {
2992
+ const Zo = "absolute pointer-events-none", Ft = {
3229
2993
  __name: "DXIconWrapper",
3230
2994
  props: {
3231
2995
  /** Position: left | right */
@@ -3264,7 +3028,7 @@ const Ko = "absolute pointer-events-none", Ft = {
3264
3028
  setup(e) {
3265
3029
  const a = e, t = d(
3266
3030
  () => F(
3267
- Ko,
3031
+ Zo,
3268
3032
  {
3269
3033
  "left-3": a.position === "left",
3270
3034
  "right-3": a.position === "right",
@@ -3288,7 +3052,7 @@ const Ko = "absolute pointer-events-none", Ft = {
3288
3052
  }, null, 8, ["icon", "size", "animation", "class"])) : N(n.$slots, "default", { key: 1 })
3289
3053
  ], 16));
3290
3054
  }
3291
- }, gg = {
3055
+ }, dg = {
3292
3056
  __name: "DXInputAddon",
3293
3057
  props: {
3294
3058
  icon: { type: [Object, Function], default: null }
@@ -3327,61 +3091,49 @@ const Ko = "absolute pointer-events-none", Ft = {
3327
3091
  N(n.$slots, "default")
3328
3092
  ], 2));
3329
3093
  }
3330
- }, Qo = ["data-size", "data-variant"], Jo = "flex items-center justify-center", _o = "border-2 rounded-full animate-spin", Fl = {
3331
- __name: "DXLoader",
3094
+ }, Wo = ["for"], Go = {
3095
+ key: 0,
3096
+ class: "text-rose-500 ml-0.5"
3097
+ }, ug = {
3098
+ __name: "DXLabel",
3332
3099
  props: {
3333
- /** Размер: xs | sm | md | lg | xl */
3334
- size: {
3335
- type: String,
3336
- default: "md",
3337
- validator: (e) => ["xs", "sm", "md", "lg", "xl"].includes(e)
3338
- },
3339
- /** Вариант цвета: default | primary | success | warning | danger | info | slate */
3340
- variant: {
3341
- type: String,
3342
- default: "default",
3343
- validator: (e) => ["default", "primary", "success", "warning", "danger", "info", "slate"].includes(e)
3344
- },
3345
- /** Текст лоадера. Если не указан и нет слота, текст не отображается */
3346
- text: {
3347
- type: String,
3348
- default: ""
3349
- },
3350
- /** Показывать текст. Если false, текст не отображается. Если true - всегда показывать */
3351
- showText: {
3352
- type: Boolean,
3353
- default: void 0
3354
- }
3100
+ /** ID связанного input */
3101
+ htmlFor: { type: String, default: "" },
3102
+ /** Размер: xs | sm | md | lg */
3103
+ size: { type: String, default: "sm" },
3104
+ /** Вес шрифта: normal | medium | semibold */
3105
+ weight: { type: String, default: "medium" },
3106
+ /** Цвет: default | muted | primary */
3107
+ color: { type: String, default: "default" },
3108
+ /** Обязательное поле */
3109
+ required: { type: Boolean, default: !1 }
3355
3110
  },
3356
3111
  setup(e) {
3357
- const a = e, t = ft(), l = d(() => a.showText !== void 0 ? a.showText : t.default ? !0 : !!(a.text && a.text.trim().length > 0)), n = d(() => Cn(a.variant)), s = d(() => [
3358
- Jo,
3359
- l.value ? "gap-2" : "",
3360
- l.value ? fe(a.size, "text") : "",
3361
- l.value ? n.value.text : ""
3362
- ].filter(Boolean)), i = d(() => [
3363
- _o,
3364
- fe(a.size, "loader"),
3365
- n.value.border,
3366
- n.value.borderTop
3112
+ const a = e, t = {
3113
+ xs: "text-xs",
3114
+ sm: "text-sm",
3115
+ md: "text-base",
3116
+ lg: "text-lg"
3117
+ }, l = {
3118
+ normal: "font-normal",
3119
+ medium: "font-medium",
3120
+ semibold: "font-semibold"
3121
+ }, n = d(() => [
3122
+ "block",
3123
+ t[a.size] || t.sm,
3124
+ l[a.weight] || l.medium,
3125
+ Za(a.color)
3367
3126
  ]);
3368
- return (c, u) => (o(), r("div", {
3369
- class: p(s.value),
3370
- "data-component": "DXLoader",
3371
- "data-size": e.size,
3372
- "data-variant": e.variant
3127
+ return (s, i) => (o(), r("label", {
3128
+ class: p(n.value),
3129
+ for: e.htmlFor,
3130
+ "data-component": "DXLabel"
3373
3131
  }, [
3374
- f("span", {
3375
- class: p(i.value)
3376
- }, null, 2),
3377
- l.value ? N(c.$slots, "default", { key: 0 }, () => [
3378
- e.text ? (o(), r(K, { key: 0 }, [
3379
- G(T(e.text), 1)
3380
- ], 64)) : b("", !0)
3381
- ]) : b("", !0)
3382
- ], 10, Qo));
3132
+ N(s.$slots, "default"),
3133
+ e.required ? (o(), r("span", Go, "*")) : b("", !0)
3134
+ ], 10, Wo));
3383
3135
  }
3384
- }, es = "inline-flex items-center gap-1.5 transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2", At = {
3136
+ }, Yo = "inline-flex items-center gap-1.5 transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2", At = {
3385
3137
  __name: "DXLink",
3386
3138
  props: {
3387
3139
  /** URL для обычной ссылки */
@@ -3404,7 +3156,7 @@ const Ko = "absolute pointer-events-none", Ft = {
3404
3156
  showExternalIcon: { type: Boolean, default: !0 }
3405
3157
  },
3406
3158
  setup(e) {
3407
- const a = e, t = d(() => a.to ? "router-link" : a.href ? "a" : "span"), l = d(() => a.href ? a.href.startsWith("http://") || a.href.startsWith("https://") || a.href.startsWith("//") : !1), n = d(() => a.rel ? a.rel : l.value && a.target === "_blank" ? "noopener noreferrer" : null), s = d(() => a.ariaLabel ? a.ariaLabel : (l.value && a.showExternalIcon, null)), i = d(() => fe(a.size, "text")), c = d(() => a.variant === "link" ? "text-blue-600 hover:text-blue-700 underline-offset-2 hover:underline" : Fa(a.variant)), u = d(() => ({
3159
+ const a = e, t = d(() => a.to ? "router-link" : a.href ? "a" : "span"), l = d(() => a.href ? a.href.startsWith("http://") || a.href.startsWith("https://") || a.href.startsWith("//") : !1), n = d(() => a.rel ? a.rel : l.value && a.target === "_blank" ? "noopener noreferrer" : null), s = d(() => a.ariaLabel ? a.ariaLabel : (l.value && a.showExternalIcon, null)), i = d(() => fe(a.size, "text")), c = d(() => a.variant === "link" ? "text-blue-600 hover:text-blue-700 underline-offset-2 hover:underline" : Wa(a.variant)), u = d(() => ({
3408
3160
  xs: "xs",
3409
3161
  sm: "xs",
3410
3162
  md: "sm",
@@ -3412,7 +3164,7 @@ const Ko = "absolute pointer-events-none", Ft = {
3412
3164
  xl: "md"
3413
3165
  })[a.size] || "sm"), g = d(
3414
3166
  () => F(
3415
- es,
3167
+ Yo,
3416
3168
  c.value,
3417
3169
  i.value,
3418
3170
  {
@@ -3442,7 +3194,7 @@ const Ko = "absolute pointer-events-none", Ft = {
3442
3194
  N(m.$slots, "default"),
3443
3195
  e.showExternalIcon && l.value && !e.disabled ? (o(), L(W, {
3444
3196
  key: 0,
3445
- icon: O(bo),
3197
+ icon: O(co),
3446
3198
  size: u.value,
3447
3199
  class: "ml-0.5",
3448
3200
  "aria-hidden": "true"
@@ -3451,13 +3203,111 @@ const Ko = "absolute pointer-events-none", Ft = {
3451
3203
  _: 3
3452
3204
  }, 8, ["href", "to", "target", "rel", "aria-label", "class", "disabled", "data-variant", "data-size", "data-disabled", "data-external"]));
3453
3205
  }
3454
- }, ts = ["data-size", "data-color", "data-animated", "data-striped"], as = {
3206
+ }, cg = {
3207
+ __name: "DXList",
3208
+ props: {
3209
+ /** Нумерованный список */
3210
+ ordered: { type: Boolean, default: !1 },
3211
+ /** Стиль маркеров: disc | circle | square | decimal | none */
3212
+ marker: { type: String, default: "" },
3213
+ /** Размер: sm | md | lg */
3214
+ size: { type: String, default: "md" },
3215
+ /** Отступ между элементами: none | sm | md | lg */
3216
+ spacing: { type: String, default: "sm" }
3217
+ },
3218
+ setup(e) {
3219
+ const a = e, t = {
3220
+ sm: "text-sm",
3221
+ md: "text-base",
3222
+ lg: "text-lg"
3223
+ }, l = {
3224
+ none: "space-y-0",
3225
+ sm: "space-y-1",
3226
+ md: "space-y-2",
3227
+ lg: "space-y-3"
3228
+ }, n = {
3229
+ disc: "list-disc",
3230
+ circle: "list-circle",
3231
+ square: "list-square",
3232
+ decimal: "list-decimal",
3233
+ none: "list-none"
3234
+ }, s = d(() => [
3235
+ t[a.size] || t.md,
3236
+ l[a.spacing] || l.sm,
3237
+ a.marker ? n[a.marker] : a.ordered ? "list-decimal" : "list-disc",
3238
+ "pl-5 text-slate-700"
3239
+ ]);
3240
+ return (i, c) => (o(), L(ve(e.ordered ? "ol" : "ul"), {
3241
+ class: p(s.value),
3242
+ "data-component": "DXList"
3243
+ }, {
3244
+ default: j(() => [
3245
+ N(i.$slots, "default")
3246
+ ]),
3247
+ _: 3
3248
+ }, 8, ["class"]));
3249
+ }
3250
+ }, Ko = ["data-size", "data-variant"], Qo = "flex items-center justify-center", Jo = "border-2 rounded-full animate-spin", Fl = {
3251
+ __name: "DXLoader",
3252
+ props: {
3253
+ /** Размер: xs | sm | md | lg | xl */
3254
+ size: {
3255
+ type: String,
3256
+ default: "md",
3257
+ validator: (e) => ["xs", "sm", "md", "lg", "xl"].includes(e)
3258
+ },
3259
+ /** Вариант цвета: default | primary | success | warning | danger | info | slate */
3260
+ variant: {
3261
+ type: String,
3262
+ default: "default",
3263
+ validator: (e) => ["default", "primary", "success", "warning", "danger", "info", "slate"].includes(e)
3264
+ },
3265
+ /** Текст лоадера. Если не указан и нет слота, текст не отображается */
3266
+ text: {
3267
+ type: String,
3268
+ default: ""
3269
+ },
3270
+ /** Показывать текст. Если false, текст не отображается. Если true - всегда показывать */
3271
+ showText: {
3272
+ type: Boolean,
3273
+ default: void 0
3274
+ }
3275
+ },
3276
+ setup(e) {
3277
+ const a = e, t = ft(), l = d(() => a.showText !== void 0 ? a.showText : t.default ? !0 : !!(a.text && a.text.trim().length > 0)), n = d(() => En(a.variant)), s = d(() => [
3278
+ Qo,
3279
+ l.value ? "gap-2" : "",
3280
+ l.value ? fe(a.size, "text") : "",
3281
+ l.value ? n.value.text : ""
3282
+ ].filter(Boolean)), i = d(() => [
3283
+ Jo,
3284
+ fe(a.size, "loader"),
3285
+ n.value.border,
3286
+ n.value.borderTop
3287
+ ]);
3288
+ return (c, u) => (o(), r("div", {
3289
+ class: p(s.value),
3290
+ "data-component": "DXLoader",
3291
+ "data-size": e.size,
3292
+ "data-variant": e.variant
3293
+ }, [
3294
+ f("span", {
3295
+ class: p(i.value)
3296
+ }, null, 2),
3297
+ l.value ? N(c.$slots, "default", { key: 0 }, () => [
3298
+ e.text ? (o(), r(K, { key: 0 }, [
3299
+ G(T(e.text), 1)
3300
+ ], 64)) : b("", !0)
3301
+ ]) : b("", !0)
3302
+ ], 10, Ko));
3303
+ }
3304
+ }, _o = ["data-size", "data-color", "data-animated", "data-striped"], es = {
3455
3305
  key: 0,
3456
3306
  class: "flex justify-between items-center mb-1"
3457
- }, ls = { class: "text-sm font-medium text-slate-700" }, ns = {
3307
+ }, ts = { class: "text-sm font-medium text-slate-700" }, as = {
3458
3308
  key: 0,
3459
3309
  class: "text-sm font-semibold text-slate-900"
3460
- }, os = ["aria-valuenow", "aria-valuemin", "aria-valuemax"], ss = {
3310
+ }, ls = ["aria-valuenow", "aria-valuemin", "aria-valuemax"], ns = {
3461
3311
  key: 0,
3462
3312
  class: "text-xs font-medium text-white px-1"
3463
3313
  }, Nl = {
@@ -3495,9 +3345,9 @@ const Ko = "absolute pointer-events-none", Ft = {
3495
3345
  fe(a.size, "progress")
3496
3346
  ]), s = d(() => [
3497
3347
  "h-full rounded-full transition-all duration-300 flex items-center justify-end",
3498
- kn(a.color),
3348
+ Tn(a.color),
3499
3349
  a.striped && "dx-bg-stripes",
3500
- a.animated && a.striped && Za("stripes", "progress")
3350
+ a.animated && a.striped && qa("stripes", "progress")
3501
3351
  ]);
3502
3352
  return (i, c) => (o(), r("div", {
3503
3353
  class: "w-full",
@@ -3507,13 +3357,13 @@ const Ko = "absolute pointer-events-none", Ft = {
3507
3357
  "data-animated": e.animated,
3508
3358
  "data-striped": e.striped
3509
3359
  }, [
3510
- e.showLabel || i.$slots.label ? (o(), r("div", as, [
3511
- f("span", ls, [
3360
+ e.showLabel || i.$slots.label ? (o(), r("div", es, [
3361
+ f("span", ts, [
3512
3362
  N(i.$slots, "label", {}, () => [
3513
3363
  G(T(e.label), 1)
3514
3364
  ])
3515
3365
  ]),
3516
- e.showValue ? (o(), r("span", ns, T(l.value), 1)) : b("", !0)
3366
+ e.showValue ? (o(), r("span", as, T(l.value), 1)) : b("", !0)
3517
3367
  ])) : b("", !0),
3518
3368
  f("div", {
3519
3369
  class: p(n.value)
@@ -3526,12 +3376,12 @@ const Ko = "absolute pointer-events-none", Ft = {
3526
3376
  "aria-valuemin": e.min,
3527
3377
  "aria-valuemax": e.max
3528
3378
  }, [
3529
- e.showInnerValue && t.value > 10 ? (o(), r("span", ss, T(l.value), 1)) : b("", !0)
3530
- ], 14, os)
3379
+ e.showInnerValue && t.value > 10 ? (o(), r("span", ns, T(l.value), 1)) : b("", !0)
3380
+ ], 14, ls)
3531
3381
  ], 2)
3532
- ], 8, ts));
3382
+ ], 8, _o));
3533
3383
  }
3534
- }, rs = ["data-size", "data-disabled", "data-checked", "data-variant"], is = ["value", "checked", "disabled"], ds = ["aria-checked", "aria-disabled", "onKeydown"], us = "inline-flex items-center gap-2 cursor-pointer mr-4", cs = "rounded-full border-slate-300 text-slate-900 focus:ring-slate-900/10 focus:ring-2 transition flex-shrink-0", fs = "relative flex items-center justify-center border-2 rounded-full transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-1 flex-shrink-0", ms = {
3384
+ }, os = ["data-size", "data-disabled", "data-checked", "data-variant"], ss = ["value", "checked", "disabled"], rs = ["aria-checked", "aria-disabled", "onKeydown"], is = "inline-flex items-center gap-2 cursor-pointer mr-4", ds = "rounded-full border-slate-300 text-slate-900 focus:ring-slate-900/10 focus:ring-2 transition flex-shrink-0", us = "relative flex items-center justify-center border-2 rounded-full transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-1 flex-shrink-0", cs = {
3535
3385
  __name: "DXRadio",
3536
3386
  props: {
3537
3387
  /** Текущее значение группы (v-model) */
@@ -3567,18 +3417,18 @@ const Ko = "absolute pointer-events-none", Ft = {
3567
3417
  leaveFromClass: "opacity-100 scale-100",
3568
3418
  leaveToClass: "opacity-0 scale-0"
3569
3419
  }, s = (w) => ({ xs: "w-1.5 h-1.5", sm: "w-2 h-2", md: "w-2.5 h-2.5", lg: "w-3 h-3", xl: "w-3 h-3" })[w] || "w-2.5 h-2.5", i = d(() => [
3570
- us,
3420
+ is,
3571
3421
  { "opacity-60 cursor-not-allowed": t.disabled }
3572
3422
  ]), c = d(() => [
3573
3423
  fe(t.size, "text"),
3574
3424
  "text-slate-700 select-none"
3575
3425
  ]), u = d(() => [
3576
- cs,
3426
+ ds,
3577
3427
  fe(t.size, "radio")
3578
3428
  ]), g = d(() => {
3579
3429
  const w = al(t.color);
3580
3430
  return [
3581
- fs,
3431
+ us,
3582
3432
  fe(t.size, "radio"),
3583
3433
  {
3584
3434
  [w.unchecked]: !m.value && !t.disabled,
@@ -3614,7 +3464,7 @@ const Ko = "absolute pointer-events-none", Ft = {
3614
3464
  disabled: e.disabled,
3615
3465
  class: p(u.value),
3616
3466
  onChange: C[0] || (C[0] = (x) => w.$emit("update:modelValue", e.value))
3617
- }, null, 42, is)) : (o(), r("div", {
3467
+ }, null, 42, ss)) : (o(), r("div", {
3618
3468
  key: 1,
3619
3469
  class: p(g.value),
3620
3470
  onClick: ce(y, ["stop"]),
@@ -3633,14 +3483,14 @@ const Ko = "absolute pointer-events-none", Ft = {
3633
3483
  ]),
3634
3484
  _: 1
3635
3485
  }, 16)
3636
- ], 42, ds)),
3486
+ ], 42, rs)),
3637
3487
  e.label ? (o(), r("span", {
3638
3488
  key: 2,
3639
3489
  class: p(c.value)
3640
3490
  }, T(e.label), 3)) : b("", !0)
3641
- ], 10, rs));
3491
+ ], 10, os));
3642
3492
  }
3643
- }, vg = {
3493
+ }, fg = {
3644
3494
  __name: "DXSkeleton",
3645
3495
  props: {
3646
3496
  /** Ширина */
@@ -3662,11 +3512,11 @@ const Ko = "absolute pointer-events-none", Ft = {
3662
3512
  for (const [l, n] of a)
3663
3513
  t[l] = n;
3664
3514
  return t;
3665
- }, gs = ["data-size", "data-variant"], vs = {
3515
+ }, fs = ["data-size", "data-variant"], ms = {
3666
3516
  key: 0,
3667
3517
  class: "absolute top-1/2 w-full pointer-events-none",
3668
3518
  style: { transform: "translateY(-50%)" }
3669
- }, hs = ["value", "min", "max", "step", "disabled"], ps = {
3519
+ }, gs = ["value", "min", "max", "step", "disabled"], vs = {
3670
3520
  __name: "DXSlider",
3671
3521
  props: {
3672
3522
  /** Значение (v-model) */
@@ -3718,7 +3568,7 @@ const Ko = "absolute pointer-events-none", Ft = {
3718
3568
  },
3719
3569
  emits: ["update:modelValue"],
3720
3570
  setup(e, { emit: a }) {
3721
- const t = e, l = a, n = An(t.variant);
3571
+ const t = e, l = a, n = Pn(t.variant);
3722
3572
  fe(t.size, "sliderTrack"), fe(t.size, "sliderThumb");
3723
3573
  const s = fe(t.size, "text"), i = oe(t.spacing, "marginY"), c = oe(t.spacing, "paddingY"), u = oe(t.spacing, "marginTop"), g = d(() => ({ xs: 12, sm: 16, md: 20, lg: 24, xl: 28 })[t.size] || 20), h = d(() => ({ xs: 4, sm: 6, md: 8, lg: 10, xl: 12 })[t.size] || 8), m = d(() => `${t.modelValue}${t.unit}`), y = d(() => {
3724
3574
  const D = (A) => ({
@@ -3795,7 +3645,7 @@ const Ko = "absolute pointer-events-none", Ft = {
3795
3645
  f("div", {
3796
3646
  class: p(["relative", O(c)])
3797
3647
  }, [
3798
- e.ticks ? (o(), r("div", vs, [
3648
+ e.ticks ? (o(), r("div", ms, [
3799
3649
  (o(!0), r(K, null, J(w.value, (v, z) => (o(), r("div", {
3800
3650
  key: `tick-${z}`,
3801
3651
  class: p(["absolute w-0.5 h-3 rounded-full", O(n).tick]),
@@ -3812,7 +3662,7 @@ const Ko = "absolute pointer-events-none", Ft = {
3812
3662
  class: "slider w-full appearance-none cursor-pointer disabled:opacity-60 disabled:cursor-not-allowed relative z-10",
3813
3663
  style: we(y.value),
3814
3664
  onInput: C
3815
- }, null, 44, hs)
3665
+ }, null, 44, gs)
3816
3666
  ], 2),
3817
3667
  e.ticks && (e.showTickLabels || e.tickIcons) ? (o(), r("div", {
3818
3668
  key: 0,
@@ -3845,9 +3695,101 @@ const Ko = "absolute pointer-events-none", Ft = {
3845
3695
  key: 1,
3846
3696
  class: p([O(s), O(u), O(n).text])
3847
3697
  }, T(e.helper), 3)) : b("", !0)
3848
- ], 8, gs));
3698
+ ], 8, fs));
3699
+ }
3700
+ }, mg = /* @__PURE__ */ Se(vs, [["__scopeId", "data-v-dbc897fb"]]), gg = {
3701
+ __name: "DXSpacer",
3702
+ props: {
3703
+ /** Размер: xs | sm | md | lg | xl или число в пикселях */
3704
+ size: { type: [String, Number], default: "md" },
3705
+ /** Направление: vertical | horizontal | both */
3706
+ direction: { type: String, default: "vertical" },
3707
+ /** Занять всё доступное пространство (flex-grow) */
3708
+ grow: { type: Boolean, default: !1 }
3709
+ },
3710
+ setup(e) {
3711
+ const a = e, t = {
3712
+ xs: { v: "h-1", h: "w-1" },
3713
+ sm: { v: "h-2", h: "w-2" },
3714
+ md: { v: "h-4", h: "w-4" },
3715
+ lg: { v: "h-8", h: "w-8" },
3716
+ xl: { v: "h-12", h: "w-12" }
3717
+ }, l = d(() => {
3718
+ if (a.grow)
3719
+ return F("flex-grow");
3720
+ if (typeof a.size == "number")
3721
+ return F();
3722
+ const s = t[a.size];
3723
+ return s ? a.direction === "horizontal" ? F(s.h) : a.direction === "both" ? F(s.v, s.h) : F(s.v) : F();
3724
+ }), n = d(() => {
3725
+ if (a.grow) return {};
3726
+ if (typeof a.size == "number") {
3727
+ const s = `${a.size}px`;
3728
+ return a.direction === "horizontal" ? { width: s } : a.direction === "both" ? { height: s, width: s } : { height: s };
3729
+ }
3730
+ return {};
3731
+ });
3732
+ return (s, i) => (o(), r("div", {
3733
+ class: p(l.value),
3734
+ style: we(n.value),
3735
+ "data-component": "DXSpacer",
3736
+ "aria-hidden": "true"
3737
+ }, null, 6));
3738
+ }
3739
+ }, hs = ["data-direction", "data-gap", "data-align", "data-justify"], ps = "flex", vg = {
3740
+ __name: "DXStack",
3741
+ props: {
3742
+ /** Направление: vertical | horizontal */
3743
+ direction: { type: String, default: "vertical" },
3744
+ /** Отступ между элементами: none | xs | sm | md | lg | xl | 2xl */
3745
+ gap: { type: String, default: "md" },
3746
+ /** Выравнивание: start | center | end | stretch */
3747
+ align: { type: String, default: "stretch" },
3748
+ /** Распределение: start | center | end | between | around */
3749
+ justify: { type: String, default: "start" },
3750
+ /** Разделители между элементами */
3751
+ dividers: { type: Boolean, default: !1 }
3752
+ },
3753
+ setup(e) {
3754
+ const a = e, t = d(() => a.direction === "horizontal" ? "flex-row" : "flex-col"), l = d(() => a.gap === "2xl" ? "gap-12" : fe(a.gap, "spacing") || "gap-4"), n = d(() => {
3755
+ const u = {
3756
+ start: "items-start",
3757
+ center: "items-center",
3758
+ end: "items-end",
3759
+ stretch: "items-stretch"
3760
+ };
3761
+ return u[a.align] || u.stretch;
3762
+ }), s = d(() => {
3763
+ const u = {
3764
+ start: "justify-start",
3765
+ center: "justify-center",
3766
+ end: "justify-end",
3767
+ between: "justify-between",
3768
+ around: "justify-around"
3769
+ };
3770
+ return u[a.justify] || u.start;
3771
+ }), i = d(() => a.dividers ? a.direction === "horizontal" ? "divide-x divide-slate-200" : "divide-y divide-slate-200" : null), c = d(
3772
+ () => F(
3773
+ ps,
3774
+ t.value,
3775
+ l.value,
3776
+ n.value,
3777
+ s.value,
3778
+ i.value
3779
+ )
3780
+ );
3781
+ return (u, g) => (o(), r("div", {
3782
+ class: p(c.value),
3783
+ "data-component": "DXStack",
3784
+ "data-direction": e.direction,
3785
+ "data-gap": e.gap,
3786
+ "data-align": e.align,
3787
+ "data-justify": e.justify
3788
+ }, [
3789
+ N(u.$slots, "default")
3790
+ ], 10, hs));
3849
3791
  }
3850
- }, hg = /* @__PURE__ */ Se(ps, [["__scopeId", "data-v-54382d32"]]), bs = {
3792
+ }, bs = {
3851
3793
  class: "flex flex-wrap gap-2",
3852
3794
  "data-component": "DXTags"
3853
3795
  }, ys = ["onClick", "aria-label"], xs = {
@@ -3881,7 +3823,7 @@ const Ko = "absolute pointer-events-none", Ft = {
3881
3823
  return F(
3882
3824
  "rounded-full border",
3883
3825
  fe(g, "badge"),
3884
- wn(u.color)
3826
+ In(u.color)
3885
3827
  );
3886
3828
  }, c = (u, g) => {
3887
3829
  l("remove", { tag: u, index: g });
@@ -3915,6 +3857,63 @@ const Ko = "absolute pointer-events-none", Ft = {
3915
3857
  ], 2))), 128))
3916
3858
  ]));
3917
3859
  }
3860
+ }, hg = {
3861
+ __name: "DXText",
3862
+ props: {
3863
+ /** Тег: p | span | div */
3864
+ tag: { type: String, default: "p" },
3865
+ /** Размер: xs | sm | md | lg | xl */
3866
+ size: { type: String, default: "md" },
3867
+ /** Вес шрифта: normal | medium | semibold | bold */
3868
+ weight: { type: String, default: "normal" },
3869
+ /** Цвет: default | muted | primary | success | warning | danger */
3870
+ color: { type: String, default: "default" },
3871
+ /** Выравнивание: left | center | right | justify */
3872
+ align: { type: String, default: "left" },
3873
+ /** Обрезать текст с ... */
3874
+ truncate: { type: Boolean, default: !1 },
3875
+ /** Максимум строк (line-clamp) */
3876
+ lines: { type: Number, default: 0 }
3877
+ },
3878
+ setup(e) {
3879
+ const a = e, t = {
3880
+ xs: "text-xs",
3881
+ sm: "text-sm",
3882
+ md: "text-base",
3883
+ lg: "text-lg",
3884
+ xl: "text-xl"
3885
+ }, l = {
3886
+ normal: "font-normal",
3887
+ medium: "font-medium",
3888
+ semibold: "font-semibold",
3889
+ bold: "font-bold"
3890
+ }, n = {
3891
+ left: "text-left",
3892
+ center: "text-center",
3893
+ right: "text-right",
3894
+ justify: "text-justify"
3895
+ }, s = d(() => [
3896
+ t[a.size] || t.md,
3897
+ l[a.weight] || l.normal,
3898
+ Za(a.color),
3899
+ n[a.align] || n.left,
3900
+ "leading-relaxed",
3901
+ a.truncate && "truncate",
3902
+ a.lines > 0 && `line-clamp-${a.lines}`
3903
+ ]);
3904
+ return (i, c) => (o(), L(ve(e.tag), {
3905
+ class: p(s.value),
3906
+ "data-component": "DXText",
3907
+ "data-size": e.size,
3908
+ "data-weight": e.weight,
3909
+ "data-color": e.color
3910
+ }, {
3911
+ default: j(() => [
3912
+ N(i.$slots, "default")
3913
+ ]),
3914
+ _: 3
3915
+ }, 8, ["class", "data-size", "data-weight", "data-color"]));
3916
+ }
3918
3917
  }, ws = ["data-variant"], ks = { class: "flex-1" }, pg = {
3919
3918
  __name: "DXToast",
3920
3919
  props: {
@@ -3924,7 +3923,7 @@ const Ko = "absolute pointer-events-none", Ft = {
3924
3923
  showIcon: { type: Boolean, default: !0 }
3925
3924
  },
3926
3925
  setup(e) {
3927
- const a = e, t = d(() => yn(a.variant)), l = d(() => `${t.value.bg} ${t.value.border} ${t.value.text}`), n = d(() => a.showIcon ? t.value.icon : null), s = d(() => t.value.iconColor);
3926
+ const a = e, t = d(() => Vn(a.variant)), l = d(() => `${t.value.bg} ${t.value.border} ${t.value.text}`), n = d(() => a.showIcon ? t.value.icon : null), s = d(() => t.value.iconColor);
3928
3927
  return (i, c) => (o(), r("div", {
3929
3928
  class: p(["flex items-start gap-3 rounded-2xl border px-4 py-3 text-sm", l.value]),
3930
3929
  "data-component": "DXToast",
@@ -3962,7 +3961,7 @@ const Ko = "absolute pointer-events-none", Ft = {
3962
3961
  setup(e, { emit: a }) {
3963
3962
  const t = e, l = a, n = () => {
3964
3963
  t.disabled || l("update:modelValue", !t.modelValue);
3965
- }, s = d(() => fe(t.size, "toggle")), i = d(() => Vn(t.color, t.modelValue)), c = d(
3964
+ }, s = d(() => fe(t.size, "toggle")), i = d(() => jn(t.color, t.modelValue)), c = d(
3966
3965
  () => F(
3967
3966
  "inline-flex items-center gap-2 cursor-pointer mr-4",
3968
3967
  {
@@ -3979,7 +3978,7 @@ const Ko = "absolute pointer-events-none", Ft = {
3979
3978
  }
3980
3979
  );
3981
3980
  }), g = d(() => {
3982
- const y = `inline-block rounded-full bg-white ${s.value.thumb} ${Za(t.animation, "toggle")}`, w = h(t.size);
3981
+ const y = `inline-block rounded-full bg-white ${s.value.thumb} ${qa(t.animation, "toggle")}`, w = h(t.size);
3983
3982
  return F(
3984
3983
  y,
3985
3984
  {
@@ -4068,7 +4067,7 @@ const Ko = "absolute pointer-events-none", Ft = {
4068
4067
  return fe(t.size, m ? "button" : "buttonIcon");
4069
4068
  }), g = d(() => {
4070
4069
  const m = t.modelValue ? t.activeVariant : t.inactiveVariant;
4071
- return Fa(m);
4070
+ return Wa(m);
4072
4071
  }), h = d(
4073
4072
  () => F(
4074
4073
  "toggle-btn inline-flex items-center justify-center gap-2 rounded-xl font-semibold transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-60 disabled:cursor-not-allowed",
@@ -4097,7 +4096,7 @@ const Ko = "absolute pointer-events-none", Ft = {
4097
4096
  i.value ? (o(), r("span", zs, T(i.value), 1)) : b("", !0)
4098
4097
  ], 10, Ds));
4099
4098
  }
4100
- }, bg = /* @__PURE__ */ Se(As, [["__scopeId", "data-v-bbef83af"]]), yg = {
4099
+ }, bg = /* @__PURE__ */ Se(As, [["__scopeId", "data-v-c6559eca"]]), yg = {
4101
4100
  __name: "DXTooltip",
4102
4101
  props: {
4103
4102
  /** Текст подсказки */
@@ -4126,14 +4125,14 @@ const Ko = "absolute pointer-events-none", Ft = {
4126
4125
  c();
4127
4126
  }, h = () => {
4128
4127
  u();
4129
- }, m = d(() => a.animation === "tooltip-custom" ? Zn(a.position) : Al(a.animation)), y = d(() => [
4128
+ }, m = d(() => a.animation === "tooltip-custom" ? xn(a.position) : Al(a.animation)), y = d(() => [
4130
4129
  "absolute z-50 rounded-lg whitespace-normal",
4131
4130
  fe(a.size, "tooltip"),
4132
- Dn(a.position),
4133
- $n(a.color)
4131
+ Ln(a.position),
4132
+ Xn(a.color)
4134
4133
  ]), w = d(() => ({
4135
4134
  maxWidth: a.maxWidth
4136
- })), C = d(() => zn(a.position, a.color));
4135
+ })), C = d(() => On(a.position, a.color));
4137
4136
  return Ht(() => {
4138
4137
  n.value && clearTimeout(n.value), s.value && clearTimeout(s.value);
4139
4138
  }), (x, $) => (o(), r("div", {
@@ -4811,7 +4810,7 @@ const Ns = ["data-position", "data-width", "data-variant", "data-disabled"], Rs
4811
4810
  }, 8, ["to", "href", "class"]))
4812
4811
  ]));
4813
4812
  }
4814
- }, Va = /* @__PURE__ */ Se(Js, [["__scopeId", "data-v-089c9d9b"]]), _s = { class: "relative" }, er = ["type", "placeholder", "value", "disabled"], tr = "w-full border border-slate-200 bg-white transition-colors text-slate-700 placeholder:text-slate-400", $e = {
4813
+ }, Va = /* @__PURE__ */ Se(Js, [["__scopeId", "data-v-4458584f"]]), _s = { class: "relative" }, er = ["type", "placeholder", "value", "disabled"], tr = "w-full border border-slate-200 bg-white transition-colors text-slate-700 placeholder:text-slate-400", $e = {
4815
4814
  __name: "DXInput",
4816
4815
  props: {
4817
4816
  /** Значение поля (v-model) */
@@ -5167,7 +5166,7 @@ const Ns = ["data-position", "data-width", "data-variant", "data-disabled"], Rs
5167
5166
  _: 3
5168
5167
  }, 8, ["padding", "variant", "class", "data-compact", "data-direction"]));
5169
5168
  }
5170
- }, wg = /* @__PURE__ */ Se(sr, [["__scopeId", "data-v-d8311538"]]), rr = {
5169
+ }, wg = /* @__PURE__ */ Se(sr, [["__scopeId", "data-v-34dacd6d"]]), rr = {
5171
5170
  key: 0,
5172
5171
  class: "block text-sm text-slate-600 mb-1 font-medium"
5173
5172
  }, ir = {
@@ -5558,7 +5557,7 @@ const Ns = ["data-position", "data-width", "data-variant", "data-disabled"], Rs
5558
5557
  f("span", null, T($.label), 1),
5559
5558
  e.sortBy === $.key ? (o(), L(W, {
5560
5559
  key: 0,
5561
- icon: e.sortDirection === "asc" ? O(Co) : O(qt),
5560
+ icon: e.sortDirection === "asc" ? O(ho) : O(qt),
5562
5561
  size: "xs",
5563
5562
  class: "text-slate-500"
5564
5563
  }, null, 8, ["icon"])) : b("", !0),
@@ -6078,9 +6077,9 @@ const Ns = ["data-position", "data-width", "data-variant", "data-disabled"], Rs
6078
6077
  /** Значение для копирования */
6079
6078
  value: { type: String, default: "" },
6080
6079
  /** Иконка для копирования */
6081
- copyIcon: { type: [Object, Function], default: () => $o },
6080
+ copyIcon: { type: [Object, Function], default: () => bo },
6082
6081
  /** Иконка успешного копирования */
6083
- successIcon: { type: [Object, Function], default: () => So },
6082
+ successIcon: { type: [Object, Function], default: () => po },
6084
6083
  /** Анимация иконки копирования: none | wiggle | scale | rotate */
6085
6084
  copyIconAnimation: { type: String, default: "scale" },
6086
6085
  /** Анимация иконки успеха: none | wiggle | scale | rotate */
@@ -6717,7 +6716,7 @@ const Ns = ["data-position", "data-width", "data-variant", "data-disabled"], Rs
6717
6716
  })
6718
6717
  }, [
6719
6718
  P(W, {
6720
- icon: O(Mo),
6719
+ icon: O(zo),
6721
6720
  size: "sm",
6722
6721
  animation: "none",
6723
6722
  class: "inline mr-1"
@@ -6726,7 +6725,7 @@ const Ns = ["data-position", "data-width", "data-variant", "data-disabled"], Rs
6726
6725
  ], 8, Zi)) : b("", !0)
6727
6726
  ])) : (o(), r("div", Xi, [
6728
6727
  P(W, {
6729
- icon: O(Do),
6728
+ icon: O(yo),
6730
6729
  size: "xl",
6731
6730
  animation: "none",
6732
6731
  class: "mx-auto text-slate-400 mb-3 w-12 h-12"
@@ -7164,7 +7163,7 @@ const Ns = ["data-position", "data-width", "data-variant", "data-disabled"], Rs
7164
7163
  "aria-label": t.value ? "Скрыть пароль" : "Показать пароль"
7165
7164
  }, [
7166
7165
  P(W, {
7167
- icon: t.value ? O(Vo) : O(Ya),
7166
+ icon: t.value ? O(ko) : O(Ya),
7168
7167
  size: "md",
7169
7168
  animation: "scale"
7170
7169
  }, null, 8, ["icon"])
@@ -7298,7 +7297,7 @@ const Ns = ["data-position", "data-width", "data-variant", "data-disabled"], Rs
7298
7297
  f("div", {
7299
7298
  class: p(t.value)
7300
7299
  }, [
7301
- (o(!0), r(K, null, J(e.options, (s) => (o(), L(ms, {
7300
+ (o(!0), r(K, null, J(e.options, (s) => (o(), L(cs, {
7302
7301
  key: s.value,
7303
7302
  "model-value": e.modelValue,
7304
7303
  value: s.value,
@@ -8478,7 +8477,7 @@ const Ns = ["data-position", "data-width", "data-variant", "data-disabled"], Rs
8478
8477
  })
8479
8478
  ], 8, vu));
8480
8479
  }
8481
- }, Xg = /* @__PURE__ */ Se(Au, [["__scopeId", "data-v-4a51c847"]]), Vu = { class: "flex items-start justify-between" }, Bu = { class: "flex-1" }, Iu = {
8480
+ }, Xg = /* @__PURE__ */ Se(Au, [["__scopeId", "data-v-00321190"]]), Vu = { class: "flex items-start justify-between" }, Bu = { class: "flex-1" }, Iu = {
8482
8481
  key: 0,
8483
8482
  class: "text-sm font-medium text-slate-600 mb-1"
8484
8483
  }, Tu = { class: "flex items-baseline gap-2" }, Eu = {
@@ -8651,7 +8650,7 @@ const Ns = ["data-position", "data-width", "data-variant", "data-disabled"], Rs
8651
8650
  class: p([i.value, "flex items-center gap-0.5 text-xs font-medium"])
8652
8651
  }, [
8653
8652
  P(W, {
8654
- icon: e.trend.direction === "up" ? O(yo) : O(ho),
8653
+ icon: e.trend.direction === "up" ? O(fo) : O(io),
8655
8654
  size: "xs"
8656
8655
  }, null, 8, ["icon"]),
8657
8656
  f("span", null, T(Math.abs(e.trend.value)) + "%", 1)
@@ -8977,7 +8976,7 @@ const Ns = ["data-position", "data-width", "data-variant", "data-disabled"], Rs
8977
8976
  }, [
8978
8977
  N(D.$slots, "sidebar")
8979
8978
  ], 6)) : b("", !0),
8980
- i.value ? (o(), L(Wa, {
8979
+ i.value ? (o(), L(Ua, {
8981
8980
  key: 1,
8982
8981
  show: i.value,
8983
8982
  blur: e.backdropBlur,
@@ -9920,7 +9919,7 @@ const Ns = ["data-position", "data-width", "data-variant", "data-disabled"], Rs
9920
9919
  }, {
9921
9920
  icon: j(() => [
9922
9921
  P(W, {
9923
- icon: O(To),
9922
+ icon: O($o),
9924
9923
  size: "sm"
9925
9924
  }, null, 8, ["icon"])
9926
9925
  ]),
@@ -9951,7 +9950,7 @@ const Ns = ["data-position", "data-width", "data-variant", "data-disabled"], Rs
9951
9950
  }, {
9952
9951
  icon: j(() => [
9953
9952
  P(W, {
9954
- icon: O(Io),
9953
+ icon: O(So),
9955
9954
  size: "sm"
9956
9955
  }, null, 8, ["icon"])
9957
9956
  ]),
@@ -10801,7 +10800,7 @@ const Lc = {
10801
10800
  }, null, 8, ["currentPage", "pageSize", "size", "totalPages", "pageSizeOptions", "from", "to", "total"])) : b("", !0)
10802
10801
  ]));
10803
10802
  }
10804
- }, Qa = /* @__PURE__ */ Se(Oc, [["__scopeId", "data-v-cb483d8c"]]), Pc = {
10803
+ }, Qa = /* @__PURE__ */ Se(Oc, [["__scopeId", "data-v-a9e131b7"]]), Pc = {
10805
10804
  key: 0,
10806
10805
  class: "dx-data-table-editor"
10807
10806
  }, jc = { class: "text-sm text-slate-500" }, Fc = { key: 1 }, Nc = {
@@ -11096,7 +11095,7 @@ const Lc = {
11096
11095
  }))
11097
11096
  ]), 1032, ["class", "columns", "data", "loading", "paginated", "selectable", "sortable", "filterable", "size", "sticky-header", "striped", "bordered", "hoverable", "dense", "data-editable", "data-edit-mode"]));
11098
11097
  }
11099
- }, Ng = /* @__PURE__ */ Se(Hc, [["__scopeId", "data-v-dfb695d8"]]), qc = {
11098
+ }, Ng = /* @__PURE__ */ Se(Hc, [["__scopeId", "data-v-95b340c2"]]), qc = {
11100
11099
  class: "bg-white border border-slate-100 rounded-3xl shadow-sm p-8 text-center space-y-3",
11101
11100
  "data-component": "DXEmptyState"
11102
11101
  }, Uc = { class: "text-base font-semibold text-slate-900" }, Zc = {
@@ -11442,7 +11441,7 @@ const Lc = {
11442
11441
  ], 2)
11443
11442
  ], 10, Gc));
11444
11443
  }
11445
- }, Hg = /* @__PURE__ */ Se(rf, [["__scopeId", "data-v-882f5cad"]]);
11444
+ }, Hg = /* @__PURE__ */ Se(rf, [["__scopeId", "data-v-e110de01"]]);
11446
11445
  /*!
11447
11446
  * vue-draggable-next v2.3.0
11448
11447
  * (c) 2025 Anish George
@@ -13146,7 +13145,7 @@ const Uf = sn({
13146
13145
  }, [
13147
13146
  e.editable ? (o(), r("div", Wf, [
13148
13147
  P(W, {
13149
- icon: O(wo),
13148
+ icon: O(go),
13150
13149
  size: "sm",
13151
13150
  class: "text-slate-400 hover:text-slate-600"
13152
13151
  }, null, 8, ["icon"])
@@ -13163,7 +13162,7 @@ const Uf = sn({
13163
13162
  }, 8, ["modelValue", "disabled"])
13164
13163
  ], 14, Zf));
13165
13164
  }
13166
- }, qg = /* @__PURE__ */ Se(Kf, [["__scopeId", "data-v-4f3c63e9"]]), Qf = { class: "flex items-center justify-between" }, Jf = {
13165
+ }, qg = /* @__PURE__ */ Se(Kf, [["__scopeId", "data-v-be75f856"]]), Qf = { class: "flex items-center justify-between" }, Jf = {
13167
13166
  key: 0,
13168
13167
  class: "text-lg font-semibold text-slate-900"
13169
13168
  }, _f = {
@@ -13274,7 +13273,7 @@ const Uf = sn({
13274
13273
  }, {
13275
13274
  icon: j(() => [
13276
13275
  P(W, {
13277
- icon: O(po),
13276
+ icon: O(uo),
13278
13277
  size: "sm"
13279
13278
  }, null, 8, ["icon"])
13280
13279
  ]),
@@ -13287,7 +13286,7 @@ const Uf = sn({
13287
13286
  }, {
13288
13287
  icon: j(() => [
13289
13288
  P(W, {
13290
- icon: O(zo),
13289
+ icon: O(xo),
13291
13290
  size: "sm"
13292
13291
  }, null, 8, ["icon"])
13293
13292
  ]),
@@ -13434,7 +13433,7 @@ const Uf = sn({
13434
13433
  "data-sticky": e.sticky,
13435
13434
  "data-fixed": e.fixed
13436
13435
  }, [
13437
- P(jn, {
13436
+ P(no, {
13438
13437
  size: e.containerSize,
13439
13438
  padding: e.containerPadding
13440
13439
  }, {
@@ -13553,10 +13552,10 @@ const Uf = sn({
13553
13552
  emits: ["close", "opened", "closed", "update:variant"],
13554
13553
  setup(e, { emit: a }) {
13555
13554
  const t = e, l = a, n = [
13556
- { value: "modal", label: "Модальное окно", icon: Oo },
13557
- { value: "fullscreen", label: "На весь экран", icon: xo },
13555
+ { value: "modal", label: "Модальное окно", icon: Bo },
13556
+ { value: "fullscreen", label: "На весь экран", icon: mo },
13558
13557
  { value: "sidebar-right", label: "Боковая панель", icon: Ol },
13559
- { value: "half-right", label: "Половина справа", icon: Xo }
13558
+ { value: "half-right", label: "Половина справа", icon: Ao }
13560
13559
  ], s = (m) => {
13561
13560
  l("update:variant", m);
13562
13561
  }, i = d(() => {
@@ -13613,7 +13612,7 @@ const Uf = sn({
13613
13612
  };
13614
13613
  return `${y[t.backdropColor] || y["slate-900"]} / ${t.backdropOpacity}%)`;
13615
13614
  });
13616
- return (m, y) => (o(), L(Wa, {
13615
+ return (m, y) => (o(), L(Ua, {
13617
13616
  show: e.open && e.variant !== "half-right",
13618
13617
  blur: e.backdropBlur,
13619
13618
  "background-color": h.value,
@@ -13916,7 +13915,7 @@ const Uf = sn({
13916
13915
  "data-columns": e.columns,
13917
13916
  "data-lightbox": e.lightbox
13918
13917
  }, [
13919
- e.layout === "grid" ? (o(), L(Nn, {
13918
+ e.layout === "grid" ? (o(), L(Uo, {
13920
13919
  key: 0,
13921
13920
  cols: e.columns,
13922
13921
  "cols-sm": e.columnsSm,
@@ -14217,7 +14216,7 @@ const Uf = sn({
14217
14216
  return {
14218
14217
  info: ol,
14219
14218
  success: Il,
14220
- warning: Ao,
14219
+ warning: wo,
14221
14220
  error: Pl
14222
14221
  }[X] || ol;
14223
14222
  }
@@ -15234,7 +15233,7 @@ const Uf = sn({
15234
15233
  }, [
15235
15234
  N(m.$slots, "footer")
15236
15235
  ], 2)) : b("", !0),
15237
- n.value ? (o(), L(Wa, {
15236
+ n.value ? (o(), L(Ua, {
15238
15237
  key: 3,
15239
15238
  show: n.value,
15240
15239
  blur: e.backdropBlur,
@@ -15434,7 +15433,7 @@ const Uf = sn({
15434
15433
  ], 2)) : b("", !0)
15435
15434
  ], 10, Im));
15436
15435
  }
15437
- }, Jg = /* @__PURE__ */ Se(Xm, [["__scopeId", "data-v-67d911c7"]]), Lm = { class: "flex items-center gap-4" }, Om = { class: "flex flex-wrap gap-2" }, _g = {
15436
+ }, Jg = /* @__PURE__ */ Se(Xm, [["__scopeId", "data-v-9dde86e5"]]), Lm = { class: "flex items-center gap-4" }, Om = { class: "flex flex-wrap gap-2" }, _g = {
15438
15437
  __name: "DXUserProfileCard",
15439
15438
  props: {
15440
15439
  /**
@@ -16075,15 +16074,15 @@ const Uf = sn({
16075
16074
  },
16076
16075
  setup(e) {
16077
16076
  Cl((n) => ({
16078
- v62c794a4: e.duration + "ms"
16077
+ v0b496e76: e.duration + "ms"
16079
16078
  }));
16080
16079
  const a = e, t = d(() => a.name !== "fade" ? a.name : a.type), l = d(() => ({
16081
16080
  fade: Pt,
16082
- "fade-scale": Na,
16083
- "slide-right": Ra,
16084
- "slide-left": Ha,
16085
- "slide-up": qa,
16086
- "slide-down": Ua
16081
+ "fade-scale": ja,
16082
+ "slide-right": Fa,
16083
+ "slide-left": Na,
16084
+ "slide-up": Ra,
16085
+ "slide-down": Ha
16087
16086
  })[a.type] || Pt);
16088
16087
  return (n, s) => (o(), L(Oe, Qe({
16089
16088
  name: t.value,
@@ -16099,7 +16098,7 @@ const Uf = sn({
16099
16098
  _: 3
16100
16099
  }, 16, ["name", "mode", "appear", "data-type", "data-duration"]));
16101
16100
  }
16102
- }, tv = /* @__PURE__ */ Se(Zm, [["__scopeId", "data-v-6e9901f7"]]), Wm = ["data-breakpoint"], av = {
16101
+ }, tv = /* @__PURE__ */ Se(Zm, [["__scopeId", "data-v-e736bc9c"]]), Wm = ["data-breakpoint"], av = {
16103
16102
  __name: "DXBreakpointProvider",
16104
16103
  props: {
16105
16104
  /**
@@ -16296,7 +16295,7 @@ const Uf = sn({
16296
16295
  N(i.$slots, "default", {}, void 0, !0)
16297
16296
  ], 10, Gm));
16298
16297
  }
16299
- }, nv = /* @__PURE__ */ Se(Ym, [["__scopeId", "data-v-5b435655"]]), Km = ["data-theme"], Qm = {
16298
+ }, nv = /* @__PURE__ */ Se(Ym, [["__scopeId", "data-v-7116c553"]]), Km = ["data-theme"], Qm = {
16300
16299
  __name: "DXThemeProvider",
16301
16300
  props: {
16302
16301
  /**
@@ -16405,7 +16404,7 @@ const Uf = sn({
16405
16404
  N(w.$slots, "default", {}, void 0, !0)
16406
16405
  ], 10, Km));
16407
16406
  }
16408
- }, ov = /* @__PURE__ */ Se(Qm, [["__scopeId", "data-v-c93da4f5"]]), Jm = {
16407
+ }, ov = /* @__PURE__ */ Se(Qm, [["__scopeId", "data-v-ade52433"]]), Jm = {
16409
16408
  __name: "DXTransitionGroup",
16410
16409
  props: {
16411
16410
  /**
@@ -16442,16 +16441,16 @@ const Uf = sn({
16442
16441
  },
16443
16442
  setup(e) {
16444
16443
  Cl((n) => ({
16445
- a3b2ecf2: e.duration + "ms"
16444
+ v37e563e6: e.duration + "ms"
16446
16445
  }));
16447
16446
  const a = e, t = d(() => a.name !== "fade" ? a.name : a.type), l = d(() => F());
16448
16447
  return d(() => ({
16449
16448
  fade: Pt,
16450
- "fade-scale": Na,
16451
- "slide-right": Ra,
16452
- "slide-left": Ha,
16453
- "slide-up": qa,
16454
- "slide-down": Ua
16449
+ "fade-scale": ja,
16450
+ "slide-right": Fa,
16451
+ "slide-left": Na,
16452
+ "slide-up": Ra,
16453
+ "slide-down": Ha
16455
16454
  })[a.type] || Pt), (n, s) => (o(), L(dn, Qe({
16456
16455
  tag: e.tag,
16457
16456
  name: t.value,
@@ -16466,7 +16465,7 @@ const Uf = sn({
16466
16465
  _: 3
16467
16466
  }, 16, ["tag", "name", "class", "data-type", "data-duration"]));
16468
16467
  }
16469
- }, sv = /* @__PURE__ */ Se(Jm, [["__scopeId", "data-v-6e70ea82"]]);
16468
+ }, sv = /* @__PURE__ */ Se(Jm, [["__scopeId", "data-v-a13cf31c"]]);
16470
16469
  function rv(e, a) {
16471
16470
  const t = H(!1), l = H(!1), n = () => {
16472
16471
  if (!e.value) return;
@@ -16540,7 +16539,7 @@ const iv = {
16540
16539
  },
16541
16540
  bookmark: {
16542
16541
  activeIcon: cn,
16543
- inactiveIcon: ko,
16542
+ inactiveIcon: vo,
16544
16543
  activeVariant: "warning",
16545
16544
  inactiveVariant: "ghost",
16546
16545
  iconAnimation: "scale"
@@ -16570,7 +16569,7 @@ const iv = {
16570
16569
  },
16571
16570
  lock: {
16572
16571
  activeIcon: mn,
16573
- inactiveIcon: Bo,
16572
+ inactiveIcon: Co,
16574
16573
  activeLabel: "Locked",
16575
16574
  inactiveLabel: "Unlocked",
16576
16575
  activeVariant: "danger",
@@ -16579,7 +16578,7 @@ const iv = {
16579
16578
  },
16580
16579
  theme: {
16581
16580
  activeIcon: gn,
16582
- inactiveIcon: Po,
16581
+ inactiveIcon: Io,
16583
16582
  activeLabel: "Dark",
16584
16583
  inactiveLabel: "Light",
16585
16584
  activeVariant: "primary",
@@ -16588,14 +16587,14 @@ const iv = {
16588
16587
  },
16589
16588
  sound: {
16590
16589
  activeIcon: hn,
16591
- inactiveIcon: Lo,
16590
+ inactiveIcon: Vo,
16592
16591
  activeVariant: "danger",
16593
16592
  inactiveVariant: "primary",
16594
16593
  iconAnimation: "scale"
16595
16594
  },
16596
16595
  playPause: {
16597
16596
  activeIcon: vn,
16598
- inactiveIcon: Eo,
16597
+ inactiveIcon: Do,
16599
16598
  activeLabel: "Pause",
16600
16599
  inactiveLabel: "Play",
16601
16600
  activeVariant: "warning",
@@ -16607,7 +16606,7 @@ function pv(e) {
16607
16606
  return xl[e] || xl.favorite;
16608
16607
  }
16609
16608
  export {
16610
- Un as COLLAPSE_TRANSITION,
16609
+ yn as COLLAPSE_TRANSITION,
16611
16610
  Lg as DXAccordion,
16612
16611
  xg as DXActionButtons,
16613
16612
  Fs as DXAlert,
@@ -16615,11 +16614,11 @@ export {
16615
16614
  Og as DXAppLayout,
16616
16615
  Pg as DXAuthenticationForm,
16617
16616
  la as DXAvatar,
16618
- Wa as DXBackdrop,
16617
+ Ua as DXBackdrop,
16619
16618
  dt as DXBadge,
16620
16619
  Rr as DXBaseTable,
16621
- sg as DXBlockquote,
16622
- cg as DXBox,
16620
+ ag as DXBlockquote,
16621
+ lg as DXBox,
16623
16622
  kg as DXBreadcrumb,
16624
16623
  av as DXBreakpointProvider,
16625
16624
  le as DXButton,
@@ -16629,10 +16628,10 @@ export {
16629
16628
  jg as DXChatInterface,
16630
16629
  xt as DXCheckbox,
16631
16630
  Rl as DXCloseButton,
16632
- og as DXCode,
16631
+ ng as DXCode,
16633
16632
  Sg as DXComboBox,
16634
16633
  Fg as DXCommentSection,
16635
- jn as DXContainer,
16634
+ no as DXContainer,
16636
16635
  $g as DXCopyField,
16637
16636
  qg as DXDashboardGrid,
16638
16637
  Ug as DXDashboardWidget,
@@ -16646,22 +16645,22 @@ export {
16646
16645
  Rg as DXEmptyState,
16647
16646
  Dg as DXFileUpload,
16648
16647
  zg as DXFilterGroup,
16649
- ig as DXFlex,
16648
+ og as DXFlex,
16650
16649
  Re as DXFormControl,
16651
16650
  fa as DXFormLabel,
16652
16651
  Hg as DXFormWizard,
16653
- Nn as DXGrid,
16652
+ Uo as DXGrid,
16654
16653
  Zg as DXHeaderBar,
16655
- ag as DXHeading,
16654
+ sg as DXHeading,
16656
16655
  W as DXIcon,
16657
16656
  Ft as DXIconWrapper,
16658
16657
  $e as DXInput,
16659
- gg as DXInputAddon,
16658
+ dg as DXInputAddon,
16660
16659
  Ag as DXInputGroup,
16661
16660
  Vg as DXInputMask,
16662
- ng as DXLabel,
16661
+ ug as DXLabel,
16663
16662
  At as DXLink,
16664
- rg as DXList,
16663
+ cg as DXList,
16665
16664
  Fl as DXLoader,
16666
16665
  Wg as DXMediaGallery,
16667
16666
  wg as DXMenu,
@@ -16672,7 +16671,7 @@ export {
16672
16671
  va as DXPasswordInput,
16673
16672
  lv as DXPortal,
16674
16673
  Nl as DXProgress,
16675
- ms as DXRadio,
16674
+ cs as DXRadio,
16676
16675
  Bg as DXRadioCard,
16677
16676
  Ig as DXRadioGroup,
16678
16677
  Mg as DXRating,
@@ -16685,10 +16684,10 @@ export {
16685
16684
  Qg as DXSidebar,
16686
16685
  Jg as DXSidebarMenu,
16687
16686
  Va as DXSidebarMenuItem,
16688
- vg as DXSkeleton,
16689
- hg as DXSlider,
16690
- ug as DXSpacer,
16691
- dg as DXStack,
16687
+ fg as DXSkeleton,
16688
+ mg as DXSlider,
16689
+ gg as DXSpacer,
16690
+ vg as DXStack,
16692
16691
  nv as DXStaggeredAnimation,
16693
16692
  Xu as DXStatCard,
16694
16693
  Qa as DXTable,
@@ -16696,7 +16695,7 @@ export {
16696
16695
  Wd as DXTableToolbar,
16697
16696
  cm as DXTabs,
16698
16697
  xs as DXTags,
16699
- lg as DXText,
16698
+ hg as DXText,
16700
16699
  Ul as DXTextarea,
16701
16700
  ov as DXThemeProvider,
16702
16701
  Eg as DXTimePicker,
@@ -16708,14 +16707,14 @@ export {
16708
16707
  _g as DXUserProfileCard,
16709
16708
  rl as DXValidationIcon,
16710
16709
  ev as DXWizard,
16711
- Na as FADE_SCALE_TRANSITION,
16710
+ ja as FADE_SCALE_TRANSITION,
16712
16711
  Pt as FADE_TRANSITION,
16713
- Ua as SLIDE_DOWN_TRANSITION,
16714
- Ha as SLIDE_LEFT_TRANSITION,
16715
- Ra as SLIDE_RIGHT_TRANSITION,
16716
- qa as SLIDE_UP_TRANSITION,
16712
+ Ha as SLIDE_DOWN_TRANSITION,
16713
+ Na as SLIDE_LEFT_TRANSITION,
16714
+ Fa as SLIDE_RIGHT_TRANSITION,
16715
+ Ra as SLIDE_UP_TRANSITION,
16717
16716
  xl as TOGGLE_PRESETS,
16718
- Wn as TOOLTIP_CUSTOM_TRANSITION,
16717
+ wn as TOOLTIP_CUSTOM_TRANSITION,
16719
16718
  de as VARIANT_CONFIGS,
16720
16719
  uv as buttonVariantProp,
16721
16720
  fv as disabledProp,
@@ -16725,12 +16724,12 @@ export {
16725
16724
  mv as labelProp,
16726
16725
  gv as placeholderProp,
16727
16726
  iv as sizeProp,
16728
- Za as useAnimation,
16727
+ qa as useAnimation,
16729
16728
  Al as useAnimationTransition,
16730
- mg as useBooleanDataAttributes,
16729
+ ig as useBooleanDataAttributes,
16731
16730
  F as useClassComposition,
16732
16731
  jl as useCustomDataAttributes,
16733
- fg as useDataAttributes,
16732
+ rg as useDataAttributes,
16734
16733
  Hl as useMenu,
16735
16734
  fe as useSize,
16736
16735
  oe as useSpacing,
@@ -16742,17 +16741,17 @@ export {
16742
16741
  Ic as useTableSort,
16743
16742
  rv as useTabsScroll,
16744
16743
  pv as useTogglePreset,
16745
- zn as useTooltipArrow,
16746
- Zn as useTooltipCustomTransition,
16747
- Dn as useTooltipPosition,
16744
+ On as useTooltipArrow,
16745
+ xn as useTooltipCustomTransition,
16746
+ Ln as useTooltipPosition,
16748
16747
  Vl as useTransition,
16749
- Bn as useVariantBadge,
16750
- Fa as useVariantButton,
16748
+ Fn as useVariantBadge,
16749
+ Wa as useVariantButton,
16751
16750
  eg as useVariantClasses,
16752
- yn as useVariantConfig,
16753
- In as useVariantDropdownItem,
16751
+ Vn as useVariantConfig,
16752
+ Nn as useVariantDropdownItem,
16754
16753
  tg as useVariantIcon,
16755
- Vn as useVariantToggle,
16756
- $n as useVariantTooltip,
16754
+ jn as useVariantToggle,
16755
+ Xn as useVariantTooltip,
16757
16756
  dv as variantProp
16758
16757
  };