@velkymx/vibeui 0.9.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/AGENTS.md +44 -0
  2. package/CLAUDE.md +48 -0
  3. package/README.md +222 -197
  4. package/dist/App.vue.d.ts +2 -1
  5. package/dist/components/HelloWorld.vue.d.ts +2 -1
  6. package/dist/components/VibeAccordion.vue.d.ts +39 -40
  7. package/dist/components/VibeAlert.vue.d.ts +21 -37
  8. package/dist/components/VibeAutocomplete.vue.d.ts +59 -31
  9. package/dist/components/VibeBadge.vue.d.ts +10 -18
  10. package/dist/components/VibeBreadcrumb.vue.d.ts +25 -21
  11. package/dist/components/VibeButton.vue.d.ts +13 -17
  12. package/dist/components/VibeButtonGroup.vue.d.ts +11 -19
  13. package/dist/components/VibeCard.vue.d.ts +51 -24
  14. package/dist/components/VibeCarousel.vue.d.ts +27 -49
  15. package/dist/components/VibeChartBar.vue.d.ts +61 -0
  16. package/dist/components/VibeChartLine.vue.d.ts +70 -0
  17. package/dist/components/VibeChartPie.vue.d.ts +34 -0
  18. package/dist/components/VibeCloseButton.vue.d.ts +9 -7
  19. package/dist/components/VibeCol.vue.d.ts +9 -17
  20. package/dist/components/VibeCollapse.vue.d.ts +24 -32
  21. package/dist/components/VibeContainer.vue.d.ts +9 -17
  22. package/dist/components/VibeDataTable.vue.d.ts +122 -63
  23. package/dist/components/VibeDatePicker.vue.d.ts +4 -6
  24. package/dist/components/VibeDraggable.vue.d.ts +9 -13
  25. package/dist/components/VibeDropdown.vue.d.ts +46 -43
  26. package/dist/components/VibeDroppable.vue.d.ts +9 -13
  27. package/dist/components/VibeFileInput.vue.d.ts +14 -20
  28. package/dist/components/VibeFormCheckbox.vue.d.ts +30 -22
  29. package/dist/components/VibeFormDatepicker.vue.d.ts +27 -30
  30. package/dist/components/VibeFormErrorSummary.vue.d.ts +17 -0
  31. package/dist/components/VibeFormGroup.vue.d.ts +10 -13
  32. package/dist/components/VibeFormInput.vue.d.ts +60 -25
  33. package/dist/components/VibeFormRadio.vue.d.ts +23 -24
  34. package/dist/components/VibeFormSelect.vue.d.ts +28 -34
  35. package/dist/components/VibeFormSpinbutton.vue.d.ts +31 -34
  36. package/dist/components/VibeFormSwitch.vue.d.ts +22 -23
  37. package/dist/components/VibeFormTextarea.vue.d.ts +24 -25
  38. package/dist/components/VibeFormWysiwyg.vue.d.ts +23 -22
  39. package/dist/components/VibeHero.vue.d.ts +117 -0
  40. package/dist/components/VibeIcon.vue.d.ts +27 -7
  41. package/dist/components/VibeInputGroup.vue.d.ts +12 -14
  42. package/dist/components/VibeLink.vue.d.ts +14 -18
  43. package/dist/components/VibeListGroup.vue.d.ts +26 -22
  44. package/dist/components/VibeModal.vue.d.ts +47 -45
  45. package/dist/components/VibeNav.vue.d.ts +40 -20
  46. package/dist/components/VibeNavbar.vue.d.ts +12 -19
  47. package/dist/components/VibeNavbarBrand.vue.d.ts +9 -17
  48. package/dist/components/VibeNavbarNav.vue.d.ts +52 -33
  49. package/dist/components/VibeNavbarToggle.vue.d.ts +7 -5
  50. package/dist/components/VibeOffcanvas.vue.d.ts +28 -43
  51. package/dist/components/VibePagination.vue.d.ts +38 -29
  52. package/dist/components/VibePlaceholder.vue.d.ts +9 -17
  53. package/dist/components/VibePopover.vue.d.ts +17 -40
  54. package/dist/components/VibeProgress.vue.d.ts +13 -21
  55. package/dist/components/VibeResizable.vue.d.ts +10 -14
  56. package/dist/components/VibeRow.vue.d.ts +9 -17
  57. package/dist/components/VibeScrollspy.vue.d.ts +37 -25
  58. package/dist/components/VibeSkeleton.vue.d.ts +2 -1
  59. package/dist/components/VibeSlider.vue.d.ts +4 -5
  60. package/dist/components/VibeSortable.vue.d.ts +37 -18
  61. package/dist/components/VibeSpinner.vue.d.ts +4 -7
  62. package/dist/components/VibeStepper.vue.d.ts +32 -31
  63. package/dist/components/VibeTab.vue.d.ts +7 -11
  64. package/dist/components/VibeTabContent.vue.d.ts +13 -31
  65. package/dist/components/VibeTabs.vue.d.ts +9 -13
  66. package/dist/components/VibeToast.vue.d.ts +31 -44
  67. package/dist/components/VibeToastHost.vue.d.ts +2 -1
  68. package/dist/components/VibeTooltip.vue.d.ts +16 -39
  69. package/dist/components/chart/chartColors.d.ts +3 -0
  70. package/dist/components/chart/chartResize.d.ts +2 -0
  71. package/dist/components/chart/chartTooltip.d.ts +2 -0
  72. package/dist/components/chart/chartTypes.d.ts +6 -0
  73. package/dist/components/chart/drawBar.d.ts +5 -0
  74. package/dist/components/chart/drawLine.d.ts +18 -0
  75. package/dist/components/chart/drawPie.d.ts +4 -0
  76. package/dist/components/dndStore.d.ts +1 -0
  77. package/dist/components/index.d.ts +6 -1
  78. package/dist/composables/useBreakpoints.d.ts +1 -0
  79. package/dist/composables/useColorMode.d.ts +1 -1
  80. package/dist/composables/useId.d.ts +1 -4
  81. package/dist/directives/vTooltip.d.ts +2 -3
  82. package/dist/injectionKeys.d.ts +34 -0
  83. package/dist/purify.es-eYghtX9j.mjs +735 -0
  84. package/dist/types.d.ts +23 -2
  85. package/dist/utils/routeKey.d.ts +11 -0
  86. package/dist/utils/safeCss.d.ts +16 -0
  87. package/dist/utils/safeHref.d.ts +7 -0
  88. package/dist/utils/sanitizeHtml.d.ts +13 -0
  89. package/dist/vibeui.css +2 -1
  90. package/dist/vibeui.es.js +8527 -5855
  91. package/dist/vibeui.umd.js +3 -1
  92. package/docs/README.md +225 -0
  93. package/docs/components/advanced/popover.md +125 -0
  94. package/docs/components/advanced/scrollspy.md +106 -0
  95. package/docs/components/advanced/tooltip.md +90 -0
  96. package/docs/components/card/card.md +223 -0
  97. package/docs/components/charts/chart-bar.md +129 -0
  98. package/docs/components/charts/chart-line.md +136 -0
  99. package/docs/components/charts/chart-pie.md +102 -0
  100. package/docs/components/core/alert.md +94 -0
  101. package/docs/components/core/badge.md +75 -0
  102. package/docs/components/core/button-group.md +99 -0
  103. package/docs/components/core/button.md +145 -0
  104. package/docs/components/core/close-button.md +82 -0
  105. package/docs/components/core/link.md +79 -0
  106. package/docs/components/core/placeholder.md +129 -0
  107. package/docs/components/core/skeleton.md +40 -0
  108. package/docs/components/core/spinner.md +103 -0
  109. package/docs/components/data/datatable.md +437 -0
  110. package/docs/components/hero/hero.md +65 -0
  111. package/docs/components/interactive/accordion.md +121 -0
  112. package/docs/components/interactive/carousel.md +112 -0
  113. package/docs/components/interactive/collapse.md +106 -0
  114. package/docs/components/interactive/date-picker.md +78 -0
  115. package/docs/components/interactive/draggable.md +91 -0
  116. package/docs/components/interactive/dropdown.md +129 -0
  117. package/docs/components/interactive/modal.md +151 -0
  118. package/docs/components/interactive/offcanvas.md +92 -0
  119. package/docs/components/interactive/resizable.md +73 -0
  120. package/docs/components/interactive/slider.md +57 -0
  121. package/docs/components/interactive/sortable.md +52 -0
  122. package/docs/components/interactive/stepper.md +83 -0
  123. package/docs/components/interactive/tabs.md +66 -0
  124. package/docs/components/interactive/toast.md +177 -0
  125. package/docs/components/layout/col.md +117 -0
  126. package/docs/components/layout/container.md +53 -0
  127. package/docs/components/layout/row.md +107 -0
  128. package/docs/components/list/list-group.md +225 -0
  129. package/docs/components/navigation/breadcrumb.md +120 -0
  130. package/docs/components/navigation/nav.md +151 -0
  131. package/docs/components/navigation/navbar.md +114 -0
  132. package/docs/components/navigation/pagination.md +163 -0
  133. package/docs/components/progress/progress.md +188 -0
  134. package/docs/composables/back-button.md +28 -0
  135. package/docs/composables/breakpoints.md +54 -0
  136. package/docs/composables/color-mode.md +179 -0
  137. package/docs/composables/use-form.md +78 -0
  138. package/docs/composables/use-position.md +68 -0
  139. package/docs/composables/use-toast.md +91 -0
  140. package/docs/directives/v-tooltip.md +58 -0
  141. package/docs/forms/README.md +87 -0
  142. package/docs/forms/autocomplete.md +96 -0
  143. package/docs/forms/file-input.md +97 -0
  144. package/docs/forms/form-checkbox.md +100 -0
  145. package/docs/forms/form-datepicker.md +80 -0
  146. package/docs/forms/form-error-summary.md +96 -0
  147. package/docs/forms/form-group.md +118 -0
  148. package/docs/forms/form-input.md +140 -0
  149. package/docs/forms/form-radio.md +82 -0
  150. package/docs/forms/form-select.md +98 -0
  151. package/docs/forms/form-spinbutton.md +94 -0
  152. package/docs/forms/form-switch.md +75 -0
  153. package/docs/forms/form-textarea.md +82 -0
  154. package/docs/forms/form-wysiwyg.md +99 -0
  155. package/docs/forms/input-group.md +70 -0
  156. package/docs/forms/validation.md +213 -0
  157. package/docs/getting-started/starter-template.md +136 -0
  158. package/docs/superpowers/plans/2026-05-12-vibe-charts.md +1999 -0
  159. package/docs/superpowers/plans/2026-05-29-e2e-browser-testing.md +615 -0
  160. package/docs/superpowers/specs/2026-05-12-charting-design.md +185 -0
  161. package/docs/superpowers/specs/2026-05-29-e2e-browser-testing-design.md +168 -0
  162. package/docs/utilities/position.md +82 -0
  163. package/docs/versioning.md +57 -0
  164. package/examples/README.md +201 -0
  165. package/examples/album.html +262 -0
  166. package/examples/blog.html +166 -0
  167. package/examples/carousel.html +114 -0
  168. package/examples/checkout.html +275 -0
  169. package/examples/cover.html +89 -0
  170. package/examples/dashboard.html +156 -0
  171. package/examples/index.html +129 -0
  172. package/examples/jumbotron.html +56 -0
  173. package/examples/mobile-dashboard.html +138 -0
  174. package/examples/pricing.html +172 -0
  175. package/examples/product.html +145 -0
  176. package/examples/sidebars.html +166 -0
  177. package/examples/sign-in.html +119 -0
  178. package/examples/starter.html +314 -0
  179. package/examples/sticky-footer-navbar.html +70 -0
  180. package/examples/sticky-footer.html +60 -0
  181. package/examples/test-simple.html +91 -0
  182. package/llms.txt +801 -0
  183. package/package.json +44 -14
  184. package/dist/types/index.d.ts +0 -6
package/dist/types.d.ts CHANGED
@@ -1,9 +1,15 @@
1
+ /** Payload emitted by the `component-error` event on all Bootstrap-backed components. */
2
+ export interface ComponentError {
3
+ message: string;
4
+ componentName: string;
5
+ originalError: unknown;
6
+ }
1
7
  export type ColorMode = 'light' | 'dark' | 'auto';
2
8
  export type Variant = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark';
3
9
  export type ButtonVariant = Variant | 'link';
4
10
  export type Size = 'sm' | 'lg';
5
11
  export type ButtonType = 'button' | 'submit' | 'reset';
6
- export type Placement = 'top' | 'bottom' | 'start' | 'end';
12
+ export type TooltipPlacement = 'top' | 'bottom' | 'start' | 'end';
7
13
  export type Tag = 'div' | 'span' | 'section' | 'article' | 'nav' | 'aside' | 'header' | 'footer' | 'main';
8
14
  export type Direction = 'up' | 'down' | 'start' | 'end';
9
15
  export type SpinnerType = 'border' | 'grow';
@@ -49,6 +55,8 @@ export interface NavItem {
49
55
  text: string;
50
56
  href?: string;
51
57
  to?: string | object;
58
+ /** Tab panel ID (e.g. '#panel-id') for tabs/pills mode when using router-link */
59
+ target?: string;
52
60
  active?: boolean;
53
61
  disabled?: boolean;
54
62
  children?: DropdownItem[];
@@ -107,8 +115,11 @@ export interface TabPane {
107
115
  disabled?: boolean;
108
116
  }
109
117
  export type InputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' | 'date' | 'time' | 'datetime-local' | 'month' | 'week' | 'color';
118
+ export type AutocompleteType = 'off' | 'on' | 'name' | 'honorific-prefix' | 'given-name' | 'additional-name' | 'family-name' | 'honorific-suffix' | 'nickname' | 'username' | 'email' | 'new-password' | 'current-password' | 'one-time-code' | 'organization-title' | 'organization' | 'street-address' | 'address-line1' | 'address-line2' | 'address-line3' | 'address-level4' | 'address-level3' | 'address-level2' | 'address-level1' | 'country' | 'country-name' | 'postal-code' | 'cc-name' | 'cc-given-name' | 'cc-additional-name' | 'cc-family-name' | 'cc-number' | 'cc-exp' | 'cc-exp-month' | 'cc-exp-year' | 'cc-csc' | 'cc-type' | 'transaction-currency' | 'transaction-amount' | 'language' | 'bday' | 'bday-day' | 'bday-month' | 'bday-year' | 'sex' | 'tel' | 'tel-country-code' | 'tel-national' | 'tel-area-code' | 'tel-local' | 'tel-extension' | 'impp' | 'url' | 'photo';
119
+ export type InputMode = 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
110
120
  export type ValidationState = 'valid' | 'invalid' | null;
111
- export type ValidatorFunction = (value: any) => boolean | string | Promise<boolean | string>;
121
+ /** Return true for valid, false for invalid (uses rule.message), or a non-empty string as the error message (also invalid). */
122
+ export type ValidatorFunction = (value: unknown) => boolean | string | Promise<boolean | string>;
112
123
  export interface ValidationRule {
113
124
  validator: ValidatorFunction;
114
125
  message?: string;
@@ -123,3 +134,13 @@ export interface FormSelectOption {
123
134
  text: string;
124
135
  disabled?: boolean;
125
136
  }
137
+ export interface ChartDataset {
138
+ label: string;
139
+ data: number[];
140
+ color?: string;
141
+ }
142
+ export interface ChartData {
143
+ labels: string[];
144
+ datasets: ChartDataset[];
145
+ }
146
+ export type ChartLegendPosition = 'top' | 'bottom' | 'none';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Produces a stable, unique string key from a vue-router `to` value.
3
+ *
4
+ * `String(obj)` → '[object Object]' for every distinct route object,
5
+ * causing Vue to assign identical :key values and silently corrupt DOM
6
+ * patching when consumers pass named-route objects.
7
+ *
8
+ * JSON.stringify preserves object identity while remaining deterministic
9
+ * for the same route shape, giving Vue a unique patch key.
10
+ */
11
+ export declare function routeKey(to: string | object | undefined): string;
@@ -0,0 +1,16 @@
1
+ export declare const SAFE_COLUMN_STYLE_PROPS: Set<string>;
2
+ /**
3
+ * Validate a CSS length/size prop (width, height, fontSize, etc.).
4
+ * Returns the value unchanged if safe, undefined otherwise.
5
+ */
6
+ export declare function safeLength(value: string | undefined): string | undefined;
7
+ /**
8
+ * Validate a CSS color prop.
9
+ * Returns the value unchanged if it matches a known-safe color form, undefined otherwise.
10
+ */
11
+ export declare function safeColor(value: string | undefined): string | undefined;
12
+ /**
13
+ * Filter a consumer-supplied CSS style object to an allowlist of known-safe property names.
14
+ * Use for thStyle / tdStyle column config in VibeDataTable.
15
+ */
16
+ export declare function safeCssObject(obj: Record<string, string> | undefined): Record<string, string>;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Sanitize an href prop value against javascript: / data: / vbscript: injection.
3
+ *
4
+ * Returns the original value unchanged if it matches a safe pattern, or
5
+ * undefined otherwise so the attribute is omitted from the DOM entirely.
6
+ */
7
+ export declare function safeHref(href: string | undefined): string | undefined;
@@ -0,0 +1,13 @@
1
+ export declare const WYSIWYG_PURIFY_CONFIG: {
2
+ ALLOWED_TAGS: string[];
3
+ ALLOWED_ATTR: string[];
4
+ };
5
+ export declare function loadDOMPurify(): Promise<void>;
6
+ /**
7
+ * Sanitize an HTML string if DOMPurify is available.
8
+ * Falls back to the original string if DOMPurify is not installed — the caller
9
+ * (Quill's clipboard converter) applies its own Delta-based sanitization regardless.
10
+ */
11
+ export declare function sanitizeHtml(html: string): string;
12
+ /** Reset state — for use in tests only. */
13
+ export declare function _resetSanitizer(): void;
package/dist/vibeui.css CHANGED
@@ -1 +1,2 @@
1
- .vibe-skeleton[data-v-37d19d6e]{display:block;background-color:var(--bs-secondary-bg, #e9ecef);border-radius:.25rem;position:relative;overflow:hidden}.vibe-skeleton-text[data-v-37d19d6e]{height:.875rem;margin-bottom:.5rem;width:100%}.vibe-skeleton-text[data-v-37d19d6e]:last-child{margin-bottom:0}.vibe-skeleton-rect[data-v-37d19d6e]{width:100%;height:1rem}.vibe-skeleton-circle[data-v-37d19d6e]{border-radius:50%;width:2.5rem;height:2.5rem}.vibe-skeleton-card[data-v-37d19d6e]{display:flex;flex-direction:column;gap:.5rem}.vibe-skeleton-animated[data-v-37d19d6e]:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.45) 50%,transparent 100%);transform:translate(-100%);animation:vibe-skeleton-shimmer-37d19d6e 1.4s infinite}@keyframes vibe-skeleton-shimmer-37d19d6e{to{transform:translate(100%)}}@media(prefers-color-scheme:dark){.vibe-skeleton[data-v-37d19d6e]{background-color:var(--bs-secondary-bg, #2b3035)}.vibe-skeleton-animated[data-v-37d19d6e]:after{background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.08) 50%,transparent 100%)}}@media(prefers-reduced-motion:reduce){.vibe-skeleton-animated[data-v-37d19d6e]:after{animation:none}}.navbar.fixed-top[data-v-8228b170],.navbar.sticky-top[data-v-8228b170]{padding-top:env(safe-area-inset-top,0)}.navbar.fixed-bottom[data-v-8228b170]{padding-bottom:env(safe-area-inset-bottom,0)}.modal.show .modal-dialog.modal-fullscreen[data-v-c11ac690],.modal.show .modal-dialog.modal-fullscreen .modal-content[data-v-c11ac690]{height:100dvh}.modal-header[data-v-c11ac690]{padding-top:calc(1rem + env(safe-area-inset-top,0))}.modal-footer[data-v-c11ac690]{padding-bottom:calc(.75rem + env(safe-area-inset-bottom,0))}.offcanvas.offcanvas-start[data-v-f03bd194],.offcanvas.offcanvas-end[data-v-f03bd194]{height:100dvh}.offcanvas.offcanvas-top[data-v-f03bd194],.offcanvas.offcanvas-bottom[data-v-f03bd194]{max-height:100dvh}.offcanvas-header[data-v-f03bd194]{padding-top:calc(1rem + env(safe-area-inset-top,0))}.offcanvas-body[data-v-f03bd194]{padding-bottom:calc(1rem + env(safe-area-inset-bottom,0))}.vibe-datatable[data-v-3d846265]{width:100%}.datatable-info[data-v-3d846265]{padding:.5rem 0;color:var(--bs-secondary-color)}@media(max-width:767.98px){.vibe-table-stack[data-v-3d846265],.vibe-table-stack tbody[data-v-3d846265],.vibe-table-stack tr[data-v-3d846265],.vibe-table-stack td[data-v-3d846265]{display:block;width:100%}.vibe-table-stack thead[data-v-3d846265]{display:none}.vibe-table-stack tr[data-v-3d846265]{margin-bottom:1rem;border:1px solid var(--bs-border-color);border-radius:.375rem;background-color:var(--bs-body-bg)}.vibe-table-stack td[data-v-3d846265]{text-align:right;padding:.5rem 1rem;position:relative;padding-left:50%;border-top:none;border-bottom:1px solid var(--bs-border-color)}.vibe-table-stack td[data-v-3d846265]:last-child{border-bottom:none}.vibe-table-stack td[data-v-3d846265]:before{content:attr(data-label);position:absolute;left:1rem;width:45%;text-align:left;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.input-group-vertical[data-v-49746a62]{flex-direction:column}.input-group-vertical[data-v-49746a62]>*{width:100%}.vibe-file-input-dropzone[data-v-258bd632]{border:2px dashed var(--bs-border-color, #ced4da);border-radius:.375rem;padding:1.5rem;text-align:center;cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.vibe-file-input-dropzone-active[data-v-258bd632]{border-color:var(--bs-primary, #0d6efd);background-color:var(--bs-primary-bg-subtle, rgba(13, 110, 253, .05))}.vibe-file-input-dropzone-disabled[data-v-258bd632]{cursor:not-allowed;opacity:.65}.vibe-slider[data-v-5b520fda]{--vibe-slider-track-height: 6px;--vibe-slider-handle-size: 18px;position:relative;width:100%;padding:calc(var(--vibe-slider-handle-size) / 2) 0;-webkit-user-select:none;user-select:none}.vibe-slider-vertical[data-v-5b520fda]{width:var(--vibe-slider-handle-size);height:200px;padding:0 calc(var(--vibe-slider-handle-size) / 2)}.vibe-slider-track[data-v-5b520fda]{position:relative;width:100%;height:var(--vibe-slider-track-height);background-color:var(--bs-secondary-bg, #e9ecef);border-radius:calc(var(--vibe-slider-track-height) / 2)}.vibe-slider-vertical .vibe-slider-track[data-v-5b520fda]{width:var(--vibe-slider-track-height);height:100%}.vibe-slider-fill[data-v-5b520fda]{position:absolute;inset:0;background-color:var(--bs-primary, #0d6efd);border-radius:inherit}.vibe-slider-handle[data-v-5b520fda]{position:absolute;width:var(--vibe-slider-handle-size);height:var(--vibe-slider-handle-size);background-color:#fff;border:2px solid var(--bs-primary, #0d6efd);border-radius:50%;top:50%;transform:translate(-50%,-50%);cursor:grab;touch-action:none}.vibe-slider-vertical .vibe-slider-handle[data-v-5b520fda]{top:auto;left:50%;transform:translate(-50%,50%)}.vibe-slider-handle[data-v-5b520fda]:focus-visible{outline:2px solid var(--bs-primary, #0d6efd);outline-offset:2px}.vibe-slider-handle[data-v-5b520fda]:active{cursor:grabbing}.vibe-slider-disabled[data-v-5b520fda]{opacity:.55;pointer-events:none}.vibe-stepper-header[data-v-c693b42b]{display:flex;list-style:none;padding:0;margin:0 0 1.5rem;gap:0}.vibe-stepper-vertical .vibe-stepper-header[data-v-c693b42b]{flex-direction:column;gap:.5rem}.vibe-stepper-step[data-v-c693b42b]{display:flex;align-items:center;gap:.5rem;flex:1;cursor:pointer;padding:.5rem .75rem;position:relative;color:var(--bs-secondary-color, #6c757d)}.vibe-stepper-step[data-v-c693b42b]:not(:last-child):after{content:"";flex:1;height:1px;background-color:var(--bs-border-color, #dee2e6);margin-left:.75rem}.vibe-stepper-vertical .vibe-stepper-step[data-v-c693b42b]:not(:last-child):after{display:none}.vibe-stepper-marker[data-v-c693b42b]{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:50%;background-color:var(--bs-secondary-bg, #e9ecef);font-weight:600;flex-shrink:0}.vibe-stepper-active .vibe-stepper-marker[data-v-c693b42b]{background-color:var(--bs-primary, #0d6efd);color:#fff}.vibe-stepper-completed .vibe-stepper-marker[data-v-c693b42b]{background-color:var(--bs-success, #198754);color:#fff}.vibe-stepper-active[data-v-c693b42b]{color:var(--bs-body-color, inherit);font-weight:600}.vibe-stepper-locked[data-v-c693b42b],.vibe-stepper-disabled[data-v-c693b42b]{cursor:not-allowed;opacity:.6}.vibe-stepper-label[data-v-c693b42b]{display:flex;flex-direction:column}.vibe-stepper-description[data-v-c693b42b]{font-size:.85em;color:var(--bs-secondary-color, #6c757d);font-weight:400}.vibe-stepper-body[data-v-c693b42b]{margin-bottom:1.5rem}.vibe-stepper-actions[data-v-c693b42b]{display:flex;justify-content:space-between;gap:.5rem}.vibe-autocomplete[data-v-ccd7df7d]{position:relative}.vibe-autocomplete-menu[data-v-ccd7df7d]{position:absolute;top:100%;left:0;right:0;z-index:1050;list-style:none;margin:0;padding:.25rem 0;background-color:var(--bs-body-bg, white);border:1px solid var(--bs-border-color, #dee2e6);border-radius:.375rem;box-shadow:0 .5rem 1rem #00000026;max-height:240px;overflow-y:auto}.vibe-autocomplete-item[data-v-ccd7df7d]{padding:.375rem .75rem;cursor:pointer}.vibe-autocomplete-item-highlighted[data-v-ccd7df7d]{background-color:var(--bs-primary-bg-subtle, #cfe2ff)}.vibe-autocomplete-empty[data-v-ccd7df7d]{padding:.5rem .75rem;color:var(--bs-secondary-color, #6c757d);font-style:italic}.vibe-sortable-item[data-v-651679ac]{cursor:grab}.vibe-sortable-item.vibe-sortable-dragging[data-v-651679ac]{opacity:.4;cursor:grabbing}.vibe-draggable[data-v-633735d3]{cursor:grab}.vibe-draggable-dragging[data-v-633735d3]{opacity:.5;cursor:grabbing}.vibe-draggable-disabled[data-v-633735d3]{cursor:not-allowed}.vibe-droppable-over[data-v-b75c06d6]{outline:2px dashed var(--bs-primary, #0d6efd);outline-offset:-2px}.vibe-droppable-disabled[data-v-b75c06d6]{opacity:.6}.vibe-resizable[data-v-cf1014a7]{position:relative;display:inline-block;box-sizing:border-box}.vibe-resizable-handle[data-v-cf1014a7]{position:absolute;background-color:transparent;z-index:10}.vibe-resizable-active[data-v-cf1014a7]{-webkit-user-select:none;user-select:none}.vibe-resizable-disabled .vibe-resizable-handle[data-v-cf1014a7]{pointer-events:none}.vibe-resizable-handle-n[data-v-cf1014a7],.vibe-resizable-handle-s[data-v-cf1014a7]{left:0;right:0;height:6px;cursor:ns-resize}.vibe-resizable-handle-n[data-v-cf1014a7]{top:-3px}.vibe-resizable-handle-s[data-v-cf1014a7]{bottom:-3px}.vibe-resizable-handle-e[data-v-cf1014a7],.vibe-resizable-handle-w[data-v-cf1014a7]{top:0;bottom:0;width:6px;cursor:ew-resize}.vibe-resizable-handle-e[data-v-cf1014a7]{right:-3px}.vibe-resizable-handle-w[data-v-cf1014a7]{left:-3px}.vibe-resizable-handle-ne[data-v-cf1014a7],.vibe-resizable-handle-nw[data-v-cf1014a7],.vibe-resizable-handle-se[data-v-cf1014a7],.vibe-resizable-handle-sw[data-v-cf1014a7]{width:12px;height:12px;z-index:11}.vibe-resizable-handle-ne[data-v-cf1014a7]{top:-6px;right:-6px;cursor:nesw-resize}.vibe-resizable-handle-nw[data-v-cf1014a7]{top:-6px;left:-6px;cursor:nwse-resize}.vibe-resizable-handle-se[data-v-cf1014a7]{bottom:-6px;right:-6px;cursor:nwse-resize}.vibe-resizable-handle-sw[data-v-cf1014a7]{bottom:-6px;left:-6px;cursor:nesw-resize}.vibe-datepicker[data-v-d18ee62c]{position:relative;display:inline-block;width:100%}.vibe-datepicker-popover[data-v-d18ee62c]{position:absolute;top:100%;left:0;z-index:1050;margin-top:.25rem;padding:.75rem;background-color:var(--bs-body-bg, white);border:1px solid var(--bs-border-color, #dee2e6);border-radius:.375rem;box-shadow:0 .5rem 1rem #00000026;min-width:280px}.vibe-datepicker-header[data-v-d18ee62c]{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.vibe-datepicker-nav[data-v-d18ee62c]{background:none;border:0;font-size:1.25rem;cursor:pointer;padding:.25rem .5rem}.vibe-datepicker-title[data-v-d18ee62c]{font-weight:600}.vibe-datepicker-weekdays[data-v-d18ee62c],.vibe-datepicker-grid[data-v-d18ee62c]{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.vibe-datepicker-weekday[data-v-d18ee62c]{text-align:center;font-size:.75rem;color:var(--bs-secondary-color, #6c757d);padding:.25rem 0}.vibe-datepicker-day[data-v-d18ee62c]{background:none;border:0;border-radius:.25rem;padding:.4rem 0;cursor:pointer;font-size:.875rem}.vibe-datepicker-day[data-v-d18ee62c]:hover:not(:disabled){background-color:var(--bs-secondary-bg, #e9ecef)}.vibe-datepicker-day-outside[data-v-d18ee62c]{opacity:.4}.vibe-datepicker-day-disabled[data-v-d18ee62c]{opacity:.3;cursor:not-allowed}.vibe-datepicker-day-today[data-v-d18ee62c]{font-weight:700;text-decoration:underline}.vibe-datepicker-day-selected[data-v-d18ee62c],.vibe-datepicker-day-range-start[data-v-d18ee62c],.vibe-datepicker-day-range-end[data-v-d18ee62c]{background-color:var(--bs-primary, #0d6efd);color:#fff}.vibe-datepicker-day-in-range[data-v-d18ee62c]{background-color:var(--bs-primary-bg-subtle, #cfe2ff)}.vibe-wysiwyg-container[data-v-10ea0dd0]{border:1px solid var(--bs-border-color);border-radius:.375rem}.vibe-wysiwyg-container.is-valid[data-v-10ea0dd0]{border-color:var(--bs-success)}.vibe-wysiwyg-container.is-invalid[data-v-10ea0dd0]{border-color:var(--bs-danger)}.vibe-wysiwyg-container.disabled[data-v-10ea0dd0]{background-color:var(--bs-secondary-bg);opacity:.6;cursor:not-allowed}.vibe-wysiwyg-container[data-v-10ea0dd0] .ql-container{border:none;font-size:1rem}.vibe-wysiwyg-container[data-v-10ea0dd0] .ql-toolbar{border:none;border-bottom:1px solid var(--bs-border-color);border-top-left-radius:.375rem;border-top-right-radius:.375rem}.vibe-wysiwyg-container[data-v-10ea0dd0] .ql-editor{min-height:150px}
1
+ .btn[data-v-17d9412e]:disabled,.btn.disabled[data-v-17d9412e]{color:var(--bs-body-color)!important;background-color:var(--bs-tertiary-bg)!important;border-color:var(--bs-border-color)!important;opacity:1!important}.vibe-skeleton[data-v-c0c2699d]{background-color:var(--bs-secondary-bg,#e9ecef);border-radius:.25rem;display:block;position:relative;overflow:hidden}.vibe-skeleton-text[data-v-c0c2699d]{width:100%;height:.875rem;margin-bottom:.5rem}.vibe-skeleton-text[data-v-c0c2699d]:last-child{margin-bottom:0}.vibe-skeleton-rect[data-v-c0c2699d]{width:100%;height:1rem}.vibe-skeleton-circle[data-v-c0c2699d]{border-radius:50%;width:2.5rem;height:2.5rem}.vibe-skeleton-card[data-v-c0c2699d]{flex-direction:column;gap:.5rem;display:flex}.vibe-skeleton-animated[data-v-c0c2699d]:after{content:"";background:linear-gradient(90deg,#0000 0%,#ffffff73 50%,#0000 100%);animation:1.4s infinite vibe-skeleton-shimmer-c0c2699d;position:absolute;inset:0;transform:translate(-100%)}@keyframes vibe-skeleton-shimmer-c0c2699d{to{transform:translate(100%)}}@media (prefers-color-scheme:dark){.vibe-skeleton[data-v-c0c2699d]{background-color:var(--bs-secondary-bg,#2b3035)}.vibe-skeleton-animated[data-v-c0c2699d]:after{background:linear-gradient(90deg,#0000 0%,#ffffff14 50%,#0000 100%)}}@media (prefers-reduced-motion:reduce){.vibe-skeleton-animated[data-v-c0c2699d]:after{animation:none}}.navbar.fixed-top[data-v-c3e6fe24],.navbar.sticky-top[data-v-c3e6fe24]{padding-top:env(safe-area-inset-top,0)}.navbar.fixed-bottom[data-v-c3e6fe24]{padding-bottom:env(safe-area-inset-bottom,0)}.modal.show .modal-dialog.modal-fullscreen[data-v-37f40a50],.modal.show .modal-dialog.modal-fullscreen .modal-content[data-v-37f40a50]{height:100dvh}.modal-header[data-v-37f40a50]{padding-top:calc(1rem + env(safe-area-inset-top,0))}.modal-footer[data-v-37f40a50]{padding-bottom:calc(.75rem + env(safe-area-inset-bottom,0))}.offcanvas.offcanvas-start[data-v-417d55a1],.offcanvas.offcanvas-end[data-v-417d55a1]{height:100dvh}.offcanvas.offcanvas-top[data-v-417d55a1],.offcanvas.offcanvas-bottom[data-v-417d55a1]{max-height:100dvh}.offcanvas-header[data-v-417d55a1]{padding-top:calc(1rem + env(safe-area-inset-top,0))}.offcanvas-body[data-v-417d55a1]{padding-bottom:calc(1rem + env(safe-area-inset-bottom,0))}.vibe-chart[data-v-d995a6f3]{width:100%}.vibe-chart-legend[data-v-d995a6f3]{flex-wrap:wrap;gap:.5rem;padding:.25rem 0;display:flex}.vibe-chart-legend--top[data-v-d995a6f3]{margin-bottom:.25rem}.vibe-chart-legend--bottom[data-v-d995a6f3]{margin-top:.25rem}.vibe-chart-legend-item[data-v-d995a6f3]{align-items:center;gap:.25rem;font-size:.875rem;display:flex}.vibe-chart-legend-swatch[data-v-d995a6f3]{border-radius:2px;flex-shrink:0;width:12px;height:12px;display:inline-block}.vibe-chart[data-v-eb3ff4df]{width:100%}.vibe-chart-legend[data-v-eb3ff4df]{flex-wrap:wrap;gap:.5rem;padding:.25rem 0;display:flex}.vibe-chart-legend--top[data-v-eb3ff4df]{margin-bottom:.25rem}.vibe-chart-legend--bottom[data-v-eb3ff4df]{margin-top:.25rem}.vibe-chart-legend-item[data-v-eb3ff4df]{align-items:center;gap:.25rem;font-size:.875rem;display:flex}.vibe-chart-legend-swatch[data-v-eb3ff4df]{border-radius:2px;flex-shrink:0;width:12px;height:12px;display:inline-block}.vibe-chart[data-v-bab16cba]{width:100%}.vibe-chart-legend[data-v-bab16cba]{flex-wrap:wrap;gap:.5rem;padding:.25rem 0;display:flex}.vibe-chart-legend--top[data-v-bab16cba]{margin-bottom:.25rem}.vibe-chart-legend--bottom[data-v-bab16cba]{margin-top:.25rem}.vibe-chart-legend-item[data-v-bab16cba]{align-items:center;gap:.25rem;font-size:.875rem;display:flex}.vibe-chart-legend-swatch[data-v-bab16cba]{border-radius:2px;flex-shrink:0;width:12px;height:12px;display:inline-block}.vibe-datatable[data-v-fd417a3a]{width:100%}.vibe-sort-icon[data-v-fd417a3a]{opacity:.4;width:.75em;display:inline-block;position:relative}.vibe-sort-icon[data-v-fd417a3a]:before{content:"↕"}.vibe-sort-icon.sort-asc[data-v-fd417a3a]:before{content:"↑";opacity:1}.vibe-sort-icon.sort-desc[data-v-fd417a3a]:before{content:"↓";opacity:1}.datatable-info[data-v-fd417a3a]{color:var(--bs-secondary-color);padding:.5rem 0}@media (width<=767.98px){.vibe-table-stack[data-v-fd417a3a],.vibe-table-stack tbody[data-v-fd417a3a],.vibe-table-stack tr[data-v-fd417a3a],.vibe-table-stack td[data-v-fd417a3a]{width:100%;display:block}.vibe-table-stack thead[data-v-fd417a3a]{display:none}.vibe-table-stack tr[data-v-fd417a3a]{border:1px solid var(--bs-border-color);background-color:var(--bs-body-bg);border-radius:.375rem;margin-bottom:1rem}.vibe-table-stack td[data-v-fd417a3a]{text-align:right;border-top:none;border-bottom:1px solid var(--bs-border-color);padding:.5rem 1rem .5rem 50%;position:relative}.vibe-table-stack td[data-v-fd417a3a]:last-child{border-bottom:none}.vibe-table-stack td[data-v-fd417a3a]:before{content:attr(data-label);text-align:left;white-space:nowrap;text-overflow:ellipsis;width:45%;font-weight:700;position:absolute;left:1rem;overflow:hidden}}input[data-v-d9ebcf8c]::placeholder{color:var(--bs-secondary-color)!important;opacity:1!important}.input-group-vertical[data-v-9dd7f0b5]{flex-direction:column}.input-group-vertical[data-v-9dd7f0b5]>*{width:100%}.vibe-file-input-dropzone[data-v-d6447a0f]{border:2px dashed var(--bs-border-color,#ced4da);text-align:center;cursor:pointer;border-radius:.375rem;padding:1.5rem;transition:border-color .15s,background-color .15s}.vibe-file-input-dropzone-active[data-v-d6447a0f]{border-color:var(--bs-primary,#0d6efd);background-color:var(--bs-primary-bg-subtle,#0d6efd0d)}.vibe-file-input-dropzone-disabled[data-v-d6447a0f]{cursor:not-allowed;opacity:.65}.vibe-slider[data-v-58d4508c]{--vibe-slider-track-height:6px;--vibe-slider-handle-size:18px;width:100%;padding:calc(var(--vibe-slider-handle-size) / 2) 0;-webkit-user-select:none;user-select:none;position:relative}.vibe-slider-vertical[data-v-58d4508c]{width:var(--vibe-slider-handle-size);height:200px;padding:0 calc(var(--vibe-slider-handle-size) / 2)}.vibe-slider-track[data-v-58d4508c]{width:100%;height:var(--vibe-slider-track-height);background-color:var(--bs-secondary-bg,#e9ecef);border-radius:calc(var(--vibe-slider-track-height) / 2);position:relative}.vibe-slider-vertical .vibe-slider-track[data-v-58d4508c]{width:var(--vibe-slider-track-height);height:100%}.vibe-slider-fill[data-v-58d4508c]{background-color:var(--bs-primary,#0d6efd);border-radius:inherit;position:absolute;inset:0}.vibe-slider-handle[data-v-58d4508c]{width:var(--vibe-slider-handle-size);height:var(--vibe-slider-handle-size);border:2px solid var(--bs-primary,#0d6efd);cursor:grab;touch-action:none;background-color:#fff;border-radius:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.vibe-slider-vertical .vibe-slider-handle[data-v-58d4508c]{top:auto;left:50%;transform:translate(-50%,50%)}.vibe-slider-handle[data-v-58d4508c]:focus-visible{outline:2px solid var(--bs-primary,#0d6efd);outline-offset:2px}.vibe-slider-handle[data-v-58d4508c]:active{cursor:grabbing}.vibe-slider-disabled[data-v-58d4508c]{opacity:.55;pointer-events:none}.vibe-stepper-header[data-v-d9646674]{gap:0;margin:0 0 1.5rem;padding:0;list-style:none;display:flex}.vibe-stepper-vertical .vibe-stepper-header[data-v-d9646674]{flex-direction:column;gap:.5rem}.vibe-stepper-step[data-v-d9646674]{cursor:pointer;color:var(--bs-secondary-color,#6c757d);flex:1;align-items:center;gap:.5rem;padding:.5rem .75rem;display:flex;position:relative}.vibe-stepper-step[data-v-d9646674]:not(:last-child):after{content:"";background-color:var(--bs-border-color,#dee2e6);flex:1;height:1px;margin-left:.75rem}.vibe-stepper-vertical .vibe-stepper-step[data-v-d9646674]:not(:last-child):after{display:none}.vibe-stepper-marker[data-v-d9646674]{background-color:var(--bs-secondary-bg,#e9ecef);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;font-weight:600;display:inline-flex}.vibe-stepper-active .vibe-stepper-marker[data-v-d9646674]{background-color:var(--bs-primary,#0d6efd);color:#fff}.vibe-stepper-completed .vibe-stepper-marker[data-v-d9646674]{background-color:var(--bs-success,#198754);color:#fff}.vibe-stepper-active[data-v-d9646674]{color:var(--bs-body-color,inherit);font-weight:600}.vibe-stepper-locked[data-v-d9646674],.vibe-stepper-disabled[data-v-d9646674]{cursor:not-allowed;opacity:.6}.vibe-stepper-label[data-v-d9646674]{flex-direction:column;display:flex}.vibe-stepper-description[data-v-d9646674]{color:var(--bs-secondary-color,#6c757d);font-size:.85em;font-weight:400}.vibe-stepper-body[data-v-d9646674]{margin-bottom:1.5rem}.vibe-stepper-actions[data-v-d9646674]{justify-content:space-between;gap:.5rem;display:flex}.vibe-autocomplete[data-v-34f733e3]{position:relative}.vibe-autocomplete-menu[data-v-34f733e3]{z-index:1050;background-color:var(--bs-body-bg,white);border:1px solid var(--bs-border-color,#dee2e6);border-radius:.375rem;max-height:240px;margin:0;padding:.25rem 0;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 .5rem 1rem #00000026}.vibe-autocomplete-item[data-v-34f733e3]{cursor:pointer;padding:.375rem .75rem}.vibe-autocomplete-item-highlighted[data-v-34f733e3]{background-color:var(--bs-primary-bg-subtle,#cfe2ff)}.vibe-autocomplete-empty[data-v-34f733e3]{color:var(--bs-secondary-color,#6c757d);padding:.5rem .75rem;font-style:italic}.vibe-sortable-item[data-v-0d48df5a]{cursor:grab}.vibe-sortable-item.vibe-sortable-dragging[data-v-0d48df5a]{opacity:.4;cursor:grabbing}.vibe-draggable[data-v-39b73254]{cursor:grab}.vibe-draggable-dragging[data-v-39b73254]{opacity:.5;cursor:grabbing}.vibe-draggable-disabled[data-v-39b73254]{cursor:not-allowed}.vibe-droppable-over[data-v-cb4f90ac]{outline:2px dashed var(--bs-primary,#0d6efd);outline-offset:-2px}.vibe-droppable-disabled[data-v-cb4f90ac]{opacity:.6}.vibe-resizable[data-v-6582c06b]{box-sizing:border-box;display:inline-block;position:relative}.vibe-resizable-handle[data-v-6582c06b]{z-index:10;background-color:#0000;position:absolute}.vibe-resizable-active[data-v-6582c06b]{-webkit-user-select:none;user-select:none}.vibe-resizable-disabled .vibe-resizable-handle[data-v-6582c06b]{pointer-events:none}.vibe-resizable-handle-n[data-v-6582c06b],.vibe-resizable-handle-s[data-v-6582c06b]{cursor:ns-resize;height:6px;left:0;right:0}.vibe-resizable-handle-n[data-v-6582c06b]{top:-3px}.vibe-resizable-handle-s[data-v-6582c06b]{bottom:-3px}.vibe-resizable-handle-e[data-v-6582c06b],.vibe-resizable-handle-w[data-v-6582c06b]{cursor:ew-resize;width:6px;top:0;bottom:0}.vibe-resizable-handle-e[data-v-6582c06b]{right:-3px}.vibe-resizable-handle-w[data-v-6582c06b]{left:-3px}.vibe-resizable-handle-ne[data-v-6582c06b],.vibe-resizable-handle-nw[data-v-6582c06b],.vibe-resizable-handle-se[data-v-6582c06b],.vibe-resizable-handle-sw[data-v-6582c06b]{z-index:11;width:12px;height:12px}.vibe-resizable-handle-ne[data-v-6582c06b]{cursor:nesw-resize;top:-6px;right:-6px}.vibe-resizable-handle-nw[data-v-6582c06b]{cursor:nwse-resize;top:-6px;left:-6px}.vibe-resizable-handle-se[data-v-6582c06b]{cursor:nwse-resize;bottom:-6px;right:-6px}.vibe-resizable-handle-sw[data-v-6582c06b]{cursor:nesw-resize;bottom:-6px;left:-6px}.vibe-datepicker[data-v-0a5b8fa4]{width:100%;display:inline-block;position:relative}.vibe-datepicker-popover[data-v-0a5b8fa4]{z-index:1050;background-color:var(--bs-body-bg,white);border:1px solid var(--bs-border-color,#dee2e6);border-radius:.375rem;min-width:280px;margin-top:.25rem;padding:.75rem;position:absolute;top:100%;left:0;box-shadow:0 .5rem 1rem #00000026}.vibe-datepicker-header[data-v-0a5b8fa4]{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.vibe-datepicker-nav[data-v-0a5b8fa4]{cursor:pointer;background:0 0;border:0;padding:.25rem .5rem;font-size:1.25rem}.vibe-datepicker-title[data-v-0a5b8fa4]{font-weight:600}.vibe-datepicker-weekdays[data-v-0a5b8fa4],.vibe-datepicker-grid[data-v-0a5b8fa4]{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.vibe-datepicker-weekday[data-v-0a5b8fa4]{text-align:center;color:var(--bs-secondary-color,#6c757d);padding:.25rem 0;font-size:.75rem}.vibe-datepicker-day[data-v-0a5b8fa4]{cursor:pointer;background:0 0;border:0;border-radius:.25rem;padding:.4rem 0;font-size:.875rem}.vibe-datepicker-day[data-v-0a5b8fa4]:hover:not(:disabled){background-color:var(--bs-secondary-bg,#e9ecef)}.vibe-datepicker-day-outside[data-v-0a5b8fa4]{opacity:.4}.vibe-datepicker-day-disabled[data-v-0a5b8fa4]{opacity:.3;cursor:not-allowed}.vibe-datepicker-day-today[data-v-0a5b8fa4]{font-weight:700;text-decoration:underline}.vibe-datepicker-day-selected[data-v-0a5b8fa4],.vibe-datepicker-day-range-start[data-v-0a5b8fa4],.vibe-datepicker-day-range-end[data-v-0a5b8fa4]{background-color:var(--bs-primary,#0d6efd);color:#fff}.vibe-datepicker-day-in-range[data-v-0a5b8fa4]{background-color:var(--bs-primary-bg-subtle,#cfe2ff)}.vibe-wysiwyg-container[data-v-82e0c636]{border:1px solid var(--bs-border-color);border-radius:.375rem}.vibe-wysiwyg-container.is-valid[data-v-82e0c636]{border-color:var(--bs-success)}.vibe-wysiwyg-container.is-invalid[data-v-82e0c636]{border-color:var(--bs-danger)}.vibe-wysiwyg-container.disabled[data-v-82e0c636]{background-color:var(--bs-secondary-bg);opacity:.6;cursor:not-allowed}.vibe-wysiwyg-container[data-v-82e0c636] .ql-container{border:none;font-size:1rem}.vibe-wysiwyg-container[data-v-82e0c636] .ql-toolbar{border:none;border-bottom:1px solid var(--bs-border-color);border-top-left-radius:.375rem;border-top-right-radius:.375rem}.vibe-wysiwyg-container[data-v-82e0c636] .ql-editor{min-height:150px}
2
+ /*$vite$:1*/