vlite3 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/components/AppShell/AppShellLayoutClassic.vue.js +67 -64
  2. package/components/AppShell/AppShellLayoutDashboard.vue.js +75 -70
  3. package/components/AppShell/AppShellLayoutDock.vue.js +27 -27
  4. package/components/AppShell/AppShellLayoutHeaderShell.vue.js +80 -75
  5. package/components/AppShell/AppShellLayoutSidebarFirst.vue.js +56 -56
  6. package/components/DataTable/DataTable.vue.d.ts +3 -3
  7. package/components/DataTable/DataTableRow.vue.d.ts +1 -1
  8. package/components/Form/CustomFields.vue.js +2 -2
  9. package/components/Form/CustomFields.vue2.js +15 -2
  10. package/components/Invoice/InvoiceVariant1.vue.js +225 -176
  11. package/components/Invoice/InvoiceVariant2.vue.js +174 -125
  12. package/components/Invoice/InvoiceVariant3.vue.js +186 -157
  13. package/components/Invoice/InvoiceVariant4.vue.js +200 -156
  14. package/components/Invoice/types.d.ts +10 -1
  15. package/components/List/ListFieldRow.vue.js +16 -16
  16. package/components/List/utils.d.ts +2 -2
  17. package/components/List/utils.js +6 -9
  18. package/components/NavbarCommandPalette.vue.js +1 -1
  19. package/components/Price/Price.vue.d.ts +2 -0
  20. package/components/Price/Price.vue.js +15 -12
  21. package/components/Screen/Screen.vue.d.ts +36 -10
  22. package/components/Screen/Screen.vue.js +398 -304
  23. package/components/Screen/components/ScreenToolbar.vue.d.ts +62 -0
  24. package/components/Screen/components/ScreenToolbar.vue.js +116 -0
  25. package/components/Screen/components/ScreenToolbar.vue2.js +4 -0
  26. package/components/Screen/types.d.ts +9 -0
  27. package/components/Stats/StatItem.vue.js +88 -87
  28. package/components/Stats/Stats.vue.js +20 -20
  29. package/components/Stats/types.d.ts +3 -1
  30. package/core/config.d.ts +10 -0
  31. package/core/config.js +11 -9
  32. package/index.js +131 -131
  33. package/package.json +1 -1
  34. package/style.css +1 -1
  35. package/types/config.type.d.ts +2 -0
  36. package/types/list.type.d.ts +4 -0
  37. package/utils/functions.d.ts +9 -10
  38. package/utils/functions.js +78 -63
package/core/config.js CHANGED
@@ -1,11 +1,13 @@
1
- import { reactive as n, inject as i } from "vue";
2
- import { deepMerge as c } from "../utils/object.js";
3
- const r = /* @__PURE__ */ Symbol("vlite-config"), s = {
1
+ import { reactive as n, inject as c } from "vue";
2
+ import { deepMerge as r } from "../utils/object.js";
3
+ const i = /* @__PURE__ */ Symbol("vlite-config"), s = {
4
4
  services: {},
5
5
  components: {
6
6
  form: {},
7
7
  price: {
8
- currency: "USD"
8
+ currency: "USD",
9
+ numberFormat: "standard",
10
+ compactThreshold: 1e3
9
11
  },
10
12
  datetime: {
11
13
  format: "MM/DD/YYYY"
@@ -16,16 +18,16 @@ const r = /* @__PURE__ */ Symbol("vlite-config"), s = {
16
18
  }
17
19
  }
18
20
  }, e = n({ ...s });
19
- function a(t) {
20
- const o = c(e, t);
21
+ function f(t) {
22
+ const o = r(e, t);
21
23
  Object.assign(e, o);
22
24
  }
23
25
  function u() {
24
- return i(r, e);
26
+ return c(i, e);
25
27
  }
26
28
  export {
27
- r as VLITE_CONFIG_KEY,
29
+ i as VLITE_CONFIG_KEY,
28
30
  e as configState,
29
- a as updateConfig,
31
+ f as updateConfig,
30
32
  u as useVLiteConfig
31
33
  };
package/index.js CHANGED
@@ -1,60 +1,60 @@
1
1
  import { default as l } from "vue3-google-signin";
2
2
  import { deepMerge as s } from "./utils/object.js";
3
- import { camelCase as u, capitalize as x, copyToClipboard as i, debounce as n, delay as c, downloadFile as g, flattenArray as C, formatAmPm as T, formatCurrency as S, formatDate as h, formatSchedule as I, getDefaultDateRange as b, getNextMonth as P, getNextYear as v, getPrevMonth as D, getPrevYear as F, getToday as B, getTomorrow as y, getUniqueId as A, getUpcoming as N, getYear as k, getYesterday as E, isAppleDevice as M, isEmpty as w, isPureTimeString as R, isValidTimeRange as L, parseDateTime as G, randomNumber as K, removeExtraProperties as O, slugify as Y, throttle as _, toISO as z, toLocalISO as U, truncate as V } from "./utils/functions.js";
4
- import { lazySearch as Q, resetSearchIndex as W, search as j } from "./utils/search.util.js";
5
- import { env as X } from "./utils/env.js";
6
- import { $t as J } from "./utils/i18n.js";
7
- import { getComponentConfig as ee } from "./utils/configUtils.js";
8
- import { default as re } from "./components/Chip/Chip.vue.js";
9
- import { default as ae } from "./components/Form/Form.vue.js";
10
- import { default as me } from "./components/Form/FormField.vue.js";
11
- import { default as pe } from "./components/Form/FormFields.vue.js";
12
- import { default as de } from "./components/Form/CustomFields.vue.js";
13
- import { default as xe } from "./components/Form/FormSkeleton.vue.js";
14
- import { useForm as ne } from "./components/Form/composables/useForm.js";
15
- import { useFileUpload as ge } from "./components/Form/composables/useFileUpload.js";
16
- import { default as Te } from "./components/Tabes/Tabes.vue.js";
17
- import { default as he } from "./components/Stats/Stats.vue.js";
18
- import { default as be } from "./components/Kanban/Kanban.vue.js";
19
- import { default as ve } from "./components/Kanban/KanbanBoard.vue.js";
20
- import { useKanbanBoard as Fe } from "./components/Kanban/useKanbanBoard.js";
21
- import { default as ye } from "./components/Navbar/Navbar.vue.js";
22
- import { default as Ne } from "./components/Navbar/NavbarItem.vue.js";
23
- import { default as Ee } from "./components/Navbar/NavbarGroup.vue.js";
24
- import { default as we } from "./components/Navbar/NavbarTabs.vue.js";
3
+ import { camelCase as u, capitalize as x, copyToClipboard as i, debounce as n, delay as c, downloadFile as g, flattenArray as C, formatAmPm as T, formatCurrency as S, formatDate as h, formatNumber as I, formatSchedule as b, getDefaultDateRange as P, getNextMonth as v, getNextYear as D, getPrevMonth as F, getPrevYear as B, getToday as y, getTomorrow as A, getUniqueId as N, getUpcoming as k, getYear as E, getYesterday as M, isAppleDevice as w, isEmpty as R, isPureTimeString as L, isValidTimeRange as G, parseDateTime as K, randomNumber as O, removeExtraProperties as Y, slugify as _, throttle as z, toISO as U, toLocalISO as V, truncate as H } from "./utils/functions.js";
4
+ import { lazySearch as W, resetSearchIndex as j, search as q } from "./utils/search.util.js";
5
+ import { env as $ } from "./utils/env.js";
6
+ import { $t as Z } from "./utils/i18n.js";
7
+ import { getComponentConfig as oe } from "./utils/configUtils.js";
8
+ import { default as te } from "./components/Chip/Chip.vue.js";
9
+ import { default as fe } from "./components/Form/Form.vue.js";
10
+ import { default as le } from "./components/Form/FormField.vue.js";
11
+ import { default as se } from "./components/Form/FormFields.vue.js";
12
+ import { default as ue } from "./components/Form/CustomFields.vue.js";
13
+ import { default as ie } from "./components/Form/FormSkeleton.vue.js";
14
+ import { useForm as ce } from "./components/Form/composables/useForm.js";
15
+ import { useFileUpload as Ce } from "./components/Form/composables/useFileUpload.js";
16
+ import { default as Se } from "./components/Tabes/Tabes.vue.js";
17
+ import { default as Ie } from "./components/Stats/Stats.vue.js";
18
+ import { default as Pe } from "./components/Kanban/Kanban.vue.js";
19
+ import { default as De } from "./components/Kanban/KanbanBoard.vue.js";
20
+ import { useKanbanBoard as Be } from "./components/Kanban/useKanbanBoard.js";
21
+ import { default as Ae } from "./components/Navbar/Navbar.vue.js";
22
+ import { default as ke } from "./components/Navbar/NavbarItem.vue.js";
23
+ import { default as Me } from "./components/Navbar/NavbarGroup.vue.js";
24
+ import { default as Re } from "./components/Navbar/NavbarTabs.vue.js";
25
25
  /* empty css */
26
- import { default as Le } from "./components/QRCode/QRCode.vue.js";
27
- import { default as Ke } from "./components/Screen/Screen.vue.js";
28
- import { default as Ye } from "./components/Screen/ScreenFilter.vue.js";
29
- import { default as ze } from "./components/Screen/components/ScreenQuickFilters.vue.js";
30
- import { default as Ve } from "./components/Heatmap/Heatmap.vue.js";
31
- import { default as Qe } from "./components/Masonry/Masonry.vue.js";
32
- import { MASONRY_BREAKPOINTS as je } from "./components/Masonry/types.js";
33
- import { default as Xe } from "./components/Spinner/Spinner.vue.js";
34
- import { default as Je } from "./components/Barcode/Barcode.vue.js";
35
- import { barcodesConstants as eo } from "./components/Barcode/types.js";
36
- import { default as ro } from "./components/Carousel/Carousel.vue.js";
37
- import { default as ao } from "./components/Dropdown/Dropdown.vue.js";
38
- import { default as mo } from "./components/Dropdown/DropdownMenu.vue.js";
39
- import { default as po } from "./components/Dropdown/DropdownTrigger.vue.js";
40
- import { default as uo } from "./components/Dropdown/DropdownItem.vue.js";
41
- import { useDropdownSelection as io } from "./components/Dropdown/composables/useDropdownSelection.js";
42
- import { useDropdownIds as co } from "./components/Dropdown/composables/useDropdownIds.js";
43
- import { default as Co } from "./components/Breadcrumb/Breadcrumb.vue.js";
44
- import { default as So } from "./components/Breadcrumb/BreadcrumbItem.vue.js";
45
- import { default as Io } from "./components/FileTree/FileTree.vue.js";
46
- import { default as Po } from "./components/FileTree/FileTreeNode.vue.js";
47
- import { useTreeSelection as Do } from "./components/FileTree/useTreeSelection.js";
48
- import { default as Bo } from "./components/RichTextEditor/RichTextEditor.vue.js";
26
+ import { default as Ge } from "./components/QRCode/QRCode.vue.js";
27
+ import { default as Oe } from "./components/Screen/Screen.vue.js";
28
+ import { default as _e } from "./components/Screen/ScreenFilter.vue.js";
29
+ import { default as Ue } from "./components/Screen/components/ScreenQuickFilters.vue.js";
30
+ import { default as He } from "./components/Heatmap/Heatmap.vue.js";
31
+ import { default as We } from "./components/Masonry/Masonry.vue.js";
32
+ import { MASONRY_BREAKPOINTS as qe } from "./components/Masonry/types.js";
33
+ import { default as $e } from "./components/Spinner/Spinner.vue.js";
34
+ import { default as Ze } from "./components/Barcode/Barcode.vue.js";
35
+ import { barcodesConstants as oo } from "./components/Barcode/types.js";
36
+ import { default as to } from "./components/Carousel/Carousel.vue.js";
37
+ import { default as fo } from "./components/Dropdown/Dropdown.vue.js";
38
+ import { default as lo } from "./components/Dropdown/DropdownMenu.vue.js";
39
+ import { default as so } from "./components/Dropdown/DropdownTrigger.vue.js";
40
+ import { default as xo } from "./components/Dropdown/DropdownItem.vue.js";
41
+ import { useDropdownSelection as no } from "./components/Dropdown/composables/useDropdownSelection.js";
42
+ import { useDropdownIds as go } from "./components/Dropdown/composables/useDropdownIds.js";
43
+ import { default as To } from "./components/Breadcrumb/Breadcrumb.vue.js";
44
+ import { default as ho } from "./components/Breadcrumb/BreadcrumbItem.vue.js";
45
+ import { default as bo } from "./components/FileTree/FileTree.vue.js";
46
+ import { default as vo } from "./components/FileTree/FileTreeNode.vue.js";
47
+ import { useTreeSelection as Fo } from "./components/FileTree/useTreeSelection.js";
48
+ import { default as yo } from "./components/RichTextEditor/RichTextEditor.vue.js";
49
49
  /* empty css */
50
- import { default as Ao } from "./components/RichTextEditor/RichTextReader.vue.js";
51
- import { default as ko } from "./components/OTPInput/OTPInput.vue.js";
52
- import { default as Mo } from "./components/Workbook/Workbook.vue.js";
53
- import { default as Ro } from "./components/Workbook/Sheet.vue.js";
54
- import { default as Go } from "./components/DataList/DataList.vue.js";
55
- import { default as Oo } from "./components/List/List.vue.js";
56
- import { default as _o } from "./components/List/ListFieldRow.vue.js";
57
- import { formatNumber as Uo, getObjectValue as Vo } from "./components/List/utils.js";
50
+ import { default as No } from "./components/RichTextEditor/RichTextReader.vue.js";
51
+ import { default as Eo } from "./components/OTPInput/OTPInput.vue.js";
52
+ import { default as wo } from "./components/Workbook/Workbook.vue.js";
53
+ import { default as Lo } from "./components/Workbook/Sheet.vue.js";
54
+ import { default as Ko } from "./components/DataList/DataList.vue.js";
55
+ import { default as Yo } from "./components/List/List.vue.js";
56
+ import { default as zo } from "./components/List/ListFieldRow.vue.js";
57
+ import { getObjectValue as Vo } from "./components/List/utils.js";
58
58
  import { default as Qo } from "./components/Empty/Empty.vue.js";
59
59
  import { default as jo } from "./components/Comment/CommentItem.vue.js";
60
60
  import { default as Xo } from "./components/Comment/CommentThread.vue.js";
@@ -159,7 +159,7 @@ import { default as Gf } from "./components/Chat/ChatInterface.vue.js";
159
159
  import { VLITE_CONFIG_KEY as Of, configState as Yf, updateConfig as _f, useVLiteConfig as zf } from "./core/config.js";
160
160
  import { getStatusColorClass as Vf } from "./utils/status.js";
161
161
  export {
162
- J as $t,
162
+ Z as $t,
163
163
  er as Accordion,
164
164
  mr as AccordionContent,
165
165
  rr as AccordionItem,
@@ -173,18 +173,18 @@ export {
173
173
  La as BackButton,
174
174
  va as Badge,
175
175
  ea as BarChart,
176
- Je as Barcode,
177
- Co as Breadcrumb,
178
- So as BreadcrumbItem,
176
+ Ze as Barcode,
177
+ To as Breadcrumb,
178
+ ho as BreadcrumbItem,
179
179
  wa as Button,
180
180
  rf as ButtonGroup,
181
181
  Kt as Calendar,
182
182
  Yt as CalendarEventItem,
183
- ro as Carousel,
183
+ to as Carousel,
184
184
  Et as CategoryManager,
185
185
  Gf as ChatInterface,
186
186
  Qa as CheckBox,
187
- re as Chip,
187
+ te as Chip,
188
188
  pr as ChoiceBox,
189
189
  aa as CircleChart,
190
190
  Rf as Clock,
@@ -195,58 +195,58 @@ export {
195
195
  Xo as CommentThread,
196
196
  xf as ConfirmationModal,
197
197
  Ka as CopyButton,
198
- de as CustomFields,
198
+ ue as CustomFields,
199
199
  Ft as CustomFieldsDisplay,
200
- Go as DataList,
200
+ Ko as DataList,
201
201
  dr as DataTable,
202
202
  xr as DataTableHeader,
203
203
  nr as DataTableRow,
204
204
  Ja as DatePicker,
205
205
  If as DateRangePicker,
206
206
  Mf as DateTime,
207
- ao as Dropdown,
208
- uo as DropdownItem,
209
- mo as DropdownMenu,
210
- po as DropdownTrigger,
207
+ fo as Dropdown,
208
+ xo as DropdownItem,
209
+ lo as DropdownMenu,
210
+ so as DropdownTrigger,
211
211
  Qo as Empty,
212
212
  Ar as ExportData,
213
213
  Dr as FilePicker,
214
214
  ht as FilePreview,
215
- Io as FileTree,
216
- Po as FileTreeNode,
215
+ bo as FileTree,
216
+ vo as FileTreeNode,
217
217
  hr as Footer,
218
- ae as Form,
219
- me as FormField,
220
- pe as FormFields,
221
- xe as FormSkeleton,
218
+ fe as Form,
219
+ le as FormField,
220
+ se as FormFields,
221
+ ie as FormSkeleton,
222
222
  ma as GaugeChart,
223
223
  pf as GoogleLogin,
224
224
  l as GoogleSignInPlugin,
225
- Ve as Heatmap,
225
+ He as Heatmap,
226
226
  Ta as Icon,
227
227
  ef as IconPicker,
228
228
  kr as ImportData,
229
229
  Fa as Input,
230
230
  yt as Invoice,
231
231
  Nt as InvoiceTotals,
232
- be as Kanban,
233
- ve as KanbanBoard,
232
+ Pe as Kanban,
233
+ De as KanbanBoard,
234
234
  ya as Label,
235
235
  Jt as LineChart,
236
- Oo as List,
237
- _o as ListFieldRow,
236
+ Yo as List,
237
+ zo as ListFieldRow,
238
238
  ha as Logo,
239
- je as MASONRY_BREAKPOINTS,
240
- Qe as Masonry,
239
+ qe as MASONRY_BREAKPOINTS,
240
+ We as Masonry,
241
241
  Na as Modal,
242
242
  Mr as MultiSelect,
243
- ye as Navbar,
243
+ Ae as Navbar,
244
244
  Sf as NavbarCommandPalette,
245
- Ee as NavbarGroup,
246
- Ne as NavbarItem,
247
- we as NavbarTabs,
245
+ Me as NavbarGroup,
246
+ ke as NavbarItem,
247
+ Re as NavbarTabs,
248
248
  af as NumberInput,
249
- ko as OTPInput,
249
+ Eo as OTPInput,
250
250
  Br as Pagination,
251
251
  qr as PermissionEditor,
252
252
  Wr as PermissionMatrix,
@@ -255,28 +255,28 @@ export {
255
255
  Gr as PricingPlan,
256
256
  Or as PricingPlanItem,
257
257
  Hr as ProgressBar,
258
- Le as QRCode,
259
- Bo as RichTextEditor,
260
- Ao as RichTextReader,
258
+ Ge as QRCode,
259
+ yo as RichTextEditor,
260
+ No as RichTextReader,
261
261
  gr as SCREEN_CONTEXT_KEY,
262
262
  Bf as STATUS_MAP,
263
- Ke as Screen,
264
- Ye as ScreenFilter,
265
- ze as ScreenQuickFilters,
263
+ Oe as Screen,
264
+ _e as ScreenFilter,
265
+ Ue as ScreenQuickFilters,
266
266
  da as SegmentBarChart,
267
- Ro as Sheet,
267
+ Lo as Sheet,
268
268
  Xa as SidePanel,
269
269
  _r as SidebarMenu,
270
270
  Ur as SidebarMenuItem,
271
271
  zt as Skeleton,
272
272
  Ya as Slider,
273
- Xe as Spinner,
273
+ $e as Spinner,
274
274
  Tr as Splitter,
275
275
  xa as StatCardChart,
276
- he as Stats,
276
+ Ie as Stats,
277
277
  Df as StatusChip,
278
278
  za as Switch,
279
- Te as Tabes,
279
+ Se as Tabes,
280
280
  Lt as TagInput,
281
281
  ja as Textarea,
282
282
  mf as ThemeToggle,
@@ -289,8 +289,8 @@ export {
289
289
  Va as Tooltip,
290
290
  Of as VLITE_CONFIG_KEY,
291
291
  na as WaffleChart,
292
- Mo as Workbook,
293
- eo as barcodesConstants,
292
+ wo as Workbook,
293
+ oo as barcodesConstants,
294
294
  u as camelCase,
295
295
  x as capitalize,
296
296
  Yf as configState,
@@ -302,67 +302,67 @@ export {
302
302
  s as deepMerge,
303
303
  c as delay,
304
304
  g as downloadFile,
305
- X as env,
305
+ $ as env,
306
306
  C as flattenArray,
307
307
  T as formatAmPm,
308
308
  S as formatCurrency,
309
309
  h as formatDate,
310
- Uo as formatNumber,
311
- I as formatSchedule,
312
- ee as getComponentConfig,
313
- b as getDefaultDateRange,
310
+ I as formatNumber,
311
+ b as formatSchedule,
312
+ oe as getComponentConfig,
313
+ P as getDefaultDateRange,
314
314
  vt as getFileTypeIcon,
315
315
  qt as getGlobalConfig,
316
- P as getNextMonth,
317
- v as getNextYear,
316
+ v as getNextMonth,
317
+ D as getNextYear,
318
318
  Vo as getObjectValue,
319
- D as getPrevMonth,
320
- F as getPrevYear,
319
+ F as getPrevMonth,
320
+ B as getPrevYear,
321
321
  Vf as getStatusColorClass,
322
- B as getToday,
323
- y as getTomorrow,
324
- A as getUniqueId,
325
- N as getUpcoming,
326
- k as getYear,
327
- E as getYesterday,
322
+ y as getToday,
323
+ A as getTomorrow,
324
+ N as getUniqueId,
325
+ k as getUpcoming,
326
+ E as getYear,
327
+ M as getYesterday,
328
328
  br as initializeTheme,
329
- M as isAppleDevice,
330
- w as isEmpty,
331
- R as isPureTimeString,
332
- L as isValidTimeRange,
333
- Q as lazySearch,
329
+ w as isAppleDevice,
330
+ R as isEmpty,
331
+ L as isPureTimeString,
332
+ G as isValidTimeRange,
333
+ W as lazySearch,
334
334
  Vt as normalizeBone,
335
335
  yf as normalizeStatus,
336
- G as parseDateTime,
336
+ K as parseDateTime,
337
337
  lt as pauseTimers,
338
- K as randomNumber,
338
+ O as randomNumber,
339
339
  Xt as registerBones,
340
- O as removeExtraProperties,
340
+ Y as removeExtraProperties,
341
341
  pt as removeToast,
342
- W as resetSearchIndex,
342
+ j as resetSearchIndex,
343
343
  Af as resolveStatus,
344
344
  st as resumeTimers,
345
- j as search,
345
+ q as search,
346
346
  dt as showToast,
347
- Y as slugify,
347
+ _ as slugify,
348
348
  Qt as snapshotBones,
349
- _ as throttle,
350
- z as toISO,
351
- U as toLocalISO,
349
+ z as throttle,
350
+ U as toISO,
351
+ V as toLocalISO,
352
352
  ut as toast,
353
- V as truncate,
353
+ H as truncate,
354
354
  _f as updateConfig,
355
355
  $r as useAdvancedKeyStroke,
356
- co as useDropdownIds,
357
- io as useDropdownSelection,
358
- ge as useFileUpload,
359
- ne as useForm,
360
- Fe as useKanbanBoard,
356
+ go as useDropdownIds,
357
+ no as useDropdownSelection,
358
+ Ce as useFileUpload,
359
+ ce as useForm,
360
+ Be as useKanbanBoard,
361
361
  Jr as useKeyStroke,
362
362
  Rr as useMultiSelectHydration,
363
363
  xt as useNotifications,
364
364
  Pr as useTheme,
365
- Do as useTreeSelection,
365
+ Fo as useTreeSelection,
366
366
  zf as useVLiteConfig,
367
367
  et as vScrollReveal
368
368
  };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "private": false,
4
4
  "description": "A Vue 3 UI component library built with Tailwind CSS.",
5
5
  "license": "MIT",
6
- "version": "1.2.1",
6
+ "version": "1.2.2",
7
7
  "type": "module",
8
8
  "main": "index.js",
9
9
  "module": "index.js",
package/style.css CHANGED
@@ -1626,5 +1626,5 @@ textarea::-webkit-scrollbar-thumb:hover {
1626
1626
  }
1627
1627
 
1628
1628
  /* --- 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}
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-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-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}
1630
1630
 
@@ -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.