vlite3 1.2.1 → 1.2.4

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 (64) hide show
  1. package/README.md +1 -0
  2. package/components/AppShell/AppShellLayoutClassic.vue.js +67 -64
  3. package/components/AppShell/AppShellLayoutDashboard.vue.js +76 -71
  4. package/components/AppShell/AppShellLayoutDock.vue.js +27 -27
  5. package/components/AppShell/AppShellLayoutHeaderShell.vue.js +81 -76
  6. package/components/AppShell/AppShellLayoutSidebarFirst.vue.js +56 -56
  7. package/components/AsyncSelect/createAsyncSelect.d.ts +88 -0
  8. package/components/AsyncSelect/createAsyncSelect.js +156 -0
  9. package/components/AsyncSelect/index.d.ts +1 -0
  10. package/components/ChoiceBox/ChoiceBox.vue.js +4 -2
  11. package/components/CommandPalette/CommandPaletteContent.vue2.js +1 -1
  12. package/components/CommandPalette/{CommandPaletteItem.vue.js → CommandPaletteItem.vue2.js} +1 -1
  13. package/components/DataTable/DataTable.vue.d.ts +3 -3
  14. package/components/DataTable/DataTableRow.vue.d.ts +1 -1
  15. package/components/Form/CustomFields.vue.js +2 -2
  16. package/components/Form/CustomFields.vue2.js +15 -2
  17. package/components/Form/Form.vue.js +1 -1
  18. package/components/Form/Form.vue2.js +1 -1
  19. package/components/Invoice/InvoiceVariant1.vue.js +225 -176
  20. package/components/Invoice/InvoiceVariant2.vue.js +174 -125
  21. package/components/Invoice/InvoiceVariant3.vue.js +186 -157
  22. package/components/Invoice/InvoiceVariant4.vue.js +200 -156
  23. package/components/Invoice/types.d.ts +10 -1
  24. package/components/List/ListFieldRow.vue.js +221 -144
  25. package/components/List/utils.d.ts +2 -2
  26. package/components/List/utils.js +6 -9
  27. package/components/NavbarCommandPalette.vue.js +2 -2
  28. package/components/Price/Price.vue.d.ts +3 -1
  29. package/components/Price/Price.vue.js +35 -10
  30. package/components/Rating/Rating.vue.d.ts +43 -0
  31. package/components/Rating/Rating.vue.js +7 -0
  32. package/components/Rating/Rating.vue2.js +92 -0
  33. package/components/Rating/ReviewSummary.vue.d.ts +5 -0
  34. package/components/Rating/ReviewSummary.vue.js +67 -0
  35. package/components/Rating/ReviewSummary.vue2.js +4 -0
  36. package/components/Rating/index.d.ts +3 -0
  37. package/components/Rating/types.d.ts +28 -0
  38. package/components/Screen/Screen.vue.d.ts +38 -12
  39. package/components/Screen/Screen.vue.js +400 -304
  40. package/components/Screen/components/ScreenToolbar.vue.d.ts +62 -0
  41. package/components/Screen/components/ScreenToolbar.vue.js +116 -0
  42. package/components/Screen/components/ScreenToolbar.vue2.js +4 -0
  43. package/components/Screen/types.d.ts +9 -0
  44. package/components/SidebarMenu/SidebarMenu.vue.js +1 -1
  45. package/components/SidebarMenu/SidebarMenuItem.vue.d.ts +3 -1
  46. package/components/SidebarMenu/SidebarMenuItem.vue.js +198 -175
  47. package/components/Stats/StatItem.vue.js +212 -153
  48. package/components/Stats/Stats.vue.js +20 -20
  49. package/components/Stats/components/StatIconBox.vue.js +42 -42
  50. package/components/Stats/components/StatTrend.vue.js +20 -20
  51. package/components/Stats/types.d.ts +3 -1
  52. package/components/Timeline/Timeline.vue.js +21 -11
  53. package/components/Timeline/TimelineItem.vue.js +1 -1
  54. package/core/config.d.ts +10 -0
  55. package/core/config.js +11 -9
  56. package/index.d.ts +2 -0
  57. package/index.js +220 -214
  58. package/package.json +2 -1
  59. package/style.css +23 -17
  60. package/types/config.type.d.ts +2 -0
  61. package/types/list.type.d.ts +4 -0
  62. package/utils/functions.d.ts +9 -10
  63. package/utils/functions.js +78 -63
  64. package/utils/status.js +16 -16
package/style.css CHANGED
@@ -463,32 +463,32 @@
463
463
  /* Semantics - Dark Mode High Contrast */
464
464
 
465
465
  /* Danger */
466
- --color-danger-light: #4E1D1A;
467
- --color-danger-fg-light: #FCFCFC;
468
- --color-danger: #7F1D1D;
466
+ --color-danger-light: #170E0D;
467
+ --color-danger-fg-light: #fca5a5;
468
+ --color-danger: #ef4444;
469
469
  --color-danger-fg: #ffffff;
470
- --color-danger-dark: #850e0c;
470
+ --color-danger-dark: #7f1d1d;
471
471
 
472
472
  /* Warning */
473
- --color-warning-light: #3a1e00;
474
- --color-warning-fg-light: #ff9f0a;
475
- --color-warning: #95600E;
473
+ --color-warning-light: #281D0F;
474
+ --color-warning-fg-light: #fcd34d;
475
+ --color-warning: #C78111;
476
476
  --color-warning-fg: #ffffff;
477
- --color-warning-dark: #8b5a0f;
477
+ --color-warning-dark: #78350f;
478
478
 
479
479
  /* Info */
480
- --color-info-light: #001a33;
481
- --color-info-fg-light: #0a84ff;
482
- --color-info: #0a84ff;
480
+ --color-info-light: #111A28;
481
+ --color-info-fg-light: #93c5fd;
482
+ --color-info: #3b82f6;
483
483
  --color-info-fg: #ffffff;
484
- --color-info-dark: #147bee;
484
+ --color-info-dark: #1e3a8a;
485
485
 
486
486
  /* Success */
487
- --color-success-light: #1B3419;
488
- --color-success-fg-light: #ffffff;
489
- --color-success: #007E51;
487
+ --color-success-light: #10201A;
488
+ --color-success-fg-light: #6ee7b7;
489
+ --color-success: #064e3b;
490
490
  --color-success-fg: #ffffff;
491
- --color-success-dark: #06764c;
491
+ --color-success-dark: #064e3b;
492
492
 
493
493
  --color-success-subtle: #0f2419;
494
494
  --color-success-subtle-fg: #e2f5e9ff;
@@ -808,6 +808,7 @@ html {
808
808
  opacity: 0;
809
809
  transform: translateY(4px) scale(0.97);
810
810
  }
811
+
811
812
  to {
812
813
  opacity: 1;
813
814
  transform: translateY(0) scale(1);
@@ -940,6 +941,11 @@ html {
940
941
  overflow-y: auto !important;
941
942
  }
942
943
 
944
+ .v-event-calendar .calendar-day-number.today {
945
+ background-color: var(--color-primary) !important;
946
+ color: var(--color-primary-fg) !important;
947
+ }
948
+
943
949
  /* --- input.css --- */
944
950
  input[type='number']::-webkit-inner-spin-button,
945
951
  input[type='number']::-webkit-outer-spin-button {
@@ -1626,5 +1632,5 @@ textarea::-webkit-scrollbar-thumb:hover {
1626
1632
  }
1627
1633
 
1628
1634
  /* --- Vite Generated CSS --- */
1629
- input[data-v-cce64dd9]::-webkit-outer-spin-button,input[data-v-cce64dd9]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-cce64dd9]{-moz-appearance:textfield;appearance:textfield}@keyframes onAutoFillStart{0%{opacity:1}to{opacity:1}}@keyframes onAutoFillCancel{0%{opacity:1}to{opacity:1}}input.autofill-detect:-webkit-autofill{animation-name:onAutoFillStart;animation-duration:1ms;animation-fill-mode:both}input.autofill-detect:not(:-webkit-autofill){animation-name:onAutoFillCancel;animation-duration:1ms;animation-fill-mode:both}.vl-thumbnail-selector__filepicker-inline[data-v-9fd1363d]{display:contents}.vl-thumbnail-selector__card:hover .vl-thumbnail-selector__delete[data-v-9fd1363d],.vl-thumbnail-selector__card:hover .vl-thumbnail-selector__drag-handle[data-v-9fd1363d]{opacity:1}.vl-thumbnail-selector__card[data-v-9fd1363d]:not(.border-primary):hover{border-color:color-mix(in sRGB,var(--color-primary, currentColor) 40%,transparent)}.dropdown-menu[data-v-97836d58]{will-change:transform;contain:layout style}.v-modal-overlay[data-v-350b61e5]{background-color:#00000052}.v-modal-backdrop[data-v-350b61e5]{transform:translateZ(0);will-change:opacity}.modal-body[data-v-350b61e5]{will-change:transform;contain:layout style}.blink-bg[data-v-350b61e5]{animation:blink-animation-350b61e5 1s infinite}@keyframes blink-animation-350b61e5{0%{background-color:inherit}15%{background-color:var(--color-gray-250)}35%{background-color:inherit}75%{background-color:var(--color-gray-250)}to{background-color:inherit}}.IroBox{border-radius:8px!important}.custom-fields-table[data-v-69b1b4ef]{will-change:transform;contain:layout style}.custom-fields-table[data-v-69b1b4ef] .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-69b1b4ef] input,.custom-fields-table[data-v-69b1b4ef] textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-69b1b4ef] input,.custom-fields-table[data-v-69b1b4ef] textarea,.custom-fields-table[data-v-69b1b4ef] select,.custom-fields-table[data-v-69b1b4ef] .input-wrapper,.custom-fields-table[data-v-69b1b4ef] .tooltip-trigger button,.custom-fields-table[data-v-69b1b4ef] .tooltip-trigger>div{border:none!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;height:100%!important;min-height:40px}.custom-fields-table[data-v-69b1b4ef] .tooltip-trigger button,.custom-fields-table[data-v-69b1b4ef] .tooltip-trigger>div{justify-content:space-between!important}.custom-fields-table[data-v-69b1b4ef] input:focus,.custom-fields-table[data-v-69b1b4ef] textarea:focus,.custom-fields-table[data-v-69b1b4ef] select:focus,.custom-fields-table[data-v-69b1b4ef] .input-wrapper:focus-within,.custom-fields-table[data-v-69b1b4ef] .tooltip-trigger button:focus,.custom-fields-table[data-v-69b1b4ef] .tooltip-trigger>div:focus,.custom-fields-table[data-v-69b1b4ef] .tooltip-trigger>div:focus-within{background-color:hsla(var(--primary) / .03)!important;box-shadow:inset 0 0 0 2px hsla(var(--primary) / .1)!important}.custom-fields-table[data-v-69b1b4ef] .w-full{width:100%;height:100%}.list-enter-active[data-v-69b1b4ef]{transition:all .15s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-69b1b4ef]{opacity:0;transform:translateY(-5px)}.form-field-item[data-v-3e65ff52]{display:flex;flex-direction:column}.form-field-item[data-v-3e65ff52]:has([role=checkbox]){flex-direction:row;align-items:center;justify-content:flex-start}.form-container[data-v-712d6d5d]{width:100%}[data-tabes][data-v-84e08076]:not(.inline-flex):not([class*=gap-6])>:where(button,a,[role=tab]){flex:1 1 0%;min-width:0}[data-tabes].inline-flex[data-v-84e08076]{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}[data-tabes].inline-flex[data-v-84e08076]::-webkit-scrollbar{display:none}@media(max-width:480px){[data-tabes][data-v-84e08076]:not([class*=flex-wrap]){overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}[data-tabes][data-v-84e08076]:not([class*=flex-wrap])::-webkit-scrollbar{display:none}}.custom-scrollbar[data-v-406ae285]::-webkit-scrollbar{width:0px}.custom-scrollbar[data-v-406ae285]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-406ae285]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.scrollable-container[data-v-406ae285]{will-change:transform;contain:layout style}.kanban-board--disabled[data-v-406ae285]{opacity:.75;background-color:color-mix(in srgb,var(--color-card) 85%,var(--color-muted) 15%)}.kanban-lock-badge[data-v-406ae285]{font-size:.75rem;line-height:1;-webkit-user-select:none;user-select:none}.custom-scrollbar-x[data-v-bf22f73c]::-webkit-scrollbar{height:8px}.custom-scrollbar-x[data-v-bf22f73c]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar-x[data-v-bf22f73c]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.scrollable-container[data-v-bf22f73c]{will-change:transform;contain:layout style}.v-sidepanel-overlay[data-v-3446a690]{background-color:#0003}.sidepanel-body[data-v-3446a690]{will-change:transform;contain:layout style}.navbar-tabs-no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.navbar-tabs-no-scrollbar::-webkit-scrollbar{display:none}.fade-x-enter-active,.fade-x-leave-active{transition:opacity .15s ease}.fade-x-enter-from,.fade-x-leave-to{opacity:0}.heatmap-container[data-v-00476f00]{width:100%;height:100%;display:flex;flex-direction:column;min-height:0}.heatmap-wrapper[data-v-00476f00]{width:100%;height:100%;overflow:auto;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;position:relative}.heatmap-grid[data-v-00476f00]{width:fit-content;height:fit-content;transition:all .2s ease-in-out}.heatmap-cell[data-v-00476f00]{aspect-ratio:1 / 1;border-radius:2px;transition:all .15s ease-in-out;border:1px solid transparent;box-sizing:border-box}.heatmap-cell-interactive[data-v-00476f00]{cursor:pointer}.heatmap-cell-interactive[data-v-00476f00]:hover{transform:scale(1.1);border-color:var(--border);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;z-index:10;position:relative}.heatmap-cell-empty[data-v-00476f00]{opacity:.6}.heatmap-cell-hovered[data-v-00476f00]{outline:2px solid var(--primary);outline-offset:1px}.heatmap-cell-label[data-v-00476f00]{font-size:8px;font-weight:500;color:var(--foreground);opacity:.8;display:flex;align-items:center;justify-content:center;height:100%;width:100%;pointer-events:none}.heatmap-legend[data-v-00476f00]{display:flex;align-items:center;gap:.5rem;margin-top:1rem;font-size:.75rem;color:var(--muted-foreground);flex-shrink:0}.heatmap-legend-label[data-v-00476f00]{font-weight:500}.heatmap-legend-colors[data-v-00476f00]{display:flex;gap:.125rem}.heatmap-legend-item[data-v-00476f00]{width:.75rem;height:.75rem;border-radius:.375rem;border:1px solid var(--border)}@media(max-width:640px){.heatmap-wrapper[data-v-00476f00]{padding:12px}.heatmap-cell[data-v-00476f00]{border-radius:2px}.heatmap-cell-label[data-v-00476f00]{font-size:7px}}@media(min-width:641px)and (max-width:1023px){.heatmap-wrapper[data-v-00476f00]{padding:14px}.heatmap-cell[data-v-00476f00]{border-radius:2px}}@media(min-width:1024px){.heatmap-wrapper[data-v-00476f00]{padding:16px}.heatmap-cell[data-v-00476f00]{border-radius:3px}}.masonry-item[data-v-c29d0159]{content-visibility:auto;contain-intrinsic-size:1px 200px}.carousel-wrapper[data-v-e8fba320]{width:100%;position:relative;will-change:transform;contain:layout style}.breadcrumb-item[data-v-ecb5df7c]{display:inline-flex;align-items:center;cursor:pointer}.breadcrumb-link[data-v-ecb5df7c]{display:inline-flex;align-items:center;gap:.35em;color:var(--color-muted-foreground);text-decoration:none;transition:color .15s ease,background-color .15s ease;border-radius:var(--radius-sm)}.breadcrumb-link[data-v-ecb5df7c]:not(.current):not(.disabled):hover{color:var(--color-foreground)}.breadcrumb-link.current[data-v-ecb5df7c]{color:var(--color-foreground);font-weight:600;cursor:default}.breadcrumb-link.disabled[data-v-ecb5df7c]{opacity:.45;cursor:not-allowed;pointer-events:none}.breadcrumb-icon[data-v-ecb5df7c]{flex-shrink:0}.breadcrumb-list[data-v-d1e90135]{display:flex;flex-wrap:wrap;align-items:center;list-style:none;margin:0;padding:0;gap:.38em}.breadcrumb--sm[data-v-d1e90135]{font-size:var(--text--fs-2)}.breadcrumb--md[data-v-d1e90135]{font-size:var(--text-fs-0.5, 1em)}.breadcrumb--lg[data-v-d1e90135]{font-size:var(--text-fs-2)}.breadcrumb-separator[data-v-d1e90135]{display:inline-flex;align-items:center;color:var(--color-gray-500);-webkit-user-select:none;user-select:none;font-size:.9em;line-height:1;padding:0 .1em}.breadcrumb-ellipsis[data-v-d1e90135]{display:inline-flex;align-items:center}.breadcrumb-ellipsis-btn[data-v-d1e90135]{display:inline-flex;align-items:center;justify-content:center;width:1.6em;height:1.6em;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:transparent;color:var(--color-muted-foreground);cursor:pointer;font-size:.9em;line-height:1;letter-spacing:.05em;transition:all .15s ease}.breadcrumb-ellipsis-btn[data-v-d1e90135]:hover{background:var(--color-accent);color:var(--color-foreground);border-color:var(--color-gray-350)}.breadcrumb--contained[data-v-d1e90135]{background:var(--color-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:.45em 1em}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link{padding:.2em .7em;border-radius:9999px;background:var(--color-secondary);border:1px solid var(--color-border)}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent);border-color:var(--color-gray-350)}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground);border-color:var(--color-primary)}.breadcrumb--arrow .breadcrumb-list[data-v-d1e90135]{gap:0}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link{padding:.35em .9em .35em 1.4em;background:var(--color-secondary);clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%,.6em 50%);border:none;margin-left:-.3em}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-item:first-child .breadcrumb-link{padding-left:.9em;clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%);border-radius:var(--radius-sm) 0 0 var(--radius-sm);margin-left:0}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent)}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground)}.breadcrumb--arrow .breadcrumb-separator[data-v-d1e90135]{display:none}.file-tree-container[data-v-91337be9]{will-change:transform;contain:layout style}:where(.rte-editor,.rte-reader) h1{display:block;font-size:1.5rem!important;font-weight:700!important;margin:.5em 0 .2em!important;line-height:1.3}:where(.rte-editor,.rte-reader) h2{display:block;font-size:1.2rem!important;font-weight:600!important;margin:.45em 0 .2em!important;line-height:1.35}:where(.rte-editor,.rte-reader) p{display:block;margin:.2em 0!important}:where(.rte-editor,.rte-reader) div{margin:.1em 0}:where(.rte-editor,.rte-reader) blockquote{display:block;border-left:3px solid var(--color-primary);margin:.6em 0!important;padding:.35em 1em!important;color:var(--color-muted-foreground);font-style:italic;background:color-mix(in oklab,var(--color-primary) 6%,transparent);border-radius:0 var(--radius-sm) var(--radius-sm) 0}:where(.rte-editor,.rte-reader) ul{display:block!important;list-style-type:disc!important;list-style-position:inside!important;padding-left:1.6em!important;margin:.35em 0!important}:where(.rte-editor,.rte-reader) ol{display:block!important;list-style-type:decimal!important;list-style-position:inside!important;padding-left:1.6em!important;margin:.35em 0!important}:where(.rte-editor,.rte-reader) li{display:list-item!important;margin:.15em 0!important;padding-left:.15em}:where(.rte-editor,.rte-reader) ul ul,:where(.rte-editor,.rte-reader) ol ul{list-style-type:circle!important}:where(.rte-editor,.rte-reader) ul ul ul,:where(.rte-editor,.rte-reader) ol ol ul{list-style-type:square!important}:where(.rte-editor,.rte-reader) ol ol{list-style-type:lower-alpha!important}:where(.rte-editor,.rte-reader) ol ol ol{list-style-type:lower-roman!important}:where(.rte-editor,.rte-reader) hr{display:block!important;border:0!important;border-top:1px solid var(--color-border)!important;margin:1.5em 0!important}:where(.rte-editor,.rte-reader) a{color:var(--color-info);text-decoration:underline;text-underline-offset:2px;cursor:pointer;transition:color .12s ease}:where(.rte-editor,.rte-reader) a:hover{color:var(--color-info-dark, var(--color-info));text-decoration-thickness:2px}:where(.rte-editor,.rte-reader) code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.85em;background:var(--color-muted);color:var(--color-foreground);padding:.2em .4em;border-radius:var(--radius-sm);border:none}:where(.rte-editor,.rte-reader) img{max-width:100%;height:auto;border-radius:var(--radius-sm);margin:1em 0;display:block;box-shadow:0 0 0 1px var(--color-border);transition:filter .2s,opacity .2s}.rte-editor img.rte-image-uploading{opacity:.6;filter:grayscale(100%) blur(2px);cursor:wait}:where(.rte-editor,.rte-reader) strong,:where(.rte-editor,.rte-reader) b{font-weight:700!important}:where(.rte-editor,.rte-reader) em,:where(.rte-editor,.rte-reader) i{font-style:italic!important}:where(.rte-editor,.rte-reader) u{text-decoration:underline!important;text-decoration-thickness:1.5px;text-underline-offset:2px}:where(.rte-editor,.rte-reader) s,:where(.rte-editor,.rte-reader) strike{text-decoration:line-through!important}.rte-editor ::selection{background:color-mix(in oklab,var(--color-primary) 22%,transparent)}.rte-toolbar{display:flex;flex-wrap:wrap;padding:6px 8px;gap:2px;border-bottom:1px solid var(--color-border);background:var(--color-background);border-radius:calc(var(--radius) - 1px) calc(var(--radius) - 1px) 0 0;align-items:center}.rte-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--color-muted-foreground);cursor:pointer;transition:all .1s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.rte-btn:hover:not(:disabled){background:var(--color-accent);color:var(--color-foreground)}.rte-btn--active{background:var(--color-accent);color:var(--color-foreground)}.rte-btn--text{font-size:.75rem;font-weight:700;width:auto;min-width:28px;padding:0 6px}.rte-icon{width:1.1rem;height:1.1rem;stroke-width:2.5}.rte-btn:disabled{opacity:.38;cursor:not-allowed;pointer-events:none}.rte-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.rte-sep{width:1px;height:18px;background:var(--color-border);margin:0 3px;flex-shrink:0}.rte-link-popover{position:absolute;top:0;left:0;z-index:60;width:300px;max-width:min(300px,calc(100vw - 24px));background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 2px 4px #0000000f,0 8px 24px #0000001a;padding:8px;display:flex;flex-direction:column;gap:6px;will-change:transform,opacity}.rte-link-input-row{display:flex;align-items:center;gap:6px;background:var(--color-muted);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:0 8px;transition:border-color .15s ease,box-shadow .15s ease}.rte-link-input-row:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in oklab,var(--color-primary) 12%,transparent)}.rte-link-icon-prefix{width:.875rem;height:.875rem;color:var(--color-muted-foreground);flex-shrink:0}.rte-link-input{flex:1;background:transparent;border:none;outline:none;font-size:.8rem;color:var(--color-foreground);padding:7px 0;min-width:0;font-family:JetBrains Mono,Fira Code,ui-monospace,monospace}.rte-link-input::placeholder{color:var(--color-muted-foreground);font-family:inherit}.rte-link-actions-row{display:flex;align-items:center;gap:3px}.rte-link-action-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:none;border-radius:var(--radius-sm);background:transparent;font-size:.75rem;font-weight:500;cursor:pointer;color:var(--color-muted-foreground);transition:background .12s ease,color .12s ease}.rte-link-action-btn:hover{background:var(--color-accent);color:var(--color-foreground)}.rte-link-action-btn--danger{color:var(--color-destructive)}.rte-link-action-btn--danger:hover{background:color-mix(in oklab,var(--color-destructive) 10%,transparent);color:var(--color-destructive)}.rte-link-apply-btn{background:var(--color-primary);color:var(--color-primary-foreground);width:24px;height:24px;padding:4px;cursor:pointer}.rte-link-apply-btn:disabled{opacity:.5;cursor:not-allowed}.rte-link-apply-btn:hover:not(:disabled){background:color-mix(in oklab,var(--color-primary) 88%,var(--color-primary-foreground));color:var(--color-primary-foreground)}.rte-root{display:flex;flex-direction:column;gap:6px;width:100%}.rte-label{font-size:.825rem;font-weight:500;color:var(--color-foreground);margin-bottom:2px}.rte-wrapper{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius);position:relative;transition:border-color .15s ease,box-shadow .15s ease;display:flex;flex-direction:column}.rte-root.rte-focused .rte-wrapper{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in oklab,var(--color-primary) 12%,transparent)}.rte-root.rte-disabled .rte-wrapper{background:var(--color-muted);opacity:.6}.rte-root.rte-error .rte-wrapper{border-color:var(--color-destructive)}.rte-root.rte-error.rte-focused .rte-wrapper{box-shadow:0 0 0 2px color-mix(in oklab,var(--color-destructive) 15%,transparent)}.rte-body-wrap{position:relative;overflow:visible}.rte-editor{outline:none;padding:14px 16px;color:var(--color-foreground);font-size:.9rem;line-height:1.7;width:100%;box-sizing:border-box;overflow-y:auto;border-radius:0 0 var(--radius) var(--radius);word-break:break-word;overflow-wrap:break-word;will-change:transform;contain:layout style}.rte-editor[contenteditable=true]{caret-color:var(--color-primary)}.rte-placeholder{position:absolute;top:14px;left:16px;color:var(--color-muted-foreground);font-size:.9rem;pointer-events:none;-webkit-user-select:none;user-select:none;line-height:1.7}.rte-error-msg{font-size:.78rem;color:var(--color-destructive);margin:0;line-height:1.4}.rte-reader[data-v-55b9fd8b]{font-family:inherit;color:var(--color-foreground);font-size:.9rem;line-height:1.7;word-break:break-word;overflow-wrap:break-word;padding:0;margin:0}.sheet-container[data-v-a5e9ca6f]{will-change:transform;contain:layout style}.vl-comment-actions[data-v-446c60ad]{opacity:0;transition:opacity .15s ease}.vl-comment:hover:not(:has(.vl-comment:hover))>div>.vl-comment-header>.vl-comment-actions[data-v-446c60ad]{opacity:1}.vl-comment-actions[data-v-446c60ad]:focus-within{opacity:1}.vl-comment:has(.vl-comment-actions button[aria-label="Confirm delete"]) .vl-comment-actions[data-v-446c60ad]{opacity:1}.accordion-enter-active[data-v-0075dffb],.accordion-leave-active[data-v-0075dffb]{transition:height .3s ease-in-out;will-change:height}.content-wrapper[data-v-0075dffb]{contain:paint}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-left:4px!important}[dir=rtl] .sidebar-menu-tooltip{margin-right:4px!important}.drill-forward-enter-active,.drill-forward-leave-active{transition:all .28s cubic-bezier(.4,0,.2,1)}.drill-forward-enter-from{opacity:0;transform:translate(40%)}.drill-forward-enter-to,.drill-forward-leave-from{opacity:1;transform:translate(0)}.drill-forward-leave-to{opacity:0;transform:translate(-40%)}.drill-forward-leave-active{position:absolute;top:0;left:0;right:0}.drill-backward-enter-active,.drill-backward-leave-active{transition:all .28s cubic-bezier(.4,0,.2,1)}.drill-backward-enter-from{opacity:0;transform:translate(-40%)}.drill-backward-enter-to,.drill-backward-leave-from{opacity:1;transform:translate(0)}.drill-backward-leave-to{opacity:0;transform:translate(40%)}.drill-backward-leave-active{position:absolute;top:0;left:0;right:0}.sidebar-drilldown-container{min-height:0}.bg-stripe[data-v-454a1505]{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.animate-progress-stripe[data-v-454a1505]{animation:progress-stripe-454a1505 1s linear infinite}@keyframes progress-stripe-454a1505{0%{background-position:1rem 0}to{background-position:0 0}}.animate-progress-indeterminate[data-v-454a1505]{animation:progress-indeterminate-454a1505 1.5s infinite cubic-bezier(.65,.815,.735,.395)}@keyframes progress-indeterminate-454a1505{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(0) scaleX(.5)}to{transform:translate(100%) scaleX(.2)}}.permission-matrix-wrapper[data-v-ba68e64a]{max-height:70vh;will-change:transform;contain:layout style}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.permission-list-wrapper[data-v-a42b2fb0]{border:1px solid var(--color-border);border-radius:.5rem;overflow:hidden;background-color:var(--color-background);will-change:transform;contain:layout style}.custom-list-header[data-v-a42b2fb0]{background-color:var(--color-muted);border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]{border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);background-color:var(--color-background)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]:hover{background-color:var(--color-accent)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]:last-child{border-bottom:none}.custom-list-group-content+.custom-list-header[data-v-a42b2fb0],.custom-list-header+.custom-list-header[data-v-a42b2fb0]{border-top:1px solid var(--color-border)}.permission-list-wrapper>.custom-list-header[data-v-a42b2fb0]:last-child{border-bottom:none}.permission-matrix-wrapper[data-v-0b1ab970]{border:1px solid var(--color-border);background-color:var(--color-gray-100);border-radius:.5rem;overflow:auto;max-height:65vh;position:relative;will-change:transform;contain:layout style}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.custom-table[data-v-0b1ab970]{width:100%;border-collapse:collapse}.custom-sticky-header th[data-v-0b1ab970]{position:sticky;top:0;z-index:20;box-shadow:0 1px 0 var(--color-border)}.custom-th[data-v-0b1ab970]{background-color:var(--color-gray-150);color:var(--color-foreground);background-clip:padding-box;border-bottom:none;border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);text-align:left;font-weight:600;min-width:200px}thead:not(.custom-sticky-header) .custom-th[data-v-0b1ab970]{border-bottom:1px solid var(--color-border)}.custom-th.text-center[data-v-0b1ab970]{text-align:center;min-width:100px}.custom-th[data-v-0b1ab970]:first-child{border-left:none}.custom-td[data-v-0b1ab970]{border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-td.text-center[data-v-0b1ab970]{text-align:center}.custom-td[data-v-0b1ab970]:first-child{border-left:none}.custom-group-row td[data-v-0b1ab970]{background-color:var(--color-gray-100);border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.custom-entity-row[data-v-0b1ab970]{background-color:var(--color-background);transition:background-color .1s ease}.custom-entity-row[data-v-0b1ab970]:hover{background-color:var(--color-gray-50)}.custom-entity-row:last-child td[data-v-0b1ab970]{border-bottom:none}.custom-active-cell[data-v-0b1ab970]{cursor:pointer}.custom-active-cell[data-v-0b1ab970]:hover{background-color:var(--color-accent)}.attached-group[data-v-298c3d8a] button{position:relative}.attached-group[data-v-298c3d8a] button:focus-visible,.attached-group[data-v-298c3d8a] button:hover{z-index:10}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:not(:first-child){margin-inline-start:-1px}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:first-child{border-start-end-radius:0!important;border-end-end-radius:0!important}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0!important}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:last-child{border-start-start-radius:0!important;border-end-start-radius:0!important}.vertical-group[data-v-298c3d8a] button:not(:first-child){margin-block-start:-1px}.vertical-group[data-v-298c3d8a] button:first-child{border-end-start-radius:0!important;border-end-end-radius:0!important}.vertical-group[data-v-298c3d8a] button:not(:first-child):not(:last-child){border-radius:0!important}.vertical-group[data-v-298c3d8a] button:last-child{border-start-start-radius:0!important;border-start-end-radius:0!important}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:not(:first-child):not(.border):before{content:"";position:absolute;inset-inline-start:0;top:0;bottom:0;width:1px;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none;height:100%}.vertical-group[data-v-298c3d8a] button:not(:first-child):not(.border):before{content:"";position:absolute;top:0;left:0;right:0;height:1px;width:100%;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none}[data-v-63e46f6b] .calendar-view{--calendar-primary-color: var(--color-primary);--calendar-bg-color: transparent !important;--calendar-border-color: var(--color-border);--calendar-text-color: var(--color-foreground);--calendar-hover-color: var(--color-accent)}[data-v-63e46f6b] .v-event-calendar .add-event-icon,[data-v-63e46f6b] .v-event-calendar .add-event-icon svg{color:var(--color-primary-fg)!important}.vlite-line-chart[data-v-07c9fb47]{position:relative}.vlite-scc-grid[data-v-e6172e07]{display:flex;width:100%}.vlite-scc-card[data-v-e6172e07]{flex:1;position:relative;display:flex;align-items:stretch}.vlite-scc-separator[data-v-e6172e07]{width:1px;align-self:stretch;background:var(--color-border, #e4e4e7);opacity:.3;margin:8px 0;flex-shrink:0;background-image:repeating-linear-gradient(to bottom,var(--color-border, #e4e4e7) 0px,var(--color-border, #e4e4e7) 4px,transparent 4px,transparent 8px);background-color:transparent}.vlite-scc-content[data-v-e6172e07]{display:flex;flex-direction:column;align-items:flex-start;padding:16px 20px;flex:1;min-height:200px}.vlite-scc-label[data-v-e6172e07]{font-size:13px;font-weight:500;color:var(--color-muted-foreground, #71717a);margin:0 0 6px}.vlite-scc-pct[data-v-e6172e07]{font-size:36px;font-weight:800;color:var(--color-foreground, #09090b);margin:0;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.vlite-scc-spacer[data-v-e6172e07]{flex:1}.vlite-scc-indicator[data-v-e6172e07]{border-radius:10px;margin-bottom:14px;transition:width .6s ease,height .6s ease}.vlite-scc-footer[data-v-e6172e07]{display:flex;align-items:center;gap:8px}.vlite-scc-value[data-v-e6172e07]{font-size:14px;font-weight:600;color:var(--color-foreground, #09090b);font-variant-numeric:tabular-nums}.vlite-scc-trend-icon[data-v-e6172e07]{width:14px;height:14px}.vlite-scc-trend-up[data-v-e6172e07]{color:var(--color-success, #22c55e);transform:rotate(25deg)}.vlite-scc-trend-down[data-v-e6172e07]{color:var(--color-danger, #ef4444);transform:rotate(-25deg)}.toast-item[data-v-9c775c23]{will-change:transform,opacity;contain:layout style}.first-toast-enter-active[data-v-9c775c23]{animation:first-toast-in-9c775c23 .45s cubic-bezier(.23,1,.32,1) forwards}.first-toast-leave-active[data-v-9c775c23]{transition:all .25s ease-in}.first-toast-leave-to[data-v-9c775c23]{opacity:0;transform:scale(.98)}@keyframes first-toast-in-9c775c23{0%{opacity:var(--entrance-opacity, .6);transform:translateY(var(--entrance-offset, 25px)) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.stack-toast-enter-active[data-v-9c775c23],.stack-toast-leave-active[data-v-9c775c23]{transition:all .3s cubic-bezier(.16,1,.3,1)}.stack-toast-enter-from[data-v-9c775c23]{opacity:0;transform:scale(.95) translateY(10px)}.stack-toast-leave-to[data-v-9c775c23]{opacity:0;transform:scale(.95)}.stack-toast-move[data-v-9c775c23]{transition:transform .4s cubic-bezier(.16,1,.3,1)}.cp-item-transition[data-v-66b1ae06]{transition:background-color 80ms ease,color 80ms ease}.command-palette-content[data-v-aa0dbb48] ::-webkit-scrollbar{width:4px}.command-palette-content[data-v-aa0dbb48] ::-webkit-scrollbar-track{background:transparent}.command-palette-content[data-v-aa0dbb48] ::-webkit-scrollbar-thumb{background:var(--border);border-radius:9999px}.cp-scroll-container[data-v-aa0dbb48]{transform:translateZ(0);will-change:transform;touch-action:pan-y;backface-visibility:hidden}
1635
+ input[data-v-cce64dd9]::-webkit-outer-spin-button,input[data-v-cce64dd9]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-cce64dd9]{-moz-appearance:textfield;appearance:textfield}@keyframes onAutoFillStart{0%{opacity:1}to{opacity:1}}@keyframes onAutoFillCancel{0%{opacity:1}to{opacity:1}}input.autofill-detect:-webkit-autofill{animation-name:onAutoFillStart;animation-duration:1ms;animation-fill-mode:both}input.autofill-detect:not(:-webkit-autofill){animation-name:onAutoFillCancel;animation-duration:1ms;animation-fill-mode:both}.vl-thumbnail-selector__filepicker-inline[data-v-9fd1363d]{display:contents}.vl-thumbnail-selector__card:hover .vl-thumbnail-selector__delete[data-v-9fd1363d],.vl-thumbnail-selector__card:hover .vl-thumbnail-selector__drag-handle[data-v-9fd1363d]{opacity:1}.vl-thumbnail-selector__card[data-v-9fd1363d]:not(.border-primary):hover{border-color:color-mix(in sRGB,var(--color-primary, currentColor) 40%,transparent)}.dropdown-menu[data-v-97836d58]{will-change:transform;contain:layout style}.v-modal-overlay[data-v-350b61e5]{background-color:#00000052}.v-modal-backdrop[data-v-350b61e5]{transform:translateZ(0);will-change:opacity}.modal-body[data-v-350b61e5]{will-change:transform;contain:layout style}.blink-bg[data-v-350b61e5]{animation:blink-animation-350b61e5 1s infinite}@keyframes blink-animation-350b61e5{0%{background-color:inherit}15%{background-color:var(--color-gray-250)}35%{background-color:inherit}75%{background-color:var(--color-gray-250)}to{background-color:inherit}}.IroBox{border-radius:8px!important}.custom-fields-table[data-v-30cab34f]{will-change:transform;contain:layout style}.custom-fields-table[data-v-30cab34f] .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-30cab34f] input,.custom-fields-table[data-v-30cab34f] textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-30cab34f] input,.custom-fields-table[data-v-30cab34f] textarea,.custom-fields-table[data-v-30cab34f] select,.custom-fields-table[data-v-30cab34f] .input-wrapper,.custom-fields-table[data-v-30cab34f] .tooltip-trigger button,.custom-fields-table[data-v-30cab34f] .tooltip-trigger>div{border:none!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;height:100%!important;min-height:40px}.custom-fields-table[data-v-30cab34f] input:focus,.custom-fields-table[data-v-30cab34f] textarea:focus,.custom-fields-table[data-v-30cab34f] select:focus,.custom-fields-table[data-v-30cab34f] .input-wrapper:focus-within,.custom-fields-table[data-v-30cab34f] .tooltip-trigger button:focus,.custom-fields-table[data-v-30cab34f] .tooltip-trigger>div:focus,.custom-fields-table[data-v-30cab34f] .tooltip-trigger>div:focus-within{background-color:hsla(var(--primary) / .03)!important;box-shadow:inset 0 0 0 2px hsla(var(--primary) / .1)!important}.custom-fields-table[data-v-30cab34f] .w-full{width:100%;height:100%}.list-enter-active[data-v-30cab34f]{transition:all .15s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-30cab34f]{opacity:0;transform:translateY(-5px)}.form-field-item[data-v-3e65ff52]{display:flex;flex-direction:column}.form-field-item[data-v-3e65ff52]:has([role=checkbox]){flex-direction:row;align-items:center;justify-content:flex-start}.form-container[data-v-45c18c7b]{width:100%}[data-tabes][data-v-84e08076]:not(.inline-flex):not([class*=gap-6])>:where(button,a,[role=tab]){flex:1 1 0%;min-width:0}[data-tabes].inline-flex[data-v-84e08076]{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}[data-tabes].inline-flex[data-v-84e08076]::-webkit-scrollbar{display:none}@media(max-width:480px){[data-tabes][data-v-84e08076]:not([class*=flex-wrap]){overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}[data-tabes][data-v-84e08076]:not([class*=flex-wrap])::-webkit-scrollbar{display:none}}.custom-scrollbar[data-v-406ae285]::-webkit-scrollbar{width:0px}.custom-scrollbar[data-v-406ae285]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-406ae285]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.scrollable-container[data-v-406ae285]{will-change:transform;contain:layout style}.kanban-board--disabled[data-v-406ae285]{opacity:.75;background-color:color-mix(in srgb,var(--color-card) 85%,var(--color-muted) 15%)}.kanban-lock-badge[data-v-406ae285]{font-size:.75rem;line-height:1;-webkit-user-select:none;user-select:none}.custom-scrollbar-x[data-v-bf22f73c]::-webkit-scrollbar{height:8px}.custom-scrollbar-x[data-v-bf22f73c]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar-x[data-v-bf22f73c]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.scrollable-container[data-v-bf22f73c]{will-change:transform;contain:layout style}.v-sidepanel-overlay[data-v-3446a690]{background-color:#0003}.sidepanel-body[data-v-3446a690]{will-change:transform;contain:layout style}.navbar-tabs-no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.navbar-tabs-no-scrollbar::-webkit-scrollbar{display:none}.fade-x-enter-active,.fade-x-leave-active{transition:opacity .15s ease}.fade-x-enter-from,.fade-x-leave-to{opacity:0}.heatmap-container[data-v-00476f00]{width:100%;height:100%;display:flex;flex-direction:column;min-height:0}.heatmap-wrapper[data-v-00476f00]{width:100%;height:100%;overflow:auto;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;position:relative}.heatmap-grid[data-v-00476f00]{width:fit-content;height:fit-content;transition:all .2s ease-in-out}.heatmap-cell[data-v-00476f00]{aspect-ratio:1 / 1;border-radius:2px;transition:all .15s ease-in-out;border:1px solid transparent;box-sizing:border-box}.heatmap-cell-interactive[data-v-00476f00]{cursor:pointer}.heatmap-cell-interactive[data-v-00476f00]:hover{transform:scale(1.1);border-color:var(--border);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;z-index:10;position:relative}.heatmap-cell-empty[data-v-00476f00]{opacity:.6}.heatmap-cell-hovered[data-v-00476f00]{outline:2px solid var(--primary);outline-offset:1px}.heatmap-cell-label[data-v-00476f00]{font-size:8px;font-weight:500;color:var(--foreground);opacity:.8;display:flex;align-items:center;justify-content:center;height:100%;width:100%;pointer-events:none}.heatmap-legend[data-v-00476f00]{display:flex;align-items:center;gap:.5rem;margin-top:1rem;font-size:.75rem;color:var(--muted-foreground);flex-shrink:0}.heatmap-legend-label[data-v-00476f00]{font-weight:500}.heatmap-legend-colors[data-v-00476f00]{display:flex;gap:.125rem}.heatmap-legend-item[data-v-00476f00]{width:.75rem;height:.75rem;border-radius:.375rem;border:1px solid var(--border)}@media(max-width:640px){.heatmap-wrapper[data-v-00476f00]{padding:12px}.heatmap-cell[data-v-00476f00]{border-radius:2px}.heatmap-cell-label[data-v-00476f00]{font-size:7px}}@media(min-width:641px)and (max-width:1023px){.heatmap-wrapper[data-v-00476f00]{padding:14px}.heatmap-cell[data-v-00476f00]{border-radius:2px}}@media(min-width:1024px){.heatmap-wrapper[data-v-00476f00]{padding:16px}.heatmap-cell[data-v-00476f00]{border-radius:3px}}.masonry-item[data-v-c29d0159]{content-visibility:auto;contain-intrinsic-size:1px 200px}.carousel-wrapper[data-v-e8fba320]{width:100%;position:relative;will-change:transform;contain:layout style}.breadcrumb-item[data-v-ecb5df7c]{display:inline-flex;align-items:center;cursor:pointer}.breadcrumb-link[data-v-ecb5df7c]{display:inline-flex;align-items:center;gap:.35em;color:var(--color-muted-foreground);text-decoration:none;transition:color .15s ease,background-color .15s ease;border-radius:var(--radius-sm)}.breadcrumb-link[data-v-ecb5df7c]:not(.current):not(.disabled):hover{color:var(--color-foreground)}.breadcrumb-link.current[data-v-ecb5df7c]{color:var(--color-foreground);font-weight:600;cursor:default}.breadcrumb-link.disabled[data-v-ecb5df7c]{opacity:.45;cursor:not-allowed;pointer-events:none}.breadcrumb-icon[data-v-ecb5df7c]{flex-shrink:0}.breadcrumb-list[data-v-d1e90135]{display:flex;flex-wrap:wrap;align-items:center;list-style:none;margin:0;padding:0;gap:.38em}.breadcrumb--sm[data-v-d1e90135]{font-size:var(--text--fs-2)}.breadcrumb--md[data-v-d1e90135]{font-size:var(--text-fs-0.5, 1em)}.breadcrumb--lg[data-v-d1e90135]{font-size:var(--text-fs-2)}.breadcrumb-separator[data-v-d1e90135]{display:inline-flex;align-items:center;color:var(--color-gray-500);-webkit-user-select:none;user-select:none;font-size:.9em;line-height:1;padding:0 .1em}.breadcrumb-ellipsis[data-v-d1e90135]{display:inline-flex;align-items:center}.breadcrumb-ellipsis-btn[data-v-d1e90135]{display:inline-flex;align-items:center;justify-content:center;width:1.6em;height:1.6em;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:transparent;color:var(--color-muted-foreground);cursor:pointer;font-size:.9em;line-height:1;letter-spacing:.05em;transition:all .15s ease}.breadcrumb-ellipsis-btn[data-v-d1e90135]:hover{background:var(--color-accent);color:var(--color-foreground);border-color:var(--color-gray-350)}.breadcrumb--contained[data-v-d1e90135]{background:var(--color-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:.45em 1em}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link{padding:.2em .7em;border-radius:9999px;background:var(--color-secondary);border:1px solid var(--color-border)}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent);border-color:var(--color-gray-350)}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground);border-color:var(--color-primary)}.breadcrumb--arrow .breadcrumb-list[data-v-d1e90135]{gap:0}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link{padding:.35em .9em .35em 1.4em;background:var(--color-secondary);clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%,.6em 50%);border:none;margin-left:-.3em}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-item:first-child .breadcrumb-link{padding-left:.9em;clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%);border-radius:var(--radius-sm) 0 0 var(--radius-sm);margin-left:0}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent)}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground)}.breadcrumb--arrow .breadcrumb-separator[data-v-d1e90135]{display:none}.file-tree-container[data-v-91337be9]{will-change:transform;contain:layout style}:where(.rte-editor,.rte-reader) h1{display:block;font-size:1.5rem!important;font-weight:700!important;margin:.5em 0 .2em!important;line-height:1.3}:where(.rte-editor,.rte-reader) h2{display:block;font-size:1.2rem!important;font-weight:600!important;margin:.45em 0 .2em!important;line-height:1.35}:where(.rte-editor,.rte-reader) p{display:block;margin:.2em 0!important}:where(.rte-editor,.rte-reader) div{margin:.1em 0}:where(.rte-editor,.rte-reader) blockquote{display:block;border-left:3px solid var(--color-primary);margin:.6em 0!important;padding:.35em 1em!important;color:var(--color-muted-foreground);font-style:italic;background:color-mix(in oklab,var(--color-primary) 6%,transparent);border-radius:0 var(--radius-sm) var(--radius-sm) 0}:where(.rte-editor,.rte-reader) ul{display:block!important;list-style-type:disc!important;list-style-position:inside!important;padding-left:1.6em!important;margin:.35em 0!important}:where(.rte-editor,.rte-reader) ol{display:block!important;list-style-type:decimal!important;list-style-position:inside!important;padding-left:1.6em!important;margin:.35em 0!important}:where(.rte-editor,.rte-reader) li{display:list-item!important;margin:.15em 0!important;padding-left:.15em}:where(.rte-editor,.rte-reader) ul ul,:where(.rte-editor,.rte-reader) ol ul{list-style-type:circle!important}:where(.rte-editor,.rte-reader) ul ul ul,:where(.rte-editor,.rte-reader) ol ol ul{list-style-type:square!important}:where(.rte-editor,.rte-reader) ol ol{list-style-type:lower-alpha!important}:where(.rte-editor,.rte-reader) ol ol ol{list-style-type:lower-roman!important}:where(.rte-editor,.rte-reader) hr{display:block!important;border:0!important;border-top:1px solid var(--color-border)!important;margin:1.5em 0!important}:where(.rte-editor,.rte-reader) a{color:var(--color-info);text-decoration:underline;text-underline-offset:2px;cursor:pointer;transition:color .12s ease}:where(.rte-editor,.rte-reader) a:hover{color:var(--color-info-dark, var(--color-info));text-decoration-thickness:2px}:where(.rte-editor,.rte-reader) code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.85em;background:var(--color-muted);color:var(--color-foreground);padding:.2em .4em;border-radius:var(--radius-sm);border:none}:where(.rte-editor,.rte-reader) img{max-width:100%;height:auto;border-radius:var(--radius-sm);margin:1em 0;display:block;box-shadow:0 0 0 1px var(--color-border);transition:filter .2s,opacity .2s}.rte-editor img.rte-image-uploading{opacity:.6;filter:grayscale(100%) blur(2px);cursor:wait}:where(.rte-editor,.rte-reader) strong,:where(.rte-editor,.rte-reader) b{font-weight:700!important}:where(.rte-editor,.rte-reader) em,:where(.rte-editor,.rte-reader) i{font-style:italic!important}:where(.rte-editor,.rte-reader) u{text-decoration:underline!important;text-decoration-thickness:1.5px;text-underline-offset:2px}:where(.rte-editor,.rte-reader) s,:where(.rte-editor,.rte-reader) strike{text-decoration:line-through!important}.rte-editor ::selection{background:color-mix(in oklab,var(--color-primary) 22%,transparent)}.rte-toolbar{display:flex;flex-wrap:wrap;padding:6px 8px;gap:2px;border-bottom:1px solid var(--color-border);background:var(--color-background);border-radius:calc(var(--radius) - 1px) calc(var(--radius) - 1px) 0 0;align-items:center}.rte-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--color-muted-foreground);cursor:pointer;transition:all .1s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.rte-btn:hover:not(:disabled){background:var(--color-accent);color:var(--color-foreground)}.rte-btn--active{background:var(--color-accent);color:var(--color-foreground)}.rte-btn--text{font-size:.75rem;font-weight:700;width:auto;min-width:28px;padding:0 6px}.rte-icon{width:1.1rem;height:1.1rem;stroke-width:2.5}.rte-btn:disabled{opacity:.38;cursor:not-allowed;pointer-events:none}.rte-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.rte-sep{width:1px;height:18px;background:var(--color-border);margin:0 3px;flex-shrink:0}.rte-link-popover{position:absolute;top:0;left:0;z-index:60;width:300px;max-width:min(300px,calc(100vw - 24px));background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 2px 4px #0000000f,0 8px 24px #0000001a;padding:8px;display:flex;flex-direction:column;gap:6px;will-change:transform,opacity}.rte-link-input-row{display:flex;align-items:center;gap:6px;background:var(--color-muted);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:0 8px;transition:border-color .15s ease,box-shadow .15s ease}.rte-link-input-row:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in oklab,var(--color-primary) 12%,transparent)}.rte-link-icon-prefix{width:.875rem;height:.875rem;color:var(--color-muted-foreground);flex-shrink:0}.rte-link-input{flex:1;background:transparent;border:none;outline:none;font-size:.8rem;color:var(--color-foreground);padding:7px 0;min-width:0;font-family:JetBrains Mono,Fira Code,ui-monospace,monospace}.rte-link-input::placeholder{color:var(--color-muted-foreground);font-family:inherit}.rte-link-actions-row{display:flex;align-items:center;gap:3px}.rte-link-action-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:none;border-radius:var(--radius-sm);background:transparent;font-size:.75rem;font-weight:500;cursor:pointer;color:var(--color-muted-foreground);transition:background .12s ease,color .12s ease}.rte-link-action-btn:hover{background:var(--color-accent);color:var(--color-foreground)}.rte-link-action-btn--danger{color:var(--color-destructive)}.rte-link-action-btn--danger:hover{background:color-mix(in oklab,var(--color-destructive) 10%,transparent);color:var(--color-destructive)}.rte-link-apply-btn{background:var(--color-primary);color:var(--color-primary-foreground);width:24px;height:24px;padding:4px;cursor:pointer}.rte-link-apply-btn:disabled{opacity:.5;cursor:not-allowed}.rte-link-apply-btn:hover:not(:disabled){background:color-mix(in oklab,var(--color-primary) 88%,var(--color-primary-foreground));color:var(--color-primary-foreground)}.rte-root{display:flex;flex-direction:column;gap:6px;width:100%}.rte-label{font-size:.825rem;font-weight:500;color:var(--color-foreground);margin-bottom:2px}.rte-wrapper{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius);position:relative;transition:border-color .15s ease,box-shadow .15s ease;display:flex;flex-direction:column}.rte-root.rte-focused .rte-wrapper{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in oklab,var(--color-primary) 12%,transparent)}.rte-root.rte-disabled .rte-wrapper{background:var(--color-muted);opacity:.6}.rte-root.rte-error .rte-wrapper{border-color:var(--color-destructive)}.rte-root.rte-error.rte-focused .rte-wrapper{box-shadow:0 0 0 2px color-mix(in oklab,var(--color-destructive) 15%,transparent)}.rte-body-wrap{position:relative;overflow:visible}.rte-editor{outline:none;padding:14px 16px;color:var(--color-foreground);font-size:.9rem;line-height:1.7;width:100%;box-sizing:border-box;overflow-y:auto;border-radius:0 0 var(--radius) var(--radius);word-break:break-word;overflow-wrap:break-word;will-change:transform;contain:layout style}.rte-editor[contenteditable=true]{caret-color:var(--color-primary)}.rte-placeholder{position:absolute;top:14px;left:16px;color:var(--color-muted-foreground);font-size:.9rem;pointer-events:none;-webkit-user-select:none;user-select:none;line-height:1.7}.rte-error-msg{font-size:.78rem;color:var(--color-destructive);margin:0;line-height:1.4}.rte-reader[data-v-55b9fd8b]{font-family:inherit;color:var(--color-foreground);font-size:.9rem;line-height:1.7;word-break:break-word;overflow-wrap:break-word;padding:0;margin:0}.sheet-container[data-v-a5e9ca6f]{will-change:transform;contain:layout style}.vl-comment-actions[data-v-446c60ad]{opacity:0;transition:opacity .15s ease}.vl-comment:hover:not(:has(.vl-comment:hover))>div>.vl-comment-header>.vl-comment-actions[data-v-446c60ad]{opacity:1}.vl-comment-actions[data-v-446c60ad]:focus-within{opacity:1}.vl-comment:has(.vl-comment-actions button[aria-label="Confirm delete"]) .vl-comment-actions[data-v-446c60ad]{opacity:1}.accordion-enter-active[data-v-0075dffb],.accordion-leave-active[data-v-0075dffb]{transition:height .3s ease-in-out;will-change:height}.content-wrapper[data-v-0075dffb]{contain:paint}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-left:4px!important}[dir=rtl] .sidebar-menu-tooltip{margin-right:4px!important}.drill-forward-enter-active,.drill-forward-leave-active{transition:all .28s cubic-bezier(.4,0,.2,1)}.drill-forward-enter-from{opacity:0;transform:translate(40%)}.drill-forward-enter-to,.drill-forward-leave-from{opacity:1;transform:translate(0)}.drill-forward-leave-to{opacity:0;transform:translate(-40%)}.drill-forward-leave-active{position:absolute;top:0;left:0;right:0}.drill-backward-enter-active,.drill-backward-leave-active{transition:all .28s cubic-bezier(.4,0,.2,1)}.drill-backward-enter-from{opacity:0;transform:translate(-40%)}.drill-backward-enter-to,.drill-backward-leave-from{opacity:1;transform:translate(0)}.drill-backward-leave-to{opacity:0;transform:translate(40%)}.drill-backward-leave-active{position:absolute;top:0;left:0;right:0}.sidebar-drilldown-container{min-height:0}.bg-stripe[data-v-454a1505]{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.animate-progress-stripe[data-v-454a1505]{animation:progress-stripe-454a1505 1s linear infinite}@keyframes progress-stripe-454a1505{0%{background-position:1rem 0}to{background-position:0 0}}.animate-progress-indeterminate[data-v-454a1505]{animation:progress-indeterminate-454a1505 1.5s infinite cubic-bezier(.65,.815,.735,.395)}@keyframes progress-indeterminate-454a1505{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(0) scaleX(.5)}to{transform:translate(100%) scaleX(.2)}}.permission-matrix-wrapper[data-v-ba68e64a]{max-height:70vh;will-change:transform;contain:layout style}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.permission-list-wrapper[data-v-a42b2fb0]{border:1px solid var(--color-border);border-radius:.5rem;overflow:hidden;background-color:var(--color-background);will-change:transform;contain:layout style}.custom-list-header[data-v-a42b2fb0]{background-color:var(--color-muted);border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]{border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);background-color:var(--color-background)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]:hover{background-color:var(--color-accent)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]:last-child{border-bottom:none}.custom-list-group-content+.custom-list-header[data-v-a42b2fb0],.custom-list-header+.custom-list-header[data-v-a42b2fb0]{border-top:1px solid var(--color-border)}.permission-list-wrapper>.custom-list-header[data-v-a42b2fb0]:last-child{border-bottom:none}.permission-matrix-wrapper[data-v-0b1ab970]{border:1px solid var(--color-border);background-color:var(--color-gray-100);border-radius:.5rem;overflow:auto;max-height:65vh;position:relative;will-change:transform;contain:layout style}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.custom-table[data-v-0b1ab970]{width:100%;border-collapse:collapse}.custom-sticky-header th[data-v-0b1ab970]{position:sticky;top:0;z-index:20;box-shadow:0 1px 0 var(--color-border)}.custom-th[data-v-0b1ab970]{background-color:var(--color-gray-150);color:var(--color-foreground);background-clip:padding-box;border-bottom:none;border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);text-align:left;font-weight:600;min-width:200px}thead:not(.custom-sticky-header) .custom-th[data-v-0b1ab970]{border-bottom:1px solid var(--color-border)}.custom-th.text-center[data-v-0b1ab970]{text-align:center;min-width:100px}.custom-th[data-v-0b1ab970]:first-child{border-left:none}.custom-td[data-v-0b1ab970]{border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-td.text-center[data-v-0b1ab970]{text-align:center}.custom-td[data-v-0b1ab970]:first-child{border-left:none}.custom-group-row td[data-v-0b1ab970]{background-color:var(--color-gray-100);border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.custom-entity-row[data-v-0b1ab970]{background-color:var(--color-background);transition:background-color .1s ease}.custom-entity-row[data-v-0b1ab970]:hover{background-color:var(--color-gray-50)}.custom-entity-row:last-child td[data-v-0b1ab970]{border-bottom:none}.custom-active-cell[data-v-0b1ab970]{cursor:pointer}.custom-active-cell[data-v-0b1ab970]:hover{background-color:var(--color-accent)}.attached-group[data-v-298c3d8a] button{position:relative}.attached-group[data-v-298c3d8a] button:focus-visible,.attached-group[data-v-298c3d8a] button:hover{z-index:10}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:not(:first-child){margin-inline-start:-1px}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:first-child{border-start-end-radius:0!important;border-end-end-radius:0!important}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0!important}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:last-child{border-start-start-radius:0!important;border-end-start-radius:0!important}.vertical-group[data-v-298c3d8a] button:not(:first-child){margin-block-start:-1px}.vertical-group[data-v-298c3d8a] button:first-child{border-end-start-radius:0!important;border-end-end-radius:0!important}.vertical-group[data-v-298c3d8a] button:not(:first-child):not(:last-child){border-radius:0!important}.vertical-group[data-v-298c3d8a] button:last-child{border-start-start-radius:0!important;border-start-end-radius:0!important}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:not(:first-child):not(.border):before{content:"";position:absolute;inset-inline-start:0;top:0;bottom:0;width:1px;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none;height:100%}.vertical-group[data-v-298c3d8a] button:not(:first-child):not(.border):before{content:"";position:absolute;top:0;left:0;right:0;height:1px;width:100%;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none}[data-v-63e46f6b] .calendar-view{--calendar-primary-color: var(--color-primary);--calendar-bg-color: transparent !important;--calendar-border-color: var(--color-border);--calendar-text-color: var(--color-foreground);--calendar-hover-color: var(--color-accent)}[data-v-63e46f6b] .v-event-calendar .add-event-icon,[data-v-63e46f6b] .v-event-calendar .add-event-icon svg{color:var(--color-primary-fg)!important}.vlite-line-chart[data-v-07c9fb47]{position:relative}.vlite-scc-grid[data-v-e6172e07]{display:flex;width:100%}.vlite-scc-card[data-v-e6172e07]{flex:1;position:relative;display:flex;align-items:stretch}.vlite-scc-separator[data-v-e6172e07]{width:1px;align-self:stretch;background:var(--color-border, #e4e4e7);opacity:.3;margin:8px 0;flex-shrink:0;background-image:repeating-linear-gradient(to bottom,var(--color-border, #e4e4e7) 0px,var(--color-border, #e4e4e7) 4px,transparent 4px,transparent 8px);background-color:transparent}.vlite-scc-content[data-v-e6172e07]{display:flex;flex-direction:column;align-items:flex-start;padding:16px 20px;flex:1;min-height:200px}.vlite-scc-label[data-v-e6172e07]{font-size:13px;font-weight:500;color:var(--color-muted-foreground, #71717a);margin:0 0 6px}.vlite-scc-pct[data-v-e6172e07]{font-size:36px;font-weight:800;color:var(--color-foreground, #09090b);margin:0;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.vlite-scc-spacer[data-v-e6172e07]{flex:1}.vlite-scc-indicator[data-v-e6172e07]{border-radius:10px;margin-bottom:14px;transition:width .6s ease,height .6s ease}.vlite-scc-footer[data-v-e6172e07]{display:flex;align-items:center;gap:8px}.vlite-scc-value[data-v-e6172e07]{font-size:14px;font-weight:600;color:var(--color-foreground, #09090b);font-variant-numeric:tabular-nums}.vlite-scc-trend-icon[data-v-e6172e07]{width:14px;height:14px}.vlite-scc-trend-up[data-v-e6172e07]{color:var(--color-success, #22c55e);transform:rotate(25deg)}.vlite-scc-trend-down[data-v-e6172e07]{color:var(--color-danger, #ef4444);transform:rotate(-25deg)}.is-solid[data-v-33afc5cb] path,.is-solid[data-v-33afc5cb] polygon,.is-solid[data-v-33afc5cb] circle,.is-solid[data-v-33afc5cb] rect{fill:currentColor!important}.toast-item[data-v-9c775c23]{will-change:transform,opacity;contain:layout style}.first-toast-enter-active[data-v-9c775c23]{animation:first-toast-in-9c775c23 .45s cubic-bezier(.23,1,.32,1) forwards}.first-toast-leave-active[data-v-9c775c23]{transition:all .25s ease-in}.first-toast-leave-to[data-v-9c775c23]{opacity:0;transform:scale(.98)}@keyframes first-toast-in-9c775c23{0%{opacity:var(--entrance-opacity, .6);transform:translateY(var(--entrance-offset, 25px)) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.stack-toast-enter-active[data-v-9c775c23],.stack-toast-leave-active[data-v-9c775c23]{transition:all .3s cubic-bezier(.16,1,.3,1)}.stack-toast-enter-from[data-v-9c775c23]{opacity:0;transform:scale(.95) translateY(10px)}.stack-toast-leave-to[data-v-9c775c23]{opacity:0;transform:scale(.95)}.stack-toast-move[data-v-9c775c23]{transition:transform .4s cubic-bezier(.16,1,.3,1)}.cp-item-transition[data-v-66b1ae06]{transition:background-color 80ms ease,color 80ms ease}.command-palette-content[data-v-aa0dbb48] ::-webkit-scrollbar{width:4px}.command-palette-content[data-v-aa0dbb48] ::-webkit-scrollbar-track{background:transparent}.command-palette-content[data-v-aa0dbb48] ::-webkit-scrollbar-thumb{background:var(--border);border-radius:9999px}.cp-scroll-container[data-v-aa0dbb48]{transform:translateZ(0);will-change:transform;touch-action:pan-y;backface-visibility:hidden}
1630
1636
 
@@ -82,6 +82,8 @@ export interface VLiteConfig {
82
82
  };
83
83
  price?: {
84
84
  currency?: string;
85
+ numberFormat?: 'standard' | 'compact';
86
+ compactThreshold?: number;
85
87
  };
86
88
  datetime?: {
87
89
  format?: string;
@@ -37,6 +37,10 @@ export interface ListField {
37
37
  addStatusColor?: boolean;
38
38
  /** A built-in type for automatic rendering */
39
39
  type?: ListFieldType;
40
+ /** Defines how number types should be formatted */
41
+ numberFormat?: 'standard' | 'compact';
42
+ /** The value from which numbers will be compacted */
43
+ compactThreshold?: number;
40
44
  /** Static class or dynamic class function for the value cell */
41
45
  class?: string | ((value: any, data: any) => string);
42
46
  /** Render a Vue component instead of a value; receives { data, value } props */
@@ -62,6 +62,13 @@ export declare const randomNumber: (min: number, max: number) => number;
62
62
  * truncate('Short', 100) // 'Short'
63
63
  */
64
64
  export declare const truncate: (text: string, length: number, ellipsis?: string) => string;
65
+ export interface FormatNumberOptions {
66
+ locale?: string;
67
+ numberFormat?: 'standard' | 'compact';
68
+ currency?: string;
69
+ compactThreshold?: number;
70
+ }
71
+ export declare function formatNumber(amount: number | string, options?: FormatNumberOptions): string;
65
72
  /**
66
73
  * Formats a numeric amount as a locale-aware currency string
67
74
  * using the `Intl.NumberFormat` API.
@@ -71,18 +78,10 @@ export declare const truncate: (text: string, length: number, ellipsis?: string)
71
78
  * if no global config value is set.
72
79
  *
73
80
  * @param amount The numeric value to format
74
- * @param locale A BCP 47 locale string (default: `'en-US'`)
75
- * @param currency An ISO 4217 currency code. Defaults to the globally configured
76
- * currency from `createVLite({ components: { price: { currency: '...' } } })`,
77
- * or `'USD'` if not configured.
81
+ * @param options Object containing locale, currency, and format overrides
78
82
  * @returns The formatted currency string
79
- *
80
- * @example
81
- * formatCurrency(1234.5) // uses global currency, e.g. 'Rs1,234.50' if PKR is set
82
- * formatCurrency(1234.5, 'de-DE', 'EUR') // '1.234,50 E'
83
- * formatCurrency(0) // '$0.00' (when no global config)
84
83
  */
85
- export declare const formatCurrency: (amount: number, locale?: string, currency?: string) => string;
84
+ export declare const formatCurrency: (amount: number | string, options?: FormatNumberOptions) => string;
86
85
  /**
87
86
  * Returns a Promise that resolves after the specified number of milliseconds.
88
87
  * Useful for artificial delays, polling intervals, or animation timing.
@@ -1,6 +1,6 @@
1
1
  import { configState as m } from "../core/config.js";
2
- import i from "dayjs";
3
- const w = (t, e) => {
2
+ import c from "dayjs";
3
+ const A = (t, e) => {
4
4
  let r;
5
5
  return (...n) => {
6
6
  clearTimeout(r), r = setTimeout(() => {
@@ -8,34 +8,34 @@ const w = (t, e) => {
8
8
  }, e);
9
9
  };
10
10
  };
11
- function A() {
11
+ function Y() {
12
12
  const t = Math.floor(Date.now() / 1e3).toString(16).padStart(8, "0"), e = Array.from(crypto.getRandomValues(new Uint8Array(5))).map((n) => n.toString(16).padStart(2, "0")).join(""), r = Math.floor(Math.random() * 16777215).toString(16).padStart(6, "0");
13
13
  return t + e + r;
14
14
  }
15
- const Y = () => {
15
+ const I = () => {
16
16
  const t = /Mac|MacIntel|MacPPC/.test(navigator.platform) && !/iPad|iPhone|iPod/.test(navigator.platform), e = /iPhone/.test(navigator.platform) || /iPhone/.test(navigator.userAgent), r = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
17
17
  return t || e || r;
18
- }, I = async (t = "", e = "file") => {
18
+ }, $ = async (t = "", e = "file") => {
19
19
  try {
20
- const r = e || "file", n = t?.includes(".application/") ? `${r}.${t?.split("/").pop()}` : `${r}.${t?.split(".").pop()}`, s = await (await fetch(t)).blob(), a = window.URL.createObjectURL(s), c = document.createElement("a");
21
- c.href = a, c.setAttribute("download", n), document.body.appendChild(c), c.click(), document.body.removeChild(c), window.URL.revokeObjectURL(a);
20
+ const r = e || "file", n = t?.includes(".application/") ? `${r}.${t?.split("/").pop()}` : `${r}.${t?.split(".").pop()}`, s = await (await fetch(t)).blob(), a = window.URL.createObjectURL(s), i = document.createElement("a");
21
+ i.href = a, i.setAttribute("download", n), document.body.appendChild(i), i.click(), document.body.removeChild(i), window.URL.revokeObjectURL(a);
22
22
  } catch (r) {
23
23
  console.error("Download error:", r);
24
24
  }
25
- }, b = (t) => t == null || t === "" || typeof t == "number" && t === 0 || Array.isArray(t) && t.length === 0 ? !0 : typeof t == "object" && !Array.isArray(t) ? Object.keys(t).length === 0 || Object.values(t).every(b) : !1;
25
+ }, g = (t) => t == null || t === "" || typeof t == "number" && t === 0 || Array.isArray(t) && t.length === 0 ? !0 : typeof t == "object" && !Array.isArray(t) ? Object.keys(t).length === 0 || Object.values(t).every(g) : !1;
26
26
  function p(t, e) {
27
27
  return !t || typeof t != "object" ? t : Array.isArray(t) ? t.map((r) => p(r, e)) : Object.entries(t).reduce(
28
28
  (r, [n, o]) => (e.includes(n) || (r[n] = p(o, e)), r),
29
29
  {}
30
30
  );
31
31
  }
32
- function y(t) {
33
- return t.reduce((e, r) => Array.isArray(r) ? e.concat(y(r)) : r && typeof r == "object" ? e.concat(
34
- Object?.values(r)?.flatMap?.((n) => typeof n == "object" ? y([n]) : [n])
32
+ function h(t) {
33
+ return t.reduce((e, r) => Array.isArray(r) ? e.concat(h(r)) : r && typeof r == "object" ? e.concat(
34
+ Object?.values(r)?.flatMap?.((n) => typeof n == "object" ? h([n]) : [n])
35
35
  ) : e.concat(r), []);
36
36
  }
37
- const $ = (t) => typeof t == "string" ? t?.replace(/(^\w|[.!?]\s+\w)/g, (e) => e.toUpperCase()) : t, D = (t) => !t || typeof t != "string" ? "" : t[0].toLowerCase() + t.slice(1);
38
- function N(t, e) {
37
+ const F = (t) => typeof t == "string" ? t?.replace(/(^\w|[.!?]\s+\w)/g, (e) => e.toUpperCase()) : t, N = (t) => !t || typeof t != "string" ? "" : t[0].toLowerCase() + t.slice(1);
38
+ function D(t, e) {
39
39
  let r = null, n = null, o = null;
40
40
  const s = () => {
41
41
  n && o ? (t.apply(o, n), n = null, o = null, r = setTimeout(s, e)) : r = null;
@@ -58,14 +58,28 @@ const P = (t) => typeof t != "string" ? "" : t.normalize("NFD").replace(/[\u0300
58
58
  if (n <= 0) return r.slice(0, e);
59
59
  const o = t.slice(0, n), s = o.lastIndexOf(" ");
60
60
  return (s > 0 ? o.slice(0, s) : o) + r;
61
- }, E = (t, e = "en-US", r) => {
62
- if (console.log("amount", t), !Number.isFinite(t)) return "";
63
- const n = r || m?.components?.price?.currency || "USD";
64
- return console.log("resolvedCurrency", n), new Intl.NumberFormat(e, {
65
- style: "currency",
66
- currency: n
67
- }).format(t);
68
- }, j = (t) => !Number.isFinite(t) || t < 0 ? Promise.reject(new RangeError("Delay must be a non-negative finite number")) : new Promise((e) => setTimeout(e, t)), F = async (t) => {
61
+ };
62
+ function S(t, e = {}) {
63
+ const r = Number(t);
64
+ if (!Number.isFinite(r)) return "";
65
+ const n = e.locale || "en-US";
66
+ let o = e.numberFormat || "standard";
67
+ const s = e.compactThreshold ?? 1e3;
68
+ o === "compact" && Math.abs(r) < s && (o = "standard");
69
+ const a = {};
70
+ return e.currency && (a.style = "currency", a.currency = e.currency), o === "compact" && (a.notation = "compact", a.compactDisplay = "short"), new Intl.NumberFormat(n, a).format(r);
71
+ }
72
+ const E = (t, e = {}) => {
73
+ const r = Number(t);
74
+ if (!Number.isFinite(r)) return "";
75
+ const n = e.currency || m?.components?.price?.currency || "USD", o = e.numberFormat || m?.components?.price?.numberFormat || "standard", s = e.compactThreshold ?? m?.components?.price?.compactThreshold ?? 1e3;
76
+ return S(r, {
77
+ locale: e.locale,
78
+ currency: n,
79
+ numberFormat: o,
80
+ compactThreshold: s
81
+ });
82
+ }, j = (t) => !Number.isFinite(t) || t < 0 ? Promise.reject(new RangeError("Delay must be a non-negative finite number")) : new Promise((e) => setTimeout(e, t)), v = async (t) => {
69
83
  if (typeof t != "string") return !1;
70
84
  if (navigator?.clipboard?.writeText)
71
85
  try {
@@ -80,7 +94,7 @@ const P = (t) => typeof t != "string" ? "" : t.normalize("NFD").replace(/[\u0300
80
94
  } catch {
81
95
  return !1;
82
96
  }
83
- }, v = (t = "month", e, r = i()) => {
97
+ }, T = (t = "month", e, r = c()) => {
84
98
  let n = r, o, s = r;
85
99
  switch (["week", "month", "3-months", "6-months", "year"].includes(t) && r.date() <= 7 && (s = r.subtract(1, "month")), t) {
86
100
  case "last-week":
@@ -106,42 +120,42 @@ const P = (t) => typeof t != "string" ? "" : t.normalize("NFD").replace(/[\u0300
106
120
  break;
107
121
  }
108
122
  if (e) {
109
- const a = i(e);
123
+ const a = c(e);
110
124
  n.isAfter(a) && (n = a), o.isAfter(a) && (o = a.startOf("day"));
111
125
  }
112
126
  return {
113
127
  startDate: o.format("YYYY-MM-DD"),
114
128
  endDate: n.format("YYYY-MM-DD")
115
129
  };
116
- }, S = (t) => {
130
+ }, O = (t) => {
117
131
  if (!t) return "";
118
132
  const [e, r] = t.split(":");
119
133
  if (!e || !r) return t;
120
- const n = i().hour(Number(e)).minute(Number(r));
134
+ const n = c().hour(Number(e)).minute(Number(r));
121
135
  return n.isValid() ? n.format("hh:mm A") : t;
122
136
  }, R = (t, e, r) => {
123
- const n = m?.components?.datetime?.format || "MMM DD, YYYY", o = t ? i(t).format(n) : "";
137
+ const n = m?.components?.datetime?.format || "MMM DD, YYYY", o = t ? c(t).format(n) : "";
124
138
  let s = e;
125
139
  if (e) {
126
- const [c, d] = e.split(":");
127
- if (c && d) {
128
- const l = i().hour(Number(c)).minute(Number(d));
140
+ const [i, d] = e.split(":");
141
+ if (i && d) {
142
+ const l = c().hour(Number(i)).minute(Number(d));
129
143
  l.isValid() && (s = l.format("hh:mm"));
130
144
  }
131
145
  }
132
146
  let a = r;
133
- return r && (a = S(r)), !e && !r ? o : o ? `${o} • ${s} - ${a}` : `${s} - ${a}`;
134
- }, U = (t) => i(t || void 0).toISOString(), V = (t) => i(t || void 0).format("YYYY-MM-DDTHH:mm:ss.SSSZ"), L = () => i().toISOString(), x = () => i().subtract(1, "day").toISOString(), T = () => i().add(1, "day").toISOString(), z = (t = 7) => i().add(t, "day").toISOString(), H = () => i().add(1, "month").toISOString(), B = () => i().subtract(1, "month").toISOString(), G = () => i().toISOString(), X = () => i().add(1, "year").toISOString(), _ = () => i().subtract(1, "year").toISOString(), h = /^([01]?\d|2[0-3]):([0-5]\d)(:([0-5]\d))?$/, g = /^(0?[1-9]|1[0-2]):([0-5]\d)(:([0-5]\d))?\s*(AM|PM|am|pm)$/, f = (t) => {
147
+ return r && (a = O(r)), !e && !r ? o : o ? `${o} • ${s} - ${a}` : `${s} - ${a}`;
148
+ }, U = (t) => c(t || void 0).toISOString(), V = (t) => c(t || void 0).format("YYYY-MM-DDTHH:mm:ss.SSSZ"), L = () => c().toISOString(), x = () => c().subtract(1, "day").toISOString(), z = () => c().add(1, "day").toISOString(), H = (t = 7) => c().add(t, "day").toISOString(), B = () => c().add(1, "month").toISOString(), G = () => c().subtract(1, "month").toISOString(), X = () => c().toISOString(), _ = () => c().add(1, "year").toISOString(), q = () => c().subtract(1, "year").toISOString(), y = /^([01]?\d|2[0-3]):([0-5]\d)(:([0-5]\d))?$/, b = /^(0?[1-9]|1[0-2]):([0-5]\d)(:([0-5]\d))?\s*(AM|PM|am|pm)$/, f = (t) => {
135
149
  const e = t.trim();
136
- return h.test(e) || g.test(e);
137
- }, q = (t, e, r) => {
150
+ return y.test(e) || b.test(e);
151
+ }, Z = (t, e, r) => {
138
152
  if (t == null || t === "") return "--";
139
153
  const n = m?.components?.datetime?.format || "MM/DD/YYYY";
140
154
  if (typeof t == "string" && f(t)) {
141
155
  const a = u(t);
142
156
  if (a.isValid()) {
143
- const c = e || "hh:mm A";
144
- return a.format(c);
157
+ const i = e || "hh:mm A";
158
+ return a.format(i);
145
159
  }
146
160
  }
147
161
  let o = e;
@@ -151,21 +165,21 @@ const P = (t) => typeof t != "string" ? "" : t.normalize("NFD").replace(/[\u0300
151
165
  }, u = (t) => {
152
166
  if (typeof t == "string") {
153
167
  const e = t.trim();
154
- if (h.test(e)) {
168
+ if (y.test(e)) {
155
169
  const n = e.split(":"), o = n[0].padStart(2, "0"), s = n[1], a = n[2] || "00";
156
- return i(`1970-01-01T${o}:${s}:${a}`);
170
+ return c(`1970-01-01T${o}:${s}:${a}`);
157
171
  }
158
- const r = e.match(g);
172
+ const r = e.match(b);
159
173
  if (r) {
160
174
  let n = parseInt(r[1], 10);
161
175
  const o = r[2], s = r[4] || "00", a = r[5].toUpperCase();
162
176
  n === 12 && a === "AM" ? n = 0 : n < 12 && a === "PM" && (n += 12);
163
- const c = n.toString().padStart(2, "0");
164
- return i(`1970-01-01T${c}:${o}:${s}`);
177
+ const i = n.toString().padStart(2, "0");
178
+ return c(`1970-01-01T${i}:${o}:${s}`);
165
179
  }
166
180
  }
167
- return i(t || void 0);
168
- }, Z = (t, e, r) => {
181
+ return c(t || void 0);
182
+ }, J = (t, e, r) => {
169
183
  if (t == null || t === "" || e === null || e === void 0 || e === "")
170
184
  return !0;
171
185
  let n = r !== void 0 ? r : !0;
@@ -174,37 +188,38 @@ const P = (t) => typeof t != "string" ? "" : t.normalize("NFD").replace(/[\u0300
174
188
  return !o.isValid() || !s.isValid() ? !1 : n && s.isSame(o) || s.isAfter(o);
175
189
  };
176
190
  export {
177
- D as camelCase,
178
- $ as capitalize,
179
- F as copyToClipboard,
180
- w as debounce,
191
+ N as camelCase,
192
+ F as capitalize,
193
+ v as copyToClipboard,
194
+ A as debounce,
181
195
  j as delay,
182
- I as downloadFile,
183
- y as flattenArray,
184
- S as formatAmPm,
196
+ $ as downloadFile,
197
+ h as flattenArray,
198
+ O as formatAmPm,
185
199
  E as formatCurrency,
186
- q as formatDate,
200
+ Z as formatDate,
201
+ S as formatNumber,
187
202
  R as formatSchedule,
188
- v as getDefaultDateRange,
189
- H as getNextMonth,
190
- X as getNextYear,
191
- B as getPrevMonth,
192
- _ as getPrevYear,
203
+ T as getDefaultDateRange,
204
+ B as getNextMonth,
205
+ _ as getNextYear,
206
+ G as getPrevMonth,
207
+ q as getPrevYear,
193
208
  L as getToday,
194
- T as getTomorrow,
195
- A as getUniqueId,
196
- z as getUpcoming,
197
- G as getYear,
209
+ z as getTomorrow,
210
+ Y as getUniqueId,
211
+ H as getUpcoming,
212
+ X as getYear,
198
213
  x as getYesterday,
199
- Y as isAppleDevice,
200
- b as isEmpty,
214
+ I as isAppleDevice,
215
+ g as isEmpty,
201
216
  f as isPureTimeString,
202
- Z as isValidTimeRange,
217
+ J as isValidTimeRange,
203
218
  u as parseDateTime,
204
219
  k as randomNumber,
205
220
  p as removeExtraProperties,
206
221
  P as slugify,
207
- N as throttle,
222
+ D as throttle,
208
223
  U as toISO,
209
224
  V as toLocalISO,
210
225
  C as truncate
package/utils/status.js CHANGED
@@ -1,9 +1,9 @@
1
- import { STATUS_MAP as d } from "../components/StatusChip/status-map.js";
2
- const r = {
3
- success: "text-success-dark font-medium",
4
- info: "text-info-dark font-medium",
5
- warning: "text-warning-dark font-medium",
6
- danger: "text-danger-dark font-medium",
1
+ import { STATUS_MAP as f } from "../components/StatusChip/status-map.js";
2
+ const u = {
3
+ success: "text-success-subtle-fg font-medium",
4
+ info: "text-info-subtle-fg font-medium",
5
+ warning: "text-warning-subtle-fg font-medium",
6
+ danger: "text-danger-subtle-fg font-medium",
7
7
  secondary: "text-muted-foreground",
8
8
  teal: "text-teal-subtle-fg font-medium",
9
9
  indigo: "text-indigo-subtle-fg font-medium",
@@ -12,22 +12,22 @@ const r = {
12
12
  orange: "text-orange-subtle-fg font-medium",
13
13
  pink: "text-pink-subtle-fg font-medium"
14
14
  }, o = {
15
- high: "text-danger-dark font-medium",
16
- medium: "text-warning-dark font-medium",
15
+ high: "text-danger-subtle-fg font-medium",
16
+ medium: "text-warning-subtle-fg font-medium",
17
17
  low: "text-muted-foreground",
18
- yes: "text-success-dark font-medium",
19
- no: "text-danger-dark font-medium",
20
- true: "text-success-dark font-medium",
21
- false: "text-danger-dark font-medium"
18
+ yes: "text-success-subtle-fg font-medium",
19
+ no: "text-danger-subtle-fg font-medium",
20
+ true: "text-success-subtle-fg font-medium",
21
+ false: "text-danger-subtle-fg font-medium"
22
22
  };
23
- function m(e) {
23
+ function i(e) {
24
24
  if (e == null) return "";
25
25
  const n = String(e).toLowerCase().replace(/[-_\s]/g, "");
26
26
  if (o[n])
27
27
  return o[n];
28
- const t = d[n]?.variant;
29
- return t && typeof t == "string" && r[t] ? r[t] : "";
28
+ const t = f[n]?.variant;
29
+ return t && typeof t == "string" && u[t] ? u[t] : "";
30
30
  }
31
31
  export {
32
- m as getStatusColorClass
32
+ i as getStatusColorClass
33
33
  };