@nextsparkjs/testing 0.1.0-beta.43 → 0.1.0-beta.45
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.d.ts +1 -3
- package/dist/index.js +63 -1166
- package/dist/index.js.map +1 -1
- package/dist/pom/index.d.ts +25 -27
- package/dist/pom/index.js +59 -66
- package/dist/pom/index.js.map +1 -1
- package/dist/utils/index.d.ts +3 -163
- package/dist/utils/index.js +1 -100
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -6
- package/dist/selector-factory-BivSWXbw.d.ts +0 -123
- package/dist/selectors/index.d.ts +0 -1774
- package/dist/selectors/index.js +0 -1000
- package/dist/selectors/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/selectors/selector-factory.ts","../../src/selectors/core-selectors.ts","../../src/selectors/selectors.ts"],"names":["sel","cySelector","selDev","entitySelectors"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Selector Factory\n *\n * Factory function and utilities for creating selector helpers.\n * This file contains only the logic - no selector definitions.\n *\n * Usage:\n * ```typescript\n * import { createSelectorHelpers } from './selector-factory'\n * import { CORE_SELECTORS } from './core-selectors'\n *\n * // Create helpers bound to your selectors\n * const { sel, cySelector, selDev, SELECTORS } = createSelectorHelpers(CORE_SELECTORS)\n * ```\n *\n * Themes can extend core selectors:\n * ```typescript\n * const THEME_SELECTORS = {\n * ...CORE_SELECTORS,\n * customFeature: { ... }\n * }\n * export const { sel, cySelector } = createSelectorHelpers(THEME_SELECTORS)\n * ```\n */\n\n// =============================================================================\n// TYPE DEFINITIONS\n// =============================================================================\n\n/**\n * Placeholder replacements type\n */\nexport type Replacements = Record<string, string | number>\n\n/**\n * Generic selector object type\n */\nexport type SelectorObject = Record<string, unknown>\n\n/**\n * Return type for createSelectorHelpers\n */\nexport interface SelectorHelpers<T extends SelectorObject> {\n /** The selectors object */\n SELECTORS: T\n /** Get selector value by path */\n sel: (path: string, replacements?: Replacements) => string\n /** Alias for sel */\n s: (path: string, replacements?: Replacements) => string\n /** Get selector only in dev/test environments */\n selDev: (path: string, replacements?: Replacements) => string | undefined\n /** Get Cypress selector string [data-cy=\"...\"] */\n cySelector: (path: string, replacements?: Replacements) => string\n /** Create entity-specific selector helpers */\n entitySelectors: (slug: string) => EntitySelectorHelpers\n}\n\n/**\n * Entity selector helpers return type\n */\nexport interface EntitySelectorHelpers {\n page: () => string\n title: () => string\n table: () => string\n tableContainer: () => string\n search: () => string\n addButton: () => string\n row: (id: string) => string\n rowMenu: (id: string) => string\n rowAction: (action: string, id: string) => string\n cell: (field: string, id: string) => string\n form: () => string\n field: (name: string) => string\n submitButton: () => string\n header: (mode: string) => string\n backButton: () => string\n editButton: () => string\n deleteButton: () => string\n detail: () => string\n filter: (field: string) => string\n filterTrigger: (field: string) => string\n filterOption: (field: string, value: string) => string\n}\n\n// =============================================================================\n// UTILITY FUNCTIONS\n// =============================================================================\n\n/**\n * Navigate to a value in a nested object using dot notation\n *\n * @param obj - Object to navigate\n * @param path - Dot-separated path (e.g., \"dashboard.navigation.main\")\n * @returns The value at the path, or undefined if not found\n */\nexport function getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n return path.split('.').reduce((current, key) => {\n if (current && typeof current === 'object' && key in current) {\n return (current as Record<string, unknown>)[key]\n }\n return undefined\n }, obj as unknown)\n}\n\n/**\n * Replace placeholders in a selector string\n *\n * @param selector - Selector pattern with {placeholder} syntax\n * @param replacements - Object with replacement values\n * @returns Selector with placeholders replaced\n *\n * @example\n * replacePlaceholders('{slug}-row-{id}', { slug: 'customers', id: '123' })\n * // Returns: 'customers-row-123'\n */\nexport function replacePlaceholders(\n selector: string,\n replacements?: Replacements\n): string {\n if (!replacements) return selector\n\n return Object.entries(replacements).reduce(\n (result, [key, value]) => result.replace(new RegExp(`\\\\{${key}\\\\}`, 'g'), String(value)),\n selector\n )\n}\n\n// =============================================================================\n// ENVIRONMENT DETECTION\n// =============================================================================\n\nconst isDevelopment = process.env.NODE_ENV === 'development'\nconst isTest = process.env.NODE_ENV === 'test'\nconst enableTestingAttributes = isDevelopment || isTest\n\n// =============================================================================\n// FACTORY FUNCTION\n// =============================================================================\n\n/**\n * Create selector helper functions bound to a specific selectors object.\n *\n * This factory allows themes to extend core selectors while using\n * the same helper functions.\n *\n * @param selectors - The selectors object to bind helpers to\n * @returns Object with sel, cySelector, selDev, and entitySelectors functions\n *\n * @example Core usage:\n * ```typescript\n * import { CORE_SELECTORS } from './core-selectors'\n * const { sel, cySelector } = createSelectorHelpers(CORE_SELECTORS)\n * ```\n *\n * @example Theme extension:\n * ```typescript\n * const THEME_SELECTORS = {\n * ...CORE_SELECTORS,\n * myCustomFeature: { button: 'custom-btn' }\n * }\n * const { sel, cySelector } = createSelectorHelpers(THEME_SELECTORS)\n * sel('myCustomFeature.button') // 'custom-btn'\n * ```\n */\nexport function createSelectorHelpers<T extends SelectorObject>(\n selectors: T\n): SelectorHelpers<T> {\n /**\n * Get a selector value by path with optional placeholder replacements.\n */\n function sel(path: string, replacements?: Replacements): string {\n const value = getNestedValue(selectors as Record<string, unknown>, path)\n\n if (value === undefined) {\n if (process.env.NODE_ENV === 'development') {\n console.error(`[sel] Invalid selector path: \"${path}\"`)\n }\n return `INVALID_SELECTOR_${path.replace(/\\./g, '_')}`\n }\n\n if (typeof value !== 'string') {\n if (process.env.NODE_ENV === 'development') {\n console.error(\n `[sel] Path \"${path}\" points to an object, not a string. Did you forget a property?`\n )\n }\n return `INVALID_SELECTOR_${path.replace(/\\./g, '_')}`\n }\n\n return replacePlaceholders(value, replacements)\n }\n\n /**\n * Get a Cypress selector string (wrapped with [data-cy=\"...\"])\n */\n function cySelector(path: string, replacements?: Replacements): string {\n return `[data-cy=\"${sel(path, replacements)}\"]`\n }\n\n /**\n * Get selector only in development/test environments.\n */\n function selDev(path: string, replacements?: Replacements): string | undefined {\n if (!enableTestingAttributes) return undefined\n return sel(path, replacements)\n }\n\n /**\n * Create a set of entity selectors for a specific slug.\n */\n function entitySelectors(slug: string): EntitySelectorHelpers {\n return {\n // Page\n page: () => sel('entities.page.container', { slug }),\n title: () => sel('entities.page.title', { slug }),\n\n // Table\n table: () => sel('entities.table.element', { slug }),\n tableContainer: () => sel('entities.table.container', { slug }),\n search: () => sel('entities.table.search', { slug }),\n addButton: () => sel('entities.table.addButton', { slug }),\n row: (id: string) => sel('entities.table.row', { slug, id }),\n rowMenu: (id: string) => sel('entities.table.rowMenu', { slug, id }),\n rowAction: (action: string, id: string) =>\n sel('entities.table.rowAction', { slug, action, id }),\n cell: (field: string, id: string) =>\n sel('entities.table.cell', { slug, field, id }),\n\n // Form\n form: () => sel('entities.form.container', { slug }),\n field: (name: string) => sel('entities.form.field', { slug, name }),\n submitButton: () => sel('entities.form.submitButton', { slug }),\n\n // Header\n header: (mode: string) => sel('entities.header.container', { slug, mode }),\n backButton: () => sel('entities.header.backButton', { slug }),\n editButton: () => sel('entities.header.editButton', { slug }),\n deleteButton: () => sel('entities.header.deleteButton', { slug }),\n\n // Detail\n detail: () => sel('entities.detail.container', { slug }),\n\n // Filter\n filter: (field: string) => sel('entities.filter.container', { slug, field }),\n filterTrigger: (field: string) =>\n sel('entities.filter.trigger', { slug, field }),\n filterOption: (field: string, value: string) =>\n sel('entities.filter.option', { slug, field, value }),\n }\n }\n\n return {\n SELECTORS: selectors,\n sel,\n s: sel,\n selDev,\n cySelector,\n entitySelectors,\n }\n}\n","/**\n * Core Selectors\n *\n * Single source of truth for all data-cy selectors in core components.\n * Themes can import and extend these selectors.\n *\n * Naming conventions:\n * - Static selectors: \"domain-element\" (e.g., \"nav-main\", \"login-form\")\n * - Dynamic selectors: \"domain-element-{placeholder}\" (e.g., \"{slug}-row-{id}\")\n *\n * Placeholders:\n * - {slug} - Entity slug (customers, tasks, pages, posts)\n * - {id} - Record ID\n * - {name} - Field name\n * - {section} - Settings section name\n * - {action} - Action name (edit, delete, view)\n * - {value} - Filter/option value\n * - {index} - Array index\n * - {mode} - View mode (view, edit, create)\n */\n\nexport const CORE_SELECTORS = {\n // ===========================================================================\n // AUTH\n // ===========================================================================\n auth: {\n login: {\n // Structure\n card: 'login-form-card',\n header: 'login-header',\n footer: 'login-footer',\n form: 'login-form',\n options: 'login-options',\n // Inputs\n emailInput: 'login-email-input',\n passwordInput: 'login-password-input',\n emailError: 'login-email-error',\n passwordError: 'login-password-error',\n // Buttons\n submit: 'login-submit',\n googleSignin: 'login-google-signin',\n showEmail: 'login-show-email',\n hideEmail: 'login-hide-email',\n // Links\n forgotPassword: 'login-forgot-password',\n signupLink: 'login-signup-link',\n // Misc\n inviteBanner: 'login-invite-banner',\n errorAlert: 'login-error-alert',\n rememberCheckbox: 'login-remember-checkbox',\n },\n signup: {\n form: 'signup-form',\n firstName: 'signup-first-name',\n lastName: 'signup-last-name',\n email: 'signup-email',\n password: 'signup-password',\n confirmPassword: 'signup-confirm-password',\n submitButton: 'signup-submit',\n googleButton: 'signup-google',\n loginLink: 'signup-login-link',\n inviteBanner: 'signup-invite-banner',\n error: 'signup-error',\n },\n forgotPassword: {\n form: 'forgot-password-form',\n email: 'forgot-password-email',\n submitButton: 'forgot-password-submit',\n backToLogin: 'forgot-password-back',\n successMessage: 'forgot-password-success',\n successBack: 'forgot-password-success-back',\n retryButton: 'forgot-password-retry',\n error: 'forgot-password-error',\n },\n resetPassword: {\n form: 'reset-password-form',\n password: 'reset-password-password',\n confirmPassword: 'reset-password-confirm',\n submitButton: 'reset-password-submit',\n error: 'reset-password-error',\n success: 'reset-password-success',\n loginLink: 'reset-password-login-link',\n backToLogin: 'reset-password-back',\n },\n verifyEmail: {\n container: 'verify-email-container',\n resendButton: 'verify-email-resend',\n successMessage: 'verify-email-success',\n error: 'verify-email-error',\n },\n devKeyring: {\n container: 'devkeyring-container',\n trigger: 'devkeyring-trigger',\n content: 'devkeyring-content',\n user: 'devkeyring-user-{index}',\n },\n },\n\n // ===========================================================================\n // DASHBOARD - Shell & TopNav\n // ===========================================================================\n dashboard: {\n shell: {\n container: 'dashboard-container',\n quickCreateButton: 'topnav-quick-create-button',\n quickCreateDropdown: 'topnav-quick-create-dropdown',\n quickCreateLink: 'quick-create-{slug}-link',\n },\n topnav: {\n sidebarToggle: 'topnav-sidebar-toggle',\n header: 'topnav-header',\n logo: 'topnav-logo',\n searchSection: 'topnav-search-section',\n actions: 'topnav-actions',\n notifications: 'topnav-notifications',\n help: 'topnav-help',\n themeToggle: 'topnav-theme-toggle',\n superadmin: 'topnav-superadmin',\n devtools: 'topnav-devtools',\n userMenuTrigger: 'topnav-user-menu-trigger',\n userMenu: 'topnav-user-menu',\n menuItem: 'topnav-menu-{icon}',\n menuAction: 'topnav-menu-{action}',\n userLoading: 'topnav-user-loading',\n signin: 'topnav-signin',\n signup: 'topnav-signup',\n // Mobile\n mobileActions: 'topnav-mobile-actions',\n mobileMenuToggle: 'topnav-mobile-menu-toggle',\n mobileMenu: 'topnav-mobile-menu',\n mobileUserInfo: 'topnav-mobile-user-info',\n mobileLinkProfile: 'topnav-mobile-link-profile',\n mobileLinkSettings: 'topnav-mobile-link-settings',\n mobileLinkBilling: 'topnav-mobile-link-billing',\n mobileSignout: 'topnav-mobile-signout',\n mobileNavSuperadmin: 'topnav-mobile-nav-superadmin',\n mobileNavDevtools: 'topnav-mobile-nav-devtools',\n },\n sidebar: {\n main: 'sidebar-main',\n header: 'sidebar-header',\n content: 'sidebar-content',\n footer: 'sidebar-footer',\n },\n navigation: {\n main: 'nav-main',\n dashboardLink: 'nav-link-dashboard',\n entityLink: 'nav-link-entity-{slug}',\n section: 'nav-section-{id}',\n sectionLabel: 'nav-section-label-{id}',\n sectionItem: 'nav-section-item-{sectionId}-{itemId}',\n },\n // Mobile components\n mobile: {\n topbar: {\n header: 'mobile-topbar-header',\n userProfile: 'mobile-topbar-user-profile',\n notifications: 'mobile-topbar-notifications',\n themeToggle: 'mobile-topbar-theme-toggle',\n },\n bottomNav: {\n nav: 'mobile-bottomnav-nav',\n item: 'mobile-bottomnav-item-{id}',\n },\n moreSheet: {\n content: 'mobile-more-sheet-content',\n item: 'mobile-more-sheet-item-{id}',\n superadminLink: 'mobile-more-sheet-superadmin-link',\n teamSwitcher: 'mobile-more-sheet-team-switcher',\n signoutButton: 'mobile-more-sheet-signout-button',\n },\n quickCreateSheet: {\n content: 'mobile-quick-create-sheet-content',\n item: 'mobile-quick-create-sheet-item-{slug}',\n },\n },\n },\n\n // ===========================================================================\n // DASHBOARD - Entities (Dynamic with {slug})\n // ===========================================================================\n entities: {\n page: {\n container: '{slug}-page',\n title: '{slug}-title',\n },\n list: {\n container: '{slug}-list',\n },\n table: {\n container: '{slug}-table-container',\n element: '{slug}-table',\n search: '{slug}-search',\n addButton: '{slug}-add',\n selectionCount: '{slug}-selection-count',\n selectAll: '{slug}-select-all',\n row: '{slug}-row-{id}',\n rowSelect: '{slug}-select-{id}',\n cell: '{slug}-cell-{field}-{id}',\n rowMenu: '{slug}-menu-{id}',\n rowActionsMenu: '{slug}-actions-{id}',\n rowAction: '{slug}-menu-{action}-{id}',\n quickAction: '{slug}-quick-{action}-{id}',\n },\n pagination: {\n container: '{slug}-pagination',\n pageSize: '{slug}-page-size',\n pageSizeOption: '{slug}-page-size-{size}',\n pageInfo: '{slug}-page-info',\n first: '{slug}-page-first',\n prev: '{slug}-page-prev',\n next: '{slug}-page-next',\n last: '{slug}-page-last',\n },\n bulk: {\n bar: '{slug}-bulk-bar',\n count: '{slug}-bulk-count',\n selectAll: '{slug}-bulk-select-all',\n statusButton: '{slug}-bulk-status',\n deleteButton: '{slug}-bulk-delete',\n clearButton: '{slug}-bulk-clear',\n statusDialog: '{slug}-bulk-status-dialog',\n statusSelect: '{slug}-bulk-status-select',\n statusOption: '{slug}-bulk-status-option-{value}',\n statusCancel: '{slug}-bulk-status-cancel',\n statusConfirm: '{slug}-bulk-status-confirm',\n deleteDialog: '{slug}-bulk-delete-dialog',\n deleteCancel: '{slug}-bulk-delete-cancel',\n deleteConfirm: '{slug}-bulk-delete-confirm',\n },\n header: {\n container: '{slug}-{mode}-header',\n backButton: '{slug}-back-btn',\n title: '{slug}-title',\n copyId: '{slug}-copy-id',\n editButton: '{slug}-edit-btn',\n deleteButton: '{slug}-delete-btn',\n deleteDialog: '{slug}-delete-dialog',\n deleteCancel: '{slug}-delete-cancel',\n deleteConfirm: '{slug}-delete-confirm',\n },\n detail: {\n container: '{slug}-detail',\n },\n form: {\n container: '{slug}-form',\n field: '{slug}-field-{name}',\n submitButton: '{slug}-form-submit',\n cancelButton: '{slug}-form-cancel',\n },\n filter: {\n container: '{slug}-filter-{field}',\n trigger: '{slug}-filter-{field}-trigger',\n content: '{slug}-filter-{field}-content',\n option: '{slug}-filter-{field}-option-{value}',\n badge: '{slug}-filter-{field}-badge-{value}',\n removeBadge: '{slug}-filter-{field}-remove-{value}',\n clearAll: '{slug}-filter-{field}-clear-all',\n },\n search: {\n container: '{slug}-search',\n icon: '{slug}-search-icon',\n input: '{slug}-search-input',\n clear: '{slug}-search-clear',\n },\n confirm: {\n dialog: '{slug}-confirm-dialog',\n cancel: '{slug}-confirm-cancel',\n action: '{slug}-confirm-action',\n },\n childEntity: {\n container: '{parentSlug}-{childName}-container',\n addButton: '{parentSlug}-{childName}-add-button',\n },\n },\n\n // ===========================================================================\n // DASHBOARD - Global Search\n // ===========================================================================\n globalSearch: {\n modal: 'search-modal',\n trigger: 'search-trigger',\n input: 'search-input',\n results: 'search-results',\n result: 'search-result',\n },\n\n // ===========================================================================\n // DASHBOARD - Taxonomies (Categories, Tags, etc.)\n // ===========================================================================\n taxonomies: {\n list: {\n container: 'taxonomies-list-table',\n createButton: 'taxonomies-create-button',\n row: 'taxonomy-row-{id}',\n editButton: 'taxonomies-edit-{id}',\n deleteButton: 'taxonomies-delete-{id}',\n },\n form: {\n dialog: 'taxonomy-form-dialog',\n nameInput: 'taxonomy-name-input',\n slugInput: 'taxonomy-slug-input',\n descriptionInput: 'taxonomy-description-input',\n iconInput: 'taxonomy-icon-input',\n colorInput: 'taxonomy-color-input',\n parentSelect: 'taxonomy-parent-select',\n orderInput: 'taxonomy-order-input',\n saveButton: 'taxonomy-save-button',\n cancelButton: 'taxonomy-cancel-button',\n },\n confirmDelete: {\n dialog: 'taxonomy-delete-dialog',\n confirmButton: 'taxonomy-delete-confirm',\n cancelButton: 'taxonomy-delete-cancel',\n },\n },\n\n // ===========================================================================\n // DASHBOARD - Teams\n // ===========================================================================\n teams: {\n switcher: {\n compact: 'team-switcher-compact',\n full: 'team-switcher',\n dropdown: 'team-switcher-dropdown',\n option: 'team-option-{slug}',\n manageLink: 'manage-teams-link',\n createButton: 'create-team-button',\n },\n switchModal: {\n container: 'team-switch-modal',\n },\n create: {\n dialog: 'create-team-dialog',\n button: 'create-team-button',\n nameInput: 'team-name-input',\n slugInput: 'team-slug-input',\n descriptionInput: 'team-description-input',\n cancel: 'cancel-create-team',\n submit: 'submit-create-team',\n },\n members: {\n section: 'team-members-section',\n row: 'member-row-{id}',\n actions: 'member-actions-{id}',\n makeRole: 'make-{role}-action',\n remove: 'remove-member-action',\n },\n invite: {\n button: 'invite-member-button',\n buttonDisabled: 'invite-member-button-disabled',\n dialog: 'invite-member-dialog',\n emailInput: 'member-email-input',\n roleSelect: 'member-role-select',\n roleOption: 'role-option-{role}',\n cancel: 'cancel-invite-member',\n submit: 'submit-invite-member',\n },\n invitations: {\n row: 'invitation-row-{id}',\n cancel: 'cancel-invitation-{id}',\n },\n },\n\n // ===========================================================================\n // DASHBOARD - Block Editor (Pages & Posts)\n // ===========================================================================\n blockEditor: {\n container: 'builder-editor',\n titleInput: 'editor-title-input',\n slugInput: 'editor-slug-input',\n saveButton: 'save-btn',\n statusBadge: 'status-badge',\n leftSidebarToggle: 'left-sidebar-toggle',\n viewModeToggle: 'view-mode-toggle',\n\n blockPicker: {\n container: 'block-picker',\n searchInput: 'block-search-input',\n categoryAll: 'category-all',\n category: 'category-{category}',\n blockItem: 'block-item-{slug}',\n addBlock: 'add-block-{slug}',\n },\n\n blockCanvas: {\n container: 'block-preview-canvas',\n empty: 'block-preview-canvas-empty',\n },\n\n previewCanvas: {\n container: 'block-preview-canvas',\n empty: 'block-preview-canvas-empty',\n block: 'preview-block-{id}',\n moveUp: 'preview-block-{id}-move-up',\n moveDown: 'preview-block-{id}-move-down',\n },\n\n sortableBlock: {\n container: 'sortable-block-{id}',\n dragHandle: 'drag-handle-{id}',\n duplicate: 'duplicate-block-{id}',\n remove: 'remove-block-{id}',\n error: 'block-error-{id}',\n },\n\n settingsPanel: {\n container: 'block-settings-panel',\n empty: 'settings-panel-empty',\n error: 'settings-panel-error',\n resetProps: 'reset-block-props',\n removeBlock: 'remove-block-settings',\n tabContent: 'tab-content',\n tabDesign: 'tab-design',\n tabAdvanced: 'tab-advanced',\n },\n\n pageSettings: {\n container: 'page-settings-panel',\n seoTrigger: 'seo-settings-trigger',\n metaTitle: 'seo-meta-title',\n metaDescription: 'seo-meta-description',\n metaKeywords: 'seo-meta-keywords',\n ogImage: 'seo-og-image',\n customFieldsTrigger: 'custom-fields-trigger',\n customFieldKey: 'custom-field-key-{index}',\n customFieldValue: 'custom-field-value-{index}',\n customFieldRemove: 'custom-field-remove-{index}',\n addCustomField: 'add-custom-field',\n },\n\n statusSelector: {\n trigger: 'status-selector',\n option: 'status-option-{value}',\n },\n\n dynamicForm: {\n container: 'dynamic-form',\n field: 'field-{name}',\n fieldGroup: 'field-group-{id}',\n arrayGroup: 'array-group-{name}',\n },\n\n arrayField: {\n container: 'array-field-{name}',\n item: 'array-field-{name}-{index}-{field}',\n moveUp: 'array-field-{name}-{index}-move-up',\n moveDown: 'array-field-{name}-{index}-move-down',\n remove: 'array-field-{name}-{index}-remove',\n add: 'array-field-{name}-add',\n },\n\n entityFieldsSidebar: {\n container: 'entity-fields-sidebar',\n field: 'field-{name}',\n category: 'category-{slug}',\n },\n\n // Post-specific fields\n postFields: {\n excerpt: 'field-excerpt',\n featuredImage: 'field-featuredImage',\n featuredImageUpload: 'field-featuredImage-upload',\n categories: 'field-categories',\n categoryOption: 'category-option-{id}',\n categoryBadge: 'category-badge-{id}',\n categoryRemove: 'category-remove-{id}',\n },\n\n // Page/Post locale field\n localeField: {\n select: 'field-locale',\n option: 'locale-option-{locale}',\n },\n },\n\n // ===========================================================================\n // SETTINGS\n // ===========================================================================\n settings: {\n layout: {\n main: 'settings-layout-main',\n nav: 'settings-layout-nav',\n backToDashboard: 'settings-layout-back-to-dashboard',\n header: 'settings-layout-header',\n contentArea: 'settings-layout-content-area',\n sidebar: 'settings-layout-sidebar',\n pageContent: 'settings-layout-page-content',\n },\n sidebar: {\n main: 'settings-sidebar-main',\n header: 'settings-sidebar-header',\n navItems: 'settings-sidebar-nav-items',\n navItem: 'settings-sidebar-nav-{section}',\n },\n overview: {\n container: 'settings-overview',\n item: 'settings-overview-{key}',\n },\n profile: {\n container: 'settings-profile',\n form: 'profile-form',\n avatar: 'profile-avatar',\n avatarUpload: 'profile-avatar-upload',\n firstName: 'profile-first-name',\n lastName: 'profile-last-name',\n email: 'profile-email',\n submitButton: 'profile-submit',\n successMessage: 'profile-success',\n },\n password: {\n container: 'settings-password',\n form: 'password-form',\n currentPassword: 'password-current',\n newPassword: 'password-new',\n confirmPassword: 'password-confirm',\n submitButton: 'password-submit',\n successMessage: 'password-success',\n },\n team: {\n container: 'settings-team',\n name: 'team-name',\n slug: 'team-slug',\n description: 'team-description',\n avatar: 'team-avatar',\n avatarUpload: 'team-avatar-upload',\n submitButton: 'team-submit',\n deleteButton: 'team-delete',\n deleteDialog: 'team-delete-dialog',\n deleteConfirm: 'team-delete-confirm',\n },\n members: {\n container: 'settings-members',\n inviteButton: 'members-invite',\n inviteDialog: 'members-invite-dialog',\n inviteEmail: 'members-invite-email',\n inviteRole: 'members-invite-role',\n inviteSubmit: 'members-invite-submit',\n memberRow: 'member-row-{id}',\n memberRole: 'member-role-{id}',\n memberRemove: 'member-remove-{id}',\n pendingInvites: 'members-pending-invites',\n pendingInvite: 'pending-invite-{id}',\n cancelInvite: 'cancel-invite-{id}',\n },\n billing: {\n container: 'settings-billing',\n main: 'billing-main',\n header: 'billing-header',\n currentPlan: 'billing-current-plan',\n upgradeButton: 'billing-upgrade',\n upgradePlan: 'billing-upgrade-plan',\n cancelButton: 'billing-cancel',\n addPayment: 'billing-add-payment',\n invoicesTable: 'billing-invoices',\n invoicesTableAlt: 'invoices-table',\n invoiceRow: 'invoice-row-{id}',\n invoicesRow: 'invoices-row',\n invoiceDownload: 'invoice-download-{id}',\n invoicesLoadMore: 'invoices-load-more',\n invoiceStatusBadge: 'invoice-status-badge',\n paymentMethod: 'billing-payment-method',\n paymentMethodAlt: 'payment-method',\n updatePayment: 'billing-update-payment',\n usage: 'billing-usage',\n usageDashboard: 'usage-dashboard',\n },\n pricing: {\n table: 'pricing-table',\n settingsTable: 'pricing-settings-table',\n },\n features: {\n placeholder: 'feature-placeholder-{feature}',\n content: '{feature}-content',\n placeholderUpgradeBtn: 'placeholder-upgrade-btn',\n },\n apiKeys: {\n page: 'api-keys-page',\n title: 'api-keys-title',\n container: 'settings-api-keys',\n createButton: 'api-keys-create-button',\n createDialog: 'api-keys-create-dialog',\n list: 'api-keys-list',\n skeleton: 'api-keys-skeleton',\n empty: 'api-keys-empty',\n emptyCreateButton: 'api-keys-empty-create-button',\n keyName: 'api-key-name',\n keyScopes: 'api-key-scopes',\n scopeOption: 'api-key-scope-{scope}',\n createSubmit: 'api-key-create-submit',\n keyRow: 'api-key-row-{id}',\n keyName_: 'api-keys-name-{id}',\n keyPrefix: 'api-keys-prefix-{id}',\n copyPrefix: 'api-keys-copy-prefix-{id}',\n keyStatus: 'api-keys-status-{id}',\n statusBadge: 'api-keys-status-badge-{id}',\n menuTrigger: 'api-keys-menu-trigger-{id}',\n menu: 'api-keys-menu-{id}',\n viewDetails: 'api-keys-view-details-{id}',\n toggle: 'api-keys-toggle-{id}',\n revoke: 'api-keys-revoke-{id}',\n scopes: 'api-keys-scopes-{id}',\n scope: 'api-keys-scope-{id}-{scope}',\n stats: 'api-keys-stats-{id}',\n totalRequests: 'api-keys-total-requests-{id}',\n last24h: 'api-keys-last-24h-{id}',\n avgTime: 'api-keys-avg-time-{id}',\n metadata: 'api-keys-metadata-{id}',\n createdAt: 'api-keys-created-at-{id}',\n lastUsed: 'api-keys-last-used-{id}',\n expiresAt: 'api-keys-expires-at-{id}',\n detailsDialog: 'api-keys-details-dialog',\n detailsTitle: 'api-keys-details-title',\n detailsLoading: 'api-keys-details-loading',\n detailsContent: 'api-keys-details-content',\n detailsBasicInfo: 'api-keys-details-basic-info',\n detailsName: 'api-keys-details-name',\n detailsStatus: 'api-keys-details-status',\n detailsStats: 'api-keys-details-stats',\n detailsTotalRequests: 'api-keys-details-total-requests',\n detailsLast24h: 'api-keys-details-last-24h',\n detailsLast7d: 'api-keys-details-last-7d',\n detailsLast30d: 'api-keys-details-last-30d',\n detailsAvgTime: 'api-keys-details-avg-time',\n detailsSuccessRate: 'api-keys-details-success-rate',\n keyReveal: 'api-key-reveal-{id}',\n keyRevoke: 'api-key-revoke-{id}',\n revokeDialog: 'api-key-revoke-dialog',\n revokeConfirm: 'api-key-revoke-confirm',\n newKeyDisplay: 'api-key-new-display',\n copyKey: 'api-key-copy',\n dialogFooter: 'api-keys-dialog-footer',\n },\n notifications: {\n container: 'settings-notifications',\n emailToggle: 'notifications-email',\n pushToggle: 'notifications-push',\n category: 'notifications-{category}',\n submitButton: 'notifications-submit',\n },\n teams: {\n main: 'teams-settings-main',\n header: 'teams-settings-header',\n loading: 'teams-settings-loading',\n singleUser: 'teams-settings-single-user',\n teamsList: 'teams-settings-teams-list',\n teamDetails: 'teams-settings-team-details',\n },\n plans: {\n main: 'plans-settings-main',\n header: 'plans-settings-header',\n table: 'plans-settings-table',\n },\n },\n\n // ===========================================================================\n // SUPERADMIN (Super Admin Panel)\n // ===========================================================================\n superadmin: {\n container: 'superadmin-container',\n navigation: {\n dashboard: 'superadmin-nav-dashboard',\n users: 'superadmin-nav-users',\n teams: 'superadmin-nav-teams',\n teamRoles: 'superadmin-nav-team-roles',\n docs: 'superadmin-nav-docs',\n subscriptions: 'superadmin-nav-subscriptions',\n analytics: 'superadmin-nav-analytics',\n config: 'superadmin-nav-config',\n exitToDashboard: 'superadmin-sidebar-exit-to-dashboard',\n },\n dashboard: {\n container: 'superadmin-dashboard',\n },\n users: {\n container: 'superadmin-users-container',\n table: 'superadmin-users-table',\n search: 'superadmin-users-search',\n row: 'superadmin-user-row-{id}',\n viewButton: 'superadmin-user-view-{id}',\n editButton: 'superadmin-user-edit-{id}',\n banButton: 'superadmin-user-ban-{id}',\n deleteButton: 'superadmin-user-delete-{id}',\n impersonateButton: 'superadmin-user-impersonate-{id}',\n },\n userDetail: {\n container: 'superadmin-user-detail',\n email: 'superadmin-user-email',\n role: 'superadmin-user-role',\n status: 'superadmin-user-status',\n teams: 'superadmin-user-teams',\n activity: 'superadmin-user-activity',\n actions: 'superadmin-user-actions',\n // User Metadata\n metas: 'superadmin-user-metas',\n metasTitle: 'superadmin-user-metas-title',\n metasTable: 'superadmin-user-metas-table',\n metasEmpty: 'superadmin-user-metas-empty',\n metaRow: 'superadmin-user-meta-row-{key}',\n metaKey: 'superadmin-user-meta-key-{key}',\n metaValue: 'superadmin-user-meta-value-{key}',\n metaType: 'superadmin-user-meta-type-{key}',\n metaPublic: 'superadmin-user-meta-public-{key}',\n metaSearchable: 'superadmin-user-meta-searchable-{key}',\n },\n teams: {\n container: 'superadmin-teams-container',\n table: 'superadmin-teams-table',\n search: 'superadmin-teams-search',\n row: 'superadmin-team-row-{id}',\n actionsButton: 'superadmin-team-actions-{id}',\n viewButton: 'superadmin-team-view-{id}',\n editButton: 'superadmin-team-edit-{id}',\n deleteButton: 'superadmin-team-delete-{id}',\n },\n teamDetail: {\n container: 'superadmin-team-detail',\n name: 'superadmin-team-name',\n owner: 'superadmin-team-owner',\n members: 'superadmin-team-members',\n plan: 'superadmin-team-plan',\n usage: 'superadmin-team-usage',\n },\n subscriptions: {\n container: 'superadmin-subscriptions-container',\n mrr: 'superadmin-subscriptions-mrr',\n planDistribution: 'superadmin-subscriptions-plan-distribution',\n planCount: 'superadmin-subscriptions-plan-count-{plan}',\n activeCount: 'superadmin-subscriptions-active-count',\n },\n pagination: {\n pageSize: 'superadmin-page-size-select',\n first: 'superadmin-pagination-first',\n prev: 'superadmin-pagination-prev',\n next: 'superadmin-pagination-next',\n last: 'superadmin-pagination-last',\n },\n filters: {\n search: 'superadmin-search-{context}',\n dropdown: 'superadmin-filter-{context}',\n },\n permissions: {\n row: 'superadmin-permission-row-{permission}',\n },\n teamRoles: {\n backButton: 'back-to-superadmin',\n roleCard: 'role-card-{role}',\n permissionRow: 'permission-row-{permission}',\n },\n planFeatures: {\n featureRow: 'superadmin-feature-row-{slug}',\n limitRow: 'superadmin-limit-row-{slug}',\n },\n },\n\n // ===========================================================================\n // DEVTOOLS\n // ===========================================================================\n devtools: {\n navigation: {\n sidebar: 'devtools-sidebar',\n collapseToggle: 'devtools-sidebar-collapse-toggle',\n navItem: 'devtools-nav-{section}',\n exitToDashboard: 'devtools-sidebar-exit-to-dashboard',\n goToSuperadmin: 'devtools-sidebar-go-to-superadmin',\n mobileHeader: 'devtools-mobile-header',\n },\n home: {\n page: 'devtools-home-page',\n styleLink: 'devtools-home-style-link',\n testsLink: 'devtools-home-tests-link',\n configLink: 'devtools-home-config-link',\n },\n style: {\n page: 'devtools-style-page',\n tabComponents: 'devtools-style-tab-components',\n tabFieldTypes: 'devtools-style-tab-field-types',\n tabTheme: 'devtools-style-tab-theme',\n tabGuidelines: 'devtools-style-tab-guidelines',\n componentGallery: 'devtools-style-component-gallery',\n fieldTypes: 'devtools-style-field-types',\n themePreview: 'devtools-style-theme-preview',\n },\n config: {\n page: 'devtools-config-page',\n viewer: 'devtools-config-viewer',\n tabTheme: 'devtools-config-tab-theme',\n tabEntities: 'devtools-config-tab-entities',\n themeContent: 'devtools-config-theme-content',\n entitiesContent: 'devtools-config-entities-content',\n copyTheme: 'devtools-config-copy-theme',\n copyEntities: 'devtools-config-copy-entities',\n },\n tests: {\n page: 'devtools-tests-page',\n viewer: 'devtools-tests-viewer',\n loading: 'devtools-tests-loading',\n tree: 'devtools-tests-tree',\n folder: 'devtools-tests-folder-{name}',\n file: 'devtools-tests-file-{name}',\n content: 'devtools-tests-content',\n markdownContent: 'devtools-tests-markdown-content',\n notFound: 'devtools-tests-not-found',\n backToList: 'devtools-tests-back-to-list',\n emptyState: 'devtools-tests-empty-state',\n fileLoading: 'devtools-tests-file-loading',\n error: 'devtools-tests-error',\n // Dashboard\n dashboard: 'devtools-tests-dashboard',\n dashboardButton: 'devtools-tests-dashboard-button',\n dashboardStats: 'devtools-tests-dashboard-stats',\n dashboardStatFeatures: 'devtools-tests-dashboard-stat-features',\n dashboardStatFlows: 'devtools-tests-dashboard-stat-flows',\n dashboardStatFiles: 'devtools-tests-dashboard-stat-files',\n dashboardStatTags: 'devtools-tests-dashboard-stat-tags',\n dashboardGaps: 'devtools-tests-dashboard-gaps',\n dashboardGapItem: 'devtools-tests-dashboard-gap-{slug}',\n },\n features: {\n page: 'devtools-features-page',\n viewer: 'devtools-features-viewer',\n search: 'devtools-features-search',\n filterAll: 'devtools-features-filter-all',\n filterCategory: 'devtools-features-filter-{category}',\n coverageAll: 'devtools-features-coverage-all',\n coverageCovered: 'devtools-features-coverage-covered',\n coverageUncovered: 'devtools-features-coverage-uncovered',\n card: 'devtools-features-card-{slug}',\n copyTag: 'devtools-features-copy-{slug}',\n },\n flows: {\n page: 'devtools-flows-page',\n viewer: 'devtools-flows-viewer',\n search: 'devtools-flows-search',\n filterAll: 'devtools-flows-filter-all',\n filterCategory: 'devtools-flows-filter-{category}',\n coverageAll: 'devtools-flows-coverage-all',\n coverageCovered: 'devtools-flows-coverage-covered',\n coverageUncovered: 'devtools-flows-coverage-uncovered',\n card: 'devtools-flows-card-{slug}',\n copyTag: 'devtools-flows-copy-{slug}',\n },\n blocks: {\n page: 'devtools-blocks-page',\n viewer: 'devtools-blocks-viewer',\n search: 'devtools-blocks-search',\n filterAll: 'devtools-blocks-filter-all',\n filterCategory: 'devtools-blocks-filter-{category}',\n coverageAll: 'devtools-blocks-coverage-all',\n coverageCovered: 'devtools-blocks-coverage-covered',\n coverageUncovered: 'devtools-blocks-coverage-uncovered',\n card: 'devtools-blocks-card-{slug}',\n copyTag: 'devtools-blocks-copy-{slug}',\n viewDetails: 'devtools-blocks-view-{slug}',\n detail: {\n page: 'devtools-block-detail-{slug}',\n back: 'devtools-block-detail-back',\n tabPreview: 'devtools-block-detail-tab-preview',\n tabFields: 'devtools-block-detail-tab-fields',\n tabOverview: 'devtools-block-detail-tab-overview',\n preview: 'devtools-block-detail-preview-{slug}',\n exampleSelector: 'devtools-block-example-selector',\n exampleBtn: 'devtools-block-example-btn-{index}',\n exampleName: 'devtools-block-example-name',\n exampleDescription: 'devtools-block-example-description',\n },\n },\n tags: {\n page: 'devtools-tags-page',\n viewer: 'devtools-tags-viewer',\n search: 'devtools-tags-search',\n category: 'devtools-tags-category-{category}',\n tag: 'devtools-tags-tag-{tag}',\n tagLink: 'devtools-tags-link-{tag}',\n filesPanel: 'devtools-tags-files-panel-{tag}',\n },\n scheduledActions: {\n page: 'devtools-scheduled-actions-page',\n filterStatus: 'scheduled-actions-filter-status',\n filterType: 'scheduled-actions-filter-type',\n filterApply: 'scheduled-actions-filter-apply',\n filterReset: 'scheduled-actions-filter-reset',\n table: 'scheduled-actions-table',\n row: 'scheduled-actions-row-{id}',\n cellType: 'scheduled-actions-cell-type',\n cellStatus: 'scheduled-actions-cell-status',\n cellScheduledAt: 'scheduled-actions-cell-scheduled-at',\n cellTeam: 'scheduled-actions-cell-team',\n cellPayload: 'scheduled-actions-cell-payload',\n cellError: 'scheduled-actions-cell-error',\n statusPending: 'scheduled-actions-status-pending',\n statusRunning: 'scheduled-actions-status-running',\n statusCompleted: 'scheduled-actions-status-completed',\n statusFailed: 'scheduled-actions-status-failed',\n pagination: 'scheduled-actions-pagination',\n paginationPrev: 'scheduled-actions-pagination-prev',\n paginationNext: 'scheduled-actions-pagination-next',\n emptyState: 'scheduled-actions-empty-state',\n },\n },\n\n // ===========================================================================\n // PUBLIC PAGES\n // ===========================================================================\n public: {\n navbar: {\n container: 'public-navbar',\n logo: 'navbar-logo',\n loginButton: 'navbar-login',\n signupButton: 'navbar-signup',\n },\n footer: {\n container: 'public-footer',\n logo: 'footer-logo',\n },\n page: {\n container: 'public-page-{slug}',\n title: 'page-title',\n content: 'page-content',\n },\n blog: {\n listContainer: 'blog-list',\n postCard: 'blog-post-{slug}',\n },\n },\n\n // ===========================================================================\n // COMMON / SHARED\n // ===========================================================================\n common: {\n permissionDenied: 'permission-denied',\n loading: 'loading-spinner',\n error: 'error-message',\n toast: 'toast-{type}',\n modal: {\n overlay: 'modal-overlay',\n container: 'modal-container',\n title: 'modal-title',\n close: 'modal-close',\n content: 'modal-content',\n footer: 'modal-footer',\n },\n },\n} as const\n\n/**\n * Type for the CORE_SELECTORS object\n */\nexport type CoreSelectorsType = typeof CORE_SELECTORS\n","/**\n * Centralized Selector System\n *\n * Single source of truth for data-cy selectors.\n * Components consume selectors from this module, ensuring consistency\n * between UI components, POM classes, and tests.\n *\n * Architecture:\n * - `core-selectors.ts` - CORE_SELECTORS object (selector definitions)\n * - `selector-factory.ts` - createSelectorHelpers() factory function\n * - `selectors.ts` (this file) - Pre-bound exports for core usage\n *\n * @example Component usage:\n * ```tsx\n * import { sel } from '@nextsparkjs/testing/selectors'\n *\n * <nav data-cy={sel('dashboard.navigation.main')}>\n * <Link data-cy={sel('dashboard.navigation.entityLink', { slug: 'customers' })}>\n * ```\n *\n * @example Test/POM usage:\n * ```ts\n * import { cySelector } from '@nextsparkjs/testing/selectors'\n *\n * cy.get(cySelector('dashboard.navigation.main'))\n * ```\n *\n * @example Theme extension:\n * ```ts\n * // In theme's selectors.ts\n * import { createSelectorHelpers, CORE_SELECTORS } from '@nextsparkjs/testing/selectors'\n *\n * const THEME_SELECTORS = { ...CORE_SELECTORS, myFeature: { ... } }\n * export const { sel, cySelector } = createSelectorHelpers(THEME_SELECTORS)\n * ```\n */\n\nimport { createSelectorHelpers } from './selector-factory'\nimport { CORE_SELECTORS, type CoreSelectorsType } from './core-selectors'\n\n// =============================================================================\n// PRE-BOUND EXPORTS (for core components)\n// =============================================================================\n\n/**\n * Create helpers bound to CORE_SELECTORS\n */\nconst helpers = createSelectorHelpers(CORE_SELECTORS)\n\n/**\n * Main selector object - single source of truth\n */\nexport const SELECTORS = helpers.SELECTORS\n\n/**\n * Get a selector value by path with optional placeholder replacements.\n * @see selector-factory.ts for full documentation\n */\nexport const sel = helpers.sel\n\n/**\n * Alias for sel\n */\nexport const s = helpers.s\n\n/**\n * Get selector only in dev/test environments\n */\nexport const selDev = helpers.selDev\n\n/**\n * Get Cypress selector string [data-cy=\"...\"]\n */\nexport const cySelector = helpers.cySelector\n\n/**\n * Create entity-specific selector helpers\n */\nexport const entitySelectors = helpers.entitySelectors\n\n// =============================================================================\n// TYPE EXPORTS\n// =============================================================================\n\n/**\n * Type for the SELECTORS object\n */\nexport type SelectorsType = CoreSelectorsType\n\n/**\n * Re-export Replacements type\n */\nexport type { Replacements } from './selector-factory'\n\n/**\n * Helper type to extract leaf paths from nested object\n */\ntype PathImpl<T, K extends keyof T> = K extends string\n ? T[K] extends Record<string, unknown>\n ? T[K] extends ArrayLike<unknown>\n ? K\n : `${K}.${PathImpl<T[K], keyof T[K]>}`\n : K\n : never\n\ntype Path<T> = PathImpl<T, keyof T>\n\n/**\n * All valid selector paths\n */\nexport type SelectorPath = Path<SelectorsType>\n\n// =============================================================================\n// DEFAULT EXPORT\n// =============================================================================\n\nexport default {\n SELECTORS,\n sel,\n s,\n selDev,\n cySelector,\n entitySelectors,\n}\n"]}
|