@tachui/modifiers 0.8.0-alpha → 0.8.5-alpha
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/README.md +19 -9
- package/dist/animation/index.d.ts +11 -0
- package/dist/animation/index.d.ts.map +1 -0
- package/dist/appearance/background.d.ts +23 -6
- package/dist/appearance/background.d.ts.map +1 -1
- package/dist/appearance/border.d.ts +2 -2
- package/dist/appearance/border.d.ts.map +1 -1
- package/dist/appearance/clip-shape.d.ts +2 -2
- package/dist/appearance/clip-shape.d.ts.map +1 -1
- package/dist/appearance/clipped.d.ts +2 -2
- package/dist/appearance/clipped.d.ts.map +1 -1
- package/dist/appearance/foreground.d.ts +14 -5
- package/dist/appearance/foreground.d.ts.map +1 -1
- package/dist/appearance/index.js +11 -12
- package/dist/appearance/reactive-factories.d.ts +20 -0
- package/dist/appearance/reactive-factories.d.ts.map +1 -0
- package/dist/attributes/accessibility.d.ts +10 -0
- package/dist/attributes/accessibility.d.ts.map +1 -0
- package/dist/attributes/aria.d.ts +2 -2
- package/dist/attributes/aria.d.ts.map +1 -1
- package/dist/attributes/css-properties.d.ts +2 -2
- package/dist/attributes/css-properties.d.ts.map +1 -1
- package/dist/attributes/html.d.ts +2 -2
- package/dist/attributes/html.d.ts.map +1 -1
- package/dist/attributes/index.d.ts +1 -0
- package/dist/attributes/index.d.ts.map +1 -1
- package/dist/base.d.ts +6 -7
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +9 -840
- package/dist/basic/animation.d.ts +41 -0
- package/dist/basic/animation.d.ts.map +1 -0
- package/dist/basic/base.d.ts +7 -8
- package/dist/basic/base.d.ts.map +1 -1
- package/dist/basic/index.d.ts +19 -2
- package/dist/basic/index.d.ts.map +1 -1
- package/dist/basic/index.js +252 -0
- package/dist/basic/margin.d.ts +2 -2
- package/dist/basic/margin.d.ts.map +1 -1
- package/dist/basic/margin.js +13 -158
- package/dist/basic/padding.d.ts +2 -2
- package/dist/basic/padding.d.ts.map +1 -1
- package/dist/basic/padding.js +13 -153
- package/dist/basic/size.d.ts +2 -2
- package/dist/basic/size.d.ts.map +1 -1
- package/dist/basic/size.js +10 -76
- package/dist/effects/backdrop/index.d.ts +60 -0
- package/dist/effects/backdrop/index.d.ts.map +1 -0
- package/dist/effects/backdrop/index.js +118 -0
- package/dist/effects/effects/index.d.ts +190 -0
- package/dist/effects/effects/index.d.ts.map +1 -0
- package/dist/effects/filters/index.d.ts +297 -0
- package/dist/effects/filters/index.d.ts.map +1 -0
- package/dist/effects/filters/index.js +234 -0
- package/dist/effects/index.d.ts +14 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/effects/index.js +373 -0
- package/dist/effects/internal-exports.d.ts +9 -0
- package/dist/effects/internal-exports.d.ts.map +1 -0
- package/dist/effects/shadows/index.d.ts +316 -0
- package/dist/effects/shadows/index.d.ts.map +1 -0
- package/dist/effects/shadows/index.js +405 -0
- package/dist/effects/transforms/index.d.ts +316 -0
- package/dist/effects/transforms/index.d.ts.map +1 -0
- package/dist/effects/transforms/index.js +193 -0
- package/dist/elements/pseudo-elements.d.ts +2 -2
- package/dist/elements/pseudo-elements.d.ts.map +1 -1
- package/dist/essential-manifest.d.ts +5 -0
- package/dist/essential-manifest.d.ts.map +1 -0
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +273 -881
- package/dist/interaction/allows-hit-testing.d.ts +1 -1
- package/dist/interaction/allows-hit-testing.d.ts.map +1 -1
- package/dist/interaction/dom-events.d.ts +35 -0
- package/dist/interaction/dom-events.d.ts.map +1 -0
- package/dist/interaction/focus-events.d.ts +54 -0
- package/dist/interaction/focus-events.d.ts.map +1 -0
- package/dist/interaction/focusable.d.ts +1 -1
- package/dist/interaction/focusable.d.ts.map +1 -1
- package/dist/interaction/focused.d.ts +1 -1
- package/dist/interaction/focused.d.ts.map +1 -1
- package/dist/interaction/index.d.ts +5 -0
- package/dist/interaction/index.d.ts.map +1 -1
- package/dist/interaction/index.js +75 -28
- package/dist/interaction/keyboard-events.d.ts +69 -0
- package/dist/interaction/keyboard-events.d.ts.map +1 -0
- package/dist/interaction/keyboard-shortcut.d.ts +1 -1
- package/dist/interaction/keyboard-shortcut.d.ts.map +1 -1
- package/dist/interaction/mouse-events.d.ts +125 -0
- package/dist/interaction/mouse-events.d.ts.map +1 -0
- package/dist/interaction/on-continuous-hover.d.ts +1 -1
- package/dist/interaction/on-continuous-hover.d.ts.map +1 -1
- package/dist/interaction/on-hover.d.ts +30 -0
- package/dist/interaction/on-hover.d.ts.map +1 -0
- package/dist/interaction/on-long-press-gesture.d.ts +1 -1
- package/dist/interaction/on-long-press-gesture.d.ts.map +1 -1
- package/dist/interaction/scroll.d.ts +2 -2
- package/dist/interaction/scroll.d.ts.map +1 -1
- package/dist/layout/aspect-ratio.d.ts +2 -2
- package/dist/layout/aspect-ratio.d.ts.map +1 -1
- package/dist/layout/fixed-size.d.ts +2 -2
- package/dist/layout/fixed-size.d.ts.map +1 -1
- package/dist/layout/flexbox.d.ts +2 -2
- package/dist/layout/flexbox.d.ts.map +1 -1
- package/dist/layout/frame.d.ts +13 -0
- package/dist/layout/frame.d.ts.map +1 -0
- package/dist/layout/index.d.ts +2 -0
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +25 -22
- package/dist/layout/offset.d.ts +2 -2
- package/dist/layout/offset.d.ts.map +1 -1
- package/dist/layout/overlay.d.ts +1 -1
- package/dist/layout/overlay.d.ts.map +1 -1
- package/dist/layout/position.d.ts +2 -2
- package/dist/layout/position.d.ts.map +1 -1
- package/dist/layout/resizable.d.ts +6 -0
- package/dist/layout/resizable.d.ts.map +1 -0
- package/dist/layout/scale-effect.d.ts +6 -5
- package/dist/layout/scale-effect.d.ts.map +1 -1
- package/dist/layout/z-index.d.ts +2 -2
- package/dist/layout/z-index.d.ts.map +1 -1
- package/dist/lifecycle/index.d.ts +6 -0
- package/dist/lifecycle/index.d.ts.map +1 -0
- package/dist/modifiers-basic-DLmE749_.js +5604 -0
- package/dist/navigation/index.d.ts +12 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/preload/backdrop.d.ts +5 -0
- package/dist/preload/backdrop.d.ts.map +1 -0
- package/dist/preload/backdrop.js +7 -0
- package/dist/preload/basic.d.ts +7 -0
- package/dist/preload/basic.d.ts.map +1 -0
- package/dist/preload/basic.js +251 -0
- package/dist/preload/effects.d.ts +6 -0
- package/dist/preload/effects.d.ts.map +1 -0
- package/dist/preload/effects.js +95 -0
- package/dist/preload/filters.d.ts +6 -0
- package/dist/preload/filters.d.ts.map +1 -0
- package/dist/preload/filters.js +31 -0
- package/dist/preload/shadows.d.ts +5 -0
- package/dist/preload/shadows.d.ts.map +1 -0
- package/dist/preload/shadows.js +27 -0
- package/dist/preload/transforms.d.ts +5 -0
- package/dist/preload/transforms.d.ts.map +1 -0
- package/dist/preload/transforms.js +30 -0
- package/dist/types.d.ts +7 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/dist/typography/font.d.ts +5 -2
- package/dist/typography/font.d.ts.map +1 -1
- package/dist/typography/index.d.ts +1 -0
- package/dist/typography/index.d.ts.map +1 -1
- package/dist/typography/index.js +26 -28
- package/dist/typography/text.d.ts +2 -2
- package/dist/typography/text.d.ts.map +1 -1
- package/dist/typography/text.js +9 -127
- package/dist/typography/typography.d.ts +6 -4
- package/dist/typography/typography.d.ts.map +1 -1
- package/dist/utility/as-html-validator.d.ts +20 -0
- package/dist/utility/as-html-validator.d.ts.map +1 -0
- package/dist/utility/as-html.d.ts +65 -0
- package/dist/utility/as-html.d.ts.map +1 -0
- package/dist/utility/basic-sanitizer.d.ts +54 -0
- package/dist/utility/basic-sanitizer.d.ts.map +1 -0
- package/dist/utility/css.d.ts +2 -2
- package/dist/utility/css.d.ts.map +1 -1
- package/dist/utility/index.d.ts +3 -0
- package/dist/utility/index.d.ts.map +1 -1
- package/dist/utility/index.js +19 -15
- package/dist/utility/utility.d.ts +2 -2
- package/dist/utility/utility.d.ts.map +1 -1
- package/dist/version.d.ts +14 -0
- package/dist/version.d.ts.map +1 -0
- package/package.json +59 -4
- package/dist/allows-hit-testing-DscPrcOw.js +0 -464
- package/dist/allows-hit-testing-DscPrcOw.js.map +0 -1
- package/dist/appearance/index.js.map +0 -1
- package/dist/base-CkGf4b9G.js +0 -786
- package/dist/base-CkGf4b9G.js.map +0 -1
- package/dist/base.js.map +0 -1
- package/dist/basic/margin.js.map +0 -1
- package/dist/basic/padding.js.map +0 -1
- package/dist/basic/size.js.map +0 -1
- package/dist/clipped-CCW8gJqJ.js +0 -282
- package/dist/clipped-CCW8gJqJ.js.map +0 -1
- package/dist/css-CJEXRr6H.js +0 -124
- package/dist/css-CJEXRr6H.js.map +0 -1
- package/dist/font-3qM2Z97N.js +0 -135
- package/dist/font-3qM2Z97N.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/interaction/index.js.map +0 -1
- package/dist/layout/index.js.map +0 -1
- package/dist/overlay-DDiSLprp.js +0 -774
- package/dist/overlay-DDiSLprp.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/typography/index.js.map +0 -1
- package/dist/typography/text.js.map +0 -1
- package/dist/utility/index.js.map +0 -1
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/elements/pseudo-elements.ts","../src/elements/decorative.ts","../src/attributes/html.ts","../src/attributes/aria.ts","../src/attributes/css-properties.ts","../src/index.ts"],"sourcesContent":["/**\n * Pseudo-element Modifiers - ::before and ::after styling\n *\n * Provides comprehensive pseudo-element support for ::before and ::after\n * with dynamic stylesheet generation and flexible styling options.\n */\n\nimport type { DOMNode } from '@tachui/core/runtime/types'\nimport { BaseModifier } from '../base'\nimport type { ModifierContext } from '@tachui/core/modifiers/types'\n\nexport interface PseudoElementStyles {\n content?: string // Content for pseudo-element (required)\n position?: 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'\n top?: number | string\n right?: number | string\n bottom?: number | string\n left?: number | string\n width?: number | string\n height?: number | string\n backgroundColor?: string\n color?: string\n fontSize?: number | string\n fontWeight?: string | number\n fontFamily?: string\n lineHeight?: number | string\n textAlign?: 'left' | 'center' | 'right' | 'justify'\n margin?: number | string\n marginTop?: number | string\n marginRight?: number | string\n marginBottom?: number | string\n marginLeft?: number | string\n padding?: number | string\n paddingTop?: number | string\n paddingRight?: number | string\n paddingBottom?: number | string\n paddingLeft?: number | string\n border?: string\n borderTop?: string\n borderRight?: string\n borderBottom?: string\n borderLeft?: string\n borderRadius?: number | string\n borderWidth?: number | string\n borderStyle?: string\n borderColor?: string\n boxShadow?: string\n textShadow?: string\n opacity?: number\n transform?: string\n transformOrigin?: string\n zIndex?: number\n display?: string\n flexDirection?: string\n flexWrap?: string\n alignItems?: string\n justifyContent?: string\n alignSelf?: string\n flex?: string\n flexGrow?: number\n flexShrink?: number\n flexBasis?: string\n order?: number\n overflow?: 'visible' | 'hidden' | 'scroll' | 'auto'\n overflowX?: 'visible' | 'hidden' | 'scroll' | 'auto'\n overflowY?: 'visible' | 'hidden' | 'scroll' | 'auto'\n whiteSpace?: 'normal' | 'nowrap' | 'pre' | 'pre-wrap' | 'pre-line'\n textOverflow?: 'clip' | 'ellipsis'\n cursor?: string\n pointerEvents?: 'auto' | 'none'\n visibility?: 'visible' | 'hidden'\n backgroundImage?: string\n backgroundSize?: string\n backgroundPosition?: string\n backgroundRepeat?: string\n filter?: string\n backdropFilter?: string\n transition?: string\n animation?: string\n textTransform?: 'none' | 'capitalize' | 'uppercase' | 'lowercase'\n verticalAlign?: string\n minWidth?: number | string\n minHeight?: number | string\n maxWidth?: number | string\n maxHeight?: number | string\n [key: string]: any // Allow any CSS property\n}\n\nexport interface PseudoElementOptions {\n before?: PseudoElementStyles\n after?: PseudoElementStyles\n}\n\nexport class PseudoElementModifier extends BaseModifier<PseudoElementOptions> {\n readonly type = 'pseudoElement'\n readonly priority = 50 // High priority to ensure pseudo-elements are applied last\n private static styleSheetId = 'tachui-pseudo-elements'\n private static elementCount = 0\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return undefined\n\n // Generate unique class for pseudo-element styles\n const pseudoClass = `tachui-pseudo-${++PseudoElementModifier.elementCount}`\n context.element.classList.add(pseudoClass)\n\n // Add pseudo-element styles to stylesheet\n if (this.properties.before) {\n this.addPseudoElementRule(pseudoClass, 'before', this.properties.before)\n }\n\n if (this.properties.after) {\n this.addPseudoElementRule(pseudoClass, 'after', this.properties.after)\n }\n\n return undefined\n }\n\n private addPseudoElementRule(\n className: string,\n pseudoType: 'before' | 'after',\n styles: PseudoElementStyles\n ): void {\n const styleSheet = this.getOrCreateStyleSheet()\n const cssRule = this.generatePseudoElementCSS(className, pseudoType, styles)\n\n try {\n styleSheet.insertRule(cssRule)\n } catch (e) {\n // Only log in non-test environments to avoid stderr noise\n if (typeof process === 'undefined' || process.env.NODE_ENV !== 'test') {\n console.warn('Failed to add pseudo-element rule:', e)\n }\n }\n }\n\n private generatePseudoElementCSS(\n className: string,\n pseudoType: 'before' | 'after',\n styles: PseudoElementStyles\n ): string {\n const selector = `.${className}::${pseudoType}`\n const cssProperties: string[] = []\n\n // Ensure content property is set (required for pseudo-elements)\n if (!styles.content) {\n styles.content = '\"\"'\n }\n\n Object.entries(styles).forEach(([prop, value]) => {\n if (value !== undefined) {\n const cssProperty = this.toCSSProperty(prop)\n const cssValue = this.formatCSSValue(prop, value)\n cssProperties.push(`${cssProperty}: ${cssValue}`)\n }\n })\n\n return `${selector} { ${cssProperties.join('; ')} }`\n }\n\n private formatCSSValue(property: string, value: any): string {\n // Handle special cases for pseudo-element properties\n if (property === 'content') {\n // Ensure content is properly quoted if it's not already\n if (typeof value === 'string') {\n if (!value.startsWith('\"') && !value.startsWith(\"'\")) {\n // Escape any existing quotes and wrap in quotes\n const escapedValue = value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')\n return `\"${escapedValue}\"`\n }\n return value\n }\n return '\"\"'\n }\n\n if (typeof value === 'number') {\n // Properties that should be unitless\n const unitlessProperties = [\n 'opacity',\n 'z-index',\n 'line-height',\n 'flex-grow',\n 'flex-shrink',\n 'order',\n 'column-count',\n 'font-weight',\n ]\n\n if (unitlessProperties.includes(this.toCSSProperty(property))) {\n return String(value)\n }\n\n return `${value}px`\n }\n\n return String(value)\n }\n\n private getOrCreateStyleSheet(): CSSStyleSheet {\n const existingStyle = document.getElementById(\n PseudoElementModifier.styleSheetId\n )\n\n if (existingStyle && existingStyle instanceof HTMLStyleElement) {\n return existingStyle.sheet!\n }\n\n const style = document.createElement('style')\n style.id = PseudoElementModifier.styleSheetId\n\n try {\n document.head.appendChild(style)\n } catch (e) {\n // Handle case where document.head is missing or appendChild fails\n // Only log in non-test environments to avoid stderr noise\n if (typeof process === 'undefined' || process.env.NODE_ENV !== 'test') {\n console.warn('Failed to append stylesheet to document.head:', e)\n }\n }\n\n return style.sheet!\n }\n\n protected toCSSProperty(prop: string): string {\n return prop.replace(/([A-Z])/g, '-$1').toLowerCase()\n }\n}\n\n// ============================================================================\n// Core Pseudo-element Functions\n// ============================================================================\n\n/**\n * ::before pseudo-element modifier\n *\n * @example\n * ```typescript\n * .before({\n * content: '★',\n * position: 'absolute',\n * left: -20,\n * color: '#ffd700'\n * })\n * ```\n */\nexport function before(styles: PseudoElementStyles): PseudoElementModifier {\n return new PseudoElementModifier({ before: styles })\n}\n\n/**\n * ::after pseudo-element modifier\n *\n * @example\n * ```typescript\n * .after({\n * content: '',\n * position: 'absolute',\n * bottom: 0,\n * left: 0,\n * right: 0,\n * height: 2,\n * backgroundColor: '#007AFF'\n * })\n * ```\n */\nexport function after(styles: PseudoElementStyles): PseudoElementModifier {\n return new PseudoElementModifier({ after: styles })\n}\n\n/**\n * Both ::before and ::after pseudo-elements\n *\n * @example\n * ```typescript\n * .pseudoElements({\n * before: { content: '\"', fontSize: 24, color: '#666' },\n * after: { content: '\"', fontSize: 24, color: '#666' }\n * })\n * ```\n */\nexport function pseudoElements(\n options: PseudoElementOptions\n): PseudoElementModifier {\n return new PseudoElementModifier(options)\n}\n","/**\n * Decorative Pseudo-element Modifiers\n *\n * Common decorative patterns using pseudo-elements for icons, lines, badges,\n * tooltips, ribbons, and loading indicators.\n */\n\nimport {\n before,\n after,\n type PseudoElementStyles,\n PseudoElementModifier,\n} from './pseudo-elements'\n\n// ============================================================================\n// Icon Modifiers\n// ============================================================================\n\n/**\n * Icon before content using a Unicode character\n *\n * @example\n * ```typescript\n * .iconBefore('★', { color: '#ffd700', marginRight: 8 })\n * .iconBefore('→', { color: '#007AFF' })\n * ```\n */\nexport function iconBefore(\n icon: string,\n styles: Omit<PseudoElementStyles, 'content'> = {}\n): PseudoElementModifier {\n return before({\n content: icon,\n display: 'inline-block',\n ...styles,\n })\n}\n\n/**\n * Icon after content using a Unicode character\n *\n * @example\n * ```typescript\n * .iconAfter('→', { color: '#007AFF', marginLeft: 8 })\n * .iconAfter('✓', { color: '#34c759' })\n * ```\n */\nexport function iconAfter(\n icon: string,\n styles: Omit<PseudoElementStyles, 'content'> = {}\n): PseudoElementModifier {\n return after({\n content: icon,\n display: 'inline-block',\n ...styles,\n })\n}\n\n// ============================================================================\n// Line Decorations\n// ============================================================================\n\n/**\n * Decorative line before content\n *\n * @example\n * ```typescript\n * .lineBefore() // Default line\n * .lineBefore('#007AFF', 2, 20) // Blue line, 2px thick, 20px long\n * ```\n */\nexport function lineBefore(\n color: string = '#ddd',\n thickness: number = 1,\n length: number = 16\n): PseudoElementModifier {\n return before({\n content: '',\n display: 'inline-block',\n width: length,\n height: thickness,\n backgroundColor: color,\n marginRight: 8,\n verticalAlign: 'middle',\n })\n}\n\n/**\n * Decorative line after content\n *\n * @example\n * ```typescript\n * .lineAfter() // Default line\n * .lineAfter('#007AFF', 2, 20) // Blue line, 2px thick, 20px long\n * ```\n */\nexport function lineAfter(\n color: string = '#ddd',\n thickness: number = 1,\n length: number = 16\n): PseudoElementModifier {\n return after({\n content: '',\n display: 'inline-block',\n width: length,\n height: thickness,\n backgroundColor: color,\n marginLeft: 8,\n verticalAlign: 'middle',\n })\n}\n\n// ============================================================================\n// Text Decorations\n// ============================================================================\n\n/**\n * Quote marks around content\n *\n * @example\n * ```typescript\n * .quotes() // Default quotes (\" \")\n * .quotes('«', '»') // Custom quote characters\n * ```\n */\nexport function quotes(\n openQuote: string = '\"',\n closeQuote: string = '\"'\n): PseudoElementModifier {\n return new PseudoElementModifier({\n before: {\n content: openQuote,\n fontSize: '1.2em',\n color: '#666',\n marginRight: 4,\n },\n after: {\n content: closeQuote,\n fontSize: '1.2em',\n color: '#666',\n marginLeft: 4,\n },\n })\n}\n\n/**\n * Underline decoration using ::after\n *\n * @example\n * ```typescript\n * .underline() // Default underline\n * .underline('#007AFF', 2, 0.2) // Blue underline, 2px thick, 20% opacity\n * ```\n */\nexport function underline(\n color: string = 'currentColor',\n thickness: number = 1,\n opacity: number = 1\n): PseudoElementModifier {\n return after({\n content: '',\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n height: thickness,\n backgroundColor: color,\n opacity,\n })\n}\n\n// ============================================================================\n// Interactive Decorations\n// ============================================================================\n\n/**\n * Badge or notification dot using ::after\n *\n * @example\n * ```typescript\n * .badge() // Default red dot\n * .badge('#007AFF', 8, '2') // Blue badge with \"2\" text\n * ```\n */\nexport function badge(\n color: string = '#ff3b30',\n size: number = 6,\n text: string = ''\n): PseudoElementModifier {\n return after({\n content: text,\n position: 'absolute',\n top: -2,\n right: -2,\n width: text ? 'auto' : size,\n height: size,\n minWidth: size,\n backgroundColor: color,\n borderRadius: '50%',\n fontSize: 10,\n color: 'white',\n textAlign: 'center',\n lineHeight: text ? size / 10 : 1,\n padding: text ? '2px 4px' : 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n })\n}\n\n/**\n * Tooltip using ::before with positioning\n *\n * @example\n * ```typescript\n * .tooltip('This is a tooltip')\n * .tooltip('Custom tooltip', 'bottom', '#333')\n * ```\n */\nexport function tooltip(\n text: string,\n position: 'top' | 'bottom' | 'left' | 'right' = 'top',\n backgroundColor: string = '#333',\n textColor: string = 'white'\n): PseudoElementModifier {\n const positionStyles: Record<string, any> = {\n top: {\n bottom: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginBottom: 5,\n },\n bottom: {\n top: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginTop: 5,\n },\n left: {\n right: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginRight: 5,\n },\n right: {\n left: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginLeft: 5,\n },\n }\n\n return before({\n content: text,\n position: 'absolute',\n backgroundColor,\n color: textColor,\n padding: '4px 8px',\n borderRadius: 4,\n fontSize: 12,\n whiteSpace: 'nowrap',\n zIndex: 1000,\n opacity: 0,\n pointerEvents: 'none',\n transition: 'opacity 0.2s ease',\n ...positionStyles[position],\n })\n}\n\n/**\n * Corner ribbon using ::before\n *\n * @example\n * ```typescript\n * .cornerRibbon('New!') // Default red ribbon\n * .cornerRibbon('Sale', '#ff9500') // Orange sale ribbon\n * ```\n */\nexport function cornerRibbon(\n text: string,\n color: string = '#ff3b30',\n textColor: string = 'white'\n): PseudoElementModifier {\n return before({\n content: text,\n position: 'absolute',\n top: 8,\n right: -8,\n backgroundColor: color,\n color: textColor,\n padding: '2px 12px',\n fontSize: 11,\n fontWeight: 'bold',\n textTransform: 'uppercase',\n transform: 'rotate(45deg)',\n transformOrigin: 'center',\n zIndex: 10,\n })\n}\n\n/**\n * Loading spinner using ::before with animation\n *\n * @example\n * ```typescript\n * .spinner() // Default spinner\n * .spinner(16, '#007AFF', 2) // Custom size, color, border width\n * ```\n */\nexport function spinner(\n size: number = 20,\n color: string = '#007AFF',\n borderWidth: number = 2\n): PseudoElementModifier {\n // Add spinner animation to global styles if not already present\n if (!document.getElementById('tachui-spinner-animation')) {\n const style = document.createElement('style')\n style.id = 'tachui-spinner-animation'\n style.textContent = `\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `\n document.head.appendChild(style)\n }\n\n return before({\n content: '',\n display: 'inline-block',\n width: size,\n height: size,\n border: `${borderWidth}px solid transparent`,\n borderTop: `${borderWidth}px solid ${color}`,\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n })\n}\n\n// Re-export PseudoElementModifier for testing\nexport { PseudoElementModifier }\n","/**\n * HTML Attributes Modifier - Best-in-class HTML element attribute management\n *\n * Comprehensive interface for HTML attributes including ID and data attributes\n * with full validation, development warnings, and production optimization.\n */\n\nimport type { DOMNode } from '@tachui/core/runtime/types'\nimport { BaseModifier } from '../basic/base'\nimport type {\n ModifierContext,\n ReactiveModifierProps,\n} from '@tachui/core/modifiers/types'\n\n// =============================================================================\n// ID Modifier - HTML Element ID\n// =============================================================================\n\nexport type IdValue = string\nexport interface IdOptions {\n id: IdValue\n}\n\nexport type ReactiveIdOptions = ReactiveModifierProps<IdOptions>\n\nexport class IdModifier extends BaseModifier<IdOptions> {\n readonly type = 'id'\n readonly priority = 85 // High priority for HTML attributes\n\n constructor(options: ReactiveIdOptions) {\n super(options as unknown as IdOptions)\n }\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const { id } = this.properties\n\n // Validate ID in development mode only\n if (\n typeof process !== 'undefined' &&\n process.env.NODE_ENV === 'development'\n ) {\n this.validateId(id)\n }\n\n // Set id attribute directly\n context.element.setAttribute('id', id)\n\n return undefined\n }\n\n private validateId(id: string): void {\n // Check for valid HTML ID format\n if (!id || typeof id !== 'string') {\n console.warn('TachUI ID Modifier: ID must be a non-empty string')\n return\n }\n\n // HTML ID rules: must start with letter, can contain letters, digits, hyphens, underscores, colons, periods\n const validIdPattern = /^[a-zA-Z][a-zA-Z0-9_:-]*$/\n if (!validIdPattern.test(id)) {\n console.warn(\n `TachUI ID Modifier: Invalid ID format \"${id}\". IDs must start with a letter and contain only letters, digits, hyphens, underscores, colons, and periods.`\n )\n }\n\n // Check for duplicate IDs in development (with document check)\n if (\n typeof document !== 'undefined' &&\n document.getElementById &&\n document.getElementById(id)\n ) {\n console.warn(\n `TachUI ID Modifier: Duplicate ID \"${id}\" detected. IDs should be unique within the document.`\n )\n }\n }\n}\n\n/**\n * HTML element ID modifier\n *\n * @example\n * ```typescript\n * import { id } from '@tachui/modifiers'\n *\n * // Set element ID\n * element.apply(id('main-header'))\n * element.apply(id('user-profile-123'))\n * ```\n */\nexport function id(value: IdValue): IdModifier {\n return new IdModifier({ id: value })\n}\n\n// =============================================================================\n// Data Attributes Modifier - Data Attributes for Testing and Analytics\n// =============================================================================\n\nexport type DataValue = string | number | boolean\nexport interface DataAttributes {\n [key: string]: DataValue\n}\n\nexport interface DataOptions {\n data: DataAttributes\n}\n\nexport type ReactiveDataOptions = ReactiveModifierProps<DataOptions>\n\nexport class DataModifier extends BaseModifier<DataOptions> {\n readonly type = 'data'\n readonly priority = 80 // High priority for HTML attributes\n\n constructor(options: ReactiveDataOptions) {\n super(options as unknown as DataOptions)\n }\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const { data } = this.properties\n\n // Validate data attributes in development mode only\n if (\n typeof process !== 'undefined' &&\n process.env.NODE_ENV === 'development'\n ) {\n this.validateDataAttributes(data)\n }\n\n // Apply data attributes efficiently\n Object.entries(data).forEach(([key, value]) => {\n const attributeName = this.formatDataAttributeName(key)\n const attributeValue = this.formatDataAttributeValue(value)\n context.element!.setAttribute(attributeName, attributeValue)\n })\n\n return undefined\n }\n\n private formatDataAttributeName(key: string): string {\n // Convert camelCase to kebab-case and ensure data- prefix\n const kebabKey = key.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`)\n return kebabKey.startsWith('data-') ? kebabKey : `data-${kebabKey}`\n }\n\n private formatDataAttributeValue(value: DataValue): string {\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false'\n }\n return String(value)\n }\n\n private validateDataAttributes(data: DataAttributes): void {\n Object.entries(data).forEach(([key, value]) => {\n // Validate key format\n if (!key || typeof key !== 'string') {\n console.warn(\n 'TachUI Data Modifier: Data attribute keys must be non-empty strings'\n )\n return\n }\n\n // Check for valid data attribute naming\n const cleanKey = key.replace(/^data-/, '')\n const validKeyPattern = /^[a-zA-Z][a-zA-Z0-9-_]*$/\n if (!validKeyPattern.test(cleanKey)) {\n console.warn(\n `TachUI Data Modifier: Invalid data attribute key \"${key}\". Keys should start with a letter and contain only letters, numbers, hyphens, and underscores.`\n )\n }\n\n // Validate value types\n if (\n value !== null &&\n value !== undefined &&\n typeof value !== 'string' &&\n typeof value !== 'number' &&\n typeof value !== 'boolean'\n ) {\n console.warn(\n `TachUI Data Modifier: Data attribute \"${key}\" has invalid value type \"${typeof value}\". Only strings, numbers, and booleans are supported.`\n )\n }\n })\n }\n}\n\n/**\n * HTML data attributes modifier for testing selectors and analytics\n *\n * @example\n * ```typescript\n * import { data } from '@tachui/modifiers'\n *\n * // Single data attribute\n * element.apply(data({ testId: 'login-button' }))\n *\n * // Multiple data attributes\n * element.apply(data({\n * testId: 'user-card',\n * userId: 123,\n * active: true,\n * category: 'premium'\n * }))\n *\n * // Custom data attributes with kebab-case conversion\n * element.apply(data({\n * customAttribute: 'value', // becomes data-custom-attribute=\"value\"\n * 'data-existing': 'kept' // remains data-existing=\"kept\"\n * }))\n * ```\n */\nexport function data(attributes: DataAttributes): DataModifier {\n return new DataModifier({ data: attributes })\n}\n\n// =============================================================================\n// Tab Index Modifier - Tab Navigation Order\n// =============================================================================\n\nexport type TabIndexValue = number\nexport interface TabIndexOptions {\n tabIndex: TabIndexValue\n}\n\nexport type ReactiveTabIndexOptions = ReactiveModifierProps<TabIndexOptions>\n\nexport class TabIndexModifier extends BaseModifier<TabIndexOptions> {\n readonly type = 'tabIndex'\n readonly priority = 75 // High priority for accessibility\n\n constructor(options: ReactiveTabIndexOptions) {\n super(options as unknown as TabIndexOptions)\n }\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const { tabIndex } = this.properties\n\n // Validate tabIndex in development mode only\n if (\n typeof process !== 'undefined' &&\n process.env.NODE_ENV === 'development'\n ) {\n this.validateTabIndex(tabIndex)\n }\n\n // Set tabindex attribute\n context.element.setAttribute('tabindex', String(tabIndex))\n\n return undefined\n }\n\n private validateTabIndex(tabIndex: number): void {\n if (typeof tabIndex !== 'number' || !Number.isInteger(tabIndex)) {\n console.warn('TachUI TabIndex Modifier: tabIndex must be an integer')\n return\n }\n\n // Provide helpful guidance for accessibility\n if (tabIndex > 0) {\n console.info(\n 'TachUI TabIndex Modifier: Positive tabIndex values can disrupt natural tab order. Consider using tabIndex=\"0\" for focusable elements and tabIndex=\"-1\" for programmatically focusable elements.'\n )\n }\n\n if (tabIndex < -1) {\n console.warn(\n 'TachUI TabIndex Modifier: tabIndex values less than -1 are not recommended. Use -1 to remove from tab order or 0+ for tab order.'\n )\n }\n }\n}\n\n/**\n * Tab index modifier for keyboard navigation control\n *\n * @example\n * ```typescript\n * import { tabIndex } from '@tachui/modifiers'\n *\n * // Make element focusable in natural tab order\n * element.apply(tabIndex(0))\n *\n * // Remove from tab order but keep programmatically focusable\n * element.apply(tabIndex(-1))\n *\n * // Force specific tab order (not recommended)\n * element.apply(tabIndex(1))\n * ```\n */\nexport function tabIndex(value: TabIndexValue): TabIndexModifier {\n return new TabIndexModifier({ tabIndex: value })\n}\n","/**\n * ARIA Attributes Modifier - Best-in-class accessibility attribute management\n *\n * Comprehensive ARIA (Accessible Rich Internet Applications) attributes with\n * full type safety, validation, and development warnings for accessibility compliance.\n */\n\nimport type { DOMNode } from '@tachui/core/runtime/types'\nimport { BaseModifier } from '../basic/base'\nimport type {\n ModifierContext,\n ReactiveModifierProps,\n} from '@tachui/core/modifiers/types'\n\n// =============================================================================\n// ARIA Attributes Modifier - Accessibility Attributes\n// =============================================================================\n\nexport interface AriaAttributes {\n // Common ARIA attributes with strict type safety\n label?: string\n labelledby?: string\n labeledby?: string // Common typo support\n describedby?: string\n expanded?: boolean\n hidden?: boolean\n live?: 'off' | 'polite' | 'assertive'\n atomic?: boolean\n busy?: boolean\n controls?: string\n current?: boolean | 'page' | 'step' | 'location' | 'date' | 'time'\n disabled?: boolean\n grabbed?: boolean | 'true' | 'false' // Support for string booleans\n haspopup?:\n | boolean\n | 'false'\n | 'true'\n | 'menu'\n | 'listbox'\n | 'tree'\n | 'grid'\n | 'dialog'\n invalid?: boolean | 'false' | 'true' | 'grammar' | 'spelling'\n level?: number\n multiline?: boolean\n multiselectable?: boolean\n orientation?: 'horizontal' | 'vertical'\n owns?: string\n placeholder?: string\n posinset?: number\n pressed?: boolean | 'true' | 'false' | 'mixed'\n readonly?: boolean\n relevant?: 'additions' | 'removals' | 'text' | 'all' | string\n required?: boolean\n selected?: boolean\n setsize?: number\n sort?: 'none' | 'ascending' | 'descending' | 'other'\n valuemax?: number\n valuemin?: number\n valuenow?: number\n valuetext?: string\n\n // Role attribute (special case)\n role?: string\n\n // Support for extended ARIA attributes\n [key: string]: string | number | boolean | undefined\n}\n\nexport interface AriaOptions {\n aria: AriaAttributes\n}\n\nexport type ReactiveAriaOptions = ReactiveModifierProps<AriaOptions>\n\nexport class AriaModifier extends BaseModifier<AriaOptions> {\n readonly type = 'aria'\n readonly priority = 90 // Highest priority for accessibility\n\n private static readonly KNOWN_ATTRIBUTES = new Set([\n 'label',\n 'labelledby',\n 'describedby',\n 'expanded',\n 'hidden',\n 'live',\n 'atomic',\n 'busy',\n 'controls',\n 'current',\n 'disabled',\n 'grabbed',\n 'haspopup',\n 'invalid',\n 'level',\n 'multiline',\n 'multiselectable',\n 'orientation',\n 'owns',\n 'placeholder',\n 'posinset',\n 'pressed',\n 'readonly',\n 'relevant',\n 'required',\n 'selected',\n 'setsize',\n 'sort',\n 'valuemax',\n 'valuemin',\n 'valuenow',\n 'valuetext',\n 'role',\n ])\n\n constructor(options: ReactiveAriaOptions) {\n super(options as unknown as AriaOptions)\n }\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const { aria } = this.properties\n\n // Validate ARIA attributes in development mode only\n if (\n typeof process !== 'undefined' &&\n process.env.NODE_ENV === 'development'\n ) {\n this.validateAriaAttributes(aria)\n }\n\n // Apply ARIA attributes to DOM element efficiently\n Object.entries(aria).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n const attributeName = this.formatAriaAttributeName(key)\n const attributeValue = this.formatAriaAttributeValue(value)\n context.element!.setAttribute(attributeName, attributeValue)\n }\n })\n\n return undefined\n }\n\n private formatAriaAttributeName(key: string): string {\n // Handle special cases\n if (key === 'role') {\n return 'role'\n }\n\n // Support common typo: labeledby -> labelledby\n if (key === 'labeledby') {\n key = 'labelledby'\n }\n\n // Convert camelCase to kebab-case and ensure aria- prefix\n const kebabKey = key.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`)\n return kebabKey.startsWith('aria-') ? kebabKey : `aria-${kebabKey}`\n }\n\n private formatAriaAttributeValue(value: string | number | boolean): string {\n // Handle boolean values consistently\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false'\n }\n return String(value)\n }\n\n private validateAriaAttributes(aria: AriaAttributes): void {\n Object.entries(aria).forEach(([key, value]) => {\n // Validate key format\n if (!key || typeof key !== 'string') {\n console.warn(\n 'TachUI ARIA Modifier: ARIA attribute keys must be non-empty strings'\n )\n return\n }\n\n // Warn about unknown ARIA attributes (but still allow them for extensibility)\n const normalizedKey = key.replace(/^aria-/, '')\n if (\n !AriaModifier.KNOWN_ATTRIBUTES.has(normalizedKey) &&\n !key.startsWith('aria-')\n ) {\n console.warn(\n `TachUI ARIA Modifier: Unknown ARIA attribute \"${key}\". This may not be a valid ARIA attribute. Did you mean \"${this.suggestCorrection(normalizedKey)}\"?`\n )\n }\n\n // Validate specific attribute values\n this.validateSpecificAriaAttribute(key, value)\n })\n }\n\n private validateSpecificAriaAttribute(key: string, value: any): void {\n const normalizedKey = key.replace(/^aria-/, '')\n\n switch (normalizedKey) {\n case 'live':\n if (!['off', 'polite', 'assertive'].includes(value)) {\n console.warn(\n `TachUI ARIA Modifier: Invalid value \"${value}\" for aria-live. Valid values are: \"off\", \"polite\", \"assertive\"`\n )\n }\n break\n\n case 'haspopup':\n const validHaspopup = [\n 'false',\n 'true',\n 'menu',\n 'listbox',\n 'tree',\n 'grid',\n 'dialog',\n ]\n if (typeof value === 'string' && !validHaspopup.includes(value)) {\n console.warn(\n `TachUI ARIA Modifier: Invalid value \"${value}\" for aria-haspopup. Valid values are: ${validHaspopup.join(', ')}`\n )\n }\n break\n\n case 'current':\n const validCurrent = ['page', 'step', 'location', 'date', 'time']\n if (typeof value === 'string' && !validCurrent.includes(value)) {\n console.warn(\n `TachUI ARIA Modifier: Invalid value \"${value}\" for aria-current. Valid values are: false, true, ${validCurrent.join(', ')}`\n )\n }\n break\n\n case 'invalid':\n const validInvalid = ['false', 'true', 'grammar', 'spelling']\n if (typeof value === 'string' && !validInvalid.includes(value)) {\n console.warn(\n `TachUI ARIA Modifier: Invalid value \"${value}\" for aria-invalid. Valid values are: ${validInvalid.join(', ')}`\n )\n }\n break\n\n case 'orientation':\n if (!['horizontal', 'vertical'].includes(value as string)) {\n console.warn(\n `TachUI ARIA Modifier: Invalid value \"${value}\" for aria-orientation. Valid values are: \"horizontal\", \"vertical\"`\n )\n }\n break\n\n case 'sort':\n if (\n !['none', 'ascending', 'descending', 'other'].includes(\n value as string\n )\n ) {\n console.warn(\n `TachUI ARIA Modifier: Invalid value \"${value}\" for aria-sort. Valid values are: \"none\", \"ascending\", \"descending\", \"other\"`\n )\n }\n break\n\n case 'pressed':\n const validPressed = ['true', 'false', 'mixed']\n if (typeof value === 'string' && !validPressed.includes(value)) {\n console.warn(\n `TachUI ARIA Modifier: Invalid value \"${value}\" for aria-pressed. Valid values are: ${validPressed.join(', ')}`\n )\n }\n break\n\n // Numeric attributes validation\n case 'level':\n case 'posinset':\n case 'setsize':\n case 'valuemax':\n case 'valuemin':\n case 'valuenow':\n if (typeof value === 'number') {\n if (value < 0 || !Number.isInteger(value)) {\n console.warn(\n `TachUI ARIA Modifier: Invalid value \"${value}\" for aria-${normalizedKey}. Must be a non-negative integer.`\n )\n }\n }\n break\n }\n }\n\n private suggestCorrection(key: string): string {\n const suggestions: Record<string, string> = {\n lable: 'label',\n labeledby: 'labelledby',\n descripedby: 'describedby',\n described: 'describedby',\n controled: 'controls',\n controles: 'controls',\n expaned: 'expanded',\n expandd: 'expanded',\n hiden: 'hidden',\n hidde: 'hidden',\n disbled: 'disabled',\n disable: 'disabled',\n requird: 'required',\n require: 'required',\n selectd: 'selected',\n select: 'selected',\n orientaton: 'orientation',\n }\n\n return suggestions[key] || key\n }\n}\n\n/**\n * ARIA attributes modifier for accessibility compliance\n *\n * @example\n * ```typescript\n * import { aria } from '@tachui/modifiers'\n *\n * // Basic accessibility attributes\n * element.apply(aria({\n * label: 'Close dialog',\n * role: 'button',\n * expanded: false\n * }))\n *\n * // Form accessibility\n * element.apply(aria({\n * required: true,\n * invalid: false,\n * describedby: 'error-message'\n * }))\n *\n * // Complex widget accessibility\n * element.apply(aria({\n * role: 'tab',\n * selected: true,\n * controls: 'panel-1',\n * labelledby: 'tab-label-1'\n * }))\n *\n * // Live region for dynamic content\n * element.apply(aria({\n * live: 'polite',\n * atomic: true,\n * relevant: 'additions text'\n * }))\n * ```\n */\nexport function aria(attributes: AriaAttributes): AriaModifier {\n return new AriaModifier({ aria: attributes })\n}\n","/**\n * CSS Custom Properties Modifier - Best-in-class CSS variable management\n *\n * Comprehensive CSS custom properties (CSS variables) with full type safety,\n * scoping control, theme integration, and design system token support.\n */\n\nimport type { DOMNode } from '@tachui/core/runtime/types'\nimport { BaseModifier } from '../basic/base'\nimport type {\n ModifierContext,\n ReactiveModifierProps,\n} from '@tachui/core/modifiers/types'\n\n// =============================================================================\n// CSS Custom Properties Modifier\n// =============================================================================\n\nexport type CSSPropertyValue = string | number\nexport type CSSPropertiesMap = Record<string, CSSPropertyValue>\n\nexport interface CustomPropertiesOptions {\n properties: CSSPropertiesMap\n scope?: 'local' | 'global' | 'root'\n}\n\nexport type ReactiveCustomPropertiesOptions =\n ReactiveModifierProps<CustomPropertiesOptions>\n\nexport class CustomPropertiesModifier extends BaseModifier<CustomPropertiesOptions> {\n readonly type = 'customProperties'\n readonly priority = 5 // Early application for CSS variables\n\n constructor(options: ReactiveCustomPropertiesOptions) {\n super(options as unknown as CustomPropertiesOptions)\n }\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const styles = this.computeCustomPropertyStyles(this.properties)\n this.applyStyles(context.element, styles)\n\n return undefined\n }\n\n private computeCustomPropertyStyles(\n props: CustomPropertiesOptions\n ): Record<string, string> {\n const styles: Record<string, string> = {}\n\n Object.entries(props.properties).forEach(([name, value]) => {\n const propertyName = name.startsWith('--') ? name : `--${name}`\n styles[propertyName] = this.formatPropertyValue(value)\n })\n\n return styles\n }\n\n private formatPropertyValue(value: CSSPropertyValue): string {\n if (typeof value === 'number') {\n return value.toString()\n }\n return String(value)\n }\n}\n\n/**\n * CSS custom properties modifier for creating CSS variables\n *\n * @example\n * ```typescript\n * import { customProperties } from '@tachui/modifiers'\n *\n * // Local CSS variables\n * element.apply(customProperties({\n * properties: {\n * 'primary-color': '#007AFF',\n * 'font-size': 16,\n * '--custom-spacing': '1rem' // Already prefixed\n * },\n * scope: 'local'\n * }))\n *\n * // Global CSS variables\n * element.apply(customProperties({\n * properties: {\n * 'app-background': '#ffffff',\n * 'app-foreground': '#000000'\n * },\n * scope: 'global'\n * }))\n * ```\n */\nexport function customProperties(\n options: CustomPropertiesOptions\n): CustomPropertiesModifier {\n return new CustomPropertiesModifier({\n properties: options.properties,\n scope: options.scope || 'local',\n })\n}\n\n/**\n * Single CSS custom property modifier for individual variables\n *\n * @example\n * ```typescript\n * import { customProperty } from '@tachui/modifiers'\n *\n * // Single CSS variable\n * element.apply(customProperty('primary-color', '#007AFF'))\n *\n * // Already prefixed variable\n * element.apply(customProperty('--font-size', 16))\n *\n * // Global scope\n * element.apply(customProperty('theme-background', '#f0f0f0', 'global'))\n * ```\n */\nexport function customProperty(\n name: string,\n value: CSSPropertyValue,\n scope?: 'local' | 'global' | 'root'\n): CustomPropertiesModifier {\n return new CustomPropertiesModifier({\n properties: { [name]: value },\n scope: scope || 'local',\n })\n}\n\n/**\n * CSS variables modifier - convenient alias for customProperties\n *\n * @example\n * ```typescript\n * import { cssVariables } from '@tachui/modifiers'\n *\n * // Multiple CSS variables\n * element.apply(cssVariables({\n * 'primary': '#007AFF',\n * 'secondary': '#34C759',\n * 'spacing': 16,\n * 'border-radius': '8px'\n * }))\n * ```\n */\nexport function cssVariables(\n variables: CSSPropertiesMap\n): CustomPropertiesModifier {\n return new CustomPropertiesModifier({\n properties: variables,\n scope: 'local',\n })\n}\n\n// =============================================================================\n// Theme Colors - Semantic Color System\n// =============================================================================\n\nexport interface ThemeColorPalette {\n primary?: string\n secondary?: string\n accent?: string\n background?: string\n surface?: string\n text?: string\n textSecondary?: string\n border?: string\n error?: string\n warning?: string\n success?: string\n info?: string\n [key: string]: string | undefined\n}\n\n/**\n * Theme colors as CSS custom properties with semantic naming\n *\n * @example\n * ```typescript\n * import { themeColors } from '@tachui/modifiers'\n *\n * // Semantic theme colors\n * element.apply(themeColors({\n * primary: '#007AFF',\n * secondary: '#34C759',\n * accent: '#FF9500',\n * background: '#FFFFFF',\n * surface: '#F2F2F7',\n * text: '#000000',\n * textSecondary: '#6D6D80',\n * border: '#D1D1D6',\n * error: '#FF3B30',\n * warning: '#FF9500',\n * success: '#34C759',\n * info: '#007AFF'\n * }))\n *\n * // Custom theme colors\n * element.apply(themeColors({\n * brandPrimary: '#6366F1',\n * brandSecondary: '#EC4899',\n * neutralLight: '#F8FAFC',\n * neutralDark: '#0F172A'\n * }))\n * ```\n */\nexport function themeColors(\n colors: ThemeColorPalette\n): CustomPropertiesModifier {\n const themeProperties: CSSPropertiesMap = {}\n\n Object.entries(colors).forEach(([name, value]) => {\n if (value !== undefined) {\n // Convert camelCase to kebab-case for CSS variable names\n const kebabName = name.replace(\n /[A-Z]/g,\n letter => `-${letter.toLowerCase()}`\n )\n themeProperties[`--theme-color-${kebabName}`] = value\n }\n })\n\n return new CustomPropertiesModifier({\n properties: themeProperties,\n scope: 'local',\n })\n}\n\n// =============================================================================\n// Design Tokens - Design System Integration\n// =============================================================================\n\nexport interface DesignTokens {\n // Spacing tokens\n 'spacing-xs'?: number | string\n 'spacing-sm'?: number | string\n 'spacing-md'?: number | string\n 'spacing-lg'?: number | string\n 'spacing-xl'?: number | string\n 'spacing-2xl'?: number | string\n\n // Typography tokens\n 'font-size-xs'?: number | string\n 'font-size-sm'?: number | string\n 'font-size-base'?: number | string\n 'font-size-lg'?: number | string\n 'font-size-xl'?: number | string\n 'font-size-2xl'?: number | string\n 'font-size-3xl'?: number | string\n\n 'font-weight-light'?: number\n 'font-weight-normal'?: number\n 'font-weight-medium'?: number\n 'font-weight-semibold'?: number\n 'font-weight-bold'?: number\n\n 'line-height-tight'?: number | string\n 'line-height-normal'?: number | string\n 'line-height-relaxed'?: number | string\n 'line-height-loose'?: number | string\n\n // Border radius tokens\n 'radius-none'?: number | string\n 'radius-sm'?: number | string\n 'radius-md'?: number | string\n 'radius-lg'?: number | string\n 'radius-full'?: string\n\n // Shadow tokens\n 'shadow-sm'?: string\n 'shadow-md'?: string\n 'shadow-lg'?: string\n 'shadow-xl'?: string\n\n // Duration tokens for animations\n 'duration-fast'?: string\n 'duration-normal'?: string\n 'duration-slow'?: string\n\n // Custom tokens\n [key: string]: string | number | undefined\n}\n\n/**\n * Design tokens as CSS custom properties for design system consistency\n *\n * @example\n * ```typescript\n * import { designTokens } from '@tachui/modifiers'\n *\n * // Spacing design tokens\n * element.apply(designTokens({\n * 'spacing-xs': 4,\n * 'spacing-sm': 8,\n * 'spacing-md': 16,\n * 'spacing-lg': 24,\n * 'spacing-xl': 32,\n * 'spacing-2xl': 48\n * }))\n *\n * // Typography design tokens\n * element.apply(designTokens({\n * 'font-size-sm': 14,\n * 'font-size-base': 16,\n * 'font-size-lg': 18,\n * 'font-size-xl': 20,\n * 'font-weight-normal': 400,\n * 'font-weight-medium': 500,\n * 'font-weight-bold': 700,\n * 'line-height-tight': 1.2,\n * 'line-height-normal': 1.5,\n * 'line-height-relaxed': 1.75\n * }))\n *\n * // Border and effects tokens\n * element.apply(designTokens({\n * 'radius-sm': 4,\n * 'radius-md': 8,\n * 'radius-lg': 12,\n * 'radius-full': '50%',\n * 'shadow-sm': '0 1px 2px rgba(0, 0, 0, 0.05)',\n * 'shadow-md': '0 4px 6px rgba(0, 0, 0, 0.1)',\n * 'shadow-lg': '0 10px 15px rgba(0, 0, 0, 0.1)',\n * 'duration-fast': '150ms',\n * 'duration-normal': '300ms',\n * 'duration-slow': '500ms'\n * }))\n *\n * // Custom design tokens\n * element.apply(designTokens({\n * 'container-max-width': '1200px',\n * 'sidebar-width': '280px',\n * 'header-height': '64px',\n * 'z-index-modal': 1000,\n * 'z-index-tooltip': 1100\n * }))\n * ```\n */\nexport function designTokens(tokens: DesignTokens): CustomPropertiesModifier {\n const tokenProperties: CSSPropertiesMap = {}\n\n Object.entries(tokens).forEach(([name, value]) => {\n if (value !== undefined) {\n tokenProperties[`--token-${name}`] = value\n }\n })\n\n return new CustomPropertiesModifier({\n properties: tokenProperties,\n scope: 'local',\n })\n}\n","/**\n * TachUI Modifiers - Styling System\n *\n * Comprehensive modifier system for declarative styling and behavior modification\n *\n * Auto-registers all modifiers with the global registry when imported.\n */\n\nimport { globalModifierRegistry } from '@tachui/core/modifiers/registry'\n\n// Core base classes and types\nexport * from './basic/base'\nexport type {\n Modifier,\n ModifierContext,\n ModifierBuilder,\n ModifierRegistry,\n ReactiveModifierProps,\n CSSStyleProperties,\n ModifierApplicationOptions,\n} from '@tachui/core/modifiers/types'\nexport { ModifierPriority } from '@tachui/core/modifiers/types'\n\n// Basic layout modifiers - implemented\nexport * from './basic'\n\n// Layout modifiers - implemented\nexport * from './layout'\n\n// Utility modifiers - implemented\nexport * from './utility'\n\n// Appearance modifiers - implemented\nexport * from './appearance'\n\n// Typography modifiers - implemented\nexport * from './typography'\n\n// Interaction modifiers - implemented\nexport * from './interaction'\n\n// Responsive modifiers - implemented\nexport * from './responsive'\n\n// Element modifiers - pseudo-elements and decorations\nexport * from './elements'\n\n// Attribute modifiers - HTML, ARIA, and CSS properties\nexport * from './attributes'\n\n// ============================================================================\n// AUTO-REGISTRATION SYSTEM\n// ============================================================================\n\n// Import all modifier factory functions for auto-registration\nimport {\n // Basic modifiers\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n paddingLeading,\n paddingTrailing,\n paddingHorizontal,\n paddingVertical,\n margin,\n marginTop,\n marginBottom,\n marginLeft,\n marginRight,\n marginLeading,\n marginTrailing,\n marginHorizontal,\n marginVertical,\n size,\n width,\n height,\n maxWidth,\n maxHeight,\n minWidth,\n minHeight,\n} from './basic'\n\nimport {\n // Layout modifiers - only import factory functions\n aspectRatio,\n fixedSize,\n offset,\n overlay,\n position,\n scaleEffect,\n zIndex,\n} from './layout'\n\nimport {\n // Appearance modifiers - core functions only\n backgroundColor,\n border,\n clipShape,\n clipped,\n foregroundColor,\n} from './appearance'\n\nimport {\n // Typography modifiers - core functions only\n typography,\n textAlign,\n font,\n lineClamp,\n wordBreak,\n} from './typography'\n\nimport {\n // Interaction modifiers\n allowsHitTesting,\n focusable,\n activatable,\n editable,\n focused,\n keyboardShortcut,\n onContinuousHover,\n onLongPressGesture,\n scroll,\n scrollBehavior,\n overscrollBehavior,\n overscrollBehaviorX,\n overscrollBehaviorY,\n scrollMargin,\n scrollPadding,\n scrollSnap,\n} from './interaction'\n\nimport {\n // Utility modifiers\n css,\n cssProperty,\n cssVariable,\n utility,\n} from './utility'\n\nimport {\n // Attribute modifiers\n aria,\n customProperties,\n customProperty,\n cssVariables,\n id,\n data,\n tabIndex,\n} from './attributes'\n\nimport {\n // Element modifiers\n before,\n after,\n pseudoElements,\n iconBefore,\n iconAfter,\n lineBefore,\n lineAfter,\n quotes,\n underline,\n badge,\n tooltip,\n cornerRibbon,\n spinner,\n} from './elements'\n\n/**\n * Modifier registration entries: [registryKey, factoryFunction]\n */\nconst modifierRegistrations: Array<[string, (...args: any[]) => any]> = [\n // Basic layout modifiers\n ['padding', padding],\n ['paddingTop', paddingTop],\n ['paddingBottom', paddingBottom],\n ['paddingLeft', paddingLeft],\n ['paddingRight', paddingRight],\n ['paddingLeading', paddingLeading],\n ['paddingTrailing', paddingTrailing],\n ['paddingHorizontal', paddingHorizontal],\n ['paddingVertical', paddingVertical],\n\n ['margin', margin],\n ['marginTop', marginTop],\n ['marginBottom', marginBottom],\n ['marginLeft', marginLeft],\n ['marginRight', marginRight],\n ['marginLeading', marginLeading],\n ['marginTrailing', marginTrailing],\n ['marginHorizontal', marginHorizontal],\n ['marginVertical', marginVertical],\n\n ['size', size],\n ['width', width],\n ['height', height],\n ['maxWidth', maxWidth],\n ['maxHeight', maxHeight],\n ['minWidth', minWidth],\n ['minHeight', minHeight],\n\n // Advanced layout modifiers - only core functions that exist\n ['aspectRatio', aspectRatio],\n ['fixedSize', fixedSize],\n ['offset', offset],\n ['overlay', overlay],\n ['position', position],\n ['scaleEffect', scaleEffect],\n ['zIndex', zIndex],\n\n // Appearance modifiers - core functions only\n ['backgroundColor', backgroundColor],\n ['border', border],\n ['clipShape', clipShape],\n ['clipped', clipped],\n ['foregroundColor', foregroundColor],\n\n // Typography modifiers - core functions only\n ['typography', typography],\n ['textAlign', textAlign],\n ['font', font],\n ['lineClamp', lineClamp],\n ['wordBreak', wordBreak],\n\n // Interaction modifiers\n ['allowsHitTesting', allowsHitTesting],\n\n ['focusable', focusable],\n ['activatable', activatable],\n ['editable', editable],\n\n ['focused', focused],\n\n ['keyboardShortcut', keyboardShortcut],\n\n ['onContinuousHover', onContinuousHover],\n\n ['onLongPressGesture', onLongPressGesture],\n\n ['scroll', scroll],\n ['scrollBehavior', scrollBehavior],\n ['overscrollBehavior', overscrollBehavior],\n ['overscrollBehaviorX', overscrollBehaviorX],\n ['overscrollBehaviorY', overscrollBehaviorY],\n ['scrollMargin', scrollMargin],\n ['scrollPadding', scrollPadding],\n ['scrollSnap', scrollSnap],\n\n // Utility modifiers\n ['css', css],\n ['cssProperty', cssProperty],\n ['cssVariable', cssVariable],\n\n ['utility', utility],\n\n // Attribute modifiers\n ['aria', aria],\n\n ['customProperties', customProperties],\n ['customProperty', customProperty],\n ['cssVariables', cssVariables],\n\n ['id', id],\n ['data', data],\n ['tabIndex', tabIndex],\n\n // Element modifiers\n ['before', before],\n ['after', after],\n ['pseudoElements', pseudoElements],\n ['iconBefore', iconBefore],\n ['iconAfter', iconAfter],\n ['lineBefore', lineBefore],\n ['lineAfter', lineAfter],\n ['quotes', quotes],\n ['underline', underline],\n ['badge', badge],\n ['tooltip', tooltip],\n ['cornerRibbon', cornerRibbon],\n ['spinner', spinner],\n]\n\n/**\n * Register all modifiers with the global registry\n */\nfunction registerModifiers(): void {\n let registeredCount = 0\n let failedCount = 0\n\n modifierRegistrations.forEach(([name, factory]) => {\n try {\n globalModifierRegistry.register(name, factory)\n registeredCount++\n } catch (error) {\n console.warn(`Failed to register modifier '${name}':`, error)\n failedCount++\n }\n })\n\n console.log(\n `@tachui/modifiers: Registered ${registeredCount} modifiers${\n failedCount > 0 ? `, ${failedCount} failed` : ''\n }`\n )\n}\n\n// Auto-register all modifiers when this module is imported\nregisterModifiers()\n"],"names":["_PseudoElementModifier","BaseModifier","__publicField","_node","context","pseudoClass","className","pseudoType","styles","styleSheet","cssRule","e","selector","cssProperties","prop","value","cssProperty","cssValue","property","existingStyle","style","PseudoElementModifier","before","after","pseudoElements","options","iconBefore","icon","iconAfter","lineBefore","color","thickness","length","lineAfter","quotes","openQuote","closeQuote","underline","opacity","badge","size","text","tooltip","position","backgroundColor","textColor","cornerRibbon","spinner","borderWidth","IdModifier","id","DataModifier","data","key","attributeName","attributeValue","kebabKey","letter","cleanKey","attributes","TabIndexModifier","tabIndex","_AriaModifier","aria","normalizedKey","validHaspopup","validCurrent","validInvalid","validPressed","AriaModifier","CustomPropertiesModifier","props","name","propertyName","customProperties","customProperty","scope","cssVariables","variables","themeColors","colors","themeProperties","kebabName","designTokens","tokens","tokenProperties","modifierRegistrations","padding","paddingTop","paddingBottom","paddingLeft","paddingRight","paddingLeading","paddingTrailing","paddingHorizontal","paddingVertical","margin","marginTop","marginBottom","marginLeft","marginRight","marginLeading","marginTrailing","marginHorizontal","marginVertical","width","height","maxWidth","maxHeight","minWidth","minHeight","aspectRatio","fixedSize","offset","overlay","scaleEffect","zIndex","border","clipShape","clipped","foregroundColor","typography","textAlign","font","lineClamp","wordBreak","allowsHitTesting","focusable","activatable","editable","focused","keyboardShortcut","onContinuousHover","onLongPressGesture","scroll","scrollBehavior","overscrollBehavior","overscrollBehaviorX","overscrollBehaviorY","scrollMargin","scrollPadding","scrollSnap","css","cssVariable","utility","registerModifiers","registeredCount","failedCount","factory","globalModifierRegistry","error"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
package/dist/layout/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|