@infotrust/ui 0.0.0-stage → 0.30.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 (193) hide show
  1. package/LICENSE +24 -0
  2. package/NOTICE.md +37 -0
  3. package/README.md +53 -2
  4. package/dist/assistant-session-DP4_70Xk.js +1381 -0
  5. package/dist/command-Bjncx7YR.js +1279 -0
  6. package/dist/components/actions/ItActionMenu.vue.d.ts +24 -0
  7. package/dist/components/actions/ItDecisionToggle.vue.d.ts +22 -0
  8. package/dist/components/actions/ItIconButton.vue.d.ts +24 -0
  9. package/dist/components/actions/ItLinkButton.vue.d.ts +17 -0
  10. package/dist/components/actions/action-menu.d.ts +19 -0
  11. package/dist/components/charts/ItBarChart.vue.d.ts +121 -0
  12. package/dist/components/charts/ItCalendarChart.vue.d.ts +80 -0
  13. package/dist/components/charts/ItChartLegend.vue.d.ts +47 -0
  14. package/dist/components/charts/ItChartTable.vue.d.ts +16 -0
  15. package/dist/components/charts/ItChartTooltip.vue.d.ts +52 -0
  16. package/dist/components/charts/ItDonutChart.vue.d.ts +79 -0
  17. package/dist/components/charts/ItProportionBar.vue.d.ts +42 -0
  18. package/dist/components/charts/ItSparkline.vue.d.ts +42 -0
  19. package/dist/components/charts/ItTrendChart.vue.d.ts +80 -0
  20. package/dist/components/charts/chart.d.ts +84 -0
  21. package/dist/components/charts/selection.d.ts +14 -0
  22. package/dist/components/charts/skeleton.d.ts +16 -0
  23. package/dist/components/command/ItAssistantPanel.vue.d.ts +56 -0
  24. package/dist/components/command/ItAssistantThread.vue.d.ts +73 -0
  25. package/dist/components/command/ItCommandPalette.vue.d.ts +102 -0
  26. package/dist/components/command/ItMarkdown.vue.d.ts +12 -0
  27. package/dist/components/command/assistant-session.d.ts +26 -0
  28. package/dist/components/command/command.d.ts +127 -0
  29. package/dist/components/command/markdown.d.ts +55 -0
  30. package/dist/components/content/ItDocsArticle.vue.d.ts +18 -0
  31. package/dist/components/content/ItDocsLayout.vue.d.ts +29 -0
  32. package/dist/components/content/ItDocsPager.vue.d.ts +12 -0
  33. package/dist/components/content/ItProse.vue.d.ts +18 -0
  34. package/dist/components/content/docs.d.ts +23 -0
  35. package/dist/components/dag/ItDagCanvas.vue.d.ts +143 -0
  36. package/dist/components/dag/ItDagControls.vue.d.ts +2 -0
  37. package/dist/components/dag/ItDagEdge.vue.d.ts +21 -0
  38. package/dist/components/dag/ItDagLibrary.vue.d.ts +19 -0
  39. package/dist/components/dag/ItDagNode.vue.d.ts +20 -0
  40. package/dist/components/dag/dag.d.ts +182 -0
  41. package/dist/components/dag/history.d.ts +51 -0
  42. package/dist/components/dag/layout.d.ts +54 -0
  43. package/dist/components/dag/route.d.ts +24 -0
  44. package/dist/components/data/DataError.vue.d.ts +12 -0
  45. package/dist/components/data/ItChangeList.vue.d.ts +48 -0
  46. package/dist/components/data/ItCodeBlock.vue.d.ts +23 -0
  47. package/dist/components/data/ItDataTable.vue.d.ts +135 -0
  48. package/dist/components/data/ItDataToolbar.vue.d.ts +57 -0
  49. package/dist/components/data/ItDescriptionList.vue.d.ts +30 -0
  50. package/dist/components/data/ItEmptyState.vue.d.ts +22 -0
  51. package/dist/components/data/ItKpiCard.vue.d.ts +89 -0
  52. package/dist/components/data/ItKpiDetail.vue.d.ts +40 -0
  53. package/dist/components/data/ItKpiGrid.vue.d.ts +19 -0
  54. package/dist/components/data/ItObjectName.vue.d.ts +64 -0
  55. package/dist/components/data/ItPaginator.vue.d.ts +46 -0
  56. package/dist/components/data/ItResourceList.vue.d.ts +39 -0
  57. package/dist/components/data/ItResourceListItem.vue.d.ts +40 -0
  58. package/dist/components/data/ItSkeleton.vue.d.ts +14 -0
  59. package/dist/components/data/ItTablePaginator.vue.d.ts +34 -0
  60. package/dist/components/data/ItTime.vue.d.ts +13 -0
  61. package/dist/components/data/ItTreeTable.vue.d.ts +109 -0
  62. package/dist/components/data/TableChevron.vue.d.ts +8 -0
  63. package/dist/components/data/TableExpansion.vue.d.ts +22 -0
  64. package/dist/components/data/column-sizing.d.ts +31 -0
  65. package/dist/components/data/data-table.d.ts +15 -0
  66. package/dist/components/data/highlight-worker.d.ts +1 -0
  67. package/dist/components/data/highlight.d.ts +3 -0
  68. package/dist/components/data/kpi-placement.d.ts +40 -0
  69. package/dist/components/data/kpi.d.ts +16 -0
  70. package/dist/components/data/sticky-header.d.ts +9 -0
  71. package/dist/components/data/table-skeleton.d.ts +11 -0
  72. package/dist/components/data/table-source.d.ts +77 -0
  73. package/dist/components/data/tree-table-public.d.ts +17 -0
  74. package/dist/components/data/tree-table.d.ts +30 -0
  75. package/dist/components/feedback/ItCallout.vue.d.ts +25 -0
  76. package/dist/components/feedback/ItConfirmHost.vue.d.ts +2 -0
  77. package/dist/components/feedback/ItOverlayHost.vue.d.ts +2 -0
  78. package/dist/components/feedback/ItProgressBar.vue.d.ts +19 -0
  79. package/dist/components/feedback/ItToastHost.vue.d.ts +2 -0
  80. package/dist/components/forms/FieldClearButton.vue.d.ts +11 -0
  81. package/dist/components/forms/ItAutoComplete.vue.d.ts +69 -0
  82. package/dist/components/forms/ItCheckboxGroup.vue.d.ts +27 -0
  83. package/dist/components/forms/ItChipInput.vue.d.ts +32 -0
  84. package/dist/components/forms/ItCodeEditor.vue.d.ts +64 -0
  85. package/dist/components/forms/ItDatePicker.vue.d.ts +35 -0
  86. package/dist/components/forms/ItFileDrop.vue.d.ts +47 -0
  87. package/dist/components/forms/ItFilterChip.vue.d.ts +13 -0
  88. package/dist/components/forms/ItFilterMenu.vue.d.ts +37 -0
  89. package/dist/components/forms/ItFilterPopover.vue.d.ts +44 -0
  90. package/dist/components/forms/ItFormActions.vue.d.ts +14 -0
  91. package/dist/components/forms/ItFormField.vue.d.ts +44 -0
  92. package/dist/components/forms/ItFormRows.vue.d.ts +50 -0
  93. package/dist/components/forms/ItFormSection.vue.d.ts +28 -0
  94. package/dist/components/forms/ItLabelCell.vue.d.ts +42 -0
  95. package/dist/components/forms/ItLabelPicker.vue.d.ts +34 -0
  96. package/dist/components/forms/ItMultiSelect.vue.d.ts +53 -0
  97. package/dist/components/forms/ItOptionCardGroup.vue.d.ts +35 -0
  98. package/dist/components/forms/ItRadioGroup.vue.d.ts +29 -0
  99. package/dist/components/forms/ItSearchInput.vue.d.ts +25 -0
  100. package/dist/components/forms/ItSegmentedControl.vue.d.ts +25 -0
  101. package/dist/components/forms/ItSelect.vue.d.ts +50 -0
  102. package/dist/components/forms/ItSwitch.vue.d.ts +31 -0
  103. package/dist/components/forms/ItTabs.vue.d.ts +27 -0
  104. package/dist/components/forms/OptionSourceSlot.vue.d.ts +13 -0
  105. package/dist/components/forms/choice.d.ts +24 -0
  106. package/dist/components/forms/code-editor.d.ts +17 -0
  107. package/dist/components/forms/field-context.d.ts +39 -0
  108. package/dist/components/forms/file-drop.d.ts +19 -0
  109. package/dist/components/forms/form-errors.d.ts +7 -0
  110. package/dist/components/forms/form-rows.d.ts +8 -0
  111. package/dist/components/forms/option-source.d.ts +39 -0
  112. package/dist/components/forms/virtual-options.d.ts +12 -0
  113. package/dist/components/layout/ItBreadcrumb.vue.d.ts +12 -0
  114. package/dist/components/layout/ItDetailSection.vue.d.ts +21 -0
  115. package/dist/components/layout/ItPage.vue.d.ts +44 -0
  116. package/dist/components/layout/ItPanel.vue.d.ts +47 -0
  117. package/dist/components/layout/ItSectionNav.vue.d.ts +43 -0
  118. package/dist/components/layout/ItWizard.vue.d.ts +57 -0
  119. package/dist/components/layout/ItWizardSteps.vue.d.ts +15 -0
  120. package/dist/components/layout/SectionNavLinks.vue.d.ts +15 -0
  121. package/dist/components/layout/panel.d.ts +18 -0
  122. package/dist/components/layout/section-nav.d.ts +17 -0
  123. package/dist/components/layout/wizard.d.ts +13 -0
  124. package/dist/components/logic/ItFieldPicker.vue.d.ts +40 -0
  125. package/dist/components/logic/ItLogicBuilder.vue.d.ts +58 -0
  126. package/dist/components/logic/ItLogicCondition.vue.d.ts +9 -0
  127. package/dist/components/logic/ItLogicGroup.vue.d.ts +9 -0
  128. package/dist/components/logic/ItOperatorSelect.vue.d.ts +25 -0
  129. package/dist/components/logic/ItValueInput.vue.d.ts +29 -0
  130. package/dist/components/logic/logic.d.ts +263 -0
  131. package/dist/components/logic/region.d.ts +44 -0
  132. package/dist/components/overlays/ItDrawer.vue.d.ts +48 -0
  133. package/dist/components/overlays/ItModal.vue.d.ts +53 -0
  134. package/dist/components/overlays/escape-stack.d.ts +7 -0
  135. package/dist/components/overlays/modal.d.ts +23 -0
  136. package/dist/components/shell/ItAppShell.vue.d.ts +68 -0
  137. package/dist/components/shell/ItCommandTrigger.vue.d.ts +17 -0
  138. package/dist/components/shell/ItOrgSwitcher.vue.d.ts +26 -0
  139. package/dist/components/shell/ItShellMenuItem.vue.d.ts +18 -0
  140. package/dist/components/shell/ItShellNavBranch.vue.d.ts +15 -0
  141. package/dist/components/shell/ItShellNavLink.vue.d.ts +18 -0
  142. package/dist/components/shell/ItShellSidebarButton.vue.d.ts +15 -0
  143. package/dist/components/shell/ItThemeControl.vue.d.ts +13 -0
  144. package/dist/components/shell/org.d.ts +36 -0
  145. package/dist/components/shell/types.d.ts +67 -0
  146. package/dist/components/status/ItBadge.vue.d.ts +12 -0
  147. package/dist/components/status/ItEntityTypeChip.vue.d.ts +14 -0
  148. package/dist/components/status/ItLabelChip.vue.d.ts +21 -0
  149. package/dist/components/status/ItLabelChipList.vue.d.ts +27 -0
  150. package/dist/components/status/ItPlatformChip.vue.d.ts +20 -0
  151. package/dist/components/status/ItPlatformLogo.vue.d.ts +17 -0
  152. package/dist/components/status/ItSeverityBadge.vue.d.ts +9 -0
  153. package/dist/components/status/ItStatus.vue.d.ts +12 -0
  154. package/dist/components.css +1 -0
  155. package/dist/composables/iconMotion.d.ts +12 -0
  156. package/dist/composables/ripple.d.ts +3 -0
  157. package/dist/composables/useItConfirm.d.ts +16 -0
  158. package/dist/composables/useItCopy.d.ts +4 -0
  159. package/dist/composables/useItCursorPager.d.ts +50 -0
  160. package/dist/composables/useItTheme.d.ts +26 -0
  161. package/dist/composables/useItToast.d.ts +24 -0
  162. package/dist/dag.d.ts +5 -0
  163. package/dist/dag.js +1754 -0
  164. package/dist/dev-D7A7MIn_.js +1264 -0
  165. package/dist/directives/truncate.d.ts +29 -0
  166. package/dist/elk-worker.min-O2A22ecl.js +6321 -0
  167. package/dist/format/index.d.ts +53 -0
  168. package/dist/highlight-worker-DIrLC7a2.js +25 -0
  169. package/dist/index.d.ts +147 -0
  170. package/dist/index.js +11989 -0
  171. package/dist/licenses/@vue-flow__core.LICENSE +20 -0
  172. package/dist/licenses/elkjs.LICENSE.md +263 -0
  173. package/dist/licenses/highlight.js.LICENSE +29 -0
  174. package/dist/licenses/vue-sonner.LICENSE +21 -0
  175. package/dist/platform-art-Bt1CnaKE.js +86 -0
  176. package/dist/plugin.d.ts +69 -0
  177. package/dist/registries/entity-type.d.ts +18 -0
  178. package/dist/registries/platform-art.d.ts +2 -0
  179. package/dist/registries/platform-marks.d.ts +12 -0
  180. package/dist/registries/platform.d.ts +22 -0
  181. package/dist/registries/severity.d.ts +23 -0
  182. package/dist/registries/status.d.ts +13 -0
  183. package/dist/styles.css +26 -0
  184. package/dist/text-nGkJYA88.js +470 -0
  185. package/dist/utils/chip-truncation.d.ts +8 -0
  186. package/dist/utils/chunk-recovery.d.ts +24 -0
  187. package/dist/utils/dev.d.ts +2 -0
  188. package/dist/utils/listeners.d.ts +10 -0
  189. package/dist/utils/router.d.ts +9 -0
  190. package/dist/utils/scroll.d.ts +8 -0
  191. package/dist/utils/select.d.ts +21 -0
  192. package/dist/utils/text.d.ts +6 -0
  193. package/package.json +92 -3
@@ -0,0 +1,69 @@
1
+ import { type Plugin } from 'vue';
2
+ import { type PrimeVueConfiguration } from 'primevue/config';
3
+ export interface InfotrustUIOptions {
4
+ /**
5
+ * Selector that turns on PrimeVue's dark values. Default IT_DARK_MODE_SELECTOR,
6
+ * the selectors tokens.css reads. Pass several selectors as an array, one
7
+ * selector per entry: PrimeVue recognizes only a lone `.class`, a lone
8
+ * `[attr]`, `@media …`, or `system`, and treats a comma list in one string as
9
+ * a custom selector that it nests around `:root`, which never matches. A
10
+ * comma list given here is split into entries for you (itDarkModeSelector).
11
+ */
12
+ darkModeSelector?: string | string[];
13
+ /** Locale for the format helpers. Default 'en-US'. */
14
+ locale?: string;
15
+ /** Extra PrimeVue configuration merged over the InfoTrust defaults. */
16
+ primevue?: Partial<PrimeVueConfiguration>;
17
+ /** The soft ripple on every button. Default true. */
18
+ ripple?: boolean;
19
+ /**
20
+ * The full cascade layer order, for an app that adds layers of its own (e.g.
21
+ * a `legacy` layer for pre-design-system styles between `primevue` and
22
+ * `it-components`). PrimeVue writes this order first in the document, so it
23
+ * is the order the page gets: an app layer named only in its own CSS would
24
+ * land above every library layer. Keep the library's layers in their order.
25
+ * Default IT_CSS_LAYER_ORDER.
26
+ */
27
+ cssLayerOrder?: string;
28
+ }
29
+ /**
30
+ * Installs PrimeVue with the InfoTrust preset, the confirmation service, and
31
+ * the tooltip and v-it-truncate directives. Import the one stylesheet as well:
32
+ *
33
+ * import '@infotrust/ui/styles.css';
34
+ *
35
+ * then render <ItOverlayHost /> once in the root component. PrimeVue's runtime
36
+ * theme goes into the `primevue` cascade layer, in the order styles.css declares.
37
+ */
38
+ export declare const IT_CSS_LAYER_ORDER = "it-tokens, it-base, primevue, it-components, it-overrides";
39
+ /**
40
+ * The selectors that turn dark mode on, as tokens.css reads them: `data-theme`
41
+ * on <html> (what initItTheme writes) and the legacy `.suite-theme-dark` class.
42
+ * One selector per entry, so PrimeVue emits `:root[data-theme="dark"]` and
43
+ * `.suite-theme-dark` rules.
44
+ */
45
+ export declare const IT_DARK_MODE_SELECTOR: readonly string[];
46
+ /**
47
+ * A dark-mode selector in the form PrimeVue resolves: one selector per entry.
48
+ * A selector list in one string (`'[data-theme="dark"], .app-dark'`) is split
49
+ * at its top-level commas; a media query and a `[CSS]` template stay whole.
50
+ */
51
+ export declare function itDarkModeSelector(selector?: string | readonly string[]): string | string[];
52
+ /** The PrimeVue `theme` configuration createInfotrustUI installs. */
53
+ export declare function itPrimeVueTheme(options?: Pick<InfotrustUIOptions, 'darkModeSelector' | 'cssLayerOrder'>): {
54
+ preset: import("@primeuix/themes/types").Preset;
55
+ options: {
56
+ darkModeSelector: string | string[];
57
+ cssLayer: {
58
+ name: string;
59
+ order: string;
60
+ };
61
+ };
62
+ };
63
+ /**
64
+ * The layer order to install: the app's, when it keeps every library layer in
65
+ * the library's order; otherwise the library's (a reordered or missing library
66
+ * layer would let app or PrimeVue styles restyle the components).
67
+ */
68
+ export declare function itCssLayerOrder(appOrder?: string): string;
69
+ export declare function createInfotrustUI(options?: InfotrustUIOptions): Plugin;
@@ -0,0 +1,18 @@
1
+ /** Display names for an entity kind. Platform identity stays in platformMeta. */
2
+ export interface EntityTypeMeta {
3
+ key: string;
4
+ name: string;
5
+ plural: string;
6
+ }
7
+ export interface EntityTypeNameOptions {
8
+ /** Explicit form; takes precedence over count. */
9
+ plural?: boolean;
10
+ /** Selects the noun form only. One is singular; other finite counts are plural. */
11
+ count?: number;
12
+ }
13
+ /** Add or override kinds at app startup, using sentence-case names and explicit plurals. */
14
+ export declare function registerEntityTypes(entries: Record<string, Omit<EntityTypeMeta, 'key'>>): void;
15
+ /** Resolve a kind. Unknown kinds use the humanized last dotted segment, never the namespace. */
16
+ export declare function entityTypeMeta(kind: string | null | undefined): EntityTypeMeta;
17
+ /** Return a noun only. Use formatCount separately when the number must also appear. */
18
+ export declare function entityTypeName(kind: string | null | undefined, options?: EntityTypeNameOptions): string;
@@ -0,0 +1,2 @@
1
+ import type { PlatformMark } from './platform-marks';
2
+ export declare const PLATFORM_ART: Record<string, PlatformMark>;
@@ -0,0 +1,12 @@
1
+ export interface PlatformMark {
2
+ /** The brand's logo as an SVG document, with a viewBox. Drawn as an image, so its ids never clash with the page. */
3
+ svg: string;
4
+ /** The brand's version for dark backgrounds (its black drawn white), when the logo needs one. */
5
+ dark?: string;
6
+ }
7
+ /** Platforms with built-in artwork. */
8
+ export declare const BUILT_IN_MARKS: ReadonlySet<string>;
9
+ /** Loads the built-in artwork once; later calls share it. */
10
+ export declare function loadBuiltInMarks(): Promise<Record<string, PlatformMark>>;
11
+ /** A built-in logo when the artwork has loaded already, so a later logo draws in the same frame. */
12
+ export declare function builtInMarkNow(key: string): PlatformMark | null;
@@ -0,0 +1,22 @@
1
+ import { type PlatformMark } from './platform-marks';
2
+ export type { PlatformMark };
3
+ /** Color family, mapped to `--it-color-platform-<family>-*`. */
4
+ export type PlatformFamily = 'blue' | 'amber' | 'indigo' | 'green' | 'teal' | 'neutral';
5
+ export interface PlatformMeta {
6
+ key: string;
7
+ /** Full name: "Google Analytics 4". */
8
+ name: string;
9
+ /** Short name for dense UI: "GA4". */
10
+ short: string;
11
+ family: PlatformFamily;
12
+ /** Optional logo URL (SVG preferred), drawn at 14px before the name. */
13
+ logo?: string;
14
+ /** The app's own logo for the platform, as an SVG document (`{ svg, dark? }`). Built-in platforms have theirs already (platformHasMark). */
15
+ mark?: PlatformMark;
16
+ }
17
+ /** Register or override a platform. Aliases are matched case- and punctuation-insensitively. */
18
+ export declare function registerPlatform(meta: PlatformMeta, aliases?: string[]): void;
19
+ /** Resolve any platform identifier ("ga4", "Google Analytics 4", "GA") to its metadata. */
20
+ export declare function platformMeta(platform: string | null | undefined): PlatformMeta;
21
+ /** Whether ItPlatformLogo draws a logo for the platform (the app's own, or a built-in one), without loading the artwork. */
22
+ export declare function platformHasMark(platform: string | null | undefined): boolean;
@@ -0,0 +1,23 @@
1
+ import type { StatusTone } from './status';
2
+ export type SeverityLevel = 'critical' | 'warning' | 'info' | 'passed' | 'unscored';
3
+ export interface SeverityMeta {
4
+ level: SeverityLevel;
5
+ label: string;
6
+ /** Sort order, most severe first. */
7
+ rank: number;
8
+ /** Token family: --it-color-status-<tone>-{fg,bg,border,solid}. */
9
+ tone: StatusTone;
10
+ }
11
+ export declare const SEVERITY: Record<SeverityLevel, SeverityMeta>;
12
+ export declare const SEVERITY_FLOORS: {
13
+ readonly critical: 4;
14
+ readonly warning: 2;
15
+ readonly info: 0;
16
+ };
17
+ /** Numeric score (or an existing level name) → severity level. */
18
+ export declare function severityLevel(value: number | string | null | undefined): SeverityLevel;
19
+ export declare function severityMeta(value: number | string | null | undefined): SeverityMeta;
20
+ /** CSS color for charts and bars: `var(--it-color-status-danger-solid)` for a critical score. */
21
+ export declare function severityColor(value: number | string | null | undefined): string;
22
+ /** Comparator for sorting by severity, most severe first. */
23
+ export declare function compareSeverity(a: number | string | null | undefined, b: number | string | null | undefined): number;
@@ -0,0 +1,13 @@
1
+ export type StatusTone = 'success' | 'warning' | 'danger' | 'info' | 'neutral';
2
+ export interface StatusMeta {
3
+ label: string;
4
+ tone: StatusTone;
5
+ /** Show an animated pulse on the dot (in-progress states). */
6
+ live?: boolean;
7
+ /** Paused for a person (awaiting approval): a light runs around the border of a DAG step with this status. */
8
+ waiting?: boolean;
9
+ }
10
+ /** Add or override statuses for one domain, e.g. registerStatuses('ticket', { auto_grantable: … }). */
11
+ export declare function registerStatuses(domain: string, statuses: Record<string, StatusMeta>): void;
12
+ /** Resolve a raw status string. Unknown statuses render as neutral with a sentence-case label. */
13
+ export declare function statusMeta(status: string | null | undefined, domain?: string): StatusMeta;
@@ -0,0 +1,26 @@
1
+ /* @infotrust/ui/styles.css — the one stylesheet an app imports.
2
+ *
3
+ * Cascade layers fix the order, so import position and selector specificity
4
+ * never decide who wins. Lowest to highest:
5
+ *
6
+ * it-tokens --it-* variables, light and dark
7
+ * it-base element defaults, focus, type-role classes
8
+ * primevue PrimeVue's theme, injected at runtime (createInfotrustUI
9
+ * declares the same layer order)
10
+ * it-components @infotrust/ui component styles
11
+ * it-overrides sizing PrimeVue's preset cannot express
12
+ *
13
+ * App CSS is unlayered, so it always beats every layer: a local token override
14
+ * or a page style wins with plain selectors, no forced priority.
15
+ *
16
+ * The font import is unlayered and follows the layer statement: bundlers hoist
17
+ * its url() import to the top, which keeps the order above intact. (Put it in
18
+ * a layer and the hoisted import would declare that layer first.) */
19
+
20
+ @layer it-tokens, it-base, primevue, it-components, it-overrides;
21
+
22
+ @import '@infotrust/design-tokens/fonts.css';
23
+ @import '@infotrust/design-tokens/tokens.css' layer(it-tokens);
24
+ @import '@infotrust/design-tokens/base.css' layer(it-base);
25
+ @import './components.css' layer(it-components);
26
+ @import '@infotrust/design-tokens/primevue.css' layer(it-overrides);
@@ -0,0 +1,470 @@
1
+ import { defineComponent as W, withDirectives as I, openBlock as u, createBlock as T, unref as m, normalizeClass as x, withCtx as me, resolveDynamicComponent as fe, createElementBlock as g, toDisplayString as B, createCommentVNode as S, watch as $, onBeforeUnmount as ee, ref as P, nextTick as ge, onMounted as ye, computed as p, createTextVNode as V, createElementVNode as te, normalizeStyle as he, Fragment as ve } from "vue";
2
+ import pe from "primevue/button";
3
+ const ke = 500, be = 120, K = 4, L = 8, b = /* @__PURE__ */ new WeakMap();
4
+ let s = null, c = null, A = null, ae, z;
5
+ function oe(e) {
6
+ if (e.scrollWidth - e.clientWidth > 1) return !0;
7
+ if (e.scrollHeight - e.clientHeight <= 1) return !1;
8
+ const t = getComputedStyle(e).webkitLineClamp;
9
+ return !!t && t !== "none" && e.scrollHeight - e.clientHeight > 1;
10
+ }
11
+ function U(e) {
12
+ return typeof e.showPopover == "function";
13
+ }
14
+ function we() {
15
+ return s != null && s.isConnected || (s = document.createElement("div"), s.className = "it-truncate-hint it-hint-surface", s.id = "it-shared-hint", s.setAttribute("aria-hidden", "true"), U(s) && (s.popover = "manual"), s.addEventListener("pointerenter", () => clearTimeout(z)), s.addEventListener("pointerleave", () => le()), document.body.append(s)), s;
16
+ }
17
+ function ne(e, t) {
18
+ const a = e.getBoundingClientRect(), o = document.documentElement.clientWidth, n = window.innerHeight, i = getComputedStyle(t), l = (parseFloat(i.paddingLeft) || 0) + (parseFloat(i.borderLeftWidth) || 0), { width: r, height: d } = t.getBoundingClientRect(), E = Math.min(Math.max(L, a.left - l), Math.max(L, o - L - r)), y = a.top - K - d, v = a.bottom + K, D = y >= L || v + d > n - L ? "top" : "bottom";
19
+ t.style.left = `${Math.round(E)}px`, t.style.top = `${Math.round(D === "top" ? Math.max(L, y) : v)}px`, t.dataset.side = D;
20
+ }
21
+ function ie(e, t) {
22
+ var l, r;
23
+ const a = typeof t == "object" && t ? t.text : t, o = (l = typeof t == "object" && t ? t.detail : null) == null ? void 0 : l.trim(), n = (a ?? e.textContent ?? "").trim(), i = [];
24
+ return n && ((r = b.get(e)) != null && r.always || oe(e)) && i.push(["it-truncate-hint__text", n]), o && i.push(["it-truncate-hint__detail", o]), i;
25
+ }
26
+ function se(e, t, a) {
27
+ const o = ie(e, t);
28
+ return o.length ? (a.replaceChildren(
29
+ ...o.map(([n, i]) => {
30
+ const l = document.createElement("span");
31
+ return l.className = n, l.textContent = i, l;
32
+ })
33
+ ), !0) : !1;
34
+ }
35
+ function Ee(e) {
36
+ const t = b.get(e);
37
+ if (!t || !e.isConnected || e.matches(':disabled, [aria-disabled="true"]')) return;
38
+ const a = we();
39
+ se(e, t.value, a) && (c = e, t.always ? (a.removeAttribute("aria-hidden"), a.setAttribute("role", "tooltip"), e.setAttribute("aria-describedby", [e.getAttribute("aria-describedby"), a.id].filter(Boolean).join(" "))) : (a.setAttribute("aria-hidden", "true"), a.removeAttribute("role")), a.style.left = "0px", a.style.top = "0px", a.classList.add("it-truncate-hint--open"), U(a) && !a.matches(":popover-open") && a.showPopover(), ne(e, a), document.addEventListener("keydown", re, !0), document.addEventListener("pointerdown", ue, !0), window.addEventListener("scroll", f, !0), window.addEventListener("resize", f));
40
+ }
41
+ function w(e) {
42
+ e && A !== e || (clearTimeout(ae), A = null);
43
+ }
44
+ function f() {
45
+ if (w(), clearTimeout(z), c && s) {
46
+ const e = (c.getAttribute("aria-describedby") ?? "").split(" ").filter((t) => t && t !== s.id);
47
+ e.length ? c.setAttribute("aria-describedby", e.join(" ")) : c.removeAttribute("aria-describedby");
48
+ }
49
+ c = null, document.removeEventListener("keydown", re, !0), document.removeEventListener("pointerdown", ue, !0), window.removeEventListener("scroll", f, !0), window.removeEventListener("resize", f), s && (s.removeAttribute("role"), s.classList.remove("it-truncate-hint--open"), U(s) && s.matches(":popover-open") && s.hidePopover());
50
+ }
51
+ function R(e) {
52
+ const t = b.get(e);
53
+ !t || !ie(e, t.value).length || (clearTimeout(z), !(A && e.contains(A)) && (c && e.contains(c) || (w(), c && f(), A = e, ae = setTimeout(() => {
54
+ A = null, Ee(e);
55
+ }, ke))));
56
+ }
57
+ function le() {
58
+ w(), clearTimeout(z), z = setTimeout(f, be);
59
+ }
60
+ function Le(e) {
61
+ R(e);
62
+ }
63
+ function Ae(e) {
64
+ c === e ? f() : w(e);
65
+ }
66
+ function re(e) {
67
+ e.key !== "Escape" || !c || (e.stopPropagation(), e.preventDefault(), f());
68
+ }
69
+ function ue(e) {
70
+ e.target instanceof Node && (s != null && s.contains(e.target)) || f();
71
+ }
72
+ function Te(e) {
73
+ try {
74
+ return e.matches(":focus-visible") || !!e.querySelector(":focus-visible");
75
+ } catch {
76
+ return !1;
77
+ }
78
+ }
79
+ function ce(e, t) {
80
+ return {
81
+ mounted(a, o) {
82
+ e || a.classList.add("it-truncate");
83
+ const n = (d) => {
84
+ d.pointerType !== "touch" && R(a);
85
+ }, i = () => {
86
+ c === a ? le() : w(a);
87
+ }, l = () => {
88
+ Te(a) && R(a);
89
+ }, r = () => {
90
+ c === a ? f() : w(a);
91
+ };
92
+ a.addEventListener("pointerenter", n), a.addEventListener("pointerleave", i), a.addEventListener("focusin", l), a.addEventListener("focusout", r), b.set(a, {
93
+ value: t(o.value),
94
+ always: e,
95
+ cleanup: () => {
96
+ a.removeEventListener("pointerenter", n), a.removeEventListener("pointerleave", i), a.removeEventListener("focusin", l), a.removeEventListener("focusout", r);
97
+ }
98
+ });
99
+ },
100
+ updated(a, o) {
101
+ e || a.classList.add("it-truncate");
102
+ const n = b.get(a);
103
+ n && (n.value = t(o.value), c === a && s && (se(a, n.value, s) ? ne(a, s) : f()));
104
+ },
105
+ beforeUnmount(a) {
106
+ var o;
107
+ w(a), (o = b.get(a)) == null || o.cleanup(), b.delete(a), c === a && f();
108
+ }
109
+ };
110
+ }
111
+ const Y = ce(!1, (e) => e), de = ce(
112
+ !0,
113
+ (e) => typeof e == "string" ? e : e && !e.disabled ? e.value ?? "" : ""
114
+ ), Ue = /* @__PURE__ */ W({
115
+ __name: "ItIconButton",
116
+ props: {
117
+ icon: {},
118
+ label: {},
119
+ tooltip: { type: [String, Boolean], default: void 0 },
120
+ size: { default: "md" },
121
+ variant: { default: "ghost" },
122
+ tone: { default: "default" },
123
+ pressed: { type: Boolean, default: void 0 },
124
+ badge: { type: [Number, Boolean] },
125
+ disabled: { type: Boolean },
126
+ loading: { type: Boolean }
127
+ },
128
+ setup(e) {
129
+ const t = de;
130
+ return (a, o) => I((u(), T(m(pe), {
131
+ class: x(["it-icon-button", { "it-icon-button--pressed": e.pressed }]),
132
+ "aria-label": e.label,
133
+ "aria-pressed": e.pressed,
134
+ "aria-busy": e.loading || void 0,
135
+ severity: e.tone === "accent" ? void 0 : e.tone === "danger" ? "danger" : "secondary",
136
+ text: e.variant === "ghost",
137
+ outlined: e.variant === "secondary",
138
+ size: e.size === "sm" ? "small" : void 0,
139
+ disabled: e.disabled || e.loading,
140
+ loading: e.loading
141
+ }, {
142
+ icon: me(() => [
143
+ (u(), T(fe(e.icon), {
144
+ size: e.size === "sm" ? 14 : 16,
145
+ "aria-hidden": "true"
146
+ }, null, 8, ["size"])),
147
+ e.badge !== void 0 && e.badge !== !1 ? (u(), g("span", {
148
+ key: 0,
149
+ class: x(["it-icon-button__badge", { "it-icon-button__badge--dot": e.badge === !0 }]),
150
+ "aria-hidden": "true"
151
+ }, B(e.badge === !0 ? "" : e.badge), 3)) : S("", !0)
152
+ ]),
153
+ _: 1
154
+ }, 8, ["class", "aria-label", "aria-pressed", "aria-busy", "severity", "text", "outlined", "size", "disabled", "loading"])), [
155
+ [
156
+ m(t),
157
+ e.tooltip === !1 ? void 0 : e.tooltip ?? e.label,
158
+ void 0,
159
+ { top: !0 }
160
+ ]
161
+ ]);
162
+ }
163
+ }), k = [];
164
+ function J(e) {
165
+ var t, a;
166
+ e.code !== "Escape" || e.isComposing || (a = (t = k[k.length - 1]) == null ? void 0 : t.onEscape) == null || a.call(t, e);
167
+ }
168
+ function xe(e) {
169
+ return !k.length && typeof document < "u" && document.addEventListener("keydown", J), k.push(e), () => {
170
+ const t = k.indexOf(e);
171
+ t < 0 || (k.splice(t, 1), !k.length && typeof document < "u" && document.removeEventListener("keydown", J));
172
+ };
173
+ }
174
+ function qe(e, t) {
175
+ let a = null;
176
+ const o = (n) => {
177
+ n && !a ? a = xe({ onEscape: t }) : !n && a && (a(), a = null);
178
+ };
179
+ $(e, o, { immediate: !0 }), ee(() => o(!1));
180
+ }
181
+ const H = /* @__PURE__ */ new Set([
182
+ "ad-manager",
183
+ "adobe",
184
+ "amazon",
185
+ "amplitude",
186
+ "bigquery",
187
+ "cm360",
188
+ "dv360",
189
+ "excel",
190
+ "ga4",
191
+ "gmail",
192
+ "google",
193
+ "google-ads",
194
+ "google-cloud",
195
+ "google-drive",
196
+ "google-sheets",
197
+ "gtm",
198
+ "hubspot",
199
+ "instagram",
200
+ "jira",
201
+ "linkedin",
202
+ "looker-studio",
203
+ "meta",
204
+ "microsoft",
205
+ "microsoft-teams",
206
+ "pinterest",
207
+ "reddit",
208
+ "sa360",
209
+ "salesforce",
210
+ "segment",
211
+ "servicenow",
212
+ "shopify",
213
+ "slack",
214
+ "snapchat",
215
+ "snowflake",
216
+ "tag-inspector",
217
+ "tealium",
218
+ "tiktok",
219
+ "x",
220
+ "youtube"
221
+ ]);
222
+ let Q = null, G = null;
223
+ function Se() {
224
+ return Q ?? (Q = import("./platform-art-Bt1CnaKE.js").then((e) => G = e.PLATFORM_ART)), Q;
225
+ }
226
+ function ze(e) {
227
+ return (G == null ? void 0 : G[e]) ?? null;
228
+ }
229
+ const O = {}, F = {}, j = (e) => e.trim().toLowerCase().replace(/[^a-z0-9]/g, "");
230
+ function Me(e, t = []) {
231
+ O[e.key] = e;
232
+ for (const a of [e.key, e.name, e.short, ...t]) F[j(a)] = e.key;
233
+ }
234
+ const Ce = [
235
+ // Google Marketing Platform and Google Cloud
236
+ [{ key: "google", name: "Google", short: "Google", family: "blue" }, ["googleaccount", "googleoauth"]],
237
+ [{ key: "gtm", name: "Google Tag Manager", short: "GTM", family: "blue" }, ["googletagmanager", "tagmanager"]],
238
+ [{ key: "ga4", name: "Google Analytics 4", short: "GA4", family: "amber" }, ["googleanalytics", "googleanalytics4", "ga"]],
239
+ [{ key: "google-ads", name: "Google Ads", short: "Google Ads", family: "blue" }, ["googleads", "adwords"]],
240
+ [{ key: "dv360", name: "Display & Video 360", short: "DV360", family: "indigo" }, ["displayvideo360", "displayandvideo360"]],
241
+ [{ key: "cm360", name: "Campaign Manager 360", short: "CM360", family: "indigo" }, ["campaignmanager360", "cm"]],
242
+ [{ key: "sa360", name: "Search Ads 360", short: "SA360", family: "indigo" }, ["searchads360"]],
243
+ [{ key: "ad-manager", name: "Google Ad Manager", short: "Ad Manager", family: "blue" }, ["googleadmanager", "gam", "dfp"]],
244
+ [{ key: "bigquery", name: "BigQuery", short: "BigQuery", family: "blue" }, ["googlebigquery", "bq"]],
245
+ [{ key: "looker-studio", name: "Looker Studio", short: "Looker Studio", family: "blue" }, ["datastudio", "googledatastudio"]],
246
+ [{ key: "google-cloud", name: "Google Cloud", short: "Google Cloud", family: "blue" }, ["gcp", "googlecloudplatform"]],
247
+ [{ key: "youtube", name: "YouTube", short: "YouTube", family: "neutral" }, ["youtubeads"]],
248
+ // Google Workspace
249
+ [{ key: "gmail", name: "Gmail", short: "Gmail", family: "neutral" }, ["googlemail"]],
250
+ [{ key: "google-sheets", name: "Google Sheets", short: "Sheets", family: "green" }, ["sheets", "gsheets"]],
251
+ [{ key: "google-drive", name: "Google Drive", short: "Drive", family: "neutral" }, ["drive", "gdrive"]],
252
+ // Ad and social platforms
253
+ [{ key: "meta", name: "Meta", short: "Meta", family: "indigo" }, ["facebook", "metaads"]],
254
+ [{ key: "instagram", name: "Instagram", short: "Instagram", family: "indigo" }, ["ig"]],
255
+ [{ key: "tiktok", name: "TikTok", short: "TikTok", family: "neutral" }, ["tiktokads"]],
256
+ [{ key: "snapchat", name: "Snapchat", short: "Snapchat", family: "amber" }, ["snap", "snapchatads"]],
257
+ [{ key: "linkedin", name: "LinkedIn", short: "LinkedIn", family: "blue" }, ["linkedinads"]],
258
+ [{ key: "pinterest", name: "Pinterest", short: "Pinterest", family: "neutral" }, ["pinterestads"]],
259
+ [{ key: "reddit", name: "Reddit", short: "Reddit", family: "amber" }, ["redditads"]],
260
+ [{ key: "x", name: "X", short: "X", family: "neutral" }, ["twitter", "xads"]],
261
+ [{ key: "amazon", name: "Amazon Ads", short: "Amazon", family: "amber" }, ["amazonads"]],
262
+ [{ key: "microsoft", name: "Microsoft Advertising", short: "Microsoft", family: "green" }, ["bing", "microsoftads"]],
263
+ // Analytics, tag management, and data
264
+ [{ key: "adobe", name: "Adobe Analytics", short: "Adobe", family: "neutral" }, ["adobeanalytics", "omniture"]],
265
+ [{ key: "tealium", name: "Tealium", short: "Tealium", family: "teal" }, ["tealiumiq"]],
266
+ [{ key: "segment", name: "Segment", short: "Segment", family: "green" }, ["twiliosegment"]],
267
+ [{ key: "amplitude", name: "Amplitude", short: "Amplitude", family: "indigo" }, []],
268
+ [{ key: "snowflake", name: "Snowflake", short: "Snowflake", family: "blue" }, []],
269
+ [{ key: "tag-inspector", name: "Tag Inspector", short: "Tag Inspector", family: "teal" }, ["taginspector", "ti"]],
270
+ // Work tools
271
+ [{ key: "servicenow", name: "ServiceNow", short: "ServiceNow", family: "green" }, ["snow", "sn"]],
272
+ [{ key: "jira", name: "Jira", short: "Jira", family: "blue" }, ["atlassianjira"]],
273
+ [{ key: "slack", name: "Slack", short: "Slack", family: "indigo" }, []],
274
+ [{ key: "microsoft-teams", name: "Microsoft Teams", short: "Teams", family: "indigo" }, ["teams", "msteams"]],
275
+ [{ key: "excel", name: "Microsoft Excel", short: "Excel", family: "green" }, ["msexcel", "xlsx"]],
276
+ [{ key: "salesforce", name: "Salesforce", short: "Salesforce", family: "blue" }, ["sfdc"]],
277
+ [{ key: "hubspot", name: "HubSpot", short: "HubSpot", family: "amber" }, []],
278
+ [{ key: "shopify", name: "Shopify", short: "Shopify", family: "green" }, []]
279
+ ];
280
+ for (const [e, t] of Ce) Me(e, t);
281
+ function q(e) {
282
+ const t = e ? j(e) : "", a = t && Object.hasOwn(F, t) ? F[t] : void 0;
283
+ if (a && Object.hasOwn(O, a)) return O[a];
284
+ const o = (e == null ? void 0 : e.trim()) || "Unknown";
285
+ return { key: j(o) || "unknown", name: o, short: o, family: "neutral" };
286
+ }
287
+ function Ie(e) {
288
+ const t = q(e);
289
+ return !!t.mark || H.has(t.key);
290
+ }
291
+ const C = /* @__PURE__ */ new WeakMap();
292
+ let h;
293
+ function Be(e) {
294
+ const t = P(null), a = P(!1);
295
+ let o = !0;
296
+ const n = () => {
297
+ o && (a.value = !!t.value && oe(t.value));
298
+ };
299
+ $(t, (r, d) => {
300
+ d && (h == null || h.unobserve(d), C.delete(d)), r && typeof ResizeObserver < "u" && (h ?? (h = new ResizeObserver((E) => {
301
+ var y;
302
+ for (const v of E) (y = C.get(v.target)) == null || y();
303
+ })), C.set(r, n), h.observe(r)), n();
304
+ }, { flush: "post" }), $(e, () => ge(n)), ye(() => {
305
+ var r;
306
+ (r = document.fonts) == null || r.ready.then(n);
307
+ }), ee(() => {
308
+ o = !1, t.value && (h == null || h.unobserve(t.value), C.delete(t.value));
309
+ });
310
+ function i(r) {
311
+ t.value && r.target.matches(":focus-visible") && Le(t.value);
312
+ }
313
+ function l() {
314
+ t.value && Ae(t.value);
315
+ }
316
+ return { textElement: t, truncated: a, onFocus: i, onBlur: l };
317
+ }
318
+ const Ge = ["src"], $e = { class: "it-sr-only" }, De = ["tabindex", "role", "aria-label"], Ne = ["src"], Pe = /* @__PURE__ */ W({
319
+ __name: "ItPlatformChip",
320
+ props: {
321
+ platform: {},
322
+ name: { default: "short" },
323
+ label: { default: void 0 },
324
+ shape: { default: "chip" },
325
+ logo: { type: Boolean, default: !1 },
326
+ size: { default: "sm" }
327
+ },
328
+ setup(e) {
329
+ const t = e, a = de, o = p(() => q(t.platform)), n = p(() => t.logo && Ie(t.platform)), i = p(() => t.label ?? (t.name === "full" ? o.value.name : o.value.short)), l = p(() => i.value === o.value.name ? i.value : `${i.value} (${o.value.name})`), { textElement: r, truncated: d, onFocus: E, onBlur: y } = Be(i), v = p(() => d.value || i.value === o.value.name ? void 0 : o.value.name);
330
+ return (D, M) => v.value ? I((u(), g("span", {
331
+ key: 0,
332
+ class: x(["it-platform", [`it-platform--${o.value.family}`, { "it-platform--md": e.size === "md", "it-platform--pill": e.shape === "pill" }]])
333
+ }, [
334
+ o.value.logo ? (u(), g("img", {
335
+ key: 0,
336
+ src: o.value.logo,
337
+ alt: "",
338
+ class: "it-platform__logo"
339
+ }, null, 8, Ge)) : n.value ? (u(), T(_, {
340
+ key: 1,
341
+ platform: e.platform,
342
+ size: e.size === "sm" ? 12 : 14,
343
+ decorative: ""
344
+ }, null, 8, ["platform", "size"])) : S("", !0),
345
+ I((u(), g("span", {
346
+ ref_key: "textElement",
347
+ ref: r,
348
+ class: "it-platform__name"
349
+ }, [
350
+ V(B(i.value), 1)
351
+ ])), [
352
+ [m(Y), l.value]
353
+ ]),
354
+ te("span", $e, "(" + B(o.value.name) + ")", 1)
355
+ ], 2)), [
356
+ [m(a), v.value]
357
+ ]) : (u(), g("span", {
358
+ key: 1,
359
+ class: x(["it-platform", [`it-platform--${o.value.family}`, { "it-platform--md": e.size === "md", "it-platform--pill": e.shape === "pill" }]]),
360
+ tabindex: m(d) ? 0 : void 0,
361
+ role: m(d) ? "img" : void 0,
362
+ "aria-label": m(d) ? l.value : void 0,
363
+ onFocus: M[0] || (M[0] = //@ts-ignore
364
+ (...N) => m(E) && m(E)(...N)),
365
+ onBlur: M[1] || (M[1] = //@ts-ignore
366
+ (...N) => m(y) && m(y)(...N))
367
+ }, [
368
+ o.value.logo ? (u(), g("img", {
369
+ key: 0,
370
+ src: o.value.logo,
371
+ alt: "",
372
+ class: "it-platform__logo"
373
+ }, null, 8, Ne)) : n.value ? (u(), T(_, {
374
+ key: 1,
375
+ platform: e.platform,
376
+ size: e.size === "sm" ? 12 : 14,
377
+ decorative: ""
378
+ }, null, 8, ["platform", "size"])) : S("", !0),
379
+ I((u(), g("span", {
380
+ ref_key: "textElement",
381
+ ref: r,
382
+ class: "it-platform__name"
383
+ }, [
384
+ V(B(i.value), 1)
385
+ ])), [
386
+ [m(Y), l.value]
387
+ ])
388
+ ], 42, De));
389
+ }
390
+ }), Re = ["role", "aria-label", "aria-hidden"], He = ["src"], Oe = ["src"], Fe = ["src", "width", "height", "alt"], X = /* @__PURE__ */ new Map();
391
+ function Z(e) {
392
+ let t = X.get(e);
393
+ return t || X.set(e, t = `data:image/svg+xml,${encodeURIComponent(e)}`), t;
394
+ }
395
+ const _ = /* @__PURE__ */ W({
396
+ __name: "ItPlatformLogo",
397
+ props: {
398
+ platform: {},
399
+ size: { default: 20 },
400
+ decorative: { type: Boolean, default: !1 }
401
+ },
402
+ setup(e) {
403
+ const t = e, a = p(() => q(t.platform)), o = p(() => !a.value.mark && H.has(a.value.key)), n = P(null);
404
+ return $(
405
+ a,
406
+ async (i) => {
407
+ if (i.mark || !H.has(i.key)) {
408
+ n.value = i.mark ?? null;
409
+ return;
410
+ }
411
+ if (n.value = ze(i.key), n.value) return;
412
+ const l = await Se();
413
+ a.value === i && (n.value = l[i.key] ?? null);
414
+ },
415
+ { immediate: !0 }
416
+ ), (i, l) => a.value.mark || o.value ? (u(), g("span", {
417
+ key: 0,
418
+ class: "it-platform-logo",
419
+ style: he({ width: `${e.size}px`, height: `${e.size}px` }),
420
+ role: e.decorative ? void 0 : "img",
421
+ "aria-label": e.decorative ? void 0 : a.value.name,
422
+ "aria-hidden": e.decorative ? "true" : void 0
423
+ }, [
424
+ n.value ? (u(), g(ve, { key: 0 }, [
425
+ te("img", {
426
+ class: x(["it-platform-logo__art", { "it-platform-logo__art--light": n.value.dark }]),
427
+ src: Z(n.value.svg),
428
+ alt: "",
429
+ draggable: "false"
430
+ }, null, 10, He),
431
+ n.value.dark ? (u(), g("img", {
432
+ key: 0,
433
+ class: "it-platform-logo__art it-platform-logo__art--dark",
434
+ src: Z(n.value.dark),
435
+ alt: "",
436
+ draggable: "false"
437
+ }, null, 8, Oe)) : S("", !0)
438
+ ], 64)) : S("", !0)
439
+ ], 12, Re)) : a.value.logo ? (u(), g("img", {
440
+ key: 1,
441
+ class: "it-platform-logo",
442
+ src: a.value.logo,
443
+ width: e.size,
444
+ height: e.size,
445
+ alt: e.decorative ? "" : a.value.name
446
+ }, null, 8, Fe)) : (u(), T(Pe, {
447
+ key: 2,
448
+ platform: e.platform
449
+ }, null, 8, ["platform"]));
450
+ }
451
+ });
452
+ function Ve(e) {
453
+ const t = e.split(/\s/, 1)[0] ?? "";
454
+ return t.length > 1 && t === t.toUpperCase() && /[A-Z]/.test(t) ? e : e.charAt(0).toLowerCase() + e.slice(1);
455
+ }
456
+ export {
457
+ ke as I,
458
+ Ue as _,
459
+ _ as a,
460
+ de as b,
461
+ Pe as c,
462
+ Ie as d,
463
+ Be as e,
464
+ xe as f,
465
+ Ve as i,
466
+ q as p,
467
+ Me as r,
468
+ qe as u,
469
+ Y as v
470
+ };