@hypoth-ui/wc 0.1.1
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/LICENSE +21 -0
- package/README.md +60 -0
- package/dist/button-MKQKTC5Q.js +10 -0
- package/dist/button-MKQKTC5Q.js.map +1 -0
- package/dist/chunk-4HLM6DBG.js +910 -0
- package/dist/chunk-4HLM6DBG.js.map +1 -0
- package/dist/chunk-55ID7LJL.js +3602 -0
- package/dist/chunk-55ID7LJL.js.map +1 -0
- package/dist/chunk-66HFYJD7.js +86 -0
- package/dist/chunk-66HFYJD7.js.map +1 -0
- package/dist/chunk-CZOXIJVS.js +70 -0
- package/dist/chunk-CZOXIJVS.js.map +1 -0
- package/dist/chunk-DHUM4Q5Y.js +495 -0
- package/dist/chunk-DHUM4Q5Y.js.map +1 -0
- package/dist/chunk-DNNI5BDE.js +1842 -0
- package/dist/chunk-DNNI5BDE.js.map +1 -0
- package/dist/chunk-GXKZ6E6K.js +99 -0
- package/dist/chunk-GXKZ6E6K.js.map +1 -0
- package/dist/chunk-H4GJJZ3N.js +51 -0
- package/dist/chunk-H4GJJZ3N.js.map +1 -0
- package/dist/chunk-JMPTFALJ.js +175 -0
- package/dist/chunk-JMPTFALJ.js.map +1 -0
- package/dist/chunk-MYQWCLUJ.js +45 -0
- package/dist/chunk-MYQWCLUJ.js.map +1 -0
- package/dist/chunk-QZSPWT7L.js +183 -0
- package/dist/chunk-QZSPWT7L.js.map +1 -0
- package/dist/chunk-TSKBQCTR.js +5137 -0
- package/dist/chunk-TSKBQCTR.js.map +1 -0
- package/dist/chunk-TXIIUVL3.js +130 -0
- package/dist/chunk-TXIIUVL3.js.map +1 -0
- package/dist/chunk-UM7WRO7W.js +237 -0
- package/dist/chunk-UM7WRO7W.js.map +1 -0
- package/dist/chunk-VPXL4RB3.js +202 -0
- package/dist/chunk-VPXL4RB3.js.map +1 -0
- package/dist/chunk-VX5CKSMN.js +39 -0
- package/dist/chunk-VX5CKSMN.js.map +1 -0
- package/dist/chunk-WQ5BEP3E.js +2845 -0
- package/dist/chunk-WQ5BEP3E.js.map +1 -0
- package/dist/chunk-YDQ434UH.js +60 -0
- package/dist/chunk-YDQ434UH.js.map +1 -0
- package/dist/chunk-ZWV4VI6D.js +153 -0
- package/dist/chunk-ZWV4VI6D.js.map +1 -0
- package/dist/core.d.ts +127 -0
- package/dist/core.js +38 -0
- package/dist/core.js.map +1 -0
- package/dist/data-display.d.ts +872 -0
- package/dist/data-display.js +57 -0
- package/dist/data-display.js.map +1 -0
- package/dist/ds-element-Db0LMfxI.d.ts +43 -0
- package/dist/feedback.d.ts +292 -0
- package/dist/feedback.js +31 -0
- package/dist/feedback.js.map +1 -0
- package/dist/form-controls.d.ts +1713 -0
- package/dist/form-controls.js +63 -0
- package/dist/form-controls.js.map +1 -0
- package/dist/icon-7IZTJ5WT.js +8 -0
- package/dist/icon-7IZTJ5WT.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +423 -0
- package/dist/index.js.map +1 -0
- package/dist/input-LB6UR37A.js +10 -0
- package/dist/input-LB6UR37A.js.map +1 -0
- package/dist/layout.d.ts +504 -0
- package/dist/layout.js +34 -0
- package/dist/layout.js.map +1 -0
- package/dist/link-NHDJ6SFY.js +9 -0
- package/dist/link-NHDJ6SFY.js.map +1 -0
- package/dist/navigation.d.ts +255 -0
- package/dist/navigation.js +111 -0
- package/dist/navigation.js.map +1 -0
- package/dist/overlays.d.ts +1291 -0
- package/dist/overlays.js +106 -0
- package/dist/overlays.js.map +1 -0
- package/dist/primitives.d.ts +230 -0
- package/dist/primitives.js +26 -0
- package/dist/primitives.js.map +1 -0
- package/dist/registry-Bns0t11H.d.ts +233 -0
- package/dist/skeleton-MUdd2029.d.ts +109 -0
- package/dist/spinner-BWaNlc-Y.d.ts +45 -0
- package/dist/spinner-UIYDUVBZ.js +8 -0
- package/dist/spinner-UIYDUVBZ.js.map +1 -0
- package/dist/stepper-CCRwcQOe.d.ts +851 -0
- package/dist/text-MT3S3EMU.js +8 -0
- package/dist/text-MT3S3EMU.js.map +1 -0
- package/dist/visually-hidden-MW2XY4CS.js +8 -0
- package/dist/visually-hidden-MW2XY4CS.js.map +1 -0
- package/package.json +92 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/flow.ts","../src/types/layout-tokens.ts","../src/utils/responsive.ts","../src/utils/token-validator.ts","../src/components/layout/container.ts","../src/components/layout/grid.ts","../src/components/layout/box.ts","../src/components/layout/page.ts","../src/components/layout/section.ts","../src/components/layout/app-shell.ts","../src/components/layout/header.ts","../src/components/layout/footer.ts","../src/components/layout/main.ts","../src/components/layout/spacer.ts","../src/components/layout/center.ts","../src/components/layout/split.ts","../src/components/layout/wrap.ts"],"sourcesContent":["/**\n * Flow Web Component\n *\n * Primary 1D layout primitive with responsive direction switching.\n * Replaces separate Stack/Inline components with unified API.\n *\n * @element ds-flow\n * @slot - Default slot for children\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\nimport type {\n FlexAlign,\n FlexDirection,\n FlexJustify,\n FlexWrap,\n SpacingToken,\n} from \"../../types/layout-tokens.js\";\nimport {\n FLEX_ALIGN_VALUES,\n FLEX_DIRECTION_VALUES,\n FLEX_JUSTIFY_VALUES,\n SPACING_TOKENS,\n} from \"../../types/layout-tokens.js\";\nimport {\n generateResponsiveClasses,\n getBaseValue,\n isResponsiveValue,\n} from \"../../utils/responsive.js\";\nimport { validateResponsiveToken, validateToken } from \"../../utils/token-validator.js\";\n\nexport class DsFlow extends DSElement {\n static override styles = [];\n\n /**\n * Flex direction. Supports responsive syntax: \"base:column md:row\"\n */\n @property({ type: String, reflect: true })\n direction = \"row\";\n\n /**\n * Gap between children. Supports responsive syntax: \"base:sm md:lg\"\n */\n @property({ type: String, reflect: true })\n gap = \"none\";\n\n /**\n * Cross-axis alignment.\n */\n @property({ type: String, reflect: true })\n align: FlexAlign = \"stretch\";\n\n /**\n * Main-axis alignment.\n */\n @property({ type: String, reflect: true })\n justify: FlexJustify = \"start\";\n\n /**\n * Flex wrap behavior.\n */\n @property({ type: String, reflect: true })\n wrap: FlexWrap = \"nowrap\";\n\n /**\n * Use inline-flex instead of flex.\n */\n @property({ type: Boolean, reflect: true })\n inline = false;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.validateProps();\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n if (\n changedProperties.has(\"direction\") ||\n changedProperties.has(\"gap\") ||\n changedProperties.has(\"align\") ||\n changedProperties.has(\"justify\")\n ) {\n this.validateProps();\n }\n }\n\n private validateProps(): void {\n validateResponsiveToken(this.direction, FLEX_DIRECTION_VALUES, \"direction\", \"ds-flow\");\n validateResponsiveToken(this.gap, SPACING_TOKENS, \"gap\", \"ds-flow\");\n validateToken(this.align, FLEX_ALIGN_VALUES, \"align\", \"ds-flow\");\n validateToken(this.justify, FLEX_JUSTIFY_VALUES, \"justify\", \"ds-flow\");\n }\n\n override render(): TemplateResult {\n // Get base values for data attributes\n const baseDirection = isResponsiveValue(this.direction)\n ? getBaseValue<FlexDirection>(this.direction)\n : (this.direction as FlexDirection);\n\n const baseGap = isResponsiveValue(this.gap)\n ? getBaseValue<SpacingToken>(this.gap)\n : (this.gap as SpacingToken);\n\n // Generate responsive classes\n const directionClasses = isResponsiveValue(this.direction)\n ? generateResponsiveClasses(\"flow\", \"dir\", this.direction)\n : [];\n\n const gapClasses = isResponsiveValue(this.gap)\n ? generateResponsiveClasses(\"flow\", \"gap\", this.gap)\n : [];\n\n const classes = {\n \"ds-flow\": true,\n \"ds-flow--inline\": this.inline,\n ...Object.fromEntries(directionClasses.map((c) => [c, true])),\n ...Object.fromEntries(gapClasses.map((c) => [c, true])),\n };\n\n return html`\n <div\n class=${classMap(classes)}\n data-direction=${baseDirection}\n data-gap=${baseGap}\n data-align=${this.align}\n data-justify=${this.justify}\n data-wrap=${this.wrap}\n data-layout=\"flow\"\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-flow\", DsFlow);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-flow\": DsFlow;\n }\n}\n","/**\n * Layout Token Types\n *\n * Shared TypeScript types for layout primitive components.\n * These types constrain props to valid design token values.\n */\n\n/**\n * Spacing tokens for gap, padding, and margin props.\n */\nexport type SpacingToken = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\n\n/**\n * Breakpoint tokens for responsive values.\n */\nexport type BreakpointToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\n\n/**\n * Container size tokens for max-width constraints.\n */\nexport type ContainerSizeToken = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n\n/**\n * Surface tokens for background colors.\n */\nexport type SurfaceToken = \"background\" | \"surface\" | \"surface-raised\" | \"surface-sunken\" | \"muted\";\n\n/**\n * Radius tokens for border-radius.\n */\nexport type RadiusToken = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\n/**\n * Flex direction values.\n */\nexport type FlexDirection = \"row\" | \"column\" | \"row-reverse\" | \"column-reverse\";\n\n/**\n * Flex alignment values (cross-axis).\n */\nexport type FlexAlign = \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\n\n/**\n * Flex justify values (main-axis).\n */\nexport type FlexJustify = \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\n\n/**\n * Flex wrap values.\n */\nexport type FlexWrap = \"nowrap\" | \"wrap\" | \"wrap-reverse\";\n\n/**\n * Grid column values.\n */\nexport type GridColumns =\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | 9\n | 10\n | 11\n | 12\n | \"auto-fit\"\n | \"auto-fill\";\n\n/**\n * Split layout ratio values.\n */\nexport type SplitRatio = \"equal\" | \"1:2\" | \"2:1\" | \"1:3\" | \"3:1\";\n\n/**\n * Spacer axis values.\n */\nexport type SpacerAxis = \"horizontal\" | \"vertical\";\n\n/**\n * Valid token sets for validation.\n */\nexport const SPACING_TOKENS: readonly SpacingToken[] = [\n \"none\",\n \"xs\",\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\",\n \"2xl\",\n \"3xl\",\n] as const;\n\nexport const BREAKPOINT_TOKENS: readonly BreakpointToken[] = [\n \"xs\",\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\",\n \"2xl\",\n \"3xl\",\n] as const;\n\nexport const CONTAINER_SIZE_TOKENS: readonly ContainerSizeToken[] = [\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\",\n \"2xl\",\n \"full\",\n] as const;\n\nexport const SURFACE_TOKENS: readonly SurfaceToken[] = [\n \"background\",\n \"surface\",\n \"surface-raised\",\n \"surface-sunken\",\n \"muted\",\n] as const;\n\nexport const RADIUS_TOKENS: readonly RadiusToken[] = [\n \"none\",\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\",\n \"full\",\n] as const;\n\nexport const FLEX_DIRECTION_VALUES: readonly FlexDirection[] = [\n \"row\",\n \"column\",\n \"row-reverse\",\n \"column-reverse\",\n] as const;\n\nexport const FLEX_ALIGN_VALUES: readonly FlexAlign[] = [\n \"start\",\n \"center\",\n \"end\",\n \"stretch\",\n \"baseline\",\n] as const;\n\nexport const FLEX_JUSTIFY_VALUES: readonly FlexJustify[] = [\n \"start\",\n \"center\",\n \"end\",\n \"between\",\n \"around\",\n \"evenly\",\n] as const;\n","/**\n * Responsive Value Parser\n *\n * Parses responsive string values from Web Component attributes\n * into CSS classes for each breakpoint.\n *\n * Input format: \"base:value breakpoint:value ...\"\n * Example: \"base:column md:row lg:row-reverse\"\n */\n\nimport type { BreakpointToken } from \"../types/layout-tokens.js\";\n\n/**\n * Parsed responsive value with base and breakpoint overrides.\n */\nexport interface ResponsiveValue<T> {\n base: T;\n overrides: Partial<Record<BreakpointToken, T>>;\n}\n\n/**\n * Parse a responsive string value into structured data.\n *\n * @param value - The responsive string (e.g., \"base:column md:row\")\n * @returns Parsed responsive value with base and overrides\n *\n * @example\n * parseResponsiveString(\"base:column md:row\")\n * // Returns: { base: \"column\", overrides: { md: \"row\" } }\n *\n * @example\n * parseResponsiveString(\"column\")\n * // Returns: { base: \"column\", overrides: {} }\n */\nexport function parseResponsiveString<T extends string>(value: string): ResponsiveValue<T> {\n const parts = value.trim().split(/\\s+/);\n let base: T | undefined;\n const overrides: Partial<Record<BreakpointToken, T>> = {};\n\n for (const part of parts) {\n if (part.includes(\":\")) {\n const [breakpoint, val] = part.split(\":\") as [string, T];\n if (breakpoint === \"base\") {\n base = val;\n } else {\n overrides[breakpoint as BreakpointToken] = val;\n }\n } else {\n // If no prefix, treat as base value\n base = part as T;\n }\n }\n\n return {\n base: base as T,\n overrides,\n };\n}\n\n/**\n * Generate CSS classes for a responsive property.\n *\n * @param component - Component name prefix (e.g., \"flow\")\n * @param property - Property short name (e.g., \"dir\" for direction)\n * @param value - The responsive string value\n * @returns Array of CSS classes to apply\n *\n * @example\n * generateResponsiveClasses(\"flow\", \"dir\", \"base:column md:row\")\n * // Returns: [\"ds-flow--md:dir-row\"]\n * // Note: base value is applied via data attribute, not class\n */\nexport function generateResponsiveClasses(\n component: string,\n property: string,\n value: string\n): string[] {\n const parsed = parseResponsiveString(value);\n const classes: string[] = [];\n\n // Add breakpoint-specific classes\n for (const [breakpoint, val] of Object.entries(parsed.overrides)) {\n if (val) {\n classes.push(`ds-${component}--${breakpoint}:${property}-${val}`);\n }\n }\n\n return classes;\n}\n\n/**\n * Get the base value from a responsive string.\n *\n * @param value - The responsive string\n * @returns The base value\n */\nexport function getBaseValue<T extends string>(value: string): T {\n const parsed = parseResponsiveString<T>(value);\n return parsed.base;\n}\n\n/**\n * Check if a value is responsive (has breakpoint prefixes).\n *\n * @param value - The value to check\n * @returns True if value contains breakpoint prefixes\n */\nexport function isResponsiveValue(value: string): boolean {\n return value.includes(\":\");\n}\n","/**\n * Token Validation Utility\n *\n * Validates that prop values are valid design tokens.\n * Logs warnings in development mode for invalid values.\n * Silently ignores invalid values in production.\n */\n\n/**\n * Check if we're in development mode.\n * Checks NODE_ENV environment variable.\n */\nfunction isDevelopment(): boolean {\n // Check for development mode via global or process.env\n if (typeof globalThis !== \"undefined\") {\n const g = globalThis as Record<string, unknown>;\n if (g.__DEV__ === true) return true;\n }\n\n // SSR/Node.js environment\n if (typeof process !== \"undefined\" && process.env) {\n return process.env.NODE_ENV === \"development\";\n }\n\n return false;\n}\n\n/**\n * Validate a token value against a list of valid tokens.\n *\n * @param value - The value to validate\n * @param validTokens - Array of valid token values\n * @param propName - Name of the prop for error messages\n * @param componentName - Name of the component for error messages\n * @returns True if valid, false if invalid\n *\n * @example\n * validateToken(\"lg\", [\"sm\", \"md\", \"lg\"], \"gap\", \"ds-flow\")\n * // Returns: true\n *\n * validateToken(\"13px\", [\"sm\", \"md\", \"lg\"], \"gap\", \"ds-flow\")\n * // Logs warning in dev, returns false\n */\nexport function validateToken(\n value: string | undefined | null,\n validTokens: readonly string[],\n propName: string,\n componentName: string\n): boolean {\n if (value === undefined || value === null || value === \"\") {\n return true; // Empty values are valid (use default)\n }\n\n const isValid = validTokens.includes(value);\n\n if (!isValid && isDevelopment()) {\n console.warn(\n `[${componentName}] Invalid value \"${value}\" for prop \"${propName}\". ` +\n `Valid values are: ${validTokens.join(\", \")}`\n );\n }\n\n return isValid;\n}\n\n/**\n * Validate a responsive token value.\n * Checks each value in the responsive string.\n *\n * @param value - The responsive string value\n * @param validTokens - Array of valid token values\n * @param propName - Name of the prop for error messages\n * @param componentName - Name of the component for error messages\n * @returns True if all values are valid, false if any are invalid\n *\n * @example\n * validateResponsiveToken(\"base:sm md:lg\", [\"sm\", \"md\", \"lg\"], \"gap\", \"ds-flow\")\n * // Returns: true\n *\n * validateResponsiveToken(\"base:sm md:13px\", [\"sm\", \"md\", \"lg\"], \"gap\", \"ds-flow\")\n * // Logs warning in dev for \"13px\", returns false\n */\nexport function validateResponsiveToken(\n value: string | undefined | null,\n validTokens: readonly string[],\n propName: string,\n componentName: string\n): boolean {\n if (value === undefined || value === null || value === \"\") {\n return true;\n }\n\n const parts = value.trim().split(/\\s+/);\n let allValid = true;\n\n for (const part of parts) {\n let tokenValue = part;\n\n // Extract value from \"breakpoint:value\" format\n if (part.includes(\":\")) {\n const [, val] = part.split(\":\") as [string, string];\n tokenValue = val;\n }\n\n if (!validateToken(tokenValue, validTokens, propName, componentName)) {\n allValid = false;\n }\n }\n\n return allValid;\n}\n\n/**\n * Create a validator function bound to specific valid tokens.\n * Useful for creating reusable validators for common token sets.\n *\n * @param validTokens - Array of valid token values\n * @returns A validator function\n *\n * @example\n * const validateSpacing = createValidator(SPACING_TOKENS);\n * validateSpacing(\"lg\", \"gap\", \"ds-flow\"); // true\n * validateSpacing(\"13px\", \"gap\", \"ds-flow\"); // false, warns in dev\n */\nexport function createValidator(validTokens: readonly string[]) {\n return (value: string | undefined | null, propName: string, componentName: string): boolean =>\n validateToken(value, validTokens, propName, componentName);\n}\n\n/**\n * Create a responsive validator function bound to specific valid tokens.\n *\n * @param validTokens - Array of valid token values\n * @returns A responsive validator function\n */\nexport function createResponsiveValidator(validTokens: readonly string[]) {\n return (value: string | undefined | null, propName: string, componentName: string): boolean =>\n validateResponsiveToken(value, validTokens, propName, componentName);\n}\n","/**\n * Container Web Component\n *\n * Constrains content width with responsive max-widths and padding.\n *\n * @element ds-container\n * @slot - Default slot for children\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\nimport type { ContainerSizeToken, SpacingToken } from \"../../types/layout-tokens.js\";\nimport { CONTAINER_SIZE_TOKENS, SPACING_TOKENS } from \"../../types/layout-tokens.js\";\nimport { validateToken } from \"../../utils/token-validator.js\";\n\nexport class DsContainer extends DSElement {\n static override styles = [];\n\n /**\n * Maximum width constraint.\n */\n @property({ type: String, reflect: true })\n size: ContainerSizeToken = \"lg\";\n\n /**\n * Horizontal padding.\n */\n @property({ type: String, reflect: true })\n padding: SpacingToken = \"md\";\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.validateProps();\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n if (changedProperties.has(\"size\") || changedProperties.has(\"padding\")) {\n this.validateProps();\n }\n }\n\n private validateProps(): void {\n validateToken(this.size, CONTAINER_SIZE_TOKENS, \"size\", \"ds-container\");\n validateToken(this.padding, SPACING_TOKENS, \"padding\", \"ds-container\");\n }\n\n override render(): TemplateResult {\n const classes = {\n \"ds-container\": true,\n };\n\n return html`\n <div\n class=${classMap(classes)}\n data-size=${this.size}\n data-padding=${this.padding}\n data-layout=\"container\"\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-container\", DsContainer);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-container\": DsContainer;\n }\n}\n","/**\n * Grid Web Component\n *\n * 2D grid layout with responsive columns.\n *\n * @element ds-grid\n * @slot - Default slot for grid items\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\nimport type { SpacingToken } from \"../../types/layout-tokens.js\";\nimport { SPACING_TOKENS } from \"../../types/layout-tokens.js\";\nimport {\n generateResponsiveClasses,\n getBaseValue,\n isResponsiveValue,\n} from \"../../utils/responsive.js\";\nimport { validateResponsiveToken, validateToken } from \"../../utils/token-validator.js\";\n\nconst COLUMN_VALUES = [\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"10\",\n \"11\",\n \"12\",\n \"auto-fit\",\n \"auto-fill\",\n] as const;\n\nexport class DsGrid extends DSElement {\n static override styles = [];\n\n /**\n * Number of columns. Supports responsive syntax: \"base:1 md:2 lg:3\"\n */\n @property({ type: String, reflect: true })\n columns = \"1\";\n\n /**\n * Gap between grid items. Supports responsive syntax: \"base:sm lg:lg\"\n */\n @property({ type: String, reflect: true })\n gap = \"md\";\n\n /**\n * Row gap override.\n */\n @property({ type: String, reflect: true, attribute: \"row-gap\" })\n rowGap?: SpacingToken;\n\n /**\n * Column gap override.\n */\n @property({ type: String, reflect: true, attribute: \"column-gap\" })\n columnGap?: SpacingToken;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.validateProps();\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n if (\n changedProperties.has(\"columns\") ||\n changedProperties.has(\"gap\") ||\n changedProperties.has(\"rowGap\") ||\n changedProperties.has(\"columnGap\")\n ) {\n this.validateProps();\n }\n }\n\n private validateProps(): void {\n validateResponsiveToken(this.columns, COLUMN_VALUES, \"columns\", \"ds-grid\");\n validateResponsiveToken(this.gap, SPACING_TOKENS, \"gap\", \"ds-grid\");\n if (this.rowGap) {\n validateToken(this.rowGap, SPACING_TOKENS, \"row-gap\", \"ds-grid\");\n }\n if (this.columnGap) {\n validateToken(this.columnGap, SPACING_TOKENS, \"column-gap\", \"ds-grid\");\n }\n }\n\n override render(): TemplateResult {\n // Get base values for data attributes\n const baseColumns = isResponsiveValue(this.columns) ? getBaseValue(this.columns) : this.columns;\n\n const baseGap = isResponsiveValue(this.gap)\n ? getBaseValue<SpacingToken>(this.gap)\n : (this.gap as SpacingToken);\n\n // Generate responsive classes\n const columnsClasses = isResponsiveValue(this.columns)\n ? generateResponsiveClasses(\"grid\", \"cols\", this.columns)\n : [];\n\n const gapClasses = isResponsiveValue(this.gap)\n ? generateResponsiveClasses(\"grid\", \"gap\", this.gap)\n : [];\n\n const classes = {\n \"ds-grid\": true,\n ...Object.fromEntries(columnsClasses.map((c) => [c, true])),\n ...Object.fromEntries(gapClasses.map((c) => [c, true])),\n };\n\n return html`\n <div\n class=${classMap(classes)}\n data-columns=${baseColumns}\n data-gap=${baseGap}\n data-row-gap=${this.rowGap || \"\"}\n data-column-gap=${this.columnGap || \"\"}\n data-layout=\"grid\"\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-grid\", DsGrid);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-grid\": DsGrid;\n }\n}\n","/**\n * Box Web Component\n *\n * Token-only styling escape hatch for padding, background, and radius.\n *\n * @element ds-box\n * @slot - Default slot for children\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\nimport type { RadiusToken, SpacingToken, SurfaceToken } from \"../../types/layout-tokens.js\";\nimport { RADIUS_TOKENS, SPACING_TOKENS, SURFACE_TOKENS } from \"../../types/layout-tokens.js\";\nimport { validateToken } from \"../../utils/token-validator.js\";\n\nexport class DsBox extends DSElement {\n static override styles = [];\n\n /**\n * Padding (all sides).\n */\n @property({ type: String, reflect: true })\n p?: SpacingToken;\n\n /**\n * Horizontal padding.\n */\n @property({ type: String, reflect: true })\n px?: SpacingToken;\n\n /**\n * Vertical padding.\n */\n @property({ type: String, reflect: true })\n py?: SpacingToken;\n\n /**\n * Background color token.\n */\n @property({ type: String, reflect: true })\n bg?: SurfaceToken;\n\n /**\n * Border radius token.\n */\n @property({ type: String, reflect: true })\n radius?: RadiusToken;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.validateProps();\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n if (\n changedProperties.has(\"p\") ||\n changedProperties.has(\"px\") ||\n changedProperties.has(\"py\") ||\n changedProperties.has(\"bg\") ||\n changedProperties.has(\"radius\")\n ) {\n this.validateProps();\n }\n }\n\n private validateProps(): void {\n if (this.p) {\n validateToken(this.p, SPACING_TOKENS, \"p\", \"ds-box\");\n }\n if (this.px) {\n validateToken(this.px, SPACING_TOKENS, \"px\", \"ds-box\");\n }\n if (this.py) {\n validateToken(this.py, SPACING_TOKENS, \"py\", \"ds-box\");\n }\n if (this.bg) {\n validateToken(this.bg, SURFACE_TOKENS, \"bg\", \"ds-box\");\n }\n if (this.radius) {\n validateToken(this.radius, RADIUS_TOKENS, \"radius\", \"ds-box\");\n }\n }\n\n override render(): TemplateResult {\n const classes = {\n \"ds-box\": true,\n };\n\n return html`\n <div\n class=${classMap(classes)}\n data-p=${this.p || \"\"}\n data-px=${this.px || \"\"}\n data-py=${this.py || \"\"}\n data-bg=${this.bg || \"\"}\n data-radius=${this.radius || \"\"}\n data-layout=\"box\"\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-box\", DsBox);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-box\": DsBox;\n }\n}\n","/**\n * Page Web Component\n *\n * Page wrapper with min-height and background.\n *\n * @element ds-page\n * @slot - Default slot for page content\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\nimport type { SurfaceToken } from \"../../types/layout-tokens.js\";\nimport { SURFACE_TOKENS } from \"../../types/layout-tokens.js\";\nimport { validateToken } from \"../../utils/token-validator.js\";\n\ntype MinHeightValue = \"viewport\" | \"full\";\n\nconst MIN_HEIGHT_VALUES: readonly MinHeightValue[] = [\"viewport\", \"full\"] as const;\n\nexport class DsPage extends DSElement {\n static override styles = [];\n\n /**\n * Background color token.\n */\n @property({ type: String, reflect: true })\n bg: SurfaceToken = \"background\";\n\n /**\n * Minimum height.\n */\n @property({ type: String, reflect: true, attribute: \"min-height\" })\n minHeight: MinHeightValue = \"viewport\";\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.validateProps();\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n if (changedProperties.has(\"bg\") || changedProperties.has(\"minHeight\")) {\n this.validateProps();\n }\n }\n\n private validateProps(): void {\n validateToken(this.bg, SURFACE_TOKENS, \"bg\", \"ds-page\");\n validateToken(this.minHeight, MIN_HEIGHT_VALUES, \"min-height\", \"ds-page\");\n }\n\n override render(): TemplateResult {\n const classes = {\n \"ds-page\": true,\n };\n\n return html`\n <div\n class=${classMap(classes)}\n data-bg=${this.bg}\n data-min-height=${this.minHeight}\n data-layout=\"page\"\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-page\", DsPage);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-page\": DsPage;\n }\n}\n","/**\n * Section Web Component\n *\n * Semantic section wrapper with consistent vertical spacing.\n *\n * @element ds-section\n * @slot - Default slot for section content\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\nimport type { SpacingToken } from \"../../types/layout-tokens.js\";\nimport { SPACING_TOKENS } from \"../../types/layout-tokens.js\";\nimport { validateToken } from \"../../utils/token-validator.js\";\n\nexport class DsSection extends DSElement {\n static override styles = [];\n\n /**\n * Vertical padding.\n */\n @property({ type: String, reflect: true })\n spacing: SpacingToken = \"lg\";\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.validateProps();\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n if (changedProperties.has(\"spacing\")) {\n this.validateProps();\n }\n }\n\n private validateProps(): void {\n validateToken(this.spacing, SPACING_TOKENS, \"spacing\", \"ds-section\");\n }\n\n override render(): TemplateResult {\n const classes = {\n \"ds-section\": true,\n };\n\n return html`\n <section class=${classMap(classes)} data-spacing=${this.spacing} data-layout=\"section\">\n <slot></slot>\n </section>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-section\", DsSection);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-section\": DsSection;\n }\n}\n","/**\n * AppShell Web Component\n *\n * Application structure with landmark regions using CSS Grid.\n *\n * @element ds-app-shell\n * @slot header - Header region\n * @slot sidebar - Sidebar region\n * @slot - Default slot for main content\n * @slot footer - Footer region\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\n\ntype SidebarPosition = \"left\" | \"right\" | \"none\";\n\nexport class DsAppShell extends DSElement {\n static override styles = [];\n\n /**\n * Sidebar position.\n */\n @property({ type: String, reflect: true, attribute: \"sidebar-position\" })\n sidebarPosition: SidebarPosition = \"none\";\n\n override render(): TemplateResult {\n const classes = {\n \"ds-app-shell\": true,\n };\n\n return html`\n <div\n class=${classMap(classes)}\n data-sidebar=${this.sidebarPosition}\n data-layout=\"app-shell\"\n >\n <slot name=\"header\"></slot>\n ${this.sidebarPosition !== \"none\" ? html`<slot name=\"sidebar\"></slot>` : null}\n <slot></slot>\n <slot name=\"footer\"></slot>\n </div>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-app-shell\", DsAppShell);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-app-shell\": DsAppShell;\n }\n}\n","/**\n * Header Web Component\n *\n * Landmark header with sticky and safe-area support.\n *\n * @element ds-header\n * @slot - Default slot for header content\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\n\nexport class DsHeader extends DSElement {\n static override styles = [];\n\n /**\n * Enable sticky positioning.\n */\n @property({ type: Boolean, reflect: true })\n sticky = false;\n\n /**\n * Enable safe area insets.\n */\n @property({ type: Boolean, reflect: true, attribute: \"safe-area\" })\n safeArea = false;\n\n override render(): TemplateResult {\n const classes = {\n \"ds-header\": true,\n };\n\n return html`\n <header\n class=${classMap(classes)}\n ?data-sticky=${this.sticky}\n ?data-safe-area=${this.safeArea}\n data-layout=\"header\"\n >\n <slot></slot>\n </header>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-header\", DsHeader);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-header\": DsHeader;\n }\n}\n","/**\n * Footer Web Component\n *\n * Landmark footer with sticky and safe-area support.\n *\n * @element ds-footer\n * @slot - Default slot for footer content\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\n\nexport class DsFooter extends DSElement {\n static override styles = [];\n\n /**\n * Enable sticky positioning.\n */\n @property({ type: Boolean, reflect: true })\n sticky = false;\n\n /**\n * Enable safe area insets.\n */\n @property({ type: Boolean, reflect: true, attribute: \"safe-area\" })\n safeArea = false;\n\n override render(): TemplateResult {\n const classes = {\n \"ds-footer\": true,\n };\n\n return html`\n <footer\n class=${classMap(classes)}\n ?data-sticky=${this.sticky}\n ?data-safe-area=${this.safeArea}\n data-layout=\"footer\"\n >\n <slot></slot>\n </footer>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-footer\", DsFooter);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-footer\": DsFooter;\n }\n}\n","/**\n * Main Web Component\n *\n * Main content region for skip-link targeting.\n *\n * @element ds-main\n * @slot - Default slot for main content\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\n\nexport class DsMain extends DSElement {\n static override styles = [];\n\n /**\n * Element ID for skip-link targeting.\n */\n @property({ type: String, reflect: true })\n override id = \"main-content\";\n\n override render(): TemplateResult {\n const classes = {\n \"ds-main\": true,\n };\n\n return html`\n <main class=${classMap(classes)} id=${this.id} tabindex=\"-1\" data-layout=\"main\">\n <slot></slot>\n </main>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-main\", DsMain);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-main\": DsMain;\n }\n}\n","/**\n * Spacer Web Component\n *\n * Explicit space element for fine-grained spacing control.\n *\n * @element ds-spacer\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\nimport type { SpacerAxis, SpacingToken } from \"../../types/layout-tokens.js\";\nimport { SPACING_TOKENS } from \"../../types/layout-tokens.js\";\nimport { validateToken } from \"../../utils/token-validator.js\";\n\nconst AXIS_VALUES: readonly SpacerAxis[] = [\"horizontal\", \"vertical\"] as const;\n\nexport class DsSpacer extends DSElement {\n static override styles = [];\n\n /**\n * Size of the space.\n */\n @property({ type: String, reflect: true })\n size: SpacingToken = \"md\";\n\n /**\n * Axis direction.\n */\n @property({ type: String, reflect: true })\n axis: SpacerAxis = \"vertical\";\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.validateProps();\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n if (changedProperties.has(\"size\") || changedProperties.has(\"axis\")) {\n this.validateProps();\n }\n }\n\n private validateProps(): void {\n validateToken(this.size, SPACING_TOKENS, \"size\", \"ds-spacer\");\n validateToken(this.axis, AXIS_VALUES, \"axis\", \"ds-spacer\");\n }\n\n override render(): TemplateResult {\n const classes = {\n \"ds-spacer\": true,\n };\n\n return html`\n <div\n class=${classMap(classes)}\n data-size=${this.size}\n data-axis=${this.axis}\n aria-hidden=\"true\"\n data-layout=\"spacer\"\n ></div>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-spacer\", DsSpacer);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-spacer\": DsSpacer;\n }\n}\n","/**\n * Center Web Component\n *\n * Centers content horizontally/vertically with optional max-width.\n *\n * @element ds-center\n * @slot - Default slot for centered content\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\nimport type { ContainerSizeToken } from \"../../types/layout-tokens.js\";\nimport { CONTAINER_SIZE_TOKENS } from \"../../types/layout-tokens.js\";\nimport { validateToken } from \"../../utils/token-validator.js\";\n\nexport class DsCenter extends DSElement {\n static override styles = [];\n\n /**\n * Maximum width constraint.\n */\n @property({ type: String, reflect: true, attribute: \"max-width\" })\n maxWidth?: ContainerSizeToken;\n\n /**\n * Enable vertical centering.\n */\n @property({ type: Boolean, reflect: true })\n vertical = false;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.validateProps();\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n if (changedProperties.has(\"maxWidth\")) {\n this.validateProps();\n }\n }\n\n private validateProps(): void {\n if (this.maxWidth) {\n validateToken(this.maxWidth, CONTAINER_SIZE_TOKENS, \"max-width\", \"ds-center\");\n }\n }\n\n override render(): TemplateResult {\n const classes = {\n \"ds-center\": true,\n };\n\n return html`\n <div\n class=${classMap(classes)}\n data-max-width=${this.maxWidth || \"\"}\n ?data-vertical=${this.vertical}\n data-layout=\"center\"\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-center\", DsCenter);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-center\": DsCenter;\n }\n}\n","/**\n * Split Web Component\n *\n * Two-region layout with collapse breakpoint.\n *\n * @element ds-split\n * @slot - Default slot for the two regions\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\nimport type { BreakpointToken, SpacingToken, SplitRatio } from \"../../types/layout-tokens.js\";\nimport { BREAKPOINT_TOKENS, SPACING_TOKENS } from \"../../types/layout-tokens.js\";\nimport { validateToken } from \"../../utils/token-validator.js\";\n\nconst RATIO_VALUES: readonly SplitRatio[] = [\"equal\", \"1:2\", \"2:1\", \"1:3\", \"3:1\"] as const;\n\nexport class DsSplit extends DSElement {\n static override styles = [];\n\n /**\n * Breakpoint at which to collapse to single column.\n */\n @property({ type: String, reflect: true, attribute: \"collapse-at\" })\n collapseAt: BreakpointToken = \"md\";\n\n /**\n * Gap between regions.\n */\n @property({ type: String, reflect: true })\n gap: SpacingToken = \"md\";\n\n /**\n * Width ratio between regions.\n */\n @property({ type: String, reflect: true })\n ratio: SplitRatio = \"equal\";\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.validateProps();\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n if (\n changedProperties.has(\"collapseAt\") ||\n changedProperties.has(\"gap\") ||\n changedProperties.has(\"ratio\")\n ) {\n this.validateProps();\n }\n }\n\n private validateProps(): void {\n validateToken(this.collapseAt, BREAKPOINT_TOKENS, \"collapse-at\", \"ds-split\");\n validateToken(this.gap, SPACING_TOKENS, \"gap\", \"ds-split\");\n validateToken(this.ratio, RATIO_VALUES, \"ratio\", \"ds-split\");\n }\n\n override render(): TemplateResult {\n // Convert ratio format for data attribute (1:2 -> 1-2)\n const ratioData = this.ratio.replace(\":\", \"-\");\n\n const classes = {\n \"ds-split\": true,\n };\n\n return html`\n <div\n class=${classMap(classes)}\n data-collapse-at=${this.collapseAt}\n data-gap=${this.gap}\n data-ratio=${ratioData}\n data-layout=\"split\"\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-split\", DsSplit);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-split\": DsSplit;\n }\n}\n","/**\n * Wrap Web Component\n *\n * Wrapping row layout for tags/chips.\n *\n * @element ds-wrap\n * @slot - Default slot for wrapped items\n */\n\nimport { type TemplateResult, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DSElement } from \"../../base/ds-element.js\";\nimport { define } from \"../../registry/define.js\";\nimport type { FlexAlign, SpacingToken } from \"../../types/layout-tokens.js\";\nimport { SPACING_TOKENS } from \"../../types/layout-tokens.js\";\nimport { validateToken } from \"../../utils/token-validator.js\";\n\nexport class DsWrap extends DSElement {\n static override styles = [];\n\n /**\n * Gap between items.\n */\n @property({ type: String, reflect: true })\n gap: SpacingToken = \"sm\";\n\n /**\n * Row gap override.\n */\n @property({ type: String, reflect: true, attribute: \"row-gap\" })\n rowGap?: SpacingToken;\n\n /**\n * Cross-axis alignment.\n */\n @property({ type: String, reflect: true })\n align: FlexAlign = \"start\";\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.validateProps();\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n if (\n changedProperties.has(\"gap\") ||\n changedProperties.has(\"rowGap\") ||\n changedProperties.has(\"align\")\n ) {\n this.validateProps();\n }\n }\n\n private validateProps(): void {\n validateToken(this.gap, SPACING_TOKENS, \"gap\", \"ds-wrap\");\n if (this.rowGap) {\n validateToken(this.rowGap, SPACING_TOKENS, \"row-gap\", \"ds-wrap\");\n }\n // Only validate start, center, end for Wrap align\n const wrapAlignValues: readonly FlexAlign[] = [\"start\", \"center\", \"end\"];\n validateToken(this.align, wrapAlignValues, \"align\", \"ds-wrap\");\n }\n\n override render(): TemplateResult {\n const classes = {\n \"ds-wrap\": true,\n };\n\n return html`\n <div\n class=${classMap(classes)}\n data-gap=${this.gap}\n data-row-gap=${this.rowGap || \"\"}\n data-align=${this.align}\n data-layout=\"wrap\"\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\n// Register the component\ndefine(\"ds-wrap\", DsWrap);\n\n// TypeScript declaration for HTML\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ds-wrap\": DsWrap;\n }\n}\n"],"mappings":"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","names":["property","html","property","classMap","html","classMap","property","html","property","classMap","html","classMap","property","html","property","classMap","html","classMap","property","html","property","classMap","html","classMap","property","html","property","classMap","html","classMap","property","html","property","classMap","html","classMap","property","html","property","classMap","html","classMap","property","html","property","classMap","html","classMap","property","html","property","classMap","html","classMap","property","html","property","classMap","html","classMap","property","html","property","classMap","html","classMap","property","html","property","classMap","html","classMap","property","html","property","classMap","html","classMap","property"]}
|