UNPKG

@dialpad/dialtone

Version:

Dialpad's Dialtone design system monorepo

1 lines 6.61 kB
{"version":3,"file":"utils.cjs","names":["DT_STACK_DIRECTION","DT_STACK_RESPONSIVE_BREAKPOINTS","DT_STACK_GAP","DT_STACK_ALIGN","DT_STACK_JUSTIFY"],"sources":["../../../components/stack/utils.js"],"sourcesContent":["import { DT_STACK_DIRECTION, DT_STACK_GAP, DT_STACK_RESPONSIVE_BREAKPOINTS, DT_STACK_ALIGN, DT_STACK_JUSTIFY } from '@/components/stack/stack_constants';\n\nfunction _isDefaultDirection (direction) {\n return direction === DT_STACK_DIRECTION.default;\n}\n\n/**\n * Generic helper to extract default value from string or object props\n * @param {string|Object} value - The prop value\n * @returns {string|null} The default value or null\n */\nfunction _getDefaultValue (value) {\n if (typeof value === 'string') return value;\n if (typeof value === 'object' && value !== null) return value.default;\n return null;\n}\n\nfunction _getValidDirection (direction) {\n if (typeof direction === 'string') {\n return !_isDefaultDirection(direction) ? DT_STACK_DIRECTION[direction] : null;\n } else if (typeof direction === 'object') {\n const { default: defaultStyle } = direction;\n\n return !_isDefaultDirection(defaultStyle) ? DT_STACK_DIRECTION[defaultStyle] : null;\n } else { return null; }\n}\n\n/**\n * Generic helper to generate responsive classes for any prop\n * @param {Object} propValue - The prop value object with breakpoint keys\n * @param {string} propName - The name of the prop (e.g., 'gap', 'align')\n * @param {Array|Object} validValues - Valid values (array or object for direction)\n * @param {string} classPrefix - CSS class prefix (default: 'd-stack')\n * @returns {Array} Array of CSS class names\n */\nfunction _getResponsiveClasses (propValue, propName, validValues, classPrefix = 'd-stack') {\n if (typeof propValue !== 'object' || propValue === null) return [];\n\n return DT_STACK_RESPONSIVE_BREAKPOINTS.map((breakpoint) => {\n const value = propValue[breakpoint];\n if (!value) return null;\n\n // Handle both array (gap, align, justify) and object (direction) validValues\n const isValid = Array.isArray(validValues)\n ? validValues.includes(value)\n : value in validValues;\n\n // For direction, we don't need the prop name in the class\n const className = propName === ''\n ? `${classPrefix}--${breakpoint}-${value}`\n : `${classPrefix}--${breakpoint}-${propName}-${value}`;\n\n return isValid ? className : null;\n });\n}\n\nexport function getDefaultDirectionClass (direction) {\n return _getValidDirection(direction)\n ? `d-stack--${DT_STACK_DIRECTION[_getValidDirection(direction)]}`\n : null;\n}\n\nfunction getResponsiveDirectionClasses (direction) {\n return _getResponsiveClasses(direction, '', DT_STACK_DIRECTION);\n}\n\nfunction getResponsiveGapClasses (gap) {\n return _getResponsiveClasses(gap, 'gap', DT_STACK_GAP);\n}\n\nfunction getResponsiveAlignClasses (align) {\n return _getResponsiveClasses(align, 'align', DT_STACK_ALIGN);\n}\n\nfunction getResponsiveJustifyClasses (justify) {\n if (typeof justify !== 'object' || justify === null) return [];\n\n return DT_STACK_RESPONSIVE_BREAKPOINTS.map((breakpoint) => {\n const value = justify[breakpoint];\n if (!value) return null;\n\n const isValid = DT_STACK_JUSTIFY.includes(value);\n const normalizedValue = _normalizeJustifyForClass(value);\n\n return isValid ? `d-stack--${breakpoint}-justify-${normalizedValue}` : null;\n });\n}\n\nexport function getResponsiveClasses (direction, gap, align, justify) {\n return [\n ...getResponsiveDirectionClasses(direction),\n ...getResponsiveGapClasses(gap),\n ...getResponsiveAlignClasses(align),\n ...getResponsiveJustifyClasses(justify),\n ];\n}\n\nexport function getDefaultGapClass (gap) {\n const validGap = _getDefaultValue(gap);\n return DT_STACK_GAP.includes(validGap) ? `d-stack--gap-${validGap}` : null;\n}\n\nexport function getDefaultAlignClass (align) {\n const validAlign = _getDefaultValue(align);\n return DT_STACK_ALIGN.includes(validAlign) ? `d-stack--align-${validAlign}` : null;\n}\n\n/**\n * Normalizes justify value to CSS class suffix.\n * Maps CSS-aligned values (space-around, space-between, space-evenly) to shorthand\n * (around, between, evenly) for CSS class generation.\n * @param {string} value - The justify value\n * @returns {string} The normalized value for CSS class\n */\nfunction _normalizeJustifyForClass (value) {\n const normalizeMap = {\n 'space-around': 'around',\n 'space-between': 'between',\n 'space-evenly': 'evenly',\n };\n return normalizeMap[value] || value;\n}\n\nexport function getDefaultJustifyClass (justify) {\n const validJustify = _getDefaultValue(justify);\n const normalizedJustify = _normalizeJustifyForClass(validJustify);\n return DT_STACK_JUSTIFY.includes(validJustify) ? `d-stack--justify-${normalizedJustify}` : null;\n}"],"mappings":"4GAEA,SAAS,EAAqB,EAAW,CACvC,OAAO,IAAcA,EAAAA,mBAAmB,QAQ1C,SAAS,EAAkB,EAAO,CAGhC,OAFI,OAAO,GAAU,SAAiB,EAClC,OAAO,GAAU,UAAY,EAAuB,EAAM,QACvD,KAGT,SAAS,EAAoB,EAAW,CACtC,GAAI,OAAO,GAAc,SACvB,OAAQ,EAAoB,EAAU,CAAmC,KAAhCA,EAAAA,mBAAmB,MACnD,OAAO,GAAc,SAAU,CACxC,GAAM,CAAE,QAAS,GAAiB,EAElC,OAAQ,EAAoB,EAAa,CAAsC,KAAnCA,EAAAA,mBAAmB,QACxD,OAAO,KAWlB,SAAS,EAAuB,EAAW,EAAU,EAAa,EAAc,UAAW,CAGzF,OAFI,OAAO,GAAc,WAAY,EAA2B,EAAE,CAE3DC,EAAAA,gCAAgC,IAAK,GAAe,CACzD,IAAM,EAAQ,EAAU,GACxB,GAAI,CAAC,EAAO,OAAO,KAGnB,IAAM,EAAU,MAAM,QAAQ,EAAY,CACtC,EAAY,SAAS,EAAM,CAC3B,KAAS,EAGP,EAAY,IAAa,GAC3B,GAAG,EAAY,IAAI,EAAW,GAAG,IACjC,GAAG,EAAY,IAAI,EAAW,GAAG,EAAS,GAAG,IAEjD,OAAO,EAAU,EAAY,MAC7B,CAGJ,SAAgB,EAA0B,EAAW,CACnD,OAAO,EAAmB,EAAU,CAChC,YAAYD,EAAAA,mBAAmB,EAAmB,EAAU,IAC5D,KAGN,SAAS,EAA+B,EAAW,CACjD,OAAO,EAAsB,EAAW,GAAIA,EAAAA,mBAAmB,CAGjE,SAAS,EAAyB,EAAK,CACrC,OAAO,EAAsB,EAAK,MAAOE,EAAAA,aAAa,CAGxD,SAAS,EAA2B,EAAO,CACzC,OAAO,EAAsB,EAAO,QAASC,EAAAA,eAAe,CAG9D,SAAS,EAA6B,EAAS,CAG7C,OAFI,OAAO,GAAY,WAAY,EAAyB,EAAE,CAEvDF,EAAAA,gCAAgC,IAAK,GAAe,CACzD,IAAM,EAAQ,EAAQ,GACtB,GAAI,CAAC,EAAO,OAAO,KAEnB,IAAM,EAAUG,EAAAA,iBAAiB,SAAS,EAAM,CAC1C,EAAkB,EAA0B,EAAM,CAExD,OAAO,EAAU,YAAY,EAAW,WAAW,IAAoB,MACvE,CAGJ,SAAgB,EAAsB,EAAW,EAAK,EAAO,EAAS,CACpE,MAAO,CACL,GAAG,EAA8B,EAAU,CAC3C,GAAG,EAAwB,EAAI,CAC/B,GAAG,EAA0B,EAAM,CACnC,GAAG,EAA4B,EAAQ,CACxC,CAGH,SAAgB,EAAoB,EAAK,CACvC,IAAM,EAAW,EAAiB,EAAI,CACtC,OAAOF,EAAAA,aAAa,SAAS,EAAS,CAAG,gBAAgB,IAAa,KAGxE,SAAgB,EAAsB,EAAO,CAC3C,IAAM,EAAa,EAAiB,EAAM,CAC1C,OAAOC,EAAAA,eAAe,SAAS,EAAW,CAAG,kBAAkB,IAAe,KAUhF,SAAS,EAA2B,EAAO,CAMzC,MALqB,CACnB,eAAgB,SAChB,gBAAiB,UACjB,eAAgB,SACjB,CACmB,IAAU,EAGhC,SAAgB,EAAwB,EAAS,CAC/C,IAAM,EAAe,EAAiB,EAAQ,CACxC,EAAoB,EAA0B,EAAa,CACjE,OAAOC,EAAAA,iBAAiB,SAAS,EAAa,CAAG,oBAAoB,IAAsB"}