@robosophy/ui-vue 1.1.12 → 1.1.13

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.
package/dist/index.js CHANGED
@@ -588,7 +588,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
588
588
  modules: { default: () => [] },
589
589
  navigateOnModuleSelect: { type: Boolean, default: false },
590
590
  title: { default: "" },
591
- icon: { default: "nest_eco_leaf" },
591
+ icon: { default: void 0 },
592
592
  expanded: { type: Boolean, default: false },
593
593
  expandOnHover: { type: Boolean, default: true },
594
594
  mobileOpen: { type: Boolean, default: false },
@@ -597,6 +597,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
597
597
  },
598
598
  emits: ["item-click", "close-mobile", "expanded-change", "module-select"],
599
599
  setup(__props, { emit: __emit }) {
600
+ const variantIconMap = {
601
+ pc: "article",
602
+ alta: "account_circle",
603
+ cc: "account_balance_wallet",
604
+ pog: "account_balance_wallet",
605
+ cyo: "nest_eco_leaf"
606
+ };
600
607
  const props = __props;
601
608
  const emit = __emit;
602
609
  const isHovered = ref(false);
@@ -633,6 +640,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
633
640
  const isExpanded = computed(() => props.expanded || props.mobileOpen || isHovered.value);
634
641
  const hasHeaderAction = computed(() => props.mobileOpen);
635
642
  const hasModuleSelector = computed(() => props.modules.length > 0);
643
+ const resolvedIcon = computed(() => props.icon ?? variantIconMap[props.variant]);
636
644
  const rootClass = computed(() => [
637
645
  "rs-sidebar",
638
646
  `rs-sidebar--${props.variant}`,
@@ -758,7 +766,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
758
766
  "aria-haspopup": "menu",
759
767
  onClick: toggleModuleMenu
760
768
  }, [
761
- createVNode(unref(_sfc_main$2), { name: __props.icon }, null, 8, ["name"]),
769
+ createVNode(unref(_sfc_main$2), { name: resolvedIcon.value }, null, 8, ["name"]),
762
770
  createElementVNode("span", _hoisted_4, toDisplayString(displayedHeaderTitle.value), 1),
763
771
  createVNode(unref(_sfc_main$2), {
764
772
  class: "rs-sidebar__module-chevron",
@@ -767,7 +775,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
767
775
  size: "sm"
768
776
  }, null, 8, ["name"])
769
777
  ], 8, _hoisted_3)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
770
- createVNode(unref(_sfc_main$2), { name: __props.icon }, null, 8, ["name"]),
778
+ createVNode(unref(_sfc_main$2), { name: resolvedIcon.value }, null, 8, ["name"]),
771
779
  createElementVNode("span", _hoisted_5, toDisplayString(displayedHeaderTitle.value), 1)
772
780
  ], 64))
773
781
  ], 2),
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/RsIcon/RsIcon.vue","../src/components/RsIcon/index.ts","../src/components/RsAccountSelector/RsAccountSelector.vue","../src/components/RsSidebar/RsSidebar.vue","../src/plugin.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from \"vue\";\r\n\r\nimport type { RsIconProps } from \"./RsIcon.types\";\r\n\r\ndefineOptions({\r\n name: \"RsIcon\",\r\n});\r\n\r\nconst GRADE_VALUES = [200, 0, -25] as const;\r\nconst SEMANTIC_COLORS = [\"primary\", \"secondary\", \"success\", \"warning\", \"danger\", \"inherit\"] as const;\r\n\r\nconst props = withDefaults(defineProps<RsIconProps>(), {\r\n color: \"inherit\",\r\n family: \"outlined\",\r\n fill: false,\r\n grade: 0,\r\n interactive: false,\r\n notification: false,\r\n size: \"md\",\r\n weight: 400,\r\n});\r\n\r\nfunction clampGrade(grade: number): number {\r\n return GRADE_VALUES.reduce((nearest, g) =>\r\n Math.abs(g - grade) < Math.abs(nearest - grade) ? g : nearest,\r\n );\r\n}\r\n\r\nconst symbolHref = computed(() => {\r\n const family = props.family;\r\n const name = props.name;\r\n\r\n let gradeSuffix = \"\";\r\n const clamped = clampGrade(props.grade);\r\n if (clamped !== 0) {\r\n gradeSuffix = clamped > 0 ? `-grad${clamped}` : `-gradN${Math.abs(clamped)}`;\r\n }\r\n\r\n const fillSuffix = props.fill ? \"-fill\" : \"\";\r\n const weightSuffix = props.weight !== 400 ? `-wght${props.weight}` : \"\";\r\n\r\n return `#rs-icon-${family}-${name}${gradeSuffix}${fillSuffix}${weightSuffix}`;\r\n});\r\n\r\nconst isCustomColor = computed(\r\n () => !(SEMANTIC_COLORS as readonly string[]).includes(props.color),\r\n);\r\n\r\nconst iconSize = computed(() => {\r\n if (typeof props.size === \"number\") return props.size;\r\n if (props.size === \"sm\") return 18;\r\n if (props.size === \"lg\") return 32;\r\n return 24;\r\n});\r\n\r\nconst rootClass = computed(() => [\r\n \"rs-icon\",\r\n `rs-icon--${props.family}`,\r\n ...(isCustomColor.value ? [] : [`rs-icon--${props.color}`]),\r\n {\r\n \"rs-icon--interactive\": props.interactive,\r\n \"rs-icon--sm\": props.size === \"sm\",\r\n \"rs-icon--md\": props.size === \"md\",\r\n \"rs-icon--lg\": props.size === \"lg\",\r\n },\r\n]);\r\n\r\nconst rootStyle = computed(() => ({\r\n \"--rs-icon-color\": isCustomColor.value ? props.color : undefined,\r\n \"--rs-icon-size\": `${iconSize.value}px`,\r\n}));\r\n\r\nconst ariaHidden = computed(() => (props.ariaLabel ? undefined : \"true\"));\r\nconst role = computed(() => (props.ariaLabel ? \"img\" : undefined));\r\n\r\nconst notificationStyle = computed(() =>\r\n props.notificationColor ? { backgroundColor: props.notificationColor } : undefined,\r\n);\r\n</script>\r\n\r\n<template>\r\n <span v-if=\"notification\" class=\"rs-icon-wrap\">\r\n <svg\r\n :aria-hidden=\"ariaHidden\"\r\n :aria-label=\"ariaLabel\"\r\n :class=\"rootClass\"\r\n :role=\"role\"\r\n :style=\"rootStyle\"\r\n :width=\"iconSize\"\r\n :height=\"iconSize\"\r\n fill=\"currentColor\"\r\n >\r\n <use :href=\"symbolHref\" />\r\n </svg>\r\n <span\r\n class=\"rs-icon__notification\"\r\n aria-hidden=\"true\"\r\n :style=\"notificationStyle\"\r\n />\r\n </span>\r\n <svg\r\n v-else\r\n :aria-hidden=\"ariaHidden\"\r\n :aria-label=\"ariaLabel\"\r\n :class=\"rootClass\"\r\n :role=\"role\"\r\n :style=\"rootStyle\"\r\n :width=\"iconSize\"\r\n :height=\"iconSize\"\r\n fill=\"currentColor\"\r\n >\r\n <use :href=\"symbolHref\" />\r\n </svg>\r\n</template>\r\n\r\n<style src=\"./RsIcon.css\"></style>\r\n","import \"./RsIcon.css\";\r\n\r\nimport type { RsIconFamily, RsPrimeIconOptions } from \"./RsIcon.types\";\r\n\r\nconst iconNamePattern = /^[a-z0-9_]+$/;\r\n\r\nexport function rsPrimeIcon(name: string, options: RsPrimeIconOptions = {}) {\r\n const family: RsIconFamily = options.family ?? \"outlined\";\r\n const normalizedName = name.trim();\r\n\r\n if (!iconNamePattern.test(normalizedName)) {\r\n throw new Error(`Invalid Material Symbols icon name: \"${name}\"`);\r\n }\r\n\r\n return `rs-icon rs-icon--prime rs-icon--${family} rs-icon-${normalizedName}`;\r\n}\r\n\r\nexport { default } from \"./RsIcon.vue\";\r\nexport type {\r\n RsIconColor,\r\n RsIconFamily,\r\n RsIconProps,\r\n RsIconSize,\r\n RsIconWeight,\r\n RsPrimeIconOptions,\r\n} from \"./RsIcon.types\";\r\n","<script setup lang=\"ts\">\r\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from \"vue\";\r\nimport Button from \"primevue/button\";\r\n\r\nimport RsIcon from \"../RsIcon\";\r\nimport type {\r\n RsAccountSelectorAccount,\r\n RsAccountSelectorAction,\r\n RsAccountSelectorProps,\r\n} from \"./RsAccountSelector.types\";\r\n\r\ndefineOptions({\r\n name: \"RsAccountSelector\",\r\n});\r\n\r\nconst props = withDefaults(defineProps<RsAccountSelectorProps>(), {\r\n accounts: () => [],\r\n actions: () => [],\r\n activeText: \"Activo en pantalla\",\r\n emptyText: \"\",\r\n footerActions: () => [],\r\n loading: false,\r\n modelValue: null,\r\n selectText: \"Ingresar\",\r\n triggerAriaLabel: \"Abrir selector de cuenta\",\r\n width: \"270px\",\r\n});\r\n\r\nconst emit = defineEmits<{\r\n \"select-account\": [account: RsAccountSelectorAccount];\r\n action: [action: RsAccountSelectorAction];\r\n \"footer-action\": [action: RsAccountSelectorAction];\r\n \"update:modelValue\": [open: boolean];\r\n open: [];\r\n close: [];\r\n}>();\r\n\r\nconst rootRef = ref<HTMLElement | null>(null);\r\nconst panelRef = ref<HTMLElement | null>(null);\r\nconst internalOpen = ref(false);\r\n\r\nconst panelCSSVars = {\r\n \"--rs-account-selector-width\": props.width,\r\n \"--rs-account-selector-background\": \"var(--rs-color-surface-primary, #ffffff)\",\r\n \"--rs-account-selector-border\": \"var(--rs-color-stroke-default, #d1d1d1)\",\r\n \"--rs-account-selector-color\": \"var(--rs-color-text-primary, #000000)\",\r\n \"--rs-account-selector-muted\": \"var(--rs-color-text-secondary, #909090)\",\r\n \"--rs-account-selector-active\": \"var(--rs-color-text-brand-green, #4eae01)\",\r\n \"--rs-account-selector-danger\": \"var(--rs-color-text-brand-red, #d80115)\",\r\n};\r\n\r\nconst panelPosition = ref<Record<string, string>>({});\r\n\r\nlet scrollRAF: number | null = null;\r\n\r\nconst isControlled = computed(() => props.modelValue !== null);\r\nconst isOpen = computed(() =>\r\n isControlled.value ? Boolean(props.modelValue) : internalOpen.value,\r\n);\r\nconst rootStyle = computed(() => ({\r\n \"--rs-account-selector-width\": props.width,\r\n}));\r\n\r\nconst computedTitle = computed(() => {\r\n if (props.title) {\r\n return props.title;\r\n }\r\n\r\n return props.accounts.length > 1\r\n ? `Acceso a ${props.accounts.length} Cuentas`\r\n : \"Acceso a\";\r\n});\r\n\r\nconst visibleActions = computed(() =>\r\n props.actions.filter((action) => action.visible !== false),\r\n);\r\nconst visibleFooterActions = computed(() =>\r\n props.footerActions.filter((action) => action.visible !== false),\r\n);\r\nconst shouldShowAccounts = computed(() => props.accounts.length > 1);\r\nconst profileAction: RsAccountSelectorAction = {\r\n id: \"profile\",\r\n label: \"Ver mi perfil\",\r\n};\r\n\r\nfunction headerButtonProps(action: RsAccountSelectorAction) {\r\n return action.variant === \"danger\"\r\n ? { severity: \"danger\" as const, outlined: true, rounded: true }\r\n : { severity: \"secondary\" as const, outlined: true, rounded: true };\r\n}\r\n\r\nfunction footerButtonProps(action: RsAccountSelectorAction) {\r\n return action.variant === \"danger\"\r\n ? { severity: \"danger\" as const, text: true }\r\n : { severity: \"secondary\" as const, text: true };\r\n}\r\n\r\nfunction emitAction(action: RsAccountSelectorAction) {\r\n if (!action.disabled) {\r\n emit(\"action\", action);\r\n closeSelector();\r\n }\r\n}\r\n\r\nfunction emitFooterAction(action: RsAccountSelectorAction) {\r\n if (!action.disabled) {\r\n emit(\"footer-action\", action);\r\n closeSelector();\r\n }\r\n}\r\n\r\nfunction selectAccount(account: RsAccountSelectorAccount) {\r\n if (!account.active && !account.disabled) {\r\n emit(\"select-account\", account);\r\n closeSelector();\r\n }\r\n}\r\n\r\nfunction getInitials(initials?: string) {\r\n return (initials?.trim() || \"?\").slice(0, 3);\r\n}\r\n\r\nfunction setOpen(nextOpen: boolean) {\r\n if (!isControlled.value) {\r\n internalOpen.value = nextOpen;\r\n }\r\n\r\n emit(\"update:modelValue\", nextOpen);\r\n\r\n if (nextOpen) {\r\n emit(\"open\");\r\n } else {\r\n emit(\"close\");\r\n }\r\n}\r\n\r\nfunction toggleSelector() {\r\n setOpen(!isOpen.value);\r\n}\r\n\r\nfunction closeSelector() {\r\n if (isOpen.value) {\r\n setOpen(false);\r\n }\r\n}\r\n\r\nfunction updatePanelPosition() {\r\n const root = rootRef.value;\r\n const panel = panelRef.value;\r\n\r\n if (!root || !panel) {\r\n return;\r\n }\r\n\r\n const viewportWidth = window.innerWidth;\r\n const viewportPadding = 16;\r\n const rootRect = root.getBoundingClientRect();\r\n const panelRect = panel.getBoundingClientRect();\r\n const fitsRight = rootRect.left + panelRect.width <= viewportWidth - viewportPadding;\r\n const fitsLeft = rootRect.right - panelRect.width >= viewportPadding;\r\n\r\n let left: number;\r\n if (fitsRight) {\r\n left = rootRect.left;\r\n } else if (fitsLeft) {\r\n left = rootRect.right - panelRect.width;\r\n } else {\r\n left = Math.max(\r\n viewportPadding,\r\n Math.min(rootRect.left, viewportWidth - viewportPadding - panelRect.width),\r\n );\r\n }\r\n\r\n panelPosition.value = {\r\n position: \"fixed\",\r\n top: `${rootRect.bottom + 8}px`,\r\n left: `${left}px`,\r\n };\r\n}\r\n\r\nfunction handleWindowResize() {\r\n if (isOpen.value) {\r\n void updatePanelPosition();\r\n }\r\n}\r\n\r\nfunction handleScroll() {\r\n if (isOpen.value) {\r\n if (scrollRAF === null) {\r\n scrollRAF = window.requestAnimationFrame(() => {\r\n scrollRAF = null;\r\n void updatePanelPosition();\r\n });\r\n }\r\n }\r\n}\r\n\r\nfunction handleDocumentPointerDown(event: PointerEvent) {\r\n const target = event.target;\r\n\r\n if (\r\n target instanceof Node &&\r\n rootRef.value &&\r\n !rootRef.value.contains(target) &&\r\n !panelRef.value?.contains(target)\r\n ) {\r\n closeSelector();\r\n }\r\n}\r\n\r\nonMounted(() => {\r\n document.addEventListener(\"pointerdown\", handleDocumentPointerDown);\r\n window.addEventListener(\"resize\", handleWindowResize);\r\n window.addEventListener(\"scroll\", handleScroll, { passive: true });\r\n\r\n if (isOpen.value) {\r\n void updatePanelPosition();\r\n }\r\n});\r\n\r\nonBeforeUnmount(() => {\r\n document.removeEventListener(\"pointerdown\", handleDocumentPointerDown);\r\n window.removeEventListener(\"resize\", handleWindowResize);\r\n window.removeEventListener(\"scroll\", handleScroll);\r\n\r\n if (scrollRAF !== null) {\r\n cancelAnimationFrame(scrollRAF);\r\n }\r\n});\r\n\r\nwatch(isOpen, (open) => {\r\n if (open) {\r\n void nextTick().then(updatePanelPosition);\r\n }\r\n});\r\n</script>\r\n\r\n<template>\r\n <div ref=\"rootRef\" class=\"rs-account-selector-host\" :style=\"rootStyle\">\r\n <Button\r\n :aria-expanded=\"isOpen\"\r\n :aria-label=\"triggerAriaLabel\"\r\n aria-haspopup=\"menu\"\r\n :class=\"[\r\n 'rs-account-selector__trigger',\r\n { 'rs-account-selector__trigger--open': isOpen },\r\n ]\"\r\n text\r\n @click.stop=\"toggleSelector\"\r\n >\r\n <RsIcon\r\n class=\"rs-account-selector__trigger-chevron\"\r\n family=\"rounded\"\r\n name=\"arrow_drop_down\"\r\n :size=\"22\"\r\n />\r\n <slot name=\"trigger-avatar\" :user=\"user\">\r\n <span class=\"rs-account-selector__trigger-avatar\">\r\n <img\r\n v-if=\"user.avatarSrc\"\r\n class=\"rs-account-selector__avatar-image\"\r\n :src=\"user.avatarSrc\"\r\n :alt=\"user.name || user.email\"\r\n />\r\n <span\r\n v-else\r\n class=\"rs-account-selector__avatar-placeholder\"\r\n aria-hidden=\"true\"\r\n >\r\n {{ getInitials(user.initials) }}\r\n </span>\r\n </span>\r\n </slot>\r\n </Button>\r\n\r\n <Teleport to=\"body\" v-if=\"isOpen\">\r\n <section\r\n ref=\"panelRef\"\r\n :aria-busy=\"loading || undefined\"\r\n class=\"rs-account-selector\"\r\n :style=\"[panelCSSVars, panelPosition]\"\r\n >\r\n <header class=\"rs-account-selector__summary\">\r\n <slot name=\"user-avatar\" :user=\"user\">\r\n <span class=\"rs-account-selector__avatar-stack\">\r\n <span\r\n class=\"rs-account-selector__avatar rs-account-selector__avatar--lg\"\r\n >\r\n <img\r\n v-if=\"user.avatarSrc\"\r\n class=\"rs-account-selector__avatar-image\"\r\n :src=\"user.avatarSrc\"\r\n :alt=\"user.name || user.email\"\r\n />\r\n <span\r\n v-else\r\n class=\"rs-account-selector__avatar-placeholder\"\r\n aria-hidden=\"true\"\r\n >\r\n {{ getInitials(user.initials) }}\r\n </span>\r\n </span>\r\n <span\r\n v-if=\"user.secondaryAvatarSrc\"\r\n class=\"rs-account-selector__avatar rs-account-selector__avatar--lg rs-account-selector__secondary-avatar\"\r\n >\r\n <img\r\n class=\"rs-account-selector__avatar-image\"\r\n :src=\"user.secondaryAvatarSrc\"\r\n :alt=\"user.name || user.email\"\r\n />\r\n </span>\r\n </span>\r\n </slot>\r\n\r\n <div class=\"rs-account-selector__user\">\r\n <p class=\"rs-account-selector__title\">{{ computedTitle }}</p>\r\n <p v-if=\"user.name\" class=\"rs-account-selector__name\">\r\n {{ user.name }}\r\n </p>\r\n <p class=\"rs-account-selector__email\">{{ user.email }}</p>\r\n </div>\r\n\r\n <slot name=\"actions\" :actions=\"visibleActions\">\r\n <div class=\"rs-account-selector__actions\">\r\n <template v-if=\"visibleActions.length > 0\">\r\n <Button\r\n v-for=\"action in visibleActions\"\r\n :key=\"action.id\"\r\n class=\"rs-account-selector__button\"\r\n :disabled=\"action.disabled\"\r\n size=\"small\"\r\n v-bind=\"headerButtonProps(action)\"\r\n @click.stop=\"emitAction(action)\"\r\n >\r\n <span>{{ action.label }}</span>\r\n <RsIcon v-if=\"action.icon\" :name=\"action.icon\" size=\"sm\" />\r\n </Button>\r\n </template>\r\n <Button\r\n v-else\r\n class=\"rs-account-selector__button rs-account-selector__profile-button\"\r\n severity=\"secondary\"\r\n outlined\r\n rounded\r\n size=\"small\"\r\n @click.stop=\"emitAction(profileAction)\"\r\n >\r\n Ver mi perfil\r\n </Button>\r\n </div>\r\n </slot>\r\n </header>\r\n\r\n <p v-if=\"loading\" class=\"rs-account-selector__state\">\r\n Cargando cuentas...\r\n </p>\r\n\r\n <slot v-else-if=\"accounts.length === 0\" name=\"empty\">\r\n <p v-if=\"emptyText\" class=\"rs-account-selector__state\">{{ emptyText }}</p>\r\n </slot>\r\n\r\n <div v-else-if=\"shouldShowAccounts\" class=\"rs-account-selector__accounts\">\r\n <Button\r\n v-for=\"account in accounts\"\r\n :key=\"account.id\"\r\n :class=\"[\r\n 'rs-account-selector__account',\r\n {\r\n 'rs-account-selector__account--active': account.active,\r\n 'rs-account-selector__account--disabled': account.disabled,\r\n },\r\n ]\"\r\n :disabled=\"account.active || account.disabled\"\r\n text\r\n severity=\"secondary\"\r\n @click.stop=\"selectAccount(account)\"\r\n >\r\n <slot name=\"account-avatar\" :account=\"account\">\r\n <span\r\n class=\"rs-account-selector__avatar rs-account-selector__avatar--sm rs-account-selector__account-avatar\"\r\n >\r\n <img\r\n v-if=\"account.avatarSrc\"\r\n class=\"rs-account-selector__avatar-image\"\r\n :src=\"account.avatarSrc\"\r\n :alt=\"account.label\"\r\n />\r\n <span\r\n v-else\r\n class=\"rs-account-selector__avatar-placeholder\"\r\n aria-hidden=\"true\"\r\n >\r\n {{ getInitials(account.initials) }}\r\n </span>\r\n </span>\r\n </slot>\r\n\r\n <span class=\"rs-account-selector__account-info\">\r\n <span class=\"rs-account-selector__account-label\">{{\r\n account.label\r\n }}</span>\r\n <span\r\n :class=\"[\r\n 'rs-account-selector__account-state',\r\n account.active\r\n ? 'rs-account-selector__account-state--active'\r\n : 'rs-account-selector__account-state--inactive',\r\n ]\"\r\n >\r\n {{ account.active ? activeText : selectText }}\r\n </span>\r\n </span>\r\n\r\n <span class=\"rs-account-selector__account-trailing\">\r\n <slot name=\"account-trailing\" :account=\"account\">\r\n <RsIcon name=\"login\" />\r\n </slot>\r\n </span>\r\n </Button>\r\n </div>\r\n\r\n <slot name=\"footer\" :actions=\"visibleFooterActions\">\r\n <footer\r\n v-if=\"visibleFooterActions.length > 0\"\r\n class=\"rs-account-selector__footer\"\r\n >\r\n <Button\r\n v-for=\"action in visibleFooterActions\"\r\n :key=\"action.id\"\r\n class=\"rs-account-selector__button\"\r\n :disabled=\"action.disabled\"\r\n size=\"small\"\r\n v-bind=\"footerButtonProps(action)\"\r\n @click.stop=\"emitFooterAction(action)\"\r\n >\r\n <span class=\"rs-account-selector__button-content\">\r\n <span>{{ action.label }}</span>\r\n <RsIcon v-if=\"action.icon\" :name=\"action.icon\" size=\"sm\" />\r\n </span>\r\n </Button>\r\n </footer>\r\n </slot>\r\n </section>\r\n </Teleport>\r\n </div>\r\n</template>\r\n\r\n<style src=\"./RsAccountSelector.css\"></style>\r\n","<script setup lang=\"ts\">\r\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from \"vue\";\r\nimport Menu from \"primevue/menu\";\r\nimport type { MenuItem } from \"primevue/menuitem\";\r\n\r\nimport RsIcon from \"../RsIcon\";\r\nimport type { RsSidebarItem, RsSidebarModule, RsSidebarProps } from \"./RsSidebar.types\";\r\n\r\ndefineOptions({\r\n name: \"RsSidebar\",\r\n});\r\n\r\nconst props = withDefaults(defineProps<RsSidebarProps>(), {\r\n ariaLabel: \"Navegacion principal\",\r\n expandOnHover: true,\r\n expanded: false,\r\n footerItems: () => [],\r\n icon: \"nest_eco_leaf\",\r\n mobileOpen: false,\r\n modules: () => [],\r\n navigateOnModuleSelect: false,\r\n title: \"\",\r\n variant: \"cyo\",\r\n});\r\n\r\nconst emit = defineEmits<{\r\n \"item-click\": [item: RsSidebarItem];\r\n \"close-mobile\": [];\r\n \"expanded-change\": [expanded: boolean];\r\n \"module-select\": [module: RsSidebarModule];\r\n}>();\r\n\r\nconst isHovered = ref(false);\r\nconst activeParent = ref<RsSidebarItem | null>(null);\r\nconst isModuleMenuOpen = ref(false);\r\nconst rootElement = ref<HTMLElement | null>(null);\r\n\r\nconst visibleItems = computed(() => props.items.filter(isVisible));\r\nconst visibleFooterItems = computed(() => props.footerItems.filter(isVisible));\r\nconst visibleModules = computed(() => props.modules);\r\nconst activeModule = computed(\r\n () =>\r\n props.modules.find((module) => module.active) ??\r\n props.modules.find((module) => module.text === props.title) ??\r\n props.modules[0] ??\r\n null,\r\n);\r\nconst displayedHeaderTitle = computed(() => activeModule.value?.text || props.title);\r\nconst moduleMenuItems = computed<MenuItem[]>(() =>\r\n visibleModules.value.map((module) => {\r\n const isCurrent = module.active || module.text === displayedHeaderTitle.value;\r\n\r\n return {\r\n class: [\r\n \"rs-sidebar__module-option\",\r\n {\r\n \"rs-sidebar__module-option--active\": isCurrent,\r\n \"rs-sidebar__module-option--disabled\": module.disabled || isCurrent,\r\n },\r\n ],\r\n command: () => selectModule(module),\r\n disabled: module.disabled || isCurrent,\r\n label: module.text,\r\n };\r\n }),\r\n);\r\n\r\nconst displayedItems = computed(() =>\r\n activeParent.value ? activeParent.value.children?.filter(isVisible) ?? [] : visibleItems.value,\r\n);\r\n\r\nconst isExpanded = computed(() => props.expanded || props.mobileOpen || isHovered.value);\r\nconst hasHeaderAction = computed(() => props.mobileOpen);\r\nconst hasModuleSelector = computed(() => props.modules.length > 0);\r\n\r\nconst rootClass = computed(() => [\r\n \"rs-sidebar\",\r\n `rs-sidebar--${props.variant}`,\r\n {\r\n \"rs-sidebar--expanded\": isExpanded.value,\r\n \"rs-sidebar--mobile-open\": props.mobileOpen,\r\n \"rs-sidebar--submenu\": !!activeParent.value,\r\n },\r\n]);\r\n\r\nwatch(\r\n () => props.mobileOpen,\r\n (isOpen) => {\r\n if (!isOpen) {\r\n activeParent.value = null;\r\n }\r\n\r\n isModuleMenuOpen.value = false;\r\n },\r\n);\r\n\r\nwatch(isExpanded, (expanded) => {\r\n if (!expanded) {\r\n activeParent.value = null;\r\n }\r\n\r\n emit(\"expanded-change\", expanded);\r\n});\r\n\r\nwatch(\r\n () => activeParent.value,\r\n () => {\r\n isModuleMenuOpen.value = false;\r\n },\r\n);\r\n\r\nonMounted(() => {\r\n document.addEventListener(\"pointerdown\", handleDocumentPointerDown);\r\n});\r\n\r\nonBeforeUnmount(() => {\r\n document.removeEventListener(\"pointerdown\", handleDocumentPointerDown);\r\n});\r\n\r\nfunction isVisible(item: RsSidebarItem) {\r\n return item.visible !== false;\r\n}\r\n\r\nfunction hasVisibleChildren(item: RsSidebarItem) {\r\n return (item.children ?? []).some(isVisible);\r\n}\r\n\r\nfunction setHovered(value: boolean) {\r\n if (!props.expandOnHover || props.mobileOpen) {\r\n return;\r\n }\r\n\r\n isHovered.value = value;\r\n if (!value) {\r\n isModuleMenuOpen.value = false;\r\n }\r\n}\r\n\r\nfunction handleItemClick(item: RsSidebarItem) {\r\n if (item.disabled) {\r\n return;\r\n }\r\n\r\n if (hasVisibleChildren(item)) {\r\n activeParent.value = item;\r\n return;\r\n }\r\n\r\n emit(\"item-click\", item);\r\n}\r\n\r\nfunction goBack() {\r\n activeParent.value = null;\r\n}\r\n\r\nfunction closeMobile() {\r\n activeParent.value = null;\r\n isModuleMenuOpen.value = false;\r\n emit(\"close-mobile\");\r\n}\r\n\r\nfunction toggleModuleMenu() {\r\n if (!hasModuleSelector.value || !isExpanded.value) {\r\n return;\r\n }\r\n\r\n isModuleMenuOpen.value = !isModuleMenuOpen.value;\r\n}\r\n\r\nfunction selectModule(module: RsSidebarModule) {\r\n if (module.disabled) {\r\n return;\r\n }\r\n\r\n isModuleMenuOpen.value = false;\r\n emit(\"module-select\", module);\r\n\r\n if (props.navigateOnModuleSelect && typeof window !== \"undefined\" && module.link) {\r\n window.location.href = module.link;\r\n }\r\n}\r\n\r\nfunction handleDocumentPointerDown(event: PointerEvent) {\r\n if (!isModuleMenuOpen.value || !rootElement.value) {\r\n return;\r\n }\r\n\r\n if (!rootElement.value.contains(event.target as Node)) {\r\n isModuleMenuOpen.value = false;\r\n }\r\n}\r\n</script>\r\n\r\n<template>\r\n <aside\r\n ref=\"rootElement\"\r\n :aria-label=\"ariaLabel\"\r\n :class=\"rootClass\"\r\n @mouseenter=\"setHovered(true)\"\r\n @mouseleave=\"setHovered(false)\"\r\n >\r\n <slot\r\n name=\"header\"\r\n :expanded=\"isExpanded\"\r\n :active-parent=\"activeParent\"\r\n :close-mobile=\"closeMobile\"\r\n :go-back=\"goBack\"\r\n >\r\n <header class=\"rs-sidebar__header\">\r\n <div\r\n :class=\"[\r\n 'rs-sidebar__brand',\r\n {\r\n 'rs-sidebar__brand--trigger': hasModuleSelector,\r\n },\r\n ]\"\r\n >\r\n <button\r\n v-if=\"hasModuleSelector\"\r\n class=\"rs-sidebar__module-trigger\"\r\n type=\"button\"\r\n :aria-expanded=\"isModuleMenuOpen\"\r\n aria-haspopup=\"menu\"\r\n @click=\"toggleModuleMenu\"\r\n >\r\n <RsIcon :name=\"icon\" />\r\n <span class=\"rs-sidebar__title\">{{ displayedHeaderTitle }}</span>\r\n <RsIcon\r\n class=\"rs-sidebar__module-chevron\"\r\n :name=\"isModuleMenuOpen ? 'arrow_drop_up' : 'arrow_drop_down'\"\r\n color=\"secondary\"\r\n size=\"sm\"\r\n />\r\n </button>\r\n\r\n <template v-else>\r\n <RsIcon :name=\"icon\" />\r\n <span class=\"rs-sidebar__title\">{{ displayedHeaderTitle }}</span>\r\n </template>\r\n </div>\r\n\r\n <slot\r\n name=\"header-action\"\r\n :active-parent=\"activeParent\"\r\n :close-mobile=\"closeMobile\"\r\n :go-back=\"goBack\"\r\n >\r\n <button\r\n v-if=\"hasHeaderAction\"\r\n class=\"rs-sidebar__header-button\"\r\n type=\"button\"\r\n aria-label=\"Cerrar menu\"\r\n @click=\"closeMobile\"\r\n >\r\n <RsIcon name=\"close\" />\r\n </button>\r\n </slot>\r\n </header>\r\n\r\n <Menu\r\n v-if=\"hasModuleSelector && isModuleMenuOpen\"\r\n class=\"rs-sidebar__module-menu\"\r\n :model=\"moduleMenuItems\"\r\n :pt=\"{\r\n root: { role: 'menu' },\r\n }\"\r\n />\r\n </slot>\r\n\r\n <div class=\"rs-sidebar__content\">\r\n <nav class=\"rs-sidebar__nav\" aria-label=\"Secciones\">\r\n <ul class=\"rs-sidebar__list\">\r\n <li v-if=\"activeParent\" class=\"rs-sidebar__list-item\">\r\n <button\r\n class=\"rs-sidebar__item rs-sidebar__item--back\"\r\n type=\"button\"\r\n @click=\"goBack()\"\r\n >\r\n <RsIcon\r\n class=\"rs-sidebar__item-icon\"\r\n name=\"arrow_left\"\r\n :fill=\"true\"\r\n />\r\n <span class=\"rs-sidebar__item-label\">{{ activeParent.label }}</span>\r\n </button>\r\n </li>\r\n <li v-for=\"item in displayedItems\" :key=\"item.id\" class=\"rs-sidebar__list-item\">\r\n <button\r\n :class=\"[\r\n 'rs-sidebar__item',\r\n {\r\n 'rs-sidebar__item--active': item.active,\r\n 'rs-sidebar__item--disabled': item.disabled,\r\n 'rs-sidebar__item--parent': hasVisibleChildren(item),\r\n },\r\n ]\"\r\n type=\"button\"\r\n :disabled=\"item.disabled\"\r\n @click=\"handleItemClick(item)\"\r\n >\r\n <slot name=\"item\" :item=\"item\" :expanded=\"isExpanded\">\r\n <RsIcon\r\n v-if=\"item.icon\"\r\n class=\"rs-sidebar__item-icon\"\r\n :name=\"item.icon\"\r\n />\r\n <span class=\"rs-sidebar__item-label\">{{ item.label }}</span>\r\n <RsIcon\r\n v-if=\"hasVisibleChildren(item)\"\r\n class=\"rs-sidebar__item-chevron\"\r\n name=\"chevron_right\"\r\n size=\"sm\"\r\n />\r\n </slot>\r\n </button>\r\n </li>\r\n </ul>\r\n </nav>\r\n\r\n <slot name=\"footer\" :items=\"visibleFooterItems\" :expanded=\"isExpanded\">\r\n <nav\r\n v-if=\"visibleFooterItems.length > 0\"\r\n class=\"rs-sidebar__footer\"\r\n aria-label=\"Acciones secundarias\"\r\n >\r\n <ul class=\"rs-sidebar__list\">\r\n <li v-for=\"item in visibleFooterItems\" :key=\"item.id\" class=\"rs-sidebar__list-item\">\r\n <button\r\n :class=\"[\r\n 'rs-sidebar__item',\r\n 'rs-sidebar__item--footer',\r\n {\r\n 'rs-sidebar__item--active': item.active,\r\n 'rs-sidebar__item--disabled': item.disabled,\r\n },\r\n ]\"\r\n type=\"button\"\r\n :disabled=\"item.disabled\"\r\n @click=\"handleItemClick(item)\"\r\n >\r\n <RsIcon\r\n v-if=\"item.icon\"\r\n class=\"rs-sidebar__item-icon\"\r\n :name=\"item.icon\"\r\n />\r\n <span class=\"rs-sidebar__item-label\">{{ item.label }}</span>\r\n </button>\r\n </li>\r\n </ul>\r\n </nav>\r\n </slot>\r\n </div>\r\n </aside>\r\n</template>\r\n\r\n<style src=\"./RsSidebar.css\"></style>\r\n","import type { App, Plugin } from \"vue\";\r\n\r\nimport RsAccountSelector from \"./components/RsAccountSelector\";\r\nimport RsIcon from \"./components/RsIcon\";\r\nimport RsSidebar from \"./components/RsSidebar\";\r\n\r\nexport const components = [RsAccountSelector, RsIcon, RsSidebar] as const;\r\n\r\nexport const RobosophyUiVue: Plugin = {\r\n install(app: App) {\r\n for (const component of components) {\r\n app.component(component.name ?? \"\", component);\r\n }\r\n },\r\n};\r\n\r\nexport default RobosophyUiVue;\r\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_3","_hoisted_5","_createVNode","_unref","_normalizeClass","RsIcon","_renderSlot","_toDisplayString","_createBlock","_Teleport","_normalizeStyle","_hoisted_6","_hoisted_7","_hoisted_9","_hoisted_10","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_Fragment","_renderList","_mergeProps","_withModifiers","RsAccountSelector","RsSidebar"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/RsIcon/RsIcon.vue","../src/components/RsIcon/index.ts","../src/components/RsAccountSelector/RsAccountSelector.vue","../src/components/RsSidebar/RsSidebar.vue","../src/plugin.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport type { RsIconProps } from \"./RsIcon.types\";\n\ndefineOptions({\n name: \"RsIcon\",\n});\n\nconst GRADE_VALUES = [200, 0, -25] as const;\nconst SEMANTIC_COLORS = [\"primary\", \"secondary\", \"success\", \"warning\", \"danger\", \"inherit\"] as const;\n\nconst props = withDefaults(defineProps<RsIconProps>(), {\n color: \"inherit\",\n family: \"outlined\",\n fill: false,\n grade: 0,\n interactive: false,\n notification: false,\n size: \"md\",\n weight: 400,\n});\n\nfunction clampGrade(grade: number): number {\n return GRADE_VALUES.reduce((nearest, g) =>\n Math.abs(g - grade) < Math.abs(nearest - grade) ? g : nearest,\n );\n}\n\nconst symbolHref = computed(() => {\n const family = props.family;\n const name = props.name;\n\n let gradeSuffix = \"\";\n const clamped = clampGrade(props.grade);\n if (clamped !== 0) {\n gradeSuffix = clamped > 0 ? `-grad${clamped}` : `-gradN${Math.abs(clamped)}`;\n }\n\n const fillSuffix = props.fill ? \"-fill\" : \"\";\n const weightSuffix = props.weight !== 400 ? `-wght${props.weight}` : \"\";\n\n return `#rs-icon-${family}-${name}${gradeSuffix}${fillSuffix}${weightSuffix}`;\n});\n\nconst isCustomColor = computed(\n () => !(SEMANTIC_COLORS as readonly string[]).includes(props.color),\n);\n\nconst iconSize = computed(() => {\n if (typeof props.size === \"number\") return props.size;\n if (props.size === \"sm\") return 18;\n if (props.size === \"lg\") return 32;\n return 24;\n});\n\nconst rootClass = computed(() => [\n \"rs-icon\",\n `rs-icon--${props.family}`,\n ...(isCustomColor.value ? [] : [`rs-icon--${props.color}`]),\n {\n \"rs-icon--interactive\": props.interactive,\n \"rs-icon--sm\": props.size === \"sm\",\n \"rs-icon--md\": props.size === \"md\",\n \"rs-icon--lg\": props.size === \"lg\",\n },\n]);\n\nconst rootStyle = computed(() => ({\n \"--rs-icon-color\": isCustomColor.value ? props.color : undefined,\n \"--rs-icon-size\": `${iconSize.value}px`,\n}));\n\nconst ariaHidden = computed(() => (props.ariaLabel ? undefined : \"true\"));\nconst role = computed(() => (props.ariaLabel ? \"img\" : undefined));\n\nconst notificationStyle = computed(() =>\n props.notificationColor ? { backgroundColor: props.notificationColor } : undefined,\n);\n</script>\n\n<template>\n <span v-if=\"notification\" class=\"rs-icon-wrap\">\n <svg\n :aria-hidden=\"ariaHidden\"\n :aria-label=\"ariaLabel\"\n :class=\"rootClass\"\n :role=\"role\"\n :style=\"rootStyle\"\n :width=\"iconSize\"\n :height=\"iconSize\"\n fill=\"currentColor\"\n >\n <use :href=\"symbolHref\" />\n </svg>\n <span\n class=\"rs-icon__notification\"\n aria-hidden=\"true\"\n :style=\"notificationStyle\"\n />\n </span>\n <svg\n v-else\n :aria-hidden=\"ariaHidden\"\n :aria-label=\"ariaLabel\"\n :class=\"rootClass\"\n :role=\"role\"\n :style=\"rootStyle\"\n :width=\"iconSize\"\n :height=\"iconSize\"\n fill=\"currentColor\"\n >\n <use :href=\"symbolHref\" />\n </svg>\n</template>\n\n<style src=\"./RsIcon.css\"></style>\n","import \"./RsIcon.css\";\n\nimport type { RsIconFamily, RsPrimeIconOptions } from \"./RsIcon.types\";\n\nconst iconNamePattern = /^[a-z0-9_]+$/;\n\nexport function rsPrimeIcon(name: string, options: RsPrimeIconOptions = {}) {\n const family: RsIconFamily = options.family ?? \"outlined\";\n const normalizedName = name.trim();\n\n if (!iconNamePattern.test(normalizedName)) {\n throw new Error(`Invalid Material Symbols icon name: \"${name}\"`);\n }\n\n return `rs-icon rs-icon--prime rs-icon--${family} rs-icon-${normalizedName}`;\n}\n\nexport { default } from \"./RsIcon.vue\";\nexport type {\n RsIconColor,\n RsIconFamily,\n RsIconProps,\n RsIconSize,\n RsIconWeight,\n RsPrimeIconOptions,\n} from \"./RsIcon.types\";\n","<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from \"vue\";\nimport Button from \"primevue/button\";\n\nimport RsIcon from \"../RsIcon\";\nimport type {\n RsAccountSelectorAccount,\n RsAccountSelectorAction,\n RsAccountSelectorProps,\n} from \"./RsAccountSelector.types\";\n\ndefineOptions({\n name: \"RsAccountSelector\",\n});\n\nconst props = withDefaults(defineProps<RsAccountSelectorProps>(), {\n accounts: () => [],\n actions: () => [],\n activeText: \"Activo en pantalla\",\n emptyText: \"\",\n footerActions: () => [],\n loading: false,\n modelValue: null,\n selectText: \"Ingresar\",\n triggerAriaLabel: \"Abrir selector de cuenta\",\n width: \"270px\",\n});\n\nconst emit = defineEmits<{\n \"select-account\": [account: RsAccountSelectorAccount];\n action: [action: RsAccountSelectorAction];\n \"footer-action\": [action: RsAccountSelectorAction];\n \"update:modelValue\": [open: boolean];\n open: [];\n close: [];\n}>();\n\nconst rootRef = ref<HTMLElement | null>(null);\nconst panelRef = ref<HTMLElement | null>(null);\nconst internalOpen = ref(false);\n\nconst panelCSSVars = {\n \"--rs-account-selector-width\": props.width,\n \"--rs-account-selector-background\": \"var(--rs-color-surface-primary, #ffffff)\",\n \"--rs-account-selector-border\": \"var(--rs-color-stroke-default, #d1d1d1)\",\n \"--rs-account-selector-color\": \"var(--rs-color-text-primary, #000000)\",\n \"--rs-account-selector-muted\": \"var(--rs-color-text-secondary, #909090)\",\n \"--rs-account-selector-active\": \"var(--rs-color-text-brand-green, #4eae01)\",\n \"--rs-account-selector-danger\": \"var(--rs-color-text-brand-red, #d80115)\",\n};\n\nconst panelPosition = ref<Record<string, string>>({});\n\nlet scrollRAF: number | null = null;\n\nconst isControlled = computed(() => props.modelValue !== null);\nconst isOpen = computed(() =>\n isControlled.value ? Boolean(props.modelValue) : internalOpen.value,\n);\nconst rootStyle = computed(() => ({\n \"--rs-account-selector-width\": props.width,\n}));\n\nconst computedTitle = computed(() => {\n if (props.title) {\n return props.title;\n }\n\n return props.accounts.length > 1\n ? `Acceso a ${props.accounts.length} Cuentas`\n : \"Acceso a\";\n});\n\nconst visibleActions = computed(() =>\n props.actions.filter((action) => action.visible !== false),\n);\nconst visibleFooterActions = computed(() =>\n props.footerActions.filter((action) => action.visible !== false),\n);\nconst shouldShowAccounts = computed(() => props.accounts.length > 1);\nconst profileAction: RsAccountSelectorAction = {\n id: \"profile\",\n label: \"Ver mi perfil\",\n};\n\nfunction headerButtonProps(action: RsAccountSelectorAction) {\n return action.variant === \"danger\"\n ? { severity: \"danger\" as const, outlined: true, rounded: true }\n : { severity: \"secondary\" as const, outlined: true, rounded: true };\n}\n\nfunction footerButtonProps(action: RsAccountSelectorAction) {\n return action.variant === \"danger\"\n ? { severity: \"danger\" as const, text: true }\n : { severity: \"secondary\" as const, text: true };\n}\n\nfunction emitAction(action: RsAccountSelectorAction) {\n if (!action.disabled) {\n emit(\"action\", action);\n closeSelector();\n }\n}\n\nfunction emitFooterAction(action: RsAccountSelectorAction) {\n if (!action.disabled) {\n emit(\"footer-action\", action);\n closeSelector();\n }\n}\n\nfunction selectAccount(account: RsAccountSelectorAccount) {\n if (!account.active && !account.disabled) {\n emit(\"select-account\", account);\n closeSelector();\n }\n}\n\nfunction getInitials(initials?: string) {\n return (initials?.trim() || \"?\").slice(0, 3);\n}\n\nfunction setOpen(nextOpen: boolean) {\n if (!isControlled.value) {\n internalOpen.value = nextOpen;\n }\n\n emit(\"update:modelValue\", nextOpen);\n\n if (nextOpen) {\n emit(\"open\");\n } else {\n emit(\"close\");\n }\n}\n\nfunction toggleSelector() {\n setOpen(!isOpen.value);\n}\n\nfunction closeSelector() {\n if (isOpen.value) {\n setOpen(false);\n }\n}\n\nfunction updatePanelPosition() {\n const root = rootRef.value;\n const panel = panelRef.value;\n\n if (!root || !panel) {\n return;\n }\n\n const viewportWidth = window.innerWidth;\n const viewportPadding = 16;\n const rootRect = root.getBoundingClientRect();\n const panelRect = panel.getBoundingClientRect();\n const fitsRight = rootRect.left + panelRect.width <= viewportWidth - viewportPadding;\n const fitsLeft = rootRect.right - panelRect.width >= viewportPadding;\n\n let left: number;\n if (fitsRight) {\n left = rootRect.left;\n } else if (fitsLeft) {\n left = rootRect.right - panelRect.width;\n } else {\n left = Math.max(\n viewportPadding,\n Math.min(rootRect.left, viewportWidth - viewportPadding - panelRect.width),\n );\n }\n\n panelPosition.value = {\n position: \"fixed\",\n top: `${rootRect.bottom + 8}px`,\n left: `${left}px`,\n };\n}\n\nfunction handleWindowResize() {\n if (isOpen.value) {\n void updatePanelPosition();\n }\n}\n\nfunction handleScroll() {\n if (isOpen.value) {\n if (scrollRAF === null) {\n scrollRAF = window.requestAnimationFrame(() => {\n scrollRAF = null;\n void updatePanelPosition();\n });\n }\n }\n}\n\nfunction handleDocumentPointerDown(event: PointerEvent) {\n const target = event.target;\n\n if (\n target instanceof Node &&\n rootRef.value &&\n !rootRef.value.contains(target) &&\n !panelRef.value?.contains(target)\n ) {\n closeSelector();\n }\n}\n\nonMounted(() => {\n document.addEventListener(\"pointerdown\", handleDocumentPointerDown);\n window.addEventListener(\"resize\", handleWindowResize);\n window.addEventListener(\"scroll\", handleScroll, { passive: true });\n\n if (isOpen.value) {\n void updatePanelPosition();\n }\n});\n\nonBeforeUnmount(() => {\n document.removeEventListener(\"pointerdown\", handleDocumentPointerDown);\n window.removeEventListener(\"resize\", handleWindowResize);\n window.removeEventListener(\"scroll\", handleScroll);\n\n if (scrollRAF !== null) {\n cancelAnimationFrame(scrollRAF);\n }\n});\n\nwatch(isOpen, (open) => {\n if (open) {\n void nextTick().then(updatePanelPosition);\n }\n});\n</script>\n\n<template>\n <div ref=\"rootRef\" class=\"rs-account-selector-host\" :style=\"rootStyle\">\n <Button\n :aria-expanded=\"isOpen\"\n :aria-label=\"triggerAriaLabel\"\n aria-haspopup=\"menu\"\n :class=\"[\n 'rs-account-selector__trigger',\n { 'rs-account-selector__trigger--open': isOpen },\n ]\"\n text\n @click.stop=\"toggleSelector\"\n >\n <RsIcon\n class=\"rs-account-selector__trigger-chevron\"\n family=\"rounded\"\n name=\"arrow_drop_down\"\n :size=\"22\"\n />\n <slot name=\"trigger-avatar\" :user=\"user\">\n <span class=\"rs-account-selector__trigger-avatar\">\n <img\n v-if=\"user.avatarSrc\"\n class=\"rs-account-selector__avatar-image\"\n :src=\"user.avatarSrc\"\n :alt=\"user.name || user.email\"\n />\n <span\n v-else\n class=\"rs-account-selector__avatar-placeholder\"\n aria-hidden=\"true\"\n >\n {{ getInitials(user.initials) }}\n </span>\n </span>\n </slot>\n </Button>\n\n <Teleport to=\"body\" v-if=\"isOpen\">\n <section\n ref=\"panelRef\"\n :aria-busy=\"loading || undefined\"\n class=\"rs-account-selector\"\n :style=\"[panelCSSVars, panelPosition]\"\n >\n <header class=\"rs-account-selector__summary\">\n <slot name=\"user-avatar\" :user=\"user\">\n <span class=\"rs-account-selector__avatar-stack\">\n <span\n class=\"rs-account-selector__avatar rs-account-selector__avatar--lg\"\n >\n <img\n v-if=\"user.avatarSrc\"\n class=\"rs-account-selector__avatar-image\"\n :src=\"user.avatarSrc\"\n :alt=\"user.name || user.email\"\n />\n <span\n v-else\n class=\"rs-account-selector__avatar-placeholder\"\n aria-hidden=\"true\"\n >\n {{ getInitials(user.initials) }}\n </span>\n </span>\n <span\n v-if=\"user.secondaryAvatarSrc\"\n class=\"rs-account-selector__avatar rs-account-selector__avatar--lg rs-account-selector__secondary-avatar\"\n >\n <img\n class=\"rs-account-selector__avatar-image\"\n :src=\"user.secondaryAvatarSrc\"\n :alt=\"user.name || user.email\"\n />\n </span>\n </span>\n </slot>\n\n <div class=\"rs-account-selector__user\">\n <p class=\"rs-account-selector__title\">{{ computedTitle }}</p>\n <p v-if=\"user.name\" class=\"rs-account-selector__name\">\n {{ user.name }}\n </p>\n <p class=\"rs-account-selector__email\">{{ user.email }}</p>\n </div>\n\n <slot name=\"actions\" :actions=\"visibleActions\">\n <div class=\"rs-account-selector__actions\">\n <template v-if=\"visibleActions.length > 0\">\n <Button\n v-for=\"action in visibleActions\"\n :key=\"action.id\"\n class=\"rs-account-selector__button\"\n :disabled=\"action.disabled\"\n size=\"small\"\n v-bind=\"headerButtonProps(action)\"\n @click.stop=\"emitAction(action)\"\n >\n <span>{{ action.label }}</span>\n <RsIcon v-if=\"action.icon\" :name=\"action.icon\" size=\"sm\" />\n </Button>\n </template>\n <Button\n v-else\n class=\"rs-account-selector__button rs-account-selector__profile-button\"\n severity=\"secondary\"\n outlined\n rounded\n size=\"small\"\n @click.stop=\"emitAction(profileAction)\"\n >\n Ver mi perfil\n </Button>\n </div>\n </slot>\n </header>\n\n <p v-if=\"loading\" class=\"rs-account-selector__state\">\n Cargando cuentas...\n </p>\n\n <slot v-else-if=\"accounts.length === 0\" name=\"empty\">\n <p v-if=\"emptyText\" class=\"rs-account-selector__state\">{{ emptyText }}</p>\n </slot>\n\n <div v-else-if=\"shouldShowAccounts\" class=\"rs-account-selector__accounts\">\n <Button\n v-for=\"account in accounts\"\n :key=\"account.id\"\n :class=\"[\n 'rs-account-selector__account',\n {\n 'rs-account-selector__account--active': account.active,\n 'rs-account-selector__account--disabled': account.disabled,\n },\n ]\"\n :disabled=\"account.active || account.disabled\"\n text\n severity=\"secondary\"\n @click.stop=\"selectAccount(account)\"\n >\n <slot name=\"account-avatar\" :account=\"account\">\n <span\n class=\"rs-account-selector__avatar rs-account-selector__avatar--sm rs-account-selector__account-avatar\"\n >\n <img\n v-if=\"account.avatarSrc\"\n class=\"rs-account-selector__avatar-image\"\n :src=\"account.avatarSrc\"\n :alt=\"account.label\"\n />\n <span\n v-else\n class=\"rs-account-selector__avatar-placeholder\"\n aria-hidden=\"true\"\n >\n {{ getInitials(account.initials) }}\n </span>\n </span>\n </slot>\n\n <span class=\"rs-account-selector__account-info\">\n <span class=\"rs-account-selector__account-label\">{{\n account.label\n }}</span>\n <span\n :class=\"[\n 'rs-account-selector__account-state',\n account.active\n ? 'rs-account-selector__account-state--active'\n : 'rs-account-selector__account-state--inactive',\n ]\"\n >\n {{ account.active ? activeText : selectText }}\n </span>\n </span>\n\n <span class=\"rs-account-selector__account-trailing\">\n <slot name=\"account-trailing\" :account=\"account\">\n <RsIcon name=\"login\" />\n </slot>\n </span>\n </Button>\n </div>\n\n <slot name=\"footer\" :actions=\"visibleFooterActions\">\n <footer\n v-if=\"visibleFooterActions.length > 0\"\n class=\"rs-account-selector__footer\"\n >\n <Button\n v-for=\"action in visibleFooterActions\"\n :key=\"action.id\"\n class=\"rs-account-selector__button\"\n :disabled=\"action.disabled\"\n size=\"small\"\n v-bind=\"footerButtonProps(action)\"\n @click.stop=\"emitFooterAction(action)\"\n >\n <span class=\"rs-account-selector__button-content\">\n <span>{{ action.label }}</span>\n <RsIcon v-if=\"action.icon\" :name=\"action.icon\" size=\"sm\" />\n </span>\n </Button>\n </footer>\n </slot>\n </section>\n </Teleport>\n </div>\n</template>\n\n<style src=\"./RsAccountSelector.css\"></style>\n","<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from \"vue\";\nimport Menu from \"primevue/menu\";\nimport type { MenuItem } from \"primevue/menuitem\";\n\nimport RsIcon from \"../RsIcon\";\nimport type { RsSidebarItem, RsSidebarModule, RsSidebarProps, RsSidebarVariant } from \"./RsSidebar.types\";\n\nconst variantIconMap: Record<RsSidebarVariant, string> = {\n pc: \"article\",\n alta: \"account_circle\",\n cc: \"account_balance_wallet\",\n pog: \"account_balance_wallet\",\n cyo: \"nest_eco_leaf\",\n};\n\ndefineOptions({\n name: \"RsSidebar\",\n});\n\nconst props = withDefaults(defineProps<RsSidebarProps>(), {\n ariaLabel: \"Navegacion principal\",\n expandOnHover: true,\n expanded: false,\n footerItems: () => [],\n icon: undefined,\n mobileOpen: false,\n modules: () => [],\n navigateOnModuleSelect: false,\n title: \"\",\n variant: \"cyo\",\n});\n\nconst emit = defineEmits<{\n \"item-click\": [item: RsSidebarItem];\n \"close-mobile\": [];\n \"expanded-change\": [expanded: boolean];\n \"module-select\": [module: RsSidebarModule];\n}>();\n\nconst isHovered = ref(false);\nconst activeParent = ref<RsSidebarItem | null>(null);\nconst isModuleMenuOpen = ref(false);\nconst rootElement = ref<HTMLElement | null>(null);\n\nconst visibleItems = computed(() => props.items.filter(isVisible));\nconst visibleFooterItems = computed(() => props.footerItems.filter(isVisible));\nconst visibleModules = computed(() => props.modules);\nconst activeModule = computed(\n () =>\n props.modules.find((module) => module.active) ??\n props.modules.find((module) => module.text === props.title) ??\n props.modules[0] ??\n null,\n);\nconst displayedHeaderTitle = computed(() => activeModule.value?.text || props.title);\nconst moduleMenuItems = computed<MenuItem[]>(() =>\n visibleModules.value.map((module) => {\n const isCurrent = module.active || module.text === displayedHeaderTitle.value;\n\n return {\n class: [\n \"rs-sidebar__module-option\",\n {\n \"rs-sidebar__module-option--active\": isCurrent,\n \"rs-sidebar__module-option--disabled\": module.disabled || isCurrent,\n },\n ],\n command: () => selectModule(module),\n disabled: module.disabled || isCurrent,\n label: module.text,\n };\n }),\n);\n\nconst displayedItems = computed(() =>\n activeParent.value ? activeParent.value.children?.filter(isVisible) ?? [] : visibleItems.value,\n);\n\nconst isExpanded = computed(() => props.expanded || props.mobileOpen || isHovered.value);\nconst hasHeaderAction = computed(() => props.mobileOpen);\nconst hasModuleSelector = computed(() => props.modules.length > 0);\nconst resolvedIcon = computed(() => props.icon ?? variantIconMap[props.variant]);\n\nconst rootClass = computed(() => [\n \"rs-sidebar\",\n `rs-sidebar--${props.variant}`,\n {\n \"rs-sidebar--expanded\": isExpanded.value,\n \"rs-sidebar--mobile-open\": props.mobileOpen,\n \"rs-sidebar--submenu\": !!activeParent.value,\n },\n]);\n\nwatch(\n () => props.mobileOpen,\n (isOpen) => {\n if (!isOpen) {\n activeParent.value = null;\n }\n\n isModuleMenuOpen.value = false;\n },\n);\n\nwatch(isExpanded, (expanded) => {\n if (!expanded) {\n activeParent.value = null;\n }\n\n emit(\"expanded-change\", expanded);\n});\n\nwatch(\n () => activeParent.value,\n () => {\n isModuleMenuOpen.value = false;\n },\n);\n\nonMounted(() => {\n document.addEventListener(\"pointerdown\", handleDocumentPointerDown);\n});\n\nonBeforeUnmount(() => {\n document.removeEventListener(\"pointerdown\", handleDocumentPointerDown);\n});\n\nfunction isVisible(item: RsSidebarItem) {\n return item.visible !== false;\n}\n\nfunction hasVisibleChildren(item: RsSidebarItem) {\n return (item.children ?? []).some(isVisible);\n}\n\nfunction setHovered(value: boolean) {\n if (!props.expandOnHover || props.mobileOpen) {\n return;\n }\n\n isHovered.value = value;\n if (!value) {\n isModuleMenuOpen.value = false;\n }\n}\n\nfunction handleItemClick(item: RsSidebarItem) {\n if (item.disabled) {\n return;\n }\n\n if (hasVisibleChildren(item)) {\n activeParent.value = item;\n return;\n }\n\n emit(\"item-click\", item);\n}\n\nfunction goBack() {\n activeParent.value = null;\n}\n\nfunction closeMobile() {\n activeParent.value = null;\n isModuleMenuOpen.value = false;\n emit(\"close-mobile\");\n}\n\nfunction toggleModuleMenu() {\n if (!hasModuleSelector.value || !isExpanded.value) {\n return;\n }\n\n isModuleMenuOpen.value = !isModuleMenuOpen.value;\n}\n\nfunction selectModule(module: RsSidebarModule) {\n if (module.disabled) {\n return;\n }\n\n isModuleMenuOpen.value = false;\n emit(\"module-select\", module);\n\n if (props.navigateOnModuleSelect && typeof window !== \"undefined\" && module.link) {\n window.location.href = module.link;\n }\n}\n\nfunction handleDocumentPointerDown(event: PointerEvent) {\n if (!isModuleMenuOpen.value || !rootElement.value) {\n return;\n }\n\n if (!rootElement.value.contains(event.target as Node)) {\n isModuleMenuOpen.value = false;\n }\n}\n</script>\n\n<template>\n <aside\n ref=\"rootElement\"\n :aria-label=\"ariaLabel\"\n :class=\"rootClass\"\n @mouseenter=\"setHovered(true)\"\n @mouseleave=\"setHovered(false)\"\n >\n <slot\n name=\"header\"\n :expanded=\"isExpanded\"\n :active-parent=\"activeParent\"\n :close-mobile=\"closeMobile\"\n :go-back=\"goBack\"\n >\n <header class=\"rs-sidebar__header\">\n <div\n :class=\"[\n 'rs-sidebar__brand',\n {\n 'rs-sidebar__brand--trigger': hasModuleSelector,\n },\n ]\"\n >\n <button\n v-if=\"hasModuleSelector\"\n class=\"rs-sidebar__module-trigger\"\n type=\"button\"\n :aria-expanded=\"isModuleMenuOpen\"\n aria-haspopup=\"menu\"\n @click=\"toggleModuleMenu\"\n >\n <RsIcon :name=\"resolvedIcon\" />\n <span class=\"rs-sidebar__title\">{{ displayedHeaderTitle }}</span>\n <RsIcon\n class=\"rs-sidebar__module-chevron\"\n :name=\"isModuleMenuOpen ? 'arrow_drop_up' : 'arrow_drop_down'\"\n color=\"secondary\"\n size=\"sm\"\n />\n </button>\n\n <template v-else>\n <RsIcon :name=\"resolvedIcon\" />\n <span class=\"rs-sidebar__title\">{{ displayedHeaderTitle }}</span>\n </template>\n </div>\n\n <slot\n name=\"header-action\"\n :active-parent=\"activeParent\"\n :close-mobile=\"closeMobile\"\n :go-back=\"goBack\"\n >\n <button\n v-if=\"hasHeaderAction\"\n class=\"rs-sidebar__header-button\"\n type=\"button\"\n aria-label=\"Cerrar menu\"\n @click=\"closeMobile\"\n >\n <RsIcon name=\"close\" />\n </button>\n </slot>\n </header>\n\n <Menu\n v-if=\"hasModuleSelector && isModuleMenuOpen\"\n class=\"rs-sidebar__module-menu\"\n :model=\"moduleMenuItems\"\n :pt=\"{\n root: { role: 'menu' },\n }\"\n />\n </slot>\n\n <div class=\"rs-sidebar__content\">\n <nav class=\"rs-sidebar__nav\" aria-label=\"Secciones\">\n <ul class=\"rs-sidebar__list\">\n <li v-if=\"activeParent\" class=\"rs-sidebar__list-item\">\n <button\n class=\"rs-sidebar__item rs-sidebar__item--back\"\n type=\"button\"\n @click=\"goBack()\"\n >\n <RsIcon\n class=\"rs-sidebar__item-icon\"\n name=\"arrow_left\"\n :fill=\"true\"\n />\n <span class=\"rs-sidebar__item-label\">{{ activeParent.label }}</span>\n </button>\n </li>\n <li v-for=\"item in displayedItems\" :key=\"item.id\" class=\"rs-sidebar__list-item\">\n <button\n :class=\"[\n 'rs-sidebar__item',\n {\n 'rs-sidebar__item--active': item.active,\n 'rs-sidebar__item--disabled': item.disabled,\n 'rs-sidebar__item--parent': hasVisibleChildren(item),\n },\n ]\"\n type=\"button\"\n :disabled=\"item.disabled\"\n @click=\"handleItemClick(item)\"\n >\n <slot name=\"item\" :item=\"item\" :expanded=\"isExpanded\">\n <RsIcon\n v-if=\"item.icon\"\n class=\"rs-sidebar__item-icon\"\n :name=\"item.icon\"\n />\n <span class=\"rs-sidebar__item-label\">{{ item.label }}</span>\n <RsIcon\n v-if=\"hasVisibleChildren(item)\"\n class=\"rs-sidebar__item-chevron\"\n name=\"chevron_right\"\n size=\"sm\"\n />\n </slot>\n </button>\n </li>\n </ul>\n </nav>\n\n <slot name=\"footer\" :items=\"visibleFooterItems\" :expanded=\"isExpanded\">\n <nav\n v-if=\"visibleFooterItems.length > 0\"\n class=\"rs-sidebar__footer\"\n aria-label=\"Acciones secundarias\"\n >\n <ul class=\"rs-sidebar__list\">\n <li v-for=\"item in visibleFooterItems\" :key=\"item.id\" class=\"rs-sidebar__list-item\">\n <button\n :class=\"[\n 'rs-sidebar__item',\n 'rs-sidebar__item--footer',\n {\n 'rs-sidebar__item--active': item.active,\n 'rs-sidebar__item--disabled': item.disabled,\n },\n ]\"\n type=\"button\"\n :disabled=\"item.disabled\"\n @click=\"handleItemClick(item)\"\n >\n <RsIcon\n v-if=\"item.icon\"\n class=\"rs-sidebar__item-icon\"\n :name=\"item.icon\"\n />\n <span class=\"rs-sidebar__item-label\">{{ item.label }}</span>\n </button>\n </li>\n </ul>\n </nav>\n </slot>\n </div>\n </aside>\n</template>\n\n<style src=\"./RsSidebar.css\"></style>\n","import type { App, Plugin } from \"vue\";\n\nimport RsAccountSelector from \"./components/RsAccountSelector\";\nimport RsIcon from \"./components/RsIcon\";\nimport RsSidebar from \"./components/RsSidebar\";\n\nexport const components = [RsAccountSelector, RsIcon, RsSidebar] as const;\n\nexport const RobosophyUiVue: Plugin = {\n install(app: App) {\n for (const component of components) {\n app.component(component.name ?? \"\", component);\n }\n },\n};\n\nexport default RobosophyUiVue;\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_3","_hoisted_5","_createVNode","_unref","_normalizeClass","RsIcon","_renderSlot","_toDisplayString","_createBlock","_Teleport","_normalizeStyle","_hoisted_6","_hoisted_7","_hoisted_9","_hoisted_10","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_Fragment","_renderList","_mergeProps","_withModifiers","RsAccountSelector","RsSidebar"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAEhG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,KAAK,SAAS,GAAG,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACnF,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAE3E,MAAM,MAAM,+BAA+B,GAAG;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAyBhE,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,+BAAoC,GAC5C,MAAM,CAwHR;AA4LD,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,EACpC,OAAO,GAAE,+BAAoC,GAC5C,OAAO,CAAC,YAAY,CAAC,CA0CvB;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,GAClB,iBAAiB,EAAE,CAUrB;AAmbD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAY1E"}
1
+ {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAEhG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,KAAK,SAAS,GAAG,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACnF,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAE3E,MAAM,MAAM,+BAA+B,GAAG;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAyBhE,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,+BAAoC,GAC5C,MAAM,CAwHR;AA4LD,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,EACpC,OAAO,GAAE,+BAAoC,GAC5C,OAAO,CAAC,YAAY,CAAC,CAwDvB;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,GAClB,iBAAiB,EAAE,CAUrB;AA8kBD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAY1E"}
package/dist/vite.js CHANGED
@@ -291,6 +291,15 @@ async function collectMaterialSymbolUsages(config, options = {}) {
291
291
  collectFromSource(source, usages);
292
292
  }
293
293
  }
294
+ const proxyComponents = await findIconProxyComponents(roots);
295
+ if (proxyComponents.size > 0) {
296
+ for (const root of roots) {
297
+ for (const filePath of await listSourceFiles(root)) {
298
+ const source = await readFile(filePath, "utf8");
299
+ collectProxyIconUsages(source, proxyComponents, usages);
300
+ }
301
+ }
302
+ }
294
303
  }
295
304
  return usages;
296
305
  }
@@ -420,7 +429,7 @@ function findEnclosingObject(source, fromIndex) {
420
429
  return null;
421
430
  }
422
431
  function collectFromSource(source, usages) {
423
- const rsIconTagPattern = /<RsIcon\b([^>]*)>/g;
432
+ const rsIconTagPattern = /<RsIcon\b([\s\S]*?)>/g;
424
433
  let tagMatch;
425
434
  while (tagMatch = rsIconTagPattern.exec(source)) {
426
435
  const attrs = parseStaticAttributes(tagMatch[1] ?? "");
@@ -441,7 +450,7 @@ function collectFromSource(source, usages) {
441
450
  }
442
451
  }
443
452
  }
444
- const primeHelperPattern = /\brsPrimeIcon\(\s*["']([a-z0-9_]+)["'](?:\s*,\s*\{([^)]*)\})?/g;
453
+ const primeHelperPattern = /\brsPrimeIcon\(\s*["'`]([a-z0-9_]+)["'`](?:\s*,\s*\{([^)]*)\})?/g;
445
454
  let helperMatch;
446
455
  while (helperMatch = primeHelperPattern.exec(source)) {
447
456
  const family = toFamily(helperMatch[2]?.match(/\bfamily\s*:\s*["'](\w+)["']/)?.[1]);
@@ -450,7 +459,7 @@ function collectFromSource(source, usages) {
450
459
  name: helperMatch[1] ?? ""
451
460
  });
452
461
  }
453
- const objectIconPattern = /\bicon\s*:\s*["']([a-z0-9_]+)["']/g;
462
+ const objectIconPattern = /\bicon\s*:\s*["'`]([a-z0-9_]+)["'`]/g;
454
463
  let objectMatch;
455
464
  while (objectMatch = objectIconPattern.exec(source)) {
456
465
  const name = objectMatch[1] ?? "";
@@ -468,7 +477,7 @@ function collectFromSource(source, usages) {
468
477
  addUsage(usages, { family: defaultFamily, name });
469
478
  }
470
479
  }
471
- const magicCommentPattern = /\/\/\s*@robosophy-icon:\s*([a-z0-9_]+)/g;
480
+ const magicCommentPattern = /(?:\/\/|\/\*)\s*@robosophy-icon:\s*([a-z0-9_]+)/g;
472
481
  let magicMatch;
473
482
  while (magicMatch = magicCommentPattern.exec(source)) {
474
483
  const name = magicMatch[1] ?? "";
@@ -554,6 +563,126 @@ function collectFromSource(source, usages) {
554
563
  }
555
564
  }
556
565
  }
566
+ const iconObjectPattern = /(?:const|let|var)\s+(\w*[Ii]con\w*)[^=]*=\s*\{/g;
567
+ let objMatch;
568
+ while (objMatch = iconObjectPattern.exec(source)) {
569
+ const braceStart = objMatch.index + objMatch[0].length - 1;
570
+ let depth = 1;
571
+ let j = braceStart + 1;
572
+ while (j < source.length) {
573
+ const c = source[j];
574
+ if (c === '"' || c === "'" || c === "`") {
575
+ j = skipStringForward(source, j, c);
576
+ continue;
577
+ }
578
+ if (c === "/") {
579
+ if (j + 1 < source.length && source[j + 1] === "/") {
580
+ j += 2;
581
+ while (j < source.length && source[j] !== "\n") j++;
582
+ continue;
583
+ }
584
+ if (j + 1 < source.length && source[j + 1] === "*") {
585
+ j += 2;
586
+ while (j + 1 < source.length) {
587
+ if (source[j] === "*" && source[j + 1] === "/") {
588
+ j += 2;
589
+ break;
590
+ }
591
+ j++;
592
+ }
593
+ continue;
594
+ }
595
+ }
596
+ if (c === "{") depth++;
597
+ else if (c === "}") {
598
+ depth--;
599
+ if (depth === 0) break;
600
+ }
601
+ j++;
602
+ }
603
+ if (depth === 0) {
604
+ const bodyContent = source.slice(braceStart + 1, j);
605
+ let braceDepth = 0;
606
+ let k = 0;
607
+ while (k < bodyContent.length) {
608
+ const c = bodyContent[k];
609
+ if (c === '"' || c === "'" || c === "`") {
610
+ if (braceDepth === 0) {
611
+ const quote = c;
612
+ let strEnd = k + 1;
613
+ while (strEnd < bodyContent.length) {
614
+ if (bodyContent[strEnd] === "\\") {
615
+ strEnd += 2;
616
+ continue;
617
+ }
618
+ if (bodyContent[strEnd] === quote) break;
619
+ strEnd++;
620
+ }
621
+ const iconName = bodyContent.slice(k + 1, strEnd);
622
+ if (iconNamePattern.test(iconName)) {
623
+ addUsage(usages, { family: defaultFamily, name: iconName });
624
+ }
625
+ k = strEnd + 1;
626
+ continue;
627
+ } else {
628
+ k = skipStringForward(bodyContent, k, c);
629
+ continue;
630
+ }
631
+ }
632
+ if (c === "{") braceDepth++;
633
+ else if (c === "}") braceDepth--;
634
+ k++;
635
+ }
636
+ }
637
+ }
638
+ const componentIconPattern = /<([A-Z][a-zA-Z0-9_]*)\b([\s\S]*?)>/g;
639
+ let compMatch;
640
+ while (compMatch = componentIconPattern.exec(source)) {
641
+ const tagName = compMatch[1];
642
+ if (tagName === "RsIcon") continue;
643
+ const attrs = parseStaticAttributes(compMatch[2] ?? "");
644
+ const iconValue = attrs.icon ?? attrs.iconName ?? attrs["icon-name"];
645
+ if (iconValue && iconNamePattern.test(iconValue)) {
646
+ addUsage(usages, { family: defaultFamily, name: iconValue });
647
+ }
648
+ }
649
+ }
650
+ async function findIconProxyComponents(roots) {
651
+ const proxyComponents = /* @__PURE__ */ new Map();
652
+ for (const root of roots) {
653
+ for (const filePath of await listSourceFiles(root)) {
654
+ const source = await readFile(filePath, "utf8");
655
+ if (!/defineProps\s*[<(]/.test(source)) continue;
656
+ const rsIconPattern = /<RsIcon[\s\S]*?:name="([a-zA-Z_][a-zA-Z0-9_]*)"/g;
657
+ let match;
658
+ while (match = rsIconPattern.exec(source)) {
659
+ const propName = match[1];
660
+ const propRef = new RegExp(`["'\`]${propName}["'\`]\\s*[?:]`);
661
+ if (!propRef.test(source)) continue;
662
+ const optsMatch = source.match(/defineOptions\s*\(\s*\{\s*[^}]*?\bname:\s*["'](\w+)["']/);
663
+ if (optsMatch) {
664
+ proxyComponents.set(optsMatch[1], propName);
665
+ }
666
+ }
667
+ }
668
+ }
669
+ return proxyComponents;
670
+ }
671
+ function collectProxyIconUsages(source, proxyComponents, usages) {
672
+ for (const [compName, propName] of proxyComponents) {
673
+ const pattern = new RegExp(
674
+ `<${compName}\\b([\\s\\S]*?)>`,
675
+ "g"
676
+ );
677
+ let tagMatch;
678
+ while (tagMatch = pattern.exec(source)) {
679
+ const attrs = parseStaticAttributes(tagMatch[1] ?? "");
680
+ const value = attrs[propName];
681
+ if (value && iconNamePattern.test(value)) {
682
+ addUsage(usages, { family: defaultFamily, name: value });
683
+ }
684
+ }
685
+ }
557
686
  }
558
687
  function parseStaticAttributes(source) {
559
688
  const attrs = {};