@nordhealth/components 3.18.0-alpha.0 → 3.18.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Popout-BdNAMySS.js","sources":["../src/common/mixins/FloatingComponentMixin.ts","../src/popout/Popout.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nimport { LitElement } from \"lit\"\nimport { property } from \"lit/decorators.js\"\nimport { Alignment } from \"@floating-ui/dom\"\nimport { LogicalSide } from \"../positioning.js\"\n\ntype Constructor<T = Record<string, unknown>> = new (...args: any[]) => T\n\nexport declare class FloatingMixinInterface {\n open: boolean\n align: Alignment\n position: LogicalSide\n}\n\nexport function FloatingMixin<T extends Constructor<LitElement>>(\n superClass: T\n): Constructor<FloatingMixinInterface> & T {\n class FloatingElement extends superClass {\n /**\n * Controls whether the component is open or not.\n */\n @property({ type: Boolean, reflect: true }) open = false\n\n /**\n * Set the alignment in relation to the toggle (or anchor) depending on the position.\n * `start` will align it to the left of the toggle (or anchor).\n * `end` will align it to the right of the toggle (or anchor).\n * Setting the `position` to `inline-start` or `inline-end` will switch\n * `start` and `end` to the top and bottom respectively.\n */\n @property({ reflect: true }) align: \"start\" | \"end\" = \"start\"\n\n /**\n * Set the position in relation to the toggle (or anchor).\n * Options follow logical properties.\n * `block-start` and `block-end` referring to top and bottom respectively,\n * `inline-start` and `inline-end` referring to left and right respectively.\n */\n @property({ reflect: true }) position: \"block-end\" | \"block-start\" | \"inline-start\" | \"inline-end\" = \"block-end\"\n }\n\n return FloatingElement\n}\n","import { LitElement, html } from \"lit\"\nimport { customElement, property, query, state } from \"lit/decorators.js\"\nimport { computePosition, shift, offset, flip, hide, autoUpdate, Placement } from \"@floating-ui/dom\"\nimport { LightDismissController } from \"../common/controllers/LightDismissController.js\"\nimport { ScrollbarController } from \"../common/controllers/ScrollbarController.js\"\nimport { NordEvent, transition } from \"../common/events.js\"\nimport { FloatingMixin } from \"../common/mixins/FloatingComponentMixin.js\"\n\nimport componentStyle from \"../common/styles/Component.css\"\nimport style from \"./Popout.css\"\nimport { logicalToPhysical } from \"../common/positioning.js\"\nimport { DirectionController } from \"../common/controllers/DirectionController.js\"\nimport { observe } from \"../common/decorators/observe.js\"\nimport { EventController } from \"../common/controllers/EventController.js\"\n\n/*\n * The breakpoint width to switch between \"sheet\" design and floating design\n */\nconst mediaQuery =\n typeof matchMedia === \"undefined\"\n ? ({\n matches: false,\n addEventListener() {\n /* noop */\n },\n } as unknown as MediaQueryList)\n : matchMedia(\"(max-width: 35.9375em)\")\n\n/**\n * Popouts are small overlays that open on demand. They let users access additional content and actions without cluttering the page.\n *\n * @status ready\n * @category overlay\n * @slot - The popout content.\n */\n@customElement(\"nord-popout\")\nexport default class Popout extends FloatingMixin(LitElement) {\n static styles = [componentStyle, style]\n\n private targetElement?: HTMLElement\n private anchorElement?: HTMLElement\n private cleanupAutoUpdate?: ReturnType<typeof autoUpdate>\n\n @query(\".n-popout\", true) private popout!: HTMLDivElement\n\n private scrollBar = new ScrollbarController(this)\n\n /**\n * Handle dismissal of the popout, clicking outside the target button and popout.\n */\n private dismiss = new LightDismissController(this, {\n isOpen: () => this.open,\n onDismiss: e => this.hide(e.type !== \"click\"),\n isDismissible: node => node !== this.popout && node !== this.targetElement,\n })\n\n private events = new EventController(this)\n private direction = new DirectionController(this)\n\n @state() private computedPosition?: Placement\n\n @state() private smallViewport = mediaQuery.matches\n\n /**\n * The id for the active element to reference via aria-controls.\n */\n // eslint-disable-next-line lit/no-native-attributes\n @property({ reflect: true }) id: string = \"\"\n\n /**\n * Set an optional anchor element to align against, replacing the triggering element.\n */\n @property({ reflect: true }) anchor?: string\n\n /**\n * Show the popout.\n * A promise that resolves to a `TransitionEvent` when the popout's show animation ends or is cancelled.\n * If the popout is already open, the promise resolves immediately with `undefined`.\n */\n async show(): Promise<TransitionEvent | void> {\n if (this.open) {\n return Promise.resolve()\n }\n\n this.open = true\n\n // we should only focus once the popout is visible after render is complete\n await this.updateComplete\n\n /**\n * Dispatched when the popout is opened.\n */\n this.dispatchEvent(new NordEvent(\"open\"))\n\n return transition(this.popout)\n }\n\n /**\n * Hide the popout.\n * Returns a promise that resolves to a `TransitionEvent` when the popout's hide animation ends or is cancelled.\n * If the popout is already closed, the promise resolves immediately with `undefined`.\n * @param {boolean} moveFocusToButton prevent focus returning to the target button. Default is true.\n */\n async hide(moveFocusToButton: boolean = true): Promise<TransitionEvent | void> {\n if (!this.open) {\n return Promise.resolve()\n }\n\n this.open = false\n\n this.cleanupAutoUpdate?.()\n\n /**\n * Dispatched when the popout is closed.\n */\n this.dispatchEvent(new NordEvent(\"close\"))\n\n if (moveFocusToButton) {\n this.targetElement?.focus({ preventScroll: true })\n }\n\n return transition(this.popout)\n }\n\n /**\n * Position the popout on load.\n */\n firstUpdated() {\n if (!this.smallViewport) {\n this.updatePosition()\n }\n }\n\n connectedCallback() {\n super.connectedCallback()\n this.events.listen(mediaQuery, \"change\", this.handleMediaQueryChange)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n this.cleanupAutoUpdate?.()\n this.targetElement?.removeAttribute(\"aria-expanded\")\n }\n\n render() {\n return html`\n <div\n class=\"n-popout ${this.computedPosition} is-${this.direction.dir}\"\n aria-hidden=${this.open ? \"false\" : \"true\"}\n @transitionend=${this.enableScroll}\n >\n <slot></slot>\n </div>\n `\n }\n\n @observe(\"id\")\n protected handleIdChange() {\n // clean up any old listeners\n this.targetElement?.removeEventListener(\"click\", this.toggleOpen)\n\n if (!this.id) {\n // eslint-disable-next-line no-console\n console.warn(\"NORD: popout requires an id attribute and value\")\n } else {\n this.targetElement = this.getToggle()\n this.anchorElement = this.getAnchor()\n\n this.events.listen(this.targetElement, \"click\", this.toggleOpen)\n }\n }\n\n @observe(\"open\")\n protected handleOpenChange() {\n this.targetElement?.setAttribute(\"aria-expanded\", `${this.open}`)\n\n if (this.open) {\n if (this.smallViewport) {\n // hide scrollbar and prevent scroll on body\n this.scrollBar.lockScroll()\n } else if (this.anchorElement) {\n this.cleanupAutoUpdate = autoUpdate(this.anchorElement, this, this.updatePosition)\n }\n } else {\n this.cleanupAutoUpdate?.()\n }\n }\n\n @observe(\"anchor\")\n protected handleAnchorChange() {\n this.cleanupAutoUpdate?.()\n this.anchorElement = this.getAnchor()\n\n // if the popout is already open when the anchor changes, we should update its position\n if (this.open && !this.smallViewport && this.anchorElement) {\n this.cleanupAutoUpdate = autoUpdate(this.anchorElement, this, this.updatePosition)\n }\n }\n\n private enableScroll = () => {\n // scrollbar should only be restored when the backdrop has transitioned\n // that way we avoid awkward double scrollbars.\n if (!this.open) {\n this.scrollBar.unlockScroll()\n }\n }\n\n /**\n * Get the position of the element toggling the popout\n * and position the popout underneath it, taking into account the optional placement.\n */\n private updatePosition = async () => {\n if (!this.anchorElement) {\n return\n }\n\n const { x, y, placement, middlewareData } = await computePosition(this.anchorElement, this, {\n strategy: \"fixed\",\n placement: logicalToPhysical(this.position, this.align, this.direction.dir),\n middleware: [\n offset(8),\n flip(),\n shift({\n padding: 8,\n }),\n hide(),\n ],\n })\n\n this.computedPosition = placement\n\n // use physical properties here since floating-ui\n // works exclusively in physical dimensions\n // we do all the mapping in logicalToPhysical\n this.style.setProperty(\"--_n-popout-position-x\", `${x}px`)\n this.style.setProperty(\"--_n-popout-position-y\", `${y}px`)\n\n if (middlewareData.hide?.referenceHidden) {\n this.hide()\n }\n }\n\n /**\n * Toggle the popout open or closed using state.\n * Updating the position to underneath the target button before the popout is opened.\n */\n private toggleOpen = (e: Event) => {\n e.preventDefault()\n if (this.open) {\n this.hide(false)\n } else if (!this.smallViewport) {\n this.updatePosition().then(() => this.show())\n } else {\n this.show()\n }\n }\n\n private getToggle() {\n const rootNode = this.getRootNode() as Document | ShadowRoot\n const toggle = <HTMLElement>rootNode.querySelector(`[aria-controls='${this.id}']`)\n\n if (toggle instanceof HTMLSlotElement) {\n return toggle.assignedElements()[0] as HTMLElement\n }\n\n return toggle\n }\n\n private getAnchor() {\n if (!this.anchor) {\n return this.targetElement\n }\n\n const rootNode = this.getRootNode() as Document | ShadowRoot\n const anchor = <HTMLElement>rootNode.querySelector(`#${this.anchor}`)\n\n if (anchor instanceof HTMLSlotElement) {\n return anchor.assignedElements()[0] as HTMLElement\n }\n\n return anchor\n }\n\n /**\n * Update the smallViewport flag to switch between \"sheet\" and \"floating\".\n * autoUpdate is needed when a viewport gets larger and the popout is open.\n */\n private handleMediaQueryChange = () => {\n this.smallViewport = mediaQuery.matches\n\n this.cleanupAutoUpdate?.()\n\n if (!this.smallViewport && this.open && this.anchorElement) {\n this.cleanupAutoUpdate = autoUpdate(this.anchorElement, this, this.updatePosition)\n this.scrollBar.unlockScroll()\n } else if (this.open) {\n this.scrollBar.lockScroll()\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"nord-popout\": Popout\n }\n}\n"],"names":["FloatingMixin","superClass","FloatingElement","constructor","this","open","align","position","__decorate","property","type","Boolean","reflect","prototype","mediaQuery","matchMedia","matches","addEventListener","Popout","LitElement","scrollBar","ScrollbarController","dismiss","LightDismissController","isOpen","onDismiss","e","hide","isDismissible","node","popout","targetElement","events","EventController","direction","DirectionController","smallViewport","id","enableScroll","unlockScroll","updatePosition","async","anchorElement","x","y","placement","middlewareData","computePosition","strategy","logicalToPhysical","dir","middleware","offset","flip","shift","padding","computedPosition","style","setProperty","_a","referenceHidden","toggleOpen","preventDefault","show","then","handleMediaQueryChange","cleanupAutoUpdate","call","autoUpdate","lockScroll","Promise","resolve","updateComplete","dispatchEvent","NordEvent","transition","moveFocusToButton","_b","focus","preventScroll","firstUpdated","connectedCallback","super","listen","disconnectedCallback","removeAttribute","render","html","handleIdChange","removeEventListener","getToggle","getAnchor","console","warn","handleOpenChange","setAttribute","handleAnchorChange","toggle","getRootNode","querySelector","HTMLSlotElement","assignedElements","anchor","styles","componentStyle","query","state","observe","customElement"],"mappings":"mnBAcM,SAAUA,EACdC,GAEA,MAAMC,UAAwBD,EAA9B,WAAAE,uBAI8CC,KAAIC,MAAG,EAStBD,KAAKE,MAAoB,QAQzBF,KAAQG,SAAgE,WACtG,EAED,OApB8CC,EAAA,CAA3CC,EAAS,CAAEC,KAAMC,QAASC,SAAS,KAAoBV,EAAAW,UAAA,YAAA,GAS3BL,EAAA,CAA5BC,EAAS,CAAEG,SAAS,KAAwCV,EAAAW,UAAA,aAAA,GAQhCL,EAAA,CAA5BC,EAAS,CAAEG,SAAS,KAA2FV,EAAAW,UAAA,gBAAA,GAG3GX,CACT,gmDCxBMY,EACkB,oBAAfC,WACF,CACCC,SAAS,EACT,gBAAAC,GAEC,GAEHF,WAAW,0BAUF,IAAMG,EAAN,cAAqBlB,EAAcmB,IAAnC,WAAAhB,uBASLC,KAAAgB,UAAY,IAAIC,EAAoBjB,MAKpCA,KAAAkB,QAAU,IAAIC,EAAuBnB,KAAM,CACjDoB,OAAQ,IAAMpB,KAAKC,KACnBoB,UAAWC,GAAKtB,KAAKuB,KAAgB,UAAXD,EAAEhB,MAC5BkB,cAAeC,GAAQA,IAASzB,KAAK0B,QAAUD,IAASzB,KAAK2B,gBAGvD3B,KAAA4B,OAAS,IAAIC,EAAgB7B,MAC7BA,KAAA8B,UAAY,IAAIC,EAAoB/B,MAI3BA,KAAAgC,cAAgBtB,EAAWE,QAMfZ,KAAEiC,GAAW,GAqIlCjC,KAAYkC,aAAG,KAGhBlC,KAAKC,MACRD,KAAKgB,UAAUmB,cAChB,EAOKnC,KAAcoC,eAAGC,gBACvB,IAAKrC,KAAKsC,cACR,OAGF,MAAMC,EAAEA,EAACC,EAAEA,EAACC,UAAEA,EAASC,eAAEA,SAAyBC,EAAgB3C,KAAKsC,cAAetC,KAAM,CAC1F4C,SAAU,QACVH,UAAWI,EAAkB7C,KAAKG,SAAUH,KAAKE,MAAOF,KAAK8B,UAAUgB,KACvEC,WAAY,CACVC,EAAO,GACPC,IACAC,EAAM,CACJC,QAAS,IAEX5B,OAIJvB,KAAKoD,iBAAmBX,EAKxBzC,KAAKqD,MAAMC,YAAY,yBAA0B,GAAGf,OACpDvC,KAAKqD,MAAMC,YAAY,yBAA0B,GAAGd,QAE3B,UAArBE,EAAenB,YAAM,IAAAgC,OAAA,EAAAA,EAAAC,kBACvBxD,KAAKuB,MACN,EAOKvB,KAAAyD,WAAcnC,IACpBA,EAAEoC,iBACE1D,KAAKC,KACPD,KAAKuB,MAAK,GACAvB,KAAKgC,cAGfhC,KAAK2D,OAFL3D,KAAKoC,iBAAiBwB,MAAK,IAAM5D,KAAK2D,QAGvC,EAiCK3D,KAAsB6D,uBAAG,WAC/B7D,KAAKgC,cAAgBtB,EAAWE,QAEV,QAAtB2C,EAAAvD,KAAK8D,yBAAiB,IAAAP,GAAAA,EAAAQ,KAAA/D,OAEjBA,KAAKgC,eAAiBhC,KAAKC,MAAQD,KAAKsC,eAC3CtC,KAAK8D,kBAAoBE,EAAWhE,KAAKsC,cAAetC,KAAMA,KAAKoC,gBACnEpC,KAAKgB,UAAUmB,gBACNnC,KAAKC,MACdD,KAAKgB,UAAUiD,YAChB,CAEJ,CA7NC,UAAMN,GACJ,OAAI3D,KAAKC,KACAiE,QAAQC,WAGjBnE,KAAKC,MAAO,QAGND,KAAKoE,eAKXpE,KAAKqE,cAAc,IAAIC,EAAU,SAE1BC,EAAWvE,KAAK0B,QACxB,CAQD,UAAMH,CAAKiD,GAA6B,WACtC,OAAKxE,KAAKC,MAIVD,KAAKC,MAAO,EAEU,QAAtBsD,EAAAvD,KAAK8D,yBAAiB,IAAAP,GAAAA,EAAAQ,KAAA/D,MAKtBA,KAAKqE,cAAc,IAAIC,EAAU,UAE7BE,IACgB,QAAlBC,EAAAzE,KAAK2B,qBAAa,IAAA8C,GAAAA,EAAEC,MAAM,CAAEC,eAAe,KAGtCJ,EAAWvE,KAAK0B,SAhBdwC,QAAQC,SAiBlB,CAKD,YAAAS,GACO5E,KAAKgC,eACRhC,KAAKoC,gBAER,CAED,iBAAAyC,GACEC,MAAMD,oBACN7E,KAAK4B,OAAOmD,OAAOrE,EAAY,SAAUV,KAAK6D,uBAC/C,CAED,oBAAAmB,WACEF,MAAME,uBAEgB,QAAtBzB,EAAAvD,KAAK8D,yBAAiB,IAAAP,GAAAA,EAAAQ,KAAA/D,MACJ,QAAlByE,EAAAzE,KAAK2B,qBAAa,IAAA8C,GAAAA,EAAEQ,gBAAgB,gBACrC,CAED,MAAAC,GACE,OAAOC,CAAI,wBAEWnF,KAAKoD,uBAAuBpD,KAAK8B,UAAUgB,qBAC/C9C,KAAKC,KAAO,QAAU,2BACnBD,KAAKkC,mCAK3B,CAGS,cAAAkD,SAEU,QAAlB7B,EAAAvD,KAAK2B,qBAAa,IAAA4B,GAAAA,EAAE8B,oBAAoB,QAASrF,KAAKyD,YAEjDzD,KAAKiC,IAIRjC,KAAK2B,cAAgB3B,KAAKsF,YAC1BtF,KAAKsC,cAAgBtC,KAAKuF,YAE1BvF,KAAK4B,OAAOmD,OAAO/E,KAAK2B,cAAe,QAAS3B,KAAKyD,aALrD+B,QAAQC,KAAK,kDAOhB,CAGS,gBAAAC,WACU,QAAlBnC,EAAAvD,KAAK2B,qBAAa,IAAA4B,GAAAA,EAAEoC,aAAa,gBAAiB,GAAG3F,KAAKC,QAEtDD,KAAKC,KACHD,KAAKgC,cAEPhC,KAAKgB,UAAUiD,aACNjE,KAAKsC,gBACdtC,KAAK8D,kBAAoBE,EAAWhE,KAAKsC,cAAetC,KAAMA,KAAKoC,iBAG/C,QAAtBqC,EAAAzE,KAAK8D,yBAAiB,IAAAW,GAAAA,EAAAV,KAAA/D,KAEzB,CAGS,kBAAA4F,SACc,QAAtBrC,EAAAvD,KAAK8D,yBAAiB,IAAAP,GAAAA,EAAAQ,KAAA/D,MACtBA,KAAKsC,cAAgBtC,KAAKuF,YAGtBvF,KAAKC,OAASD,KAAKgC,eAAiBhC,KAAKsC,gBAC3CtC,KAAK8D,kBAAoBE,EAAWhE,KAAKsC,cAAetC,KAAMA,KAAKoC,gBAEtE,CA4DO,SAAAkD,GACN,MACMO,EADW7F,KAAK8F,cACeC,cAAc,mBAAmB/F,KAAKiC,QAE3E,OAAI4D,aAAkBG,gBACbH,EAAOI,mBAAmB,GAG5BJ,CACR,CAEO,SAAAN,GACN,IAAKvF,KAAKkG,OACR,OAAOlG,KAAK2B,cAGd,MACMuE,EADWlG,KAAK8F,cACeC,cAAc,IAAI/F,KAAKkG,UAE5D,OAAIA,aAAkBF,gBACbE,EAAOD,mBAAmB,GAG5BC,CACR,GArPMpF,EAAAqF,OAAS,CAACC,EAAgB/C,GAMCjD,EAAA,CAAjCiG,EAAM,aAAa,IAAqCvF,EAAAL,UAAA,cAAA,GAgBxCL,EAAA,CAAhBkG,KAA4CxF,EAAAL,UAAA,wBAAA,GAE5BL,EAAA,CAAhBkG,KAAkDxF,EAAAL,UAAA,qBAAA,GAMtBL,EAAA,CAA5BC,EAAS,CAAEG,SAAS,KAAuBM,EAAAL,UAAA,UAAA,GAKfL,EAAA,CAA5BC,EAAS,CAAEG,SAAS,KAAuBM,EAAAL,UAAA,cAAA,GAsFlCL,EAAA,CADTmG,EAAQ,OAcRzF,EAAAL,UAAA,iBAAA,MAGSL,EAAA,CADTmG,EAAQ,SAcRzF,EAAAL,UAAA,mBAAA,MAGSL,EAAA,CADTmG,EAAQ,WASRzF,EAAAL,UAAA,qBAAA,MAlKkBK,EAAMV,EAAA,CAD1BoG,EAAc,gBACM1F,SAAAA"}
1
+ {"version":3,"file":"Popout-CqmQIaOr.js","sources":["../src/common/mixins/FloatingComponentMixin.ts","../src/popout/Popout.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nimport { LitElement } from \"lit\"\nimport { property } from \"lit/decorators.js\"\nimport { Alignment } from \"@floating-ui/dom\"\nimport { LogicalSide } from \"../positioning.js\"\n\ntype Constructor<T = Record<string, unknown>> = new (...args: any[]) => T\n\nexport declare class FloatingMixinInterface {\n open: boolean\n align: Alignment\n position: LogicalSide\n}\n\nexport function FloatingMixin<T extends Constructor<LitElement>>(\n superClass: T\n): Constructor<FloatingMixinInterface> & T {\n class FloatingElement extends superClass {\n /**\n * Controls whether the component is open or not.\n */\n @property({ type: Boolean, reflect: true }) open = false\n\n /**\n * Set the alignment in relation to the toggle (or anchor) depending on the position.\n * `start` will align it to the left of the toggle (or anchor).\n * `end` will align it to the right of the toggle (or anchor).\n * Setting the `position` to `inline-start` or `inline-end` will switch\n * `start` and `end` to the top and bottom respectively.\n */\n @property({ reflect: true }) align: \"start\" | \"end\" = \"start\"\n\n /**\n * Set the position in relation to the toggle (or anchor).\n * Options follow logical properties.\n * `block-start` and `block-end` referring to top and bottom respectively,\n * `inline-start` and `inline-end` referring to left and right respectively.\n */\n @property({ reflect: true }) position: \"block-end\" | \"block-start\" | \"inline-start\" | \"inline-end\" = \"block-end\"\n }\n\n return FloatingElement\n}\n","import { LitElement, html } from \"lit\"\nimport { customElement, property, query, state } from \"lit/decorators.js\"\nimport { computePosition, shift, offset, flip, hide, autoUpdate, Placement } from \"@floating-ui/dom\"\nimport { LightDismissController } from \"../common/controllers/LightDismissController.js\"\nimport { ScrollbarController } from \"../common/controllers/ScrollbarController.js\"\nimport { NordEvent, transition } from \"../common/events.js\"\nimport { FloatingMixin } from \"../common/mixins/FloatingComponentMixin.js\"\n\nimport componentStyle from \"../common/styles/Component.css\"\nimport style from \"./Popout.css\"\nimport { logicalToPhysical } from \"../common/positioning.js\"\nimport { DirectionController } from \"../common/controllers/DirectionController.js\"\nimport { observe } from \"../common/decorators/observe.js\"\nimport { EventController } from \"../common/controllers/EventController.js\"\n\n/*\n * The breakpoint width to switch between \"sheet\" design and floating design\n */\nconst mediaQuery =\n typeof matchMedia === \"undefined\"\n ? ({\n matches: false,\n addEventListener() {\n /* noop */\n },\n } as unknown as MediaQueryList)\n : matchMedia(\"(max-width: 35.9375em)\")\n\n/**\n * Popouts are small overlays that open on demand. They let users access additional content and actions without cluttering the page.\n *\n * @status ready\n * @category overlay\n * @slot - The popout content.\n */\n@customElement(\"nord-popout\")\nexport default class Popout extends FloatingMixin(LitElement) {\n static styles = [componentStyle, style]\n\n private targetElement?: HTMLElement\n private anchorElement?: HTMLElement\n private cleanupAutoUpdate?: ReturnType<typeof autoUpdate>\n\n @query(\".n-popout\", true) private popout!: HTMLDivElement\n\n private scrollBar = new ScrollbarController(this)\n\n /**\n * Handle dismissal of the popout, clicking outside the target button and popout.\n */\n private dismiss = new LightDismissController(this, {\n isOpen: () => this.open,\n onDismiss: e => this.hide(e.type !== \"click\"),\n isDismissible: node => node !== this.popout && node !== this.targetElement,\n })\n\n private events = new EventController(this)\n private direction = new DirectionController(this)\n\n @state() private computedPosition?: Placement\n\n @state() private smallViewport = mediaQuery.matches\n\n /**\n * The id for the active element to reference via aria-controls.\n */\n // eslint-disable-next-line lit/no-native-attributes\n @property({ reflect: true }) id: string = \"\"\n\n /**\n * Set an optional anchor element to align against, replacing the triggering element.\n */\n @property({ reflect: true }) anchor?: string\n\n /**\n * Show the popout.\n * A promise that resolves to a `TransitionEvent` when the popout's show animation ends or is cancelled.\n * If the popout is already open, the promise resolves immediately with `undefined`.\n */\n async show(): Promise<TransitionEvent | void> {\n if (this.open) {\n return Promise.resolve()\n }\n\n this.open = true\n\n // we should only focus once the popout is visible after render is complete\n await this.updateComplete\n\n /**\n * Dispatched when the popout is opened.\n */\n this.dispatchEvent(new NordEvent(\"open\"))\n\n return transition(this.popout)\n }\n\n /**\n * Hide the popout.\n * Returns a promise that resolves to a `TransitionEvent` when the popout's hide animation ends or is cancelled.\n * If the popout is already closed, the promise resolves immediately with `undefined`.\n * @param {boolean} moveFocusToButton prevent focus returning to the target button. Default is true.\n */\n async hide(moveFocusToButton: boolean = true): Promise<TransitionEvent | void> {\n if (!this.open) {\n return Promise.resolve()\n }\n\n this.open = false\n\n this.cleanupAutoUpdate?.()\n\n /**\n * Dispatched when the popout is closed.\n */\n this.dispatchEvent(new NordEvent(\"close\"))\n\n if (moveFocusToButton) {\n this.targetElement?.focus({ preventScroll: true })\n }\n\n return transition(this.popout)\n }\n\n /**\n * Position the popout on load.\n */\n firstUpdated() {\n if (!this.smallViewport) {\n this.updatePosition()\n }\n }\n\n connectedCallback() {\n super.connectedCallback()\n this.events.listen(mediaQuery, \"change\", this.handleMediaQueryChange)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n this.cleanupAutoUpdate?.()\n this.targetElement?.removeAttribute(\"aria-expanded\")\n }\n\n render() {\n return html`\n <div\n class=\"n-popout ${this.computedPosition} is-${this.direction.dir}\"\n aria-hidden=${this.open ? \"false\" : \"true\"}\n @transitionend=${this.enableScroll}\n >\n <slot></slot>\n </div>\n `\n }\n\n @observe(\"id\")\n protected handleIdChange() {\n // clean up any old listeners\n this.targetElement?.removeEventListener(\"click\", this.toggleOpen)\n\n if (!this.id) {\n // eslint-disable-next-line no-console\n console.warn(\"NORD: popout requires an id attribute and value\")\n } else {\n this.targetElement = this.getToggle()\n this.anchorElement = this.getAnchor()\n\n this.events.listen(this.targetElement, \"click\", this.toggleOpen)\n }\n }\n\n @observe(\"open\")\n protected handleOpenChange() {\n this.targetElement?.setAttribute(\"aria-expanded\", `${this.open}`)\n\n if (this.open) {\n if (this.smallViewport) {\n // hide scrollbar and prevent scroll on body\n this.scrollBar.lockScroll()\n } else if (this.anchorElement) {\n this.cleanupAutoUpdate = autoUpdate(this.anchorElement, this, this.updatePosition)\n }\n } else {\n this.cleanupAutoUpdate?.()\n }\n }\n\n @observe(\"anchor\")\n protected handleAnchorChange() {\n this.cleanupAutoUpdate?.()\n this.anchorElement = this.getAnchor()\n\n // if the popout is already open when the anchor changes, we should update its position\n if (this.open && !this.smallViewport && this.anchorElement) {\n this.cleanupAutoUpdate = autoUpdate(this.anchorElement, this, this.updatePosition)\n }\n }\n\n private enableScroll = () => {\n // scrollbar should only be restored when the backdrop has transitioned\n // that way we avoid awkward double scrollbars.\n if (!this.open) {\n this.scrollBar.unlockScroll()\n }\n }\n\n /**\n * Get the position of the element toggling the popout\n * and position the popout underneath it, taking into account the optional placement.\n */\n private updatePosition = async () => {\n if (!this.anchorElement) {\n return\n }\n\n const { x, y, placement, middlewareData } = await computePosition(this.anchorElement, this, {\n strategy: \"fixed\",\n placement: logicalToPhysical(this.position, this.align, this.direction.dir),\n middleware: [\n offset(8),\n flip(),\n shift({\n padding: 8,\n }),\n hide(),\n ],\n })\n\n this.computedPosition = placement\n\n // use physical properties here since floating-ui\n // works exclusively in physical dimensions\n // we do all the mapping in logicalToPhysical\n this.style.setProperty(\"--_n-popout-position-x\", `${x}px`)\n this.style.setProperty(\"--_n-popout-position-y\", `${y}px`)\n\n if (middlewareData.hide?.referenceHidden) {\n this.hide()\n }\n }\n\n /**\n * Toggle the popout open or closed using state.\n * Updating the position to underneath the target button before the popout is opened.\n */\n private toggleOpen = (e: Event) => {\n e.preventDefault()\n if (this.open) {\n this.hide(false)\n } else if (!this.smallViewport) {\n this.updatePosition().then(() => this.show())\n } else {\n this.show()\n }\n }\n\n private getToggle() {\n const rootNode = this.getRootNode() as Document | ShadowRoot\n const toggle = <HTMLElement>rootNode.querySelector(`[aria-controls='${this.id}']`)\n\n if (toggle instanceof HTMLSlotElement) {\n return toggle.assignedElements()[0] as HTMLElement\n }\n\n return toggle\n }\n\n private getAnchor() {\n if (!this.anchor) {\n return this.targetElement\n }\n\n const rootNode = this.getRootNode() as Document | ShadowRoot\n const anchor = <HTMLElement>rootNode.querySelector(`#${this.anchor}`)\n\n if (anchor instanceof HTMLSlotElement) {\n return anchor.assignedElements()[0] as HTMLElement\n }\n\n return anchor\n }\n\n /**\n * Update the smallViewport flag to switch between \"sheet\" and \"floating\".\n * autoUpdate is needed when a viewport gets larger and the popout is open.\n */\n private handleMediaQueryChange = () => {\n this.smallViewport = mediaQuery.matches\n\n this.cleanupAutoUpdate?.()\n\n if (!this.smallViewport && this.open && this.anchorElement) {\n this.cleanupAutoUpdate = autoUpdate(this.anchorElement, this, this.updatePosition)\n this.scrollBar.unlockScroll()\n } else if (this.open) {\n this.scrollBar.lockScroll()\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"nord-popout\": Popout\n }\n}\n"],"names":["FloatingMixin","superClass","FloatingElement","constructor","this","open","align","position","__decorate","property","type","Boolean","reflect","prototype","mediaQuery","matchMedia","matches","addEventListener","Popout","LitElement","scrollBar","ScrollbarController","dismiss","LightDismissController","isOpen","onDismiss","e","hide","isDismissible","node","popout","targetElement","events","EventController","direction","DirectionController","smallViewport","id","enableScroll","unlockScroll","updatePosition","async","anchorElement","x","y","placement","middlewareData","computePosition","strategy","logicalToPhysical","dir","middleware","offset","flip","shift","padding","computedPosition","style","setProperty","_a","referenceHidden","toggleOpen","preventDefault","show","then","handleMediaQueryChange","cleanupAutoUpdate","call","autoUpdate","lockScroll","Promise","resolve","updateComplete","dispatchEvent","NordEvent","transition","moveFocusToButton","_b","focus","preventScroll","firstUpdated","connectedCallback","super","listen","disconnectedCallback","removeAttribute","render","html","handleIdChange","removeEventListener","getToggle","getAnchor","console","warn","handleOpenChange","setAttribute","handleAnchorChange","toggle","getRootNode","querySelector","HTMLSlotElement","assignedElements","anchor","styles","componentStyle","query","state","observe","customElement"],"mappings":"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"}
package/lib/Popout.js CHANGED
@@ -1,2 +1,2 @@
1
- import"./custom-element-CDWT-yC_.js";import"./property-DeTTNf1t.js";import"./state-BFYKuryf.js";import"./query-hiZs21fO.js";import"./positioning-C9skJeM8.js";import"./LightDismissController-BBolVMtn.js";import"./ScrollbarController-C5CMxfb3.js";import"./events-Bv6wNHwJ.js";export{P as default}from"./Popout-BdNAMySS.js";import"./Component-BuB0QgQM.js";import"./DirectionController-DiJ1Su1I.js";import"./observe-D0n0zOfU.js";import"./EventController-BG-WpaBb.js";import"./ShortcutController-nMRUu6ns.js";import"./tinykeys.module-_6MZt7MP.js";
1
+ import"./custom-element-CDWT-yC_.js";import"./property-DeTTNf1t.js";import"./state-BFYKuryf.js";import"./query-hiZs21fO.js";import"./positioning-CHP-_dKQ.js";import"./LightDismissController-BBolVMtn.js";import"./ScrollbarController-C5CMxfb3.js";import"./events-Bv6wNHwJ.js";export{P as default}from"./Popout-CqmQIaOr.js";import"./Component-BuB0QgQM.js";import"./DirectionController-DiJ1Su1I.js";import"./observe-D0n0zOfU.js";import"./EventController-BG-WpaBb.js";import"./ShortcutController-nMRUu6ns.js";import"./tinykeys.module-_6MZt7MP.js";
2
2
  //# sourceMappingURL=Popout.js.map
package/lib/Radio.js CHANGED
@@ -1,2 +1,2 @@
1
- import{i as e,k as t,D as i,_ as o,t as n,h as r}from"./custom-element-CDWT-yC_.js";import{n as a}from"./property-DeTTNf1t.js";import{K as s}from"./ref-BYkj-TPb.js";import{L as l}from"./LightDomController-BtyFuJKD.js";import{L as d}from"./LightSlotController-BDkcldj-.js";import{o as c}from"./observe-D0n0zOfU.js";import{c as h}from"./cond-Cuc_PMkN.js";import{F as p}from"./FocusableMixin-DriuCNli.js";import{F as m}from"./FormAssociatedMixin-DXVeQVgN.js";import{I as v}from"./InputMixin-CV3PG_89.js";import{S as u}from"./SizeMixin-DW6qUBEN.js";import{s as b}from"./Component-BuB0QgQM.js";import{s as g}from"./FormField-Cl7HHI9A.js";import"./directive-DQ0jBES2.js";import"./SlotController-BL-tOh6b.js";import"./EventController-BG-WpaBb.js";import"./FormDataController-OUt5L5uC.js";import"./events-Bv6wNHwJ.js";import"./VisuallyHidden.js";const f=e`:host{--_n-radio-size:calc(var(--n-space-m) * 1.25);--_n-radio-dot-size:var(--n-space-s);--_n-radio-dot-inset:calc((var(--_n-radio-size) - var(--_n-radio-dot-size)) / 2);display:inline-block;line-height:var(--n-line-height)}.n-flex{display:flex}.n-expand{flex:1}.n-input-container{position:relative}::slotted(input){--_n-radio-accent-color:var(--n-color-accent);-moz-appearance:none;-webkit-appearance:none;appearance:none;margin:0!important;padding:0!important;border:1px solid var(--_n-radio-border-color,var(--n-color-border-hover))!important;border-radius:var(--n-border-radius-circle)!important;transition:none!important;display:block!important;inline-size:var(--_n-radio-size)!important;block-size:var(--_n-radio-size)!important;cursor:pointer}::slotted(input:checked){--_n-radio-border-color:var(--n-color-accent);background:var(--_n-radio-accent-color)!important}::slotted(input[aria-invalid]){--_n-radio-accent-color:var(--n-color-status-danger);--_n-radio-border-color:var(--_n-radio-accent-color)}::slotted(input:active){opacity:.8}::slotted(input:focus-visible){outline:0!important}::slotted(input:focus){outline:0!important;box-shadow:0 0 0 1px var(--n-color-surface),0 0 0 3px var(--n-color-accent)!important}:host([disabled]) ::slotted(label){color:var(--n-color-text-weaker);cursor:default}:host([disabled]) ::slotted(input){background:var(--_n-radio-accent-color);cursor:default;opacity:1}:host([disabled]) ::slotted(input:not(:checked)){--_n-radio-accent-color:var(--n-color-active);--_n-radio-border-color:var(--n-color-border-neutral)}:host([disabled]) ::slotted(input:checked){opacity:.3}.n-dot{position:absolute;border-radius:var(--n-border-radius-circle);inline-size:var(--_n-radio-dot-size);block-size:var(--_n-radio-dot-size);background-color:var(--n-color-text-on-accent);inset-inline-start:var(--_n-radio-dot-inset);inset-block-start:var(--_n-radio-dot-inset);z-index:var(--n-index-default);pointer-events:none}.n-label-container{margin-block-end:0}::slotted(label){-webkit-user-select:none;user-select:none;font-weight:var(--n-font-weight)!important;line-height:var(--n-line-height-l)!important;padding-inline-start:var(--n-space-s)!important;cursor:pointer}.n-hint{padding-inline-start:var(--n-space-s)}.n-error{margin-block-start:var(--n-space-xs);padding-inline-start:var(--n-space-s)}:host([size="s"]){--_n-radio-size:var(--n-size-icon-m);--_n-radio-dot-size:calc(var(--n-size-icon-s) / 2)}:host([size="s"]:not([hide-label])) .n-input-container{margin:calc(var(--n-space-s)/ 3) 0}:host([size="l"]){--_n-radio-size:var(--n-size-icon-l);--_n-radio-dot-size:var(--n-size-icon-xs)}:host([size="l"]:not([hide-label])) .n-label-container{margin:2px 0 0}`;let k=0;const z=e=>`nord-radio-${e}-${k++}`;let $=class extends(u(m(v(p(r))))){constructor(){super(...arguments),this.inputId=z("input"),this.hintId=z("hint"),this.errorId=z("error"),this.hintSlot=new d(this,{slotName:"hint",render:()=>this.hint?t`<div slot="hint-internal" id="${this.hintId}">${this.hint}</div>`:i,syncLightDom:e=>{e.id=this.hintId}}),this.labelSlot=new d(this,{slotName:"label",render:()=>this.label?t`<label slot="label-internal" for="${this.inputId}">${this.label}</label>`:i,syncLightDom:e=>{!function(e){return"label"===e.localName}(e)?console.warn('NORD: Only <label> elements should be placed in radio\'s "label" slot'):e.htmlFor=this.inputId}}),this.errorSlot=new d(this,{slotName:"error",render:()=>this.error?t`<div slot="error-internal" id="${this.errorId}">${this.error}</div>`:i,syncLightDom:e=>{e.id=this.hintId}}),this.inputSlot=new l(this,{render:()=>t`<input slot="input" @blur="${this.handleBlur}" @focus="${this.handleFocus}" ${s(this.focusableRef)} class="n-input" id="${this.inputId}" type="radio" name="${h(this.name)}" .value="${h(this.value)}" .checked="${this.checked}" ?disabled="${this.disabled}" ?required="${this.required}" aria-describedby="${h(this.getDescribedBy())}" aria-invalid="${h(this.getInvalid())}" form="${h(this._formId)}">`}),this.checked=!1,this.handleBlur=e=>{e.stopPropagation(),this.dispatchEvent(new Event("blur",{bubbles:!1,cancelable:!0}))},this.handleFocus=e=>{e.stopPropagation(),this.dispatchEvent(new Event("focus",{bubbles:!1,cancelable:!0}))}}get formValue(){}render(){return t`<div class="n-flex"><div class="n-input-container" @change="${this.handleChange}"><slot name="input"></slot>${this.checked?t`<div class="n-dot"></div>`:i}</div><div class="n-expand"><div class="n-label-container">${e=this.hideLabel,o=()=>t`<slot name="label"></slot><slot name="label-internal"></slot>`,n=e=>t`<nord-visually-hidden>${e}</nord-visually-hidden>`,e?n(o()):o()}<div class="n-caption n-hint" ?hidden="${!this.hasHint}"><slot name="hint"></slot><slot name="hint-internal"></slot></div></div><div class="n-caption n-error" role="alert" ?hidden="${!this.hasError}"><slot name="error"></slot><slot name="error-internal"></slot></div></div></div>`;var e,o,n}handleCheckedChange(e){!e&&this.checked&&this.uncheckSiblings()}uncheckSiblings(){this.getRootNode().querySelectorAll(`nord-radio[name="${this.name}"]`).forEach((e=>{e!==this&&(e.checked=!1)}))}handleChange(e){e.stopPropagation();const t=e.target;this.checked=t.checked,super.handleChange(e)}};$.styles=[b,g,f],o([a({type:Boolean,reflect:!0})],$.prototype,"checked",void 0),o([c("checked")],$.prototype,"handleCheckedChange",null),$=o([n("nord-radio")],$);var _=$;export{_ as default};
1
+ import{i as e,k as t,D as i,_ as o,t as n,h as r}from"./custom-element-CDWT-yC_.js";import{n as a}from"./property-DeTTNf1t.js";import{K as s}from"./ref-BYkj-TPb.js";import{L as l}from"./LightDomController-BtyFuJKD.js";import{L as d}from"./LightSlotController-BDkcldj-.js";import{o as c}from"./observe-D0n0zOfU.js";import{c as h}from"./cond-Cuc_PMkN.js";import{F as p}from"./FocusableMixin-DriuCNli.js";import{F as m}from"./FormAssociatedMixin-DXVeQVgN.js";import{I as v}from"./InputMixin-B-nPfhjc.js";import{S as u}from"./SizeMixin-DW6qUBEN.js";import{s as b}from"./Component-BuB0QgQM.js";import{s as g}from"./FormField-Cl7HHI9A.js";import"./directive-DQ0jBES2.js";import"./SlotController-BL-tOh6b.js";import"./EventController-BG-WpaBb.js";import"./FormDataController-OUt5L5uC.js";import"./events-Bv6wNHwJ.js";import"./VisuallyHidden.js";const f=e`:host{--_n-radio-size:calc(var(--n-space-m) * 1.25);--_n-radio-dot-size:var(--n-space-s);--_n-radio-dot-inset:calc((var(--_n-radio-size) - var(--_n-radio-dot-size)) / 2);display:inline-block;line-height:var(--n-line-height)}.n-flex{display:flex}.n-expand{flex:1}.n-input-container{position:relative}::slotted(input){--_n-radio-accent-color:var(--n-color-accent);-moz-appearance:none;-webkit-appearance:none;appearance:none;margin:0!important;padding:0!important;border:1px solid var(--_n-radio-border-color,var(--n-color-border-hover))!important;border-radius:var(--n-border-radius-circle)!important;transition:none!important;display:block!important;inline-size:var(--_n-radio-size)!important;block-size:var(--_n-radio-size)!important;cursor:pointer}::slotted(input:checked){--_n-radio-border-color:var(--n-color-accent);background:var(--_n-radio-accent-color)!important}::slotted(input[aria-invalid]){--_n-radio-accent-color:var(--n-color-status-danger);--_n-radio-border-color:var(--_n-radio-accent-color)}::slotted(input:active){opacity:.8}::slotted(input:focus-visible){outline:0!important}::slotted(input:focus){outline:0!important;box-shadow:0 0 0 1px var(--n-color-surface),0 0 0 3px var(--n-color-accent)!important}:host([disabled]) ::slotted(label){color:var(--n-color-text-weaker);cursor:default}:host([disabled]) ::slotted(input){background:var(--_n-radio-accent-color);cursor:default;opacity:1}:host([disabled]) ::slotted(input:not(:checked)){--_n-radio-accent-color:var(--n-color-active);--_n-radio-border-color:var(--n-color-border-neutral)}:host([disabled]) ::slotted(input:checked){opacity:.3}.n-dot{position:absolute;border-radius:var(--n-border-radius-circle);inline-size:var(--_n-radio-dot-size);block-size:var(--_n-radio-dot-size);background-color:var(--n-color-text-on-accent);inset-inline-start:var(--_n-radio-dot-inset);inset-block-start:var(--_n-radio-dot-inset);z-index:var(--n-index-default);pointer-events:none}.n-label-container{margin-block-end:0}::slotted(label){-webkit-user-select:none;user-select:none;font-weight:var(--n-font-weight)!important;line-height:var(--n-line-height-l)!important;padding-inline-start:var(--n-space-s)!important;cursor:pointer}.n-hint{padding-inline-start:var(--n-space-s)}.n-error{margin-block-start:var(--n-space-xs);padding-inline-start:var(--n-space-s)}:host([size="s"]){--_n-radio-size:var(--n-size-icon-m);--_n-radio-dot-size:calc(var(--n-size-icon-s) / 2)}:host([size="s"]:not([hide-label])) .n-input-container{margin:calc(var(--n-space-s)/ 3) 0}:host([size="l"]){--_n-radio-size:var(--n-size-icon-l);--_n-radio-dot-size:var(--n-size-icon-xs)}:host([size="l"]:not([hide-label])) .n-label-container{margin:2px 0 0}`;let k=0;const z=e=>`nord-radio-${e}-${k++}`;let $=class extends(u(m(v(p(r))))){constructor(){super(...arguments),this.inputId=z("input"),this.hintId=z("hint"),this.errorId=z("error"),this.hintSlot=new d(this,{slotName:"hint",render:()=>this.hint?t`<div slot="hint-internal" id="${this.hintId}">${this.hint}</div>`:i,syncLightDom:e=>{e.id=this.hintId}}),this.labelSlot=new d(this,{slotName:"label",render:()=>this.label?t`<label slot="label-internal" for="${this.inputId}">${this.label}</label>`:i,syncLightDom:e=>{!function(e){return"label"===e.localName}(e)?console.warn('NORD: Only <label> elements should be placed in radio\'s "label" slot'):e.htmlFor=this.inputId}}),this.errorSlot=new d(this,{slotName:"error",render:()=>this.error?t`<div slot="error-internal" id="${this.errorId}">${this.error}</div>`:i,syncLightDom:e=>{e.id=this.hintId}}),this.inputSlot=new l(this,{render:()=>t`<input slot="input" @blur="${this.handleBlur}" @focus="${this.handleFocus}" ${s(this.focusableRef)} class="n-input" id="${this.inputId}" type="radio" name="${h(this.name)}" .value="${h(this.value)}" .checked="${this.checked}" ?disabled="${this.disabled}" ?required="${this.required}" aria-describedby="${h(this.getDescribedBy())}" aria-invalid="${h(this.getInvalid())}" form="${h(this._formId)}">`}),this.checked=!1,this.handleBlur=e=>{e.stopPropagation(),this.dispatchEvent(new Event("blur",{bubbles:!1,cancelable:!0}))},this.handleFocus=e=>{e.stopPropagation(),this.dispatchEvent(new Event("focus",{bubbles:!1,cancelable:!0}))}}get formValue(){}render(){return t`<div class="n-flex"><div class="n-input-container" @change="${this.handleChange}"><slot name="input"></slot>${this.checked?t`<div class="n-dot"></div>`:i}</div><div class="n-expand"><div class="n-label-container">${e=this.hideLabel,o=()=>t`<slot name="label"></slot><slot name="label-internal"></slot>`,n=e=>t`<nord-visually-hidden>${e}</nord-visually-hidden>`,e?n(o()):o()}<div class="n-caption n-hint" ?hidden="${!this.hasHint}"><slot name="hint"></slot><slot name="hint-internal"></slot></div></div><div class="n-caption n-error" role="alert" ?hidden="${!this.hasError}"><slot name="error"></slot><slot name="error-internal"></slot></div></div></div>`;var e,o,n}handleCheckedChange(e){!e&&this.checked&&this.uncheckSiblings()}uncheckSiblings(){this.getRootNode().querySelectorAll(`nord-radio[name="${this.name}"]`).forEach((e=>{e!==this&&(e.checked=!1)}))}handleChange(e){e.stopPropagation();const t=e.target;this.checked=t.checked,super.handleChange(e)}};$.styles=[b,g,f],o([a({type:Boolean,reflect:!0})],$.prototype,"checked",void 0),o([c("checked")],$.prototype,"handleCheckedChange",null),$=o([n("nord-radio")],$);var _=$;export{_ as default};
2
2
  //# sourceMappingURL=Radio.js.map
package/lib/Range.js CHANGED
@@ -1,2 +1,2 @@
1
- import{i as r,k as e,_ as n,t as a,h as o}from"./custom-element-CDWT-yC_.js";import{K as t}from"./ref-BYkj-TPb.js";import{R as i}from"./class-map-BQZJmA_8.js";import{n as s}from"./property-DeTTNf1t.js";import{t as c}from"./if-defined-C2kZHWU2.js";import{N as l}from"./events-Bv6wNHwJ.js";import{F as d}from"./FocusableMixin-DriuCNli.js";import{F as b}from"./FormAssociatedMixin-DXVeQVgN.js";import{I as m}from"./InputMixin-CV3PG_89.js";import{R as g,s as u}from"./TextField-CmHW8rL5.js";import{A as h}from"./AutocompleteMixin-Dk_gVU09.js";import{D as p}from"./DirectionController-DiJ1Su1I.js";import{s as v}from"./Component-BuB0QgQM.js";import{s as _}from"./FormField-Cl7HHI9A.js";import"./directive-DQ0jBES2.js";import"./FormDataController-OUt5L5uC.js";import"./SlotController-BL-tOh6b.js";import"./EventController-BG-WpaBb.js";import"./VisuallyHidden.js";const f=r`:host{--_n-range-progress:0%;--_n-range-thumb-focus-ring:0 0 0 1px var(--n-color-accent);--_n-range-thumb-color:var(--n-color-text-on-accent);--_n-range-thumb-border-size:1px;--_n-range-thumb-border-color:var(--n-color-border-strong);--_n-range-gradient-direction:right;--_n-range-thumb-size:var(--n-range-thumb-size, 20px);--_n-range-track-color-active:var(--n-range-track-color-active, var(--n-color-accent));--_n-range-track-color-inactive:var(--n-range-track-color-inactive, var(--n-color-border-strong));--_n-range-track-size:var(--n-range-track-size, 3px)}.n-range{-webkit-appearance:none;appearance:none;inline-size:100%;background:linear-gradient(to var(--_n-range-gradient-direction),var(--_n-range-track-color-active) 0,var(--_n-range-track-color-active) var(--_n-range-progress),var(--_n-range-track-color-inactive) var(--_n-range-progress));border-radius:var(--n-border-radius-s)}.n-range.is-rtl{--_n-range-gradient-direction:left}.n-range::-webkit-slider-runnable-track{inline-size:100%;block-size:var(--_n-range-track-size)}.n-range::-webkit-slider-thumb{block-size:var(--_n-range-thumb-size);inline-size:var(--_n-range-thumb-size);box-shadow:var(--n-box-shadow),var(--n-box-shadow);border-radius:var(--n-border-radius-circle);background:var(--_n-range-thumb-color);border:var(--_n-range-thumb-border-size) solid var(--_n-range-thumb-border-color);cursor:pointer;-webkit-appearance:none;margin-block-start:calc(calc(var(--_n-range-thumb-size) - var(--_n-range-track-size))/ 2 * -1)}.n-range::-moz-range-track{border:var(--n-space-s) solid var(--n-color-surface);inline-size:100%;block-size:var(--_n-range-track-size)}.n-range::-moz-range-thumb{block-size:var(--_n-range-thumb-size);inline-size:var(--_n-range-thumb-size);box-shadow:var(--n-box-shadow);border-radius:var(--n-border-radius-circle);background:var(--_n-range-thumb-color);border:var(--_n-range-thumb-border-size) solid var(--_n-range-thumb-border-color);cursor:pointer;appearance:none;margin-block-start:calc(calc(var(--_n-range-thumb-size) - var(--_n-range-track-size))/ 2 * -1)}.n-label-container{margin-block-end:0;inline-size:100%}label{display:flex!important}.n-range-output{font-weight:var(--n-font-weight);color:var(--n-color-text-weaker);font-size:var(--n-font-size-m);margin-inline-start:auto}.n-range:focus{outline:0}.n-label-container:hover+.n-input-container .n-input:disabled,.n-range:disabled{opacity:.5}.n-range:disabled::-webkit-slider-thumb,.n-range[readonly]::-webkit-slider-thumb{--_n-range-thumb-color:var(--n-color-border);--_n-range-thumb-border-color:var(--n-color-border);box-shadow:none;cursor:default}.n-range:disabled::-moz-range-thumb,.n-range[readonly]::-moz-range-thumb{--_n-range-thumb-color:var(--n-color-border);--_n-range-thumb-border-color:var(--n-color-border);box-shadow:none;cursor:default}.n-range:focus::-webkit-slider-thumb{--_n-range-thumb-border-color:var(--n-color-accent);box-shadow:var(--_n-range-thumb-focus-ring)}.n-range:focus::-moz-range-thumb{--_n-range-thumb-border-color:var(--n-color-accent);box-shadow:var(--_n-range-thumb-focus-ring)}`;let k=class extends(b(h(g(m(d(o)))))){constructor(){super(...arguments),this.direction=new p(this),this.min=0,this.max=10,this.step=1,this.expand=!1}render(){const r=Number(this.value)||0,n=Math.max(0,(r-this.min)/(this.max-this.min));return e`<div class="n-input-container">${this.renderLabel(e`<span class="n-range-output" aria-hidden="true">${r}</span>`)} <input ${t(this.focusableRef)} id="${this.inputId}" type="range" class="${i({"n-range":!0,"is-rtl":this.direction.isRTL})}" name="${c(this.name)}" min="${this.min}" step="${this.step}" max="${this.max}" style="${`--_n-range-progress: ${100*n}%`}" ?disabled="${this.disabled}" ?required="${this.required}" ?readonly="${this.readonly}" .value="${this.value?this.value:"0"}" @input="${this.handleInput}" @change="${this.handleChange}" aria-describedby="${c(this.getDescribedBy())}" aria-invalid="${c(this.getInvalid())}"></div>${this.renderError()}`}handleInput(r){r.stopPropagation();const e=r.target;if(this.readonly)return r.preventDefault(),void(e.value=this.value);this.value=e.value,this.dispatchEvent(new l("input"))}};k.styles=[v,_,u,f],n([s({reflect:!0,type:Number})],k.prototype,"min",void 0),n([s({reflect:!0,type:Number})],k.prototype,"max",void 0),n([s({reflect:!0,type:Number})],k.prototype,"step",void 0),n([s({reflect:!0,type:Boolean})],k.prototype,"expand",void 0),k=n([a("nord-range")],k);var z=k;export{z as default};
1
+ import{i as r,k as e,_ as n,t as a,h as o}from"./custom-element-CDWT-yC_.js";import{K as t}from"./ref-BYkj-TPb.js";import{R as i}from"./class-map-BQZJmA_8.js";import{n as s}from"./property-DeTTNf1t.js";import{t as c}from"./if-defined-C2kZHWU2.js";import{N as l}from"./events-Bv6wNHwJ.js";import{F as d}from"./FocusableMixin-DriuCNli.js";import{F as b}from"./FormAssociatedMixin-DXVeQVgN.js";import{I as m}from"./InputMixin-B-nPfhjc.js";import{R as g,s as u}from"./TextField-CmHW8rL5.js";import{A as h}from"./AutocompleteMixin-Dk_gVU09.js";import{D as p}from"./DirectionController-DiJ1Su1I.js";import{s as v}from"./Component-BuB0QgQM.js";import{s as _}from"./FormField-Cl7HHI9A.js";import"./directive-DQ0jBES2.js";import"./FormDataController-OUt5L5uC.js";import"./SlotController-BL-tOh6b.js";import"./EventController-BG-WpaBb.js";import"./VisuallyHidden.js";const f=r`:host{--_n-range-progress:0%;--_n-range-thumb-focus-ring:0 0 0 1px var(--n-color-accent);--_n-range-thumb-color:var(--n-color-text-on-accent);--_n-range-thumb-border-size:1px;--_n-range-thumb-border-color:var(--n-color-border-strong);--_n-range-gradient-direction:right;--_n-range-thumb-size:var(--n-range-thumb-size, 20px);--_n-range-track-color-active:var(--n-range-track-color-active, var(--n-color-accent));--_n-range-track-color-inactive:var(--n-range-track-color-inactive, var(--n-color-border-strong));--_n-range-track-size:var(--n-range-track-size, 3px)}.n-range{-webkit-appearance:none;appearance:none;inline-size:100%;background:linear-gradient(to var(--_n-range-gradient-direction),var(--_n-range-track-color-active) 0,var(--_n-range-track-color-active) var(--_n-range-progress),var(--_n-range-track-color-inactive) var(--_n-range-progress));border-radius:var(--n-border-radius-s)}.n-range.is-rtl{--_n-range-gradient-direction:left}.n-range::-webkit-slider-runnable-track{inline-size:100%;block-size:var(--_n-range-track-size)}.n-range::-webkit-slider-thumb{block-size:var(--_n-range-thumb-size);inline-size:var(--_n-range-thumb-size);box-shadow:var(--n-box-shadow),var(--n-box-shadow);border-radius:var(--n-border-radius-circle);background:var(--_n-range-thumb-color);border:var(--_n-range-thumb-border-size) solid var(--_n-range-thumb-border-color);cursor:pointer;-webkit-appearance:none;margin-block-start:calc(calc(var(--_n-range-thumb-size) - var(--_n-range-track-size))/ 2 * -1)}.n-range::-moz-range-track{border:var(--n-space-s) solid var(--n-color-surface);inline-size:100%;block-size:var(--_n-range-track-size)}.n-range::-moz-range-thumb{block-size:var(--_n-range-thumb-size);inline-size:var(--_n-range-thumb-size);box-shadow:var(--n-box-shadow);border-radius:var(--n-border-radius-circle);background:var(--_n-range-thumb-color);border:var(--_n-range-thumb-border-size) solid var(--_n-range-thumb-border-color);cursor:pointer;appearance:none;margin-block-start:calc(calc(var(--_n-range-thumb-size) - var(--_n-range-track-size))/ 2 * -1)}.n-label-container{margin-block-end:0;inline-size:100%}label{display:flex!important}.n-range-output{font-weight:var(--n-font-weight);color:var(--n-color-text-weaker);font-size:var(--n-font-size-m);margin-inline-start:auto}.n-range:focus{outline:0}.n-label-container:hover+.n-input-container .n-input:disabled,.n-range:disabled{opacity:.5}.n-range:disabled::-webkit-slider-thumb,.n-range[readonly]::-webkit-slider-thumb{--_n-range-thumb-color:var(--n-color-border);--_n-range-thumb-border-color:var(--n-color-border);box-shadow:none;cursor:default}.n-range:disabled::-moz-range-thumb,.n-range[readonly]::-moz-range-thumb{--_n-range-thumb-color:var(--n-color-border);--_n-range-thumb-border-color:var(--n-color-border);box-shadow:none;cursor:default}.n-range:focus::-webkit-slider-thumb{--_n-range-thumb-border-color:var(--n-color-accent);box-shadow:var(--_n-range-thumb-focus-ring)}.n-range:focus::-moz-range-thumb{--_n-range-thumb-border-color:var(--n-color-accent);box-shadow:var(--_n-range-thumb-focus-ring)}`;let k=class extends(b(h(g(m(d(o)))))){constructor(){super(...arguments),this.direction=new p(this),this.min=0,this.max=10,this.step=1,this.expand=!1}render(){const r=Number(this.value)||0,n=Math.max(0,(r-this.min)/(this.max-this.min));return e`<div class="n-input-container">${this.renderLabel(e`<span class="n-range-output" aria-hidden="true">${r}</span>`)} <input ${t(this.focusableRef)} id="${this.inputId}" type="range" class="${i({"n-range":!0,"is-rtl":this.direction.isRTL})}" name="${c(this.name)}" min="${this.min}" step="${this.step}" max="${this.max}" style="${`--_n-range-progress: ${100*n}%`}" ?disabled="${this.disabled}" ?required="${this.required}" ?readonly="${this.readonly}" .value="${this.value?this.value:"0"}" @input="${this.handleInput}" @change="${this.handleChange}" aria-describedby="${c(this.getDescribedBy())}" aria-invalid="${c(this.getInvalid())}"></div>${this.renderError()}`}handleInput(r){r.stopPropagation();const e=r.target;if(this.readonly)return r.preventDefault(),void(e.value=this.value);this.value=e.value,this.dispatchEvent(new l("input"))}};k.styles=[v,_,u,f],n([s({reflect:!0,type:Number})],k.prototype,"min",void 0),n([s({reflect:!0,type:Number})],k.prototype,"max",void 0),n([s({reflect:!0,type:Number})],k.prototype,"step",void 0),n([s({reflect:!0,type:Boolean})],k.prototype,"expand",void 0),k=n([a("nord-range")],k);var z=k;export{z as default};
2
2
  //# sourceMappingURL=Range.js.map
@@ -1,2 +1,2 @@
1
- import{i as e,k as t,D as n,_ as o,t as r,h as i}from"./custom-element-CDWT-yC_.js";import{n as a}from"./property-DeTTNf1t.js";import{K as s}from"./ref-BYkj-TPb.js";import{o as l}from"./observe-D0n0zOfU.js";import{c}from"./cond-Cuc_PMkN.js";import{L as m}from"./LightDomController-BtyFuJKD.js";import{L as d}from"./LightSlotController-BDkcldj-.js";import{N as g}from"./events-Bv6wNHwJ.js";import{F as p}from"./FocusableMixin-DriuCNli.js";import{I as v}from"./InputMixin-CV3PG_89.js";import{s as h}from"./Component-BuB0QgQM.js";import"./directive-DQ0jBES2.js";import"./SlotController-BL-tOh6b.js";import"./EventController-BG-WpaBb.js";const b=e`:host{--_n-segmented-control-item-gap:var(--n-segmented-control-item-gap, var(--n-space-xs));--_n-segmented-control-item-padding-inline:var(--n-segmented-control-item-padding-inline, calc(var(--n-space-m) / 1.2));--_n-segmented-control-item-min-block-size:var(--n-segmented-control-item-min-block-size, calc(var(--n-space-xl) - 2px));--_n-segmented-control-item-font-size:var(--n-segmented-control-item-font-size, var(--n-font-size-m));--_n-segmented-control-item-font-weight:var(--n-segmented-control-item-font-weight, var(--n-font-weight));--_n-segmented-control-item-gradient:var(--n-segmented-control-item-gradient, linear-gradient(to bottom, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.013) 100%));--_n-segmented-control-item-background-color:var(--n-segmented-control-item-background-color, var(--n-color-nav-hover));--_n-segmented-control-item-color:var(--n-segmented-control-item-color, var(--n-color-text-weaker));--_n-segmented-control-item-border-radius:var(--n-segmented-control-item-border-radius, 0);--_n-segmented-control-item-inline-size:var(--n-segmented-control-item-inline-size, auto);--_n-segmented-control-item-box-shadow:var(--n-segmented-control-item-box-shadow, none);--_n-segmented-control-item-icon-size:var(--n-size-icon-s);--_n-segmented-control-item-opacity:1;position:relative;flex:1}::slotted(label){--n-icon-size:var(--_n-segmented-control-item-icon-size);display:flex!important;align-items:center;justify-content:center;border-radius:var(--_n-segmented-control-item-border-radius)!important;transition:var(--n-transition-quickly)!important;transition-property:background-color,color,border-color!important;font-family:var(--n-font-family)!important;font-size:var(--_n-segmented-control-item-font-size)!important;font-feature-settings:var(--n-font-features);font-weight:var(--_n-segmented-control-item-font-weight)!important;line-height:var(--n-line-height-form)!important;color:var(--_n-segmented-control-item-color)!important;padding:calc(var(--n-space-xs) - 1px) var(--_n-segmented-control-item-padding-inline)!important;background-color:var(--_n-segmented-control-item-background-color)!important;box-shadow:var(--_n-segmented-control-item-box-shadow)!important;cursor:pointer;position:relative!important;gap:var(--_n-segmented-control-item-gap);white-space:nowrap!important;inline-size:var(--_n-segmented-control-item-inline-size);-webkit-user-select:none;user-select:none;border:0!important;opacity:var(--_n-segmented-control-item-opacity);min-block-size:var(--_n-segmented-control-item-min-block-size)!important}::slotted(input){position:absolute!important;appearance:none!important;background:0 0!important;border:0!important;transition:var(--n-transition-quickly)!important;transition-property:background-color,color,border-color,box-shadow!important;border-radius:var(--n-border-radius-s)!important;inset-block-start:0!important;inset-inline-start:0!important;inline-size:100%!important;block-size:100%!important;padding:0!important;margin:0!important}::slotted(input:focus-visible),:host([checked]){z-index:var(--n-index-mask)}:host([checked]) ::slotted(label){--_n-segmented-control-item-background-color:var(--n-segmented-control-item-background-color, var(--n-color-surface));--_n-segmented-control-item-color:var(--n-segmented-control-item-color, var(--n-color-text));--_n-segmented-control-item-border-radius:var(--n-segmented-control-item-border-radius, var(--n-border-radius-s));--_n-segmented-control-item-box-shadow:var(--n-segmented-control-item-box-shadow, 0 0 0 1px var(--n-color-border-strong), var(--n-box-shadow), var(--n-box-shadow));z-index:var(--n-index-mask)}:host([checked]) ::slotted(label)::after{content:"";position:absolute;background:0 0;background-image:var(--_n-segmented-control-item-gradient);border-radius:var(--n-border-radius-s);background-repeat:repeat-x;inline-size:100%;inset-inline:0;block-size:100%;inset-block-start:0}:host([checked]) ::slotted(label:hover){--_n-segmented-control-item-background-color:var(--n-segmented-control-item-background-color, var(--n-color-button-hover));--_n-segmented-control-item-color:var(--n-segmented-control-item-color, var(--n-color-text));--_n-segmented-control-item-box-shadow:var(--n-segmented-control-item-box-shadow, 0 0 0 1px var(--n-color-border-hover), var(--n-box-shadow), var(--n-box-shadow))}:host([disabled]){--_n-segmented-control-item-color:var(--n-segmented-control-item-color, var(--n-color-text-weak));pointer-events:none}:host([disabled]:not([checked])){--_n-segmented-control-item-background-color:var(--n-segmented-control-item-background-color, transparent)}::slotted(label:hover){--_n-segmented-control-item-background-color:var(--n-segmented-control-item-background-color, var(--n-color-surface-lowered));--_n-segmented-control-item-color:var(--n-segmented-control-item-color, var(--n-color-text))}::slotted(input:focus){outline:0}::slotted(input:focus-visible){box-shadow:0 0 0 2px var(--n-color-accent),var(--n-box-shadow)!important;z-index:calc(var(--n-index-mask) + 1)!important}::slotted(label:active){opacity:.8;transition:none}:host([size="s"]){--_n-segmented-control-item-gap:var(--n-segmented-control-item-gap, var(--n-space-xs));--_n-segmented-control-item-padding-inline:var(--n-segmented-control-item-padding-inline, calc(var(--n-space-s) + 1px));--_n-segmented-control-item-min-block-size:var(--n-segmented-control-item-min-block-size, calc(var(--n-space-l) + var(--n-space-xs) - 2px));--_n-segmented-control-item-font-size:var(--n-segmented-control-item-font-size, var(--n-font-size-s));--_n-segmented-control-item-icon-size:var(--n-size-icon-xs)}:host([size="l"]){--_n-segmented-control-item-gap:var(--n-segmented-control-item-gap, var(--n-space-s));--_n-segmented-control-item-padding-inline:var(--n-segmented-control-item-padding-inline, calc(var(--n-space-l) / 1.3));--_n-segmented-control-item-min-block-size:var(--n-segmented-control-item-min-block-size, calc(var(--n-space-xxl) - var(--n-space-l) - 2px));--_n-segmented-control-item-font-size:var(--n-segmented-control-item-font-size, var(--n-font-size-l));--_n-segmented-control-item-font-weight:var(--n-segmented-control-item-font-weight, var(--n-font-weight-active));--_n-segmented-control-item-icon-size:var(--n-size-icon-m)}`;let u=0;let f=class extends(v(p(i))){constructor(){super(...arguments),this.inputId=`nord-segmented-control-item-${"input"}-${u++}`,this.inputSlot=new m(this,{render:()=>t`<input slot="input" @blur="${this.handleBlur}" @focus="${this.handleFocus}" ${s(this.focusableRef)} id="${this.inputId}" type="radio" class="n-input" name="${c(this.name)}" .value="${c(this.value)}" .checked="${this.checked}" ?disabled="${this.disabled}" form="${c(this._formId)}">`}),this.labelSlot=new d(this,{slotName:"label",render:()=>this.label?t`<label slot="label-internal" for="${this.inputId}" class="n-segmented-control-item">${this.label}</label>`:n,syncLightDom:e=>{!function(e){return"label"===e.localName}(e)?console.warn('NORD: Only <label> elements should be placed in Segmented Control\'s "label" slot'):e.htmlFor=this.inputId}}),this.checked=!1,this.size="m",this.label="",this.handleBlur=e=>{e.stopPropagation(),this.dispatchEvent(new Event("blur",{bubbles:!1,cancelable:!0}))},this.handleFocus=e=>{e.stopPropagation(),this.dispatchEvent(new Event("focus",{bubbles:!1,cancelable:!0}))}}render(){return t`<div class="n-segmented-control-item" @change="${this.handleChange}"><slot name="input"></slot><slot name="label"></slot><slot name="label-internal"></slot></div>`}handleCheckedChange(e){!e&&this.checked&&this.uncheckSiblings()}uncheckSiblings(){this.getRootNode().querySelectorAll(`nord-segmented-control-item[name="${this.name}"]`).forEach((e=>{e!==this&&(e.checked=!1)}))}handleChange(e){const t=e.target;this.checked=t.checked,e.stopPropagation(),this.dispatchEvent(new g("change"))}handleInput(e){e.stopPropagation();const t=e.target;this.value=t.value,this.dispatchEvent(new g("input"))}};f.styles=[h,b],o([a({type:Boolean,reflect:!0})],f.prototype,"checked",void 0),o([a({reflect:!0})],f.prototype,"size",void 0),o([a({reflect:!0})],f.prototype,"label",void 0),o([l("checked")],f.prototype,"handleCheckedChange",null),f=o([r("nord-segmented-control-item")],f);var k=f;export{k as default};
1
+ import{i as e,k as t,D as n,_ as o,t as r,h as i}from"./custom-element-CDWT-yC_.js";import{n as a}from"./property-DeTTNf1t.js";import{K as s}from"./ref-BYkj-TPb.js";import{o as l}from"./observe-D0n0zOfU.js";import{c}from"./cond-Cuc_PMkN.js";import{L as m}from"./LightDomController-BtyFuJKD.js";import{L as d}from"./LightSlotController-BDkcldj-.js";import{N as g}from"./events-Bv6wNHwJ.js";import{F as p}from"./FocusableMixin-DriuCNli.js";import{I as v}from"./InputMixin-B-nPfhjc.js";import{s as h}from"./Component-BuB0QgQM.js";import"./directive-DQ0jBES2.js";import"./SlotController-BL-tOh6b.js";import"./EventController-BG-WpaBb.js";const b=e`:host{--_n-segmented-control-item-gap:var(--n-segmented-control-item-gap, var(--n-space-xs));--_n-segmented-control-item-padding-inline:var(--n-segmented-control-item-padding-inline, calc(var(--n-space-m) / 1.2));--_n-segmented-control-item-min-block-size:var(--n-segmented-control-item-min-block-size, calc(var(--n-space-xl) - 2px));--_n-segmented-control-item-font-size:var(--n-segmented-control-item-font-size, var(--n-font-size-m));--_n-segmented-control-item-font-weight:var(--n-segmented-control-item-font-weight, var(--n-font-weight));--_n-segmented-control-item-gradient:var(--n-segmented-control-item-gradient, linear-gradient(to bottom, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.013) 100%));--_n-segmented-control-item-background-color:var(--n-segmented-control-item-background-color, var(--n-color-nav-hover));--_n-segmented-control-item-color:var(--n-segmented-control-item-color, var(--n-color-text-weaker));--_n-segmented-control-item-border-radius:var(--n-segmented-control-item-border-radius, 0);--_n-segmented-control-item-inline-size:var(--n-segmented-control-item-inline-size, auto);--_n-segmented-control-item-box-shadow:var(--n-segmented-control-item-box-shadow, none);--_n-segmented-control-item-icon-size:var(--n-size-icon-s);--_n-segmented-control-item-opacity:1;position:relative;flex:1}::slotted(label){--n-icon-size:var(--_n-segmented-control-item-icon-size);display:flex!important;align-items:center;justify-content:center;border-radius:var(--_n-segmented-control-item-border-radius)!important;transition:var(--n-transition-quickly)!important;transition-property:background-color,color,border-color!important;font-family:var(--n-font-family)!important;font-size:var(--_n-segmented-control-item-font-size)!important;font-feature-settings:var(--n-font-features);font-weight:var(--_n-segmented-control-item-font-weight)!important;line-height:var(--n-line-height-form)!important;color:var(--_n-segmented-control-item-color)!important;padding:calc(var(--n-space-xs) - 1px) var(--_n-segmented-control-item-padding-inline)!important;background-color:var(--_n-segmented-control-item-background-color)!important;box-shadow:var(--_n-segmented-control-item-box-shadow)!important;cursor:pointer;position:relative!important;gap:var(--_n-segmented-control-item-gap);white-space:nowrap!important;inline-size:var(--_n-segmented-control-item-inline-size);-webkit-user-select:none;user-select:none;border:0!important;opacity:var(--_n-segmented-control-item-opacity);min-block-size:var(--_n-segmented-control-item-min-block-size)!important}::slotted(input){position:absolute!important;appearance:none!important;background:0 0!important;border:0!important;transition:var(--n-transition-quickly)!important;transition-property:background-color,color,border-color,box-shadow!important;border-radius:var(--n-border-radius-s)!important;inset-block-start:0!important;inset-inline-start:0!important;inline-size:100%!important;block-size:100%!important;padding:0!important;margin:0!important}::slotted(input:focus-visible),:host([checked]){z-index:var(--n-index-mask)}:host([checked]) ::slotted(label){--_n-segmented-control-item-background-color:var(--n-segmented-control-item-background-color, var(--n-color-surface));--_n-segmented-control-item-color:var(--n-segmented-control-item-color, var(--n-color-text));--_n-segmented-control-item-border-radius:var(--n-segmented-control-item-border-radius, var(--n-border-radius-s));--_n-segmented-control-item-box-shadow:var(--n-segmented-control-item-box-shadow, 0 0 0 1px var(--n-color-border-strong), var(--n-box-shadow), var(--n-box-shadow));z-index:var(--n-index-mask)}:host([checked]) ::slotted(label)::after{content:"";position:absolute;background:0 0;background-image:var(--_n-segmented-control-item-gradient);border-radius:var(--n-border-radius-s);background-repeat:repeat-x;inline-size:100%;inset-inline:0;block-size:100%;inset-block-start:0}:host([checked]) ::slotted(label:hover){--_n-segmented-control-item-background-color:var(--n-segmented-control-item-background-color, var(--n-color-button-hover));--_n-segmented-control-item-color:var(--n-segmented-control-item-color, var(--n-color-text));--_n-segmented-control-item-box-shadow:var(--n-segmented-control-item-box-shadow, 0 0 0 1px var(--n-color-border-hover), var(--n-box-shadow), var(--n-box-shadow))}:host([disabled]){--_n-segmented-control-item-color:var(--n-segmented-control-item-color, var(--n-color-text-weak));pointer-events:none}:host([disabled]:not([checked])){--_n-segmented-control-item-background-color:var(--n-segmented-control-item-background-color, transparent)}::slotted(label:hover){--_n-segmented-control-item-background-color:var(--n-segmented-control-item-background-color, var(--n-color-surface-lowered));--_n-segmented-control-item-color:var(--n-segmented-control-item-color, var(--n-color-text))}::slotted(input:focus){outline:0}::slotted(input:focus-visible){box-shadow:0 0 0 2px var(--n-color-accent),var(--n-box-shadow)!important;z-index:calc(var(--n-index-mask) + 1)!important}::slotted(label:active){opacity:.8;transition:none}:host([size="s"]){--_n-segmented-control-item-gap:var(--n-segmented-control-item-gap, var(--n-space-xs));--_n-segmented-control-item-padding-inline:var(--n-segmented-control-item-padding-inline, calc(var(--n-space-s) + 1px));--_n-segmented-control-item-min-block-size:var(--n-segmented-control-item-min-block-size, calc(var(--n-space-l) + var(--n-space-xs) - 2px));--_n-segmented-control-item-font-size:var(--n-segmented-control-item-font-size, var(--n-font-size-s));--_n-segmented-control-item-icon-size:var(--n-size-icon-xs)}:host([size="l"]){--_n-segmented-control-item-gap:var(--n-segmented-control-item-gap, var(--n-space-s));--_n-segmented-control-item-padding-inline:var(--n-segmented-control-item-padding-inline, calc(var(--n-space-l) / 1.3));--_n-segmented-control-item-min-block-size:var(--n-segmented-control-item-min-block-size, calc(var(--n-space-xxl) - var(--n-space-l) - 2px));--_n-segmented-control-item-font-size:var(--n-segmented-control-item-font-size, var(--n-font-size-l));--_n-segmented-control-item-font-weight:var(--n-segmented-control-item-font-weight, var(--n-font-weight-active));--_n-segmented-control-item-icon-size:var(--n-size-icon-m)}`;let u=0;let f=class extends(v(p(i))){constructor(){super(...arguments),this.inputId=`nord-segmented-control-item-${"input"}-${u++}`,this.inputSlot=new m(this,{render:()=>t`<input slot="input" @blur="${this.handleBlur}" @focus="${this.handleFocus}" ${s(this.focusableRef)} id="${this.inputId}" type="radio" class="n-input" name="${c(this.name)}" .value="${c(this.value)}" .checked="${this.checked}" ?disabled="${this.disabled}" form="${c(this._formId)}">`}),this.labelSlot=new d(this,{slotName:"label",render:()=>this.label?t`<label slot="label-internal" for="${this.inputId}" class="n-segmented-control-item">${this.label}</label>`:n,syncLightDom:e=>{!function(e){return"label"===e.localName}(e)?console.warn('NORD: Only <label> elements should be placed in Segmented Control\'s "label" slot'):e.htmlFor=this.inputId}}),this.checked=!1,this.size="m",this.label="",this.handleBlur=e=>{e.stopPropagation(),this.dispatchEvent(new Event("blur",{bubbles:!1,cancelable:!0}))},this.handleFocus=e=>{e.stopPropagation(),this.dispatchEvent(new Event("focus",{bubbles:!1,cancelable:!0}))}}render(){return t`<div class="n-segmented-control-item" @change="${this.handleChange}"><slot name="input"></slot><slot name="label"></slot><slot name="label-internal"></slot></div>`}handleCheckedChange(e){!e&&this.checked&&this.uncheckSiblings()}uncheckSiblings(){this.getRootNode().querySelectorAll(`nord-segmented-control-item[name="${this.name}"]`).forEach((e=>{e!==this&&(e.checked=!1)}))}handleChange(e){const t=e.target;this.checked=t.checked,e.stopPropagation(),this.dispatchEvent(new g("change"))}handleInput(e){e.stopPropagation();const t=e.target;this.value=t.value,this.dispatchEvent(new g("input"))}};f.styles=[h,b],o([a({type:Boolean,reflect:!0})],f.prototype,"checked",void 0),o([a({reflect:!0})],f.prototype,"size",void 0),o([a({reflect:!0})],f.prototype,"label",void 0),o([l("checked")],f.prototype,"handleCheckedChange",null),f=o([r("nord-segmented-control-item")],f);var k=f;export{k as default};
2
2
  //# sourceMappingURL=SegmentedControlItem.js.map
package/lib/Select.js CHANGED
@@ -1,2 +1,2 @@
1
- import{i as t,k as o,_ as e,t as r,h as n}from"./custom-element-CDWT-yC_.js";import{n as i}from"./property-DeTTNf1t.js";import{t as s}from"./if-defined-C2kZHWU2.js";import{K as a}from"./ref-BYkj-TPb.js";import"./Button.js";import l from"./Icon.js";import{I as d}from"./InputMixin-CV3PG_89.js";import{F as c}from"./FocusableMixin-DriuCNli.js";import{F as p}from"./FormAssociatedMixin-DXVeQVgN.js";import{A as u}from"./AutocompleteMixin-Dk_gVU09.js";import{S as b}from"./SizeMixin-DW6qUBEN.js";import{s as m}from"./Component-BuB0QgQM.js";import{s as h}from"./FormField-Cl7HHI9A.js";import{S as v}from"./SlotController-BL-tOh6b.js";import"./directive-DQ0jBES2.js";import"./EventController-BG-WpaBb.js";import"./LightDomController-BtyFuJKD.js";import"./cond-Cuc_PMkN.js";import"./Spinner.js";import"./state-BFYKuryf.js";import"./IconManager.js";import"./observe-D0n0zOfU.js";import"./FormDataController-OUt5L5uC.js";import"./events-Bv6wNHwJ.js";import"./VisuallyHidden.js";var f=Object.freeze({__proto__:null,default:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m14.0864 12.0402 1.8138 1.8137-4.7724 4.7724c-.2573.2573-.5789.373-.9133.373-.33447 0-.65606-.1286-.91333-.373l-4.77238-4.7724 1.81377-1.8137 3.85904 3.859 3.8591-3.859zm-3.859-7.93687 3.859 3.85907 1.8138-1.81376-4.7724-4.77238c-.5017-.50168-1.31208-.50168-1.81376 0l-4.77238 4.77238 1.81376 1.81376 3.85908-3.85907z" fill="currentColor"/></svg>',tags:"nordicon small interface dropdown select arrow up down caret triangle chevron",title:"interface-dropdown-small"});const x=t`:host{--_n-select-block-size:var(--n-select-block-size, var(--n-space-xl))}.n-select-container{position:relative;inline-size:fit-content}:host([expand]){inline-size:100%}:host([expand]) .n-select-container{inline-size:100%}select{-webkit-appearance:none;appearance:none;position:absolute;font-size:var(--n-font-size-m);font-family:var(--n-font-family);color:var(--n-color-text);inline-size:100%;opacity:.0001;cursor:pointer;background:0 0;border:0;block-size:var(--_n-select-block-size);inset-block-end:0;inset-inline-start:0;z-index:var(--n-index-default)}option{color:initial}nord-button{--n-button-text-align:start}nord-icon{color:var(--n-color-icon)}.n-label-container:hover+.n-select-container nord-button,select:hover+nord-button{--_n-button-border-color:var(--n-button-border-color, var(--n-color-border-hover));--_n-button-background-color:var(--n-button-background-color, var(--n-color-button-hover))}select:focus+nord-button{--n-button-border-color:var(--n-color-accent);--n-button-box-shadow:0 0 0 1px var(--n-button-border-color)}:host([disabled]){cursor:auto;pointer-events:none}:host([disabled]) nord-button{--n-input-border-color:var(--n-color-active);--_n-button-color:var(--n-color-text-weakest);--_n-button-background-color:var(--n-color-active);--_n-button-opacity:1}:host([disabled]) nord-icon{color:var(--n-color-text-weakest)}::slotted(:not([slot])){display:none}select[aria-invalid=true]+nord-button{--n-button-border-color:var(--n-color-status-danger)}`;l.registerIcon(f);let j=class extends(b(p(u(d(c(n)))))){constructor(){super(...arguments),this.defaultSlot=new v(this),this.inputId="select",this.expand=!1}get formValue(){return this.value||void 0}render(){const t=this.options,e=this.getButtonText(t);return o`<slot></slot>${this.renderLabel()}<div class="n-select-container"><select ${a(this.focusableRef)} id="${this.inputId}" ?disabled="${this.disabled}" ?required="${this.required}" name="${s(this.name)}" @change="${this.handleChange}" @input="${this.handleInput}" aria-describedby="${s(this.getDescribedBy())}" aria-invalid="${s(this.getInvalid())}" autocomplete="${this.autocomplete}">${this.placeholder&&o`<option value="" disabled="disabled" ?selected="${!this.value}">${this.placeholder}</option>`} ${t.map((t=>this.renderOption(t)))}</select><nord-button size="${this.size}" tabindex="-1" ?disabled="${this.disabled}" ?expand="${this.expand}" aria-hidden="true" type="button"><slot slot="start" name="icon"></slot>${e}<nord-icon slot="end" name="interface-dropdown-small"></nord-icon></nord-button></div>${this.renderError()}`}get options(){return Array.from(this.querySelectorAll("option"))}getButtonText(t){const o=t.find((t=>t.value===this.value.toString()));return o?o.text:this.placeholder?this.placeholder:t[0]?t[0].text:""}renderOption(t){return o`<option value="${s(t.value)}" ?disabled="${t.disabled}" .selected="${t.value===this.value.toString()}">${t.text}</option>`}};j.styles=[m,h,x],e([i({reflect:!0,type:Boolean})],j.prototype,"expand",void 0),j=e([r("nord-select")],j);var g=j;export{g as default};
1
+ import{i as t,k as o,_ as e,t as r,h as n}from"./custom-element-CDWT-yC_.js";import{n as i}from"./property-DeTTNf1t.js";import{t as s}from"./if-defined-C2kZHWU2.js";import{K as a}from"./ref-BYkj-TPb.js";import"./Button.js";import l from"./Icon.js";import{I as d}from"./InputMixin-B-nPfhjc.js";import{F as c}from"./FocusableMixin-DriuCNli.js";import{F as p}from"./FormAssociatedMixin-DXVeQVgN.js";import{A as u}from"./AutocompleteMixin-Dk_gVU09.js";import{S as b}from"./SizeMixin-DW6qUBEN.js";import{s as m}from"./Component-BuB0QgQM.js";import{s as h}from"./FormField-Cl7HHI9A.js";import{S as v}from"./SlotController-BL-tOh6b.js";import"./directive-DQ0jBES2.js";import"./EventController-BG-WpaBb.js";import"./LightDomController-BtyFuJKD.js";import"./cond-Cuc_PMkN.js";import"./Spinner.js";import"./state-BFYKuryf.js";import"./IconManager.js";import"./observe-D0n0zOfU.js";import"./FormDataController-OUt5L5uC.js";import"./events-Bv6wNHwJ.js";import"./VisuallyHidden.js";var f=Object.freeze({__proto__:null,default:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m14.0864 12.0402 1.8138 1.8137-4.7724 4.7724c-.2573.2573-.5789.373-.9133.373-.33447 0-.65606-.1286-.91333-.373l-4.77238-4.7724 1.81377-1.8137 3.85904 3.859 3.8591-3.859zm-3.859-7.93687 3.859 3.85907 1.8138-1.81376-4.7724-4.77238c-.5017-.50168-1.31208-.50168-1.81376 0l-4.77238 4.77238 1.81376 1.81376 3.85908-3.85907z" fill="currentColor"/></svg>',tags:"nordicon small interface dropdown select arrow up down caret triangle chevron",title:"interface-dropdown-small"});const x=t`:host{--_n-select-block-size:var(--n-select-block-size, var(--n-space-xl))}.n-select-container{position:relative;inline-size:fit-content}:host([expand]){inline-size:100%}:host([expand]) .n-select-container{inline-size:100%}select{-webkit-appearance:none;appearance:none;position:absolute;font-size:var(--n-font-size-m);font-family:var(--n-font-family);color:var(--n-color-text);inline-size:100%;opacity:.0001;cursor:pointer;background:0 0;border:0;block-size:var(--_n-select-block-size);inset-block-end:0;inset-inline-start:0;z-index:var(--n-index-default)}option{color:initial}nord-button{--n-button-text-align:start}nord-icon{color:var(--n-color-icon)}.n-label-container:hover+.n-select-container nord-button,select:hover+nord-button{--_n-button-border-color:var(--n-button-border-color, var(--n-color-border-hover));--_n-button-background-color:var(--n-button-background-color, var(--n-color-button-hover))}select:focus+nord-button{--n-button-border-color:var(--n-color-accent);--n-button-box-shadow:0 0 0 1px var(--n-button-border-color)}:host([disabled]){cursor:auto;pointer-events:none}:host([disabled]) nord-button{--n-input-border-color:var(--n-color-active);--_n-button-color:var(--n-color-text-weakest);--_n-button-background-color:var(--n-color-active);--_n-button-opacity:1}:host([disabled]) nord-icon{color:var(--n-color-text-weakest)}::slotted(:not([slot])){display:none}select[aria-invalid=true]+nord-button{--n-button-border-color:var(--n-color-status-danger)}`;l.registerIcon(f);let j=class extends(b(p(u(d(c(n)))))){constructor(){super(...arguments),this.defaultSlot=new v(this),this.inputId="select",this.expand=!1}get formValue(){return this.value||void 0}render(){const t=this.options,e=this.getButtonText(t);return o`<slot></slot>${this.renderLabel()}<div class="n-select-container"><select ${a(this.focusableRef)} id="${this.inputId}" ?disabled="${this.disabled}" ?required="${this.required}" name="${s(this.name)}" @change="${this.handleChange}" @input="${this.handleInput}" aria-describedby="${s(this.getDescribedBy())}" aria-invalid="${s(this.getInvalid())}" autocomplete="${this.autocomplete}">${this.placeholder&&o`<option value="" disabled="disabled" ?selected="${!this.value}">${this.placeholder}</option>`} ${t.map((t=>this.renderOption(t)))}</select><nord-button size="${this.size}" tabindex="-1" ?disabled="${this.disabled}" ?expand="${this.expand}" aria-hidden="true" type="button"><slot slot="start" name="icon"></slot>${e}<nord-icon slot="end" name="interface-dropdown-small"></nord-icon></nord-button></div>${this.renderError()}`}get options(){return Array.from(this.querySelectorAll("option"))}getButtonText(t){const o=t.find((t=>t.value===this.value.toString()));return o?o.text:this.placeholder?this.placeholder:t[0]?t[0].text:""}renderOption(t){return o`<option value="${s(t.value)}" ?disabled="${t.disabled}" .selected="${t.value===this.value.toString()}">${t.text}</option>`}};j.styles=[m,h,x],e([i({reflect:!0,type:Boolean})],j.prototype,"expand",void 0),j=e([r("nord-select")],j);var g=j;export{g as default};
2
2
  //# sourceMappingURL=Select.js.map
package/lib/Tag.js CHANGED
@@ -1,2 +1,2 @@
1
- import{i as o,k as e,_ as n,t as r,h as t}from"./custom-element-CDWT-yC_.js";import{n as a}from"./property-DeTTNf1t.js";import{t as i}from"./if-defined-C2kZHWU2.js";import{K as c}from"./ref-BYkj-TPb.js";import{c as s}from"./interface-checked-small-BtICPEsp.js";import{c as l}from"./interface-close-small-CnpAFMO3.js";import d from"./Icon.js";import{I as v}from"./InputMixin-CV3PG_89.js";import{F as b}from"./FocusableMixin-DriuCNli.js";import{N as p}from"./events-Bv6wNHwJ.js";import{F as h}from"./FormDataController-OUt5L5uC.js";import{LocalizeController as u}from"./LocalizeController.js";import{s as g}from"./Component-BuB0QgQM.js";import"./directive-DQ0jBES2.js";import"./state-BFYKuryf.js";import"./cond-Cuc_PMkN.js";import"./IconManager.js";import"./observe-D0n0zOfU.js";import"./translation.js";import"./en-us.js";import"./localization.js";import"./localization2.js";import"./localization3.js";import"./localization4.js";import"./localization5.js";import"./localization6.js";import"./localization7.js";import"./localization8.js";import"./localization9.js";const m=o`:host{--_n-tag-box-shadow:var(--n-tag-box-shadow, none);--_n-tag-border-radius:var(--n-tag-border-radius, var(--n-border-radius-s));--_n-tag-background-color:var(--n-color-nav-hover);--_n-tag-border-color:var(--n-color-border-neutral);--_n-tag-checkbox-size:var(--n-size-icon-s);--_n-tag-checkbox-accent-color:var(--n-color-accent);--_n-tag-checkbox-border-color:var(--n-color-border-hover);--_n-tag-font-size:var(--n-font-size-m);--_n-tag-inline-size:fit-content;display:inline;vertical-align:middle}.n-tag{border-radius:var(--_n-tag-border-radius);border:1px solid var(--_n-tag-border-color);background:var(--_n-tag-background-color);font-size:var(--_n-tag-font-size);font-family:var(--n-font-family);font-weight:var(--n-font-weight);font-feature-settings:var(--n-font-features);line-height:var(--n-line-height-tight);letter-spacing:0;min-block-size:1.75rem;padding:0 var(--n-space-s);color:var(--n-color-text);gap:calc(var(--n-space-xs) * 1.5);align-items:center;display:inline-flex;white-space:nowrap;position:relative;box-shadow:var(--_n-tag-box-shadow);inline-size:var(--_n-tag-inline-size)}.n-input-container{position:relative}input{appearance:none;background:var(--n-color-active);border:1px solid var(--_n-tag-checkbox-border-color);border-radius:var(--n-border-radius-s);display:block;inline-size:var(--_n-tag-checkbox-size);block-size:var(--_n-tag-checkbox-size);cursor:pointer}.n-content{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}:host([expand]){--_n-tag-inline-size:100%;display:block}:host(:is([variant=selectable],[variant=removable])) .n-tag{--_n-tag-border-color:var(--n-color-border-strong);--_n-tag-box-shadow:var(--n-tag-box-shadow, var(--n-box-shadow))}:host([variant=selectable]) .n-tag:hover{--_n-tag-border-color:var(--n-color-border-hover)}.n-tag:has(input:checked){--_n-tag-background-color:var(--n-color-button)}input:checked{--_n-tag-checkbox-border-color:var(--n-color-accent);background:var(--_n-tag-checkbox-accent-color)}input:focus-visible{outline:0!important}input:focus{outline:0!important}:host([variant=selectable]:focus-within) .n-tag{--_n-tag-border-color:var(--n-color-accent);--_n-tag-box-shadow:var(--n-tag-box-shadow, 0 0 0 1px var(--n-color-accent), var(--n-box-shadow))}:host(:not([disabled])) label:active{opacity:.8;transform:translateY(1px);transition:none}nord-icon.icon-checked{--_n-icon-size:var(--n-size-icon-xxs);display:none;position:absolute;color:var(--n-color-text-on-accent);inset:calc(var(--n-space-xs)/ 2);z-index:var(--n-index-default);pointer-events:none}input:checked~nord-icon.icon-checked{display:block}label{-webkit-user-select:none;user-select:none;cursor:pointer}.n-remove-button{-webkit-appearance:none;appearance:none;cursor:pointer;display:flex;align-items:center;justify-content:center;border:1px solid transparent;color:var(--n-color-text);border-radius:var(--_n-tag-border-radius);background:0 0;margin-block-start:calc(var(--n-space-xs) * -1);margin-block-end:calc(var(--n-space-xs) * -1);margin-inline-start:0;margin-inline-end:calc(var(--n-space-s) * -1);padding:var(--n-space-s)}.n-remove-button nord-icon{--_n-icon-size:var(--n-size-icon-xxs);color:var(--n-color-icon)}.n-remove-button:hover{background:var(--n-color-surface-lowered)}.n-remove-button:hover nord-icon{color:var(--n-color-icon-hover)}.n-remove-button:focus-visible{outline:0!important}.n-remove-button:focus{outline:0!important;border:1px solid var(--n-color-accent);box-shadow:0 0 0 1px var(--n-color-accent)}:host(:not([disabled])) .n-remove-button:active{opacity:.8;transform:translateY(1px);transition:none}:host([disabled]:not([variant=default])) .n-tag{--_n-tag-background-color:var(--n-color-surface-lowered);--_n-tag-border-color:var(--_n-tag-background-color);color:var(--n-color-text-weaker);cursor:default;opacity:.5}:host([disabled]) input{background:var(--_n-tag-checkbox-accent-color);cursor:default;opacity:1}:host([disabled]) input:not(:checked){--_n-tag-checkbox-accent-color:var(--n-color-background);--_n-tag-checkbox-border-color:var(--n-color-border-hover)}:host([disabled]) .n-remove-button{cursor:default}:host([disabled]) .n-remove-button:hover{background:0 0}:host([disabled]) .n-remove-button:hover nord-icon{color:var(--n-color-icon)}:host([disabled]:is([variant=selectable],[variant=removable])) .n-tag{--_n-tag-box-shadow:var(--n-tag-box-shadow, none)}:host([size="s"]) .n-tag{--_n-tag-font-size:var(--n-font-size-s)}`;d.registerIcon(s),d.registerIcon(l);let f=class extends(v(b(t))){constructor(){super(...arguments),this.localize=new u(this),this.formData=new h(this,{value:()=>this.formValue}),this.inputId="input",this.variant="default",this.checked=!1,this.size="m",this.expand=!1}get formValue(){return"selectable"===this.variant&&this.checked?this.value||"on":void 0}handleChange(o){const e=o.target;this.checked=e.checked,o.stopPropagation(),this.dispatchEvent(new p("change"))}handleRemove(){this.dispatchEvent(new p("remove"))}render(){switch(this.variant){case"selectable":return this.renderSelectableTag();case"removable":return this.renderRemovableTag();default:return this.renderStaticTag()}}renderStaticTag(){return e`<div class="n-tag"><div class="n-content"><slot></slot></div></div>`}renderRemovableTag(){return e`<div class="n-tag"><div class="n-content"><slot></slot></div><button class="n-remove-button" @click="${this.handleRemove}" ?disabled="${this.disabled}"><nord-icon name="interface-close-small" label="${this.localize.term("removeLabel")}"></nord-icon></button></div>`}renderSelectableTag(){return e`<label for="${this.inputId}" class="n-tag"><div class="n-input-container"><input ${c(this.focusableRef)} class="n-input" id="${this.inputId}" type="checkbox" name="${i(this.name)}" .value="${this.value}" .checked="${this.checked}" ?disabled="${this.disabled}" @change="${this.handleChange}"><nord-icon class="icon-checked" name="interface-checked-small"></nord-icon></div><div class="n-content"><slot></slot></div></label>`}};f.styles=[g,m],n([a({reflect:!0})],f.prototype,"variant",void 0),n([a({reflect:!0,type:Boolean})],f.prototype,"checked",void 0),n([a({reflect:!0})],f.prototype,"size",void 0),n([a({reflect:!0,type:Boolean})],f.prototype,"expand",void 0),f=n([r("nord-tag")],f);var x=f;export{x as default};
1
+ import{i as o,k as e,_ as n,t as r,h as t}from"./custom-element-CDWT-yC_.js";import{n as a}from"./property-DeTTNf1t.js";import{t as i}from"./if-defined-C2kZHWU2.js";import{K as c}from"./ref-BYkj-TPb.js";import{c as s}from"./interface-checked-small-BtICPEsp.js";import{c as l}from"./interface-close-small-CnpAFMO3.js";import d from"./Icon.js";import{I as v}from"./InputMixin-B-nPfhjc.js";import{F as b}from"./FocusableMixin-DriuCNli.js";import{N as p}from"./events-Bv6wNHwJ.js";import{F as h}from"./FormDataController-OUt5L5uC.js";import{LocalizeController as u}from"./LocalizeController.js";import{s as g}from"./Component-BuB0QgQM.js";import"./directive-DQ0jBES2.js";import"./state-BFYKuryf.js";import"./cond-Cuc_PMkN.js";import"./IconManager.js";import"./observe-D0n0zOfU.js";import"./translation.js";import"./en-us.js";import"./localization.js";import"./localization2.js";import"./localization3.js";import"./localization4.js";import"./localization5.js";import"./localization6.js";import"./localization7.js";import"./localization8.js";import"./localization9.js";const m=o`:host{--_n-tag-box-shadow:var(--n-tag-box-shadow, none);--_n-tag-border-radius:var(--n-tag-border-radius, var(--n-border-radius-s));--_n-tag-background-color:var(--n-color-nav-hover);--_n-tag-border-color:var(--n-color-border-neutral);--_n-tag-checkbox-size:var(--n-size-icon-s);--_n-tag-checkbox-accent-color:var(--n-color-accent);--_n-tag-checkbox-border-color:var(--n-color-border-hover);--_n-tag-font-size:var(--n-font-size-m);--_n-tag-inline-size:fit-content;display:inline;vertical-align:middle}.n-tag{border-radius:var(--_n-tag-border-radius);border:1px solid var(--_n-tag-border-color);background:var(--_n-tag-background-color);font-size:var(--_n-tag-font-size);font-family:var(--n-font-family);font-weight:var(--n-font-weight);font-feature-settings:var(--n-font-features);line-height:var(--n-line-height-tight);letter-spacing:0;min-block-size:1.75rem;padding:0 var(--n-space-s);color:var(--n-color-text);gap:calc(var(--n-space-xs) * 1.5);align-items:center;display:inline-flex;white-space:nowrap;position:relative;box-shadow:var(--_n-tag-box-shadow);inline-size:var(--_n-tag-inline-size)}.n-input-container{position:relative}input{appearance:none;background:var(--n-color-active);border:1px solid var(--_n-tag-checkbox-border-color);border-radius:var(--n-border-radius-s);display:block;inline-size:var(--_n-tag-checkbox-size);block-size:var(--_n-tag-checkbox-size);cursor:pointer}.n-content{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}:host([expand]){--_n-tag-inline-size:100%;display:block}:host(:is([variant=selectable],[variant=removable])) .n-tag{--_n-tag-border-color:var(--n-color-border-strong);--_n-tag-box-shadow:var(--n-tag-box-shadow, var(--n-box-shadow))}:host([variant=selectable]) .n-tag:hover{--_n-tag-border-color:var(--n-color-border-hover)}.n-tag:has(input:checked){--_n-tag-background-color:var(--n-color-button)}input:checked{--_n-tag-checkbox-border-color:var(--n-color-accent);background:var(--_n-tag-checkbox-accent-color)}input:focus-visible{outline:0!important}input:focus{outline:0!important}:host([variant=selectable]:focus-within) .n-tag{--_n-tag-border-color:var(--n-color-accent);--_n-tag-box-shadow:var(--n-tag-box-shadow, 0 0 0 1px var(--n-color-accent), var(--n-box-shadow))}:host(:not([disabled])) label:active{opacity:.8;transform:translateY(1px);transition:none}nord-icon.icon-checked{--_n-icon-size:var(--n-size-icon-xxs);display:none;position:absolute;color:var(--n-color-text-on-accent);inset:calc(var(--n-space-xs)/ 2);z-index:var(--n-index-default);pointer-events:none}input:checked~nord-icon.icon-checked{display:block}label{-webkit-user-select:none;user-select:none;cursor:pointer}.n-remove-button{-webkit-appearance:none;appearance:none;cursor:pointer;display:flex;align-items:center;justify-content:center;border:1px solid transparent;color:var(--n-color-text);border-radius:var(--_n-tag-border-radius);background:0 0;margin-block-start:calc(var(--n-space-xs) * -1);margin-block-end:calc(var(--n-space-xs) * -1);margin-inline-start:0;margin-inline-end:calc(var(--n-space-s) * -1);padding:var(--n-space-s)}.n-remove-button nord-icon{--_n-icon-size:var(--n-size-icon-xxs);color:var(--n-color-icon)}.n-remove-button:hover{background:var(--n-color-surface-lowered)}.n-remove-button:hover nord-icon{color:var(--n-color-icon-hover)}.n-remove-button:focus-visible{outline:0!important}.n-remove-button:focus{outline:0!important;border:1px solid var(--n-color-accent);box-shadow:0 0 0 1px var(--n-color-accent)}:host(:not([disabled])) .n-remove-button:active{opacity:.8;transform:translateY(1px);transition:none}:host([disabled]:not([variant=default])) .n-tag{--_n-tag-background-color:var(--n-color-surface-lowered);--_n-tag-border-color:var(--_n-tag-background-color);color:var(--n-color-text-weaker);cursor:default;opacity:.5}:host([disabled]) input{background:var(--_n-tag-checkbox-accent-color);cursor:default;opacity:1}:host([disabled]) input:not(:checked){--_n-tag-checkbox-accent-color:var(--n-color-background);--_n-tag-checkbox-border-color:var(--n-color-border-hover)}:host([disabled]) .n-remove-button{cursor:default}:host([disabled]) .n-remove-button:hover{background:0 0}:host([disabled]) .n-remove-button:hover nord-icon{color:var(--n-color-icon)}:host([disabled]:is([variant=selectable],[variant=removable])) .n-tag{--_n-tag-box-shadow:var(--n-tag-box-shadow, none)}:host([size="s"]) .n-tag{--_n-tag-font-size:var(--n-font-size-s)}`;d.registerIcon(s),d.registerIcon(l);let f=class extends(v(b(t))){constructor(){super(...arguments),this.localize=new u(this),this.formData=new h(this,{value:()=>this.formValue}),this.inputId="input",this.variant="default",this.checked=!1,this.size="m",this.expand=!1}get formValue(){return"selectable"===this.variant&&this.checked?this.value||"on":void 0}handleChange(o){const e=o.target;this.checked=e.checked,o.stopPropagation(),this.dispatchEvent(new p("change"))}handleRemove(){this.dispatchEvent(new p("remove"))}render(){switch(this.variant){case"selectable":return this.renderSelectableTag();case"removable":return this.renderRemovableTag();default:return this.renderStaticTag()}}renderStaticTag(){return e`<div class="n-tag"><div class="n-content"><slot></slot></div></div>`}renderRemovableTag(){return e`<div class="n-tag"><div class="n-content"><slot></slot></div><button class="n-remove-button" @click="${this.handleRemove}" ?disabled="${this.disabled}"><nord-icon name="interface-close-small" label="${this.localize.term("removeLabel")}"></nord-icon></button></div>`}renderSelectableTag(){return e`<label for="${this.inputId}" class="n-tag"><div class="n-input-container"><input ${c(this.focusableRef)} class="n-input" id="${this.inputId}" type="checkbox" name="${i(this.name)}" .value="${this.value}" .checked="${this.checked}" ?disabled="${this.disabled}" @change="${this.handleChange}"><nord-icon class="icon-checked" name="interface-checked-small"></nord-icon></div><div class="n-content"><slot></slot></div></label>`}};f.styles=[g,m],n([a({reflect:!0})],f.prototype,"variant",void 0),n([a({reflect:!0,type:Boolean})],f.prototype,"checked",void 0),n([a({reflect:!0})],f.prototype,"size",void 0),n([a({reflect:!0,type:Boolean})],f.prototype,"expand",void 0),f=n([r("nord-tag")],f);var x=f;export{x as default};
2
2
  //# sourceMappingURL=Tag.js.map
package/lib/Textarea.js CHANGED
@@ -1,2 +1,2 @@
1
- import{i as e,k as t,D as r,_ as o,t as n,h as a}from"./custom-element-CDWT-yC_.js";import{n as i}from"./property-DeTTNf1t.js";import{t as l}from"./if-defined-C2kZHWU2.js";import{K as s}from"./ref-BYkj-TPb.js";import{o as c}from"./observe-D0n0zOfU.js";import{F as p}from"./FocusableMixin-DriuCNli.js";import{F as d}from"./FormAssociatedMixin-DXVeQVgN.js";import{I as u}from"./InputMixin-CV3PG_89.js";import{R as h,s as m}from"./TextField-CmHW8rL5.js";import{A as v}from"./AutocompleteMixin-Dk_gVU09.js";import{S as b}from"./SizeMixin-DW6qUBEN.js";import{T as x}from"./TextSelectableMixin-B_mtmFv0.js";import{s as g}from"./Component-BuB0QgQM.js";import{s as f}from"./FormField-Cl7HHI9A.js";import{LocalizeController as z}from"./LocalizeController.js";import{N as j}from"./events-Bv6wNHwJ.js";import"./directive-DQ0jBES2.js";import"./FormDataController-OUt5L5uC.js";import"./SlotController-BL-tOh6b.js";import"./EventController-BG-WpaBb.js";import"./VisuallyHidden.js";import"./translation.js";import"./en-us.js";import"./localization.js";import"./localization2.js";import"./localization3.js";import"./localization4.js";import"./localization5.js";import"./localization6.js";import"./localization7.js";import"./localization8.js";import"./localization9.js";const y=e`:host{--_n-textarea-inline-size:var(--n-textarea-inline-size, 240px);--_n-textarea-block-size:var(--n-textarea-block-size, 76px);--_n-input-background:var(--n-textarea-background, var(--n-color-active));--_n-input-color:var(--n-textarea-color, var(--n-color-text));--_n-input-border-color:var(--n-textarea-border-color, var(--n-color-border-strong));--_n-input-border-radius:var(--n-textarea-border-radius, var(--n-border-radius-s))}.n-input-container{position:relative;inline-size:var(--_n-textarea-inline-size)}.n-input{min-block-size:var(--_n-textarea-block-size);transition:border var(--n-transition-slowly),box-shadow var(--n-transition-slowly),background var(--n-transition-slowly);display:block;resize:vertical}:host([resize=auto]) .n-input{resize:none;overflow:hidden}:host([expand]){--_n-textarea-inline-size:100%}.n-character-counter{margin-block-start:var(--n-space-xs);font-size:var(--n-font-size-s);color:var(--n-color-text-weaker)}.n-input:hover,.n-label-container:hover+.n-input-container .n-input{--_n-input-border-color:var(--n-textarea-border-color, var(--n-color-border-hover))}.n-input:focus{--_n-input-border-color:var(--n-textarea-border-color, var(--n-color-accent));--_n-input-background:var(--n-textarea-background, var(--n-color-surface))}.n-input[aria-invalid=true]{--_n-input-border-color:var(--n-textarea-border-color, var(--n-color-status-danger))!important}.n-input:disabled,.n-input[readonly],.n-label-container:hover+.n-input-container .n-input:disabled,.n-label-container:hover+.n-input-container .n-input[readonly]{--_n-input-border-color:var(--n-textarea-border-color, var(--n-color-active));--_n-input-color:var(--n-textarea-color, var(--n-color-text-weakest))}.n-input[readonly],.n-label-container:hover+.n-input-container .n-input[readonly]{--_n-input-color:var(--n-textarea-color, var(--n-color-text-weak))}.n-input[readonly]:focus{--_n-input-border-color:var(--n-textarea-border-color, var(--n-color-accent))}`;let $=class extends(b(d(v(h(x(u(p(a)))))))){constructor(){super(...arguments),this.inputId="textarea",this.localize=new z(this,{onLangChange:()=>this.handleLangChange()}),this.resize="vertical",this.expand=!1,this.characterCounter=!1}render(){var e;return t`${this.renderLabel()}<div class="n-input-container"><textarea ${s(this.textSelectableRef)} ${s(this.focusableRef)} id="${this.inputId}" class="n-input" ?disabled="${this.disabled}" ?readonly="${this.readonly}" ?required="${this.required}" name="${l(this.name)}" maxlength="${l(this.maxLength)}" .value="${null!==(e=this.value)&&void 0!==e?e:""}" placeholder="${l(this.placeholder)}" @change="${this.handleChange}" @input="${this.handleInput}" @select="${this.handleSelect}" aria-describedby="${l(this.getDescribedBy())}" aria-invalid="${l(this.getInvalid())}" autocomplete="${this.autocomplete}"></textarea> ${this.characterCounter?this.renderCharacterCounter():r}</div>${this.renderError()}`}handleSelect(e){e.stopPropagation(),this.dispatchEvent(new j("select"))}renderCharacterCounter(){const{value:e,maxLength:r}=this,o="string"==typeof e?this.lengthMeasurer(e):0,n=r?r-o:null,a=r?`${o}/${r}`:o;return t`<nord-visually-hidden aria-live="polite" aria-atomic="true">${null!=n&&n<=10?this.localize.term("remainingCharacters",n):""}</nord-visually-hidden><div class="n-character-counter">${a}</div>`}handleLangChange(){const e=this.localize.resolvedLang;this.lengthMeasurer=function(e){if(Intl.Segmenter){const t=new Intl.Segmenter(e);return e=>[...t.segment(e)].length}return e=>e.length}(e)}resizeToFitContent(){const e=this.focusableRef.value;e&&("auto"===this.resize?(e.style.height="auto",e.style.height=`${e.scrollHeight}px`):e.style.height="")}};$.styles=[g,f,m,y],o([i({reflect:!0})],$.prototype,"resize",void 0),o([i({reflect:!0,type:Boolean})],$.prototype,"expand",void 0),o([i({reflect:!0,attribute:"maxlength",type:Number})],$.prototype,"maxLength",void 0),o([i({reflect:!0,type:Boolean,attribute:"character-counter"})],$.prototype,"characterCounter",void 0),o([c("resize","updated"),c("value","updated")],$.prototype,"resizeToFitContent",null),$=o([n("nord-textarea")],$);var C=$;export{C as default};
1
+ import{i as e,k as t,D as r,_ as o,t as n,h as a}from"./custom-element-CDWT-yC_.js";import{n as i}from"./property-DeTTNf1t.js";import{t as l}from"./if-defined-C2kZHWU2.js";import{K as s}from"./ref-BYkj-TPb.js";import{o as c}from"./observe-D0n0zOfU.js";import{F as p}from"./FocusableMixin-DriuCNli.js";import{F as d}from"./FormAssociatedMixin-DXVeQVgN.js";import{I as u}from"./InputMixin-B-nPfhjc.js";import{R as h,s as m}from"./TextField-CmHW8rL5.js";import{A as v}from"./AutocompleteMixin-Dk_gVU09.js";import{S as b}from"./SizeMixin-DW6qUBEN.js";import{T as x}from"./TextSelectableMixin-B_mtmFv0.js";import{s as g}from"./Component-BuB0QgQM.js";import{s as f}from"./FormField-Cl7HHI9A.js";import{LocalizeController as z}from"./LocalizeController.js";import{N as j}from"./events-Bv6wNHwJ.js";import"./directive-DQ0jBES2.js";import"./FormDataController-OUt5L5uC.js";import"./SlotController-BL-tOh6b.js";import"./EventController-BG-WpaBb.js";import"./VisuallyHidden.js";import"./translation.js";import"./en-us.js";import"./localization.js";import"./localization2.js";import"./localization3.js";import"./localization4.js";import"./localization5.js";import"./localization6.js";import"./localization7.js";import"./localization8.js";import"./localization9.js";const y=e`:host{--_n-textarea-inline-size:var(--n-textarea-inline-size, 240px);--_n-textarea-block-size:var(--n-textarea-block-size, 76px);--_n-input-background:var(--n-textarea-background, var(--n-color-active));--_n-input-color:var(--n-textarea-color, var(--n-color-text));--_n-input-border-color:var(--n-textarea-border-color, var(--n-color-border-strong));--_n-input-border-radius:var(--n-textarea-border-radius, var(--n-border-radius-s))}.n-input-container{position:relative;inline-size:var(--_n-textarea-inline-size)}.n-input{min-block-size:var(--_n-textarea-block-size);transition:border var(--n-transition-slowly),box-shadow var(--n-transition-slowly),background var(--n-transition-slowly);display:block;resize:vertical}:host([resize=auto]) .n-input{resize:none;overflow:hidden}:host([expand]){--_n-textarea-inline-size:100%}.n-character-counter{margin-block-start:var(--n-space-xs);font-size:var(--n-font-size-s);color:var(--n-color-text-weaker)}.n-input:hover,.n-label-container:hover+.n-input-container .n-input{--_n-input-border-color:var(--n-textarea-border-color, var(--n-color-border-hover))}.n-input:focus{--_n-input-border-color:var(--n-textarea-border-color, var(--n-color-accent));--_n-input-background:var(--n-textarea-background, var(--n-color-surface))}.n-input[aria-invalid=true]{--_n-input-border-color:var(--n-textarea-border-color, var(--n-color-status-danger))!important}.n-input:disabled,.n-input[readonly],.n-label-container:hover+.n-input-container .n-input:disabled,.n-label-container:hover+.n-input-container .n-input[readonly]{--_n-input-border-color:var(--n-textarea-border-color, var(--n-color-active));--_n-input-color:var(--n-textarea-color, var(--n-color-text-weakest))}.n-input[readonly],.n-label-container:hover+.n-input-container .n-input[readonly]{--_n-input-color:var(--n-textarea-color, var(--n-color-text-weak))}.n-input[readonly]:focus{--_n-input-border-color:var(--n-textarea-border-color, var(--n-color-accent))}`;let $=class extends(b(d(v(h(x(u(p(a)))))))){constructor(){super(...arguments),this.inputId="textarea",this.localize=new z(this,{onLangChange:()=>this.handleLangChange()}),this.resize="vertical",this.expand=!1,this.characterCounter=!1}render(){var e;return t`${this.renderLabel()}<div class="n-input-container"><textarea ${s(this.textSelectableRef)} ${s(this.focusableRef)} id="${this.inputId}" class="n-input" ?disabled="${this.disabled}" ?readonly="${this.readonly}" ?required="${this.required}" name="${l(this.name)}" maxlength="${l(this.maxLength)}" .value="${null!==(e=this.value)&&void 0!==e?e:""}" placeholder="${l(this.placeholder)}" @change="${this.handleChange}" @input="${this.handleInput}" @select="${this.handleSelect}" aria-describedby="${l(this.getDescribedBy())}" aria-invalid="${l(this.getInvalid())}" autocomplete="${this.autocomplete}"></textarea> ${this.characterCounter?this.renderCharacterCounter():r}</div>${this.renderError()}`}handleSelect(e){e.stopPropagation(),this.dispatchEvent(new j("select"))}renderCharacterCounter(){const{value:e,maxLength:r}=this,o="string"==typeof e?this.lengthMeasurer(e):0,n=r?r-o:null,a=r?`${o}/${r}`:o;return t`<nord-visually-hidden aria-live="polite" aria-atomic="true">${null!=n&&n<=10?this.localize.term("remainingCharacters",n):""}</nord-visually-hidden><div class="n-character-counter">${a}</div>`}handleLangChange(){const e=this.localize.resolvedLang;this.lengthMeasurer=function(e){if(Intl.Segmenter){const t=new Intl.Segmenter(e);return e=>[...t.segment(e)].length}return e=>e.length}(e)}resizeToFitContent(){const e=this.focusableRef.value;e&&("auto"===this.resize?(e.style.height="auto",e.style.height=`${e.scrollHeight}px`):e.style.height="")}};$.styles=[g,f,m,y],o([i({reflect:!0})],$.prototype,"resize",void 0),o([i({reflect:!0,type:Boolean})],$.prototype,"expand",void 0),o([i({reflect:!0,attribute:"maxlength",type:Number})],$.prototype,"maxLength",void 0),o([i({reflect:!0,type:Boolean,attribute:"character-counter"})],$.prototype,"characterCounter",void 0),o([c("resize","updated"),c("value","updated")],$.prototype,"resizeToFitContent",null),$=o([n("nord-textarea")],$);var C=$;export{C as default};
2
2
  //# sourceMappingURL=Textarea.js.map
package/lib/Toggle.js CHANGED
@@ -1,2 +1,2 @@
1
- import{i as e,k as n,_ as r,t,h as i}from"./custom-element-CDWT-yC_.js";import{n as o}from"./property-DeTTNf1t.js";import{t as s}from"./if-defined-C2kZHWU2.js";import{K as a}from"./ref-BYkj-TPb.js";import{F as l}from"./FocusableMixin-DriuCNli.js";import{F as c}from"./FormAssociatedMixin-DXVeQVgN.js";import{I as d}from"./InputMixin-CV3PG_89.js";import{s as g}from"./Component-BuB0QgQM.js";import{s as p}from"./FormField-Cl7HHI9A.js";import"./directive-DQ0jBES2.js";import"./FormDataController-OUt5L5uC.js";import"./SlotController-BL-tOh6b.js";import"./EventController-BG-WpaBb.js";import"./events-Bv6wNHwJ.js";import"./VisuallyHidden.js";const h=e`:host{--_n-toggle-block-size:calc(var(--_n-toggle-inline-size) / 1.6);--_n-toggle-inline-size:3.2143em;--_n-toggle-thumb-margin:0.35em;display:inline-block;font-size:var(--n-font-size-m)}.n-flex{display:flex}.n-expand{flex:1;display:flex;justify-content:center;align-items:flex-start;flex-direction:column;min-block-size:100%}.n-input-container{position:relative}.n-toggle{-webkit-appearance:none;appearance:none;display:inline-flex;align-items:center;inline-size:var(--_n-toggle-inline-size);block-size:var(--_n-toggle-block-size);border-radius:var(--n-border-radius-pill);background:var(--_n-toggle-background,var(--n-color-border-strong));cursor:pointer;transition:background var(--n-transition-slowly);font-size:var(--_n-toggle-size,var(--n-font-size-m))}.n-toggle::before{content:"";display:block;aspect-ratio:1/1;block-size:calc(100% - 2 * var(--_n-toggle-thumb-margin));background:var(--n-color-text-on-accent);border-radius:var(--n-border-radius-circle);transition:margin;transition-duration:inherit;margin-inline-start:var(--_n-toggle-thumb-margin);box-shadow:var(--n-box-shadow)}input:checked{--_n-toggle-background:var(--n-color-accent)}input:checked::before{margin-inline-start:calc(var(--_n-toggle-inline-size) - var(--_n-toggle-block-size) + var(--_n-toggle-thumb-margin))}input:checked[aria-invalid]{--_n-toggle-background:var(--n-color-status-danger)}input:focus{outline:0;box-shadow:0 0 0 1px var(--n-color-surface),0 0 0 3px var(--n-color-accent)}:host([disabled]) label{color:var(--n-color-text-weaker);cursor:default}:host([disabled]) input{cursor:default}:host([disabled]) input:not(:checked){--_n-toggle-background:var(--n-color-border-neutral)}:host([disabled]) input:checked{opacity:.3}.n-label-container{margin-block-end:0}label{-webkit-user-select:none;user-select:none;font-weight:var(--n-font-weight)!important;line-height:var(--n-line-height-l);padding-inline-start:var(--n-space-s);cursor:pointer}.n-hint{padding-inline-start:var(--n-space-s)}.n-error{margin-block-start:var(--n-space-xs);padding-inline-start:var(--n-space-s)}:host([reverse]) .n-error,:host([reverse]) .n-hint,:host([reverse]) label{padding-inline-start:0;padding-inline-end:var(--n-space-s)}:host([size="s"]) .n-toggle{--_n-toggle-size:var(--n-font-size-xs)}:host([size="l"]) .n-toggle{--_n-toggle-size:var(--n-font-size-xl)}`;let v=class extends(c(d(l(i)))){constructor(){super(...arguments),this.checked=!1,this.reverse=!1,this.size="m"}get formValue(){return this.checked?this.value||"on":void 0}render(){const e=n`<div class="n-expand">${this.renderLabel()} ${this.renderError()}</div>`,r=n`<div class="n-input-container"><input ${a(this.focusableRef)} class="n-toggle" id="${this.inputId}" type="checkbox" role="switch" name="${s(this.name)}" .value="${this.value}" .checked="${this.checked}" ?disabled="${this.disabled}" ?required="${this.required}" aria-describedby="${s(this.getDescribedBy())}" aria-invalid="${s(this.getInvalid())}" @change="${this.handleChange}"></div>`;return n`<div class="n-flex">${this.reverse?[e,r]:[r,e]}</div>`}handleChange(e){const n=e.target;this.checked=n.checked,super.handleChange(e)}};v.styles=[g,p,h],r([o({reflect:!0,type:Boolean})],v.prototype,"checked",void 0),r([o({reflect:!0,type:Boolean})],v.prototype,"reverse",void 0),r([o({reflect:!0})],v.prototype,"size",void 0),v=r([t("nord-toggle")],v);var u=v;export{u as default};
1
+ import{i as e,k as n,_ as r,t,h as i}from"./custom-element-CDWT-yC_.js";import{n as o}from"./property-DeTTNf1t.js";import{t as s}from"./if-defined-C2kZHWU2.js";import{K as a}from"./ref-BYkj-TPb.js";import{F as l}from"./FocusableMixin-DriuCNli.js";import{F as c}from"./FormAssociatedMixin-DXVeQVgN.js";import{I as d}from"./InputMixin-B-nPfhjc.js";import{s as g}from"./Component-BuB0QgQM.js";import{s as p}from"./FormField-Cl7HHI9A.js";import"./directive-DQ0jBES2.js";import"./FormDataController-OUt5L5uC.js";import"./SlotController-BL-tOh6b.js";import"./EventController-BG-WpaBb.js";import"./events-Bv6wNHwJ.js";import"./VisuallyHidden.js";const h=e`:host{--_n-toggle-block-size:calc(var(--_n-toggle-inline-size) / 1.6);--_n-toggle-inline-size:3.2143em;--_n-toggle-thumb-margin:0.35em;display:inline-block;font-size:var(--n-font-size-m)}.n-flex{display:flex}.n-expand{flex:1;display:flex;justify-content:center;align-items:flex-start;flex-direction:column;min-block-size:100%}.n-input-container{position:relative}.n-toggle{-webkit-appearance:none;appearance:none;display:inline-flex;align-items:center;inline-size:var(--_n-toggle-inline-size);block-size:var(--_n-toggle-block-size);border-radius:var(--n-border-radius-pill);background:var(--_n-toggle-background,var(--n-color-border-strong));cursor:pointer;transition:background var(--n-transition-slowly);font-size:var(--_n-toggle-size,var(--n-font-size-m))}.n-toggle::before{content:"";display:block;aspect-ratio:1/1;block-size:calc(100% - 2 * var(--_n-toggle-thumb-margin));background:var(--n-color-text-on-accent);border-radius:var(--n-border-radius-circle);transition:margin;transition-duration:inherit;margin-inline-start:var(--_n-toggle-thumb-margin);box-shadow:var(--n-box-shadow)}input:checked{--_n-toggle-background:var(--n-color-accent)}input:checked::before{margin-inline-start:calc(var(--_n-toggle-inline-size) - var(--_n-toggle-block-size) + var(--_n-toggle-thumb-margin))}input:checked[aria-invalid]{--_n-toggle-background:var(--n-color-status-danger)}input:focus{outline:0;box-shadow:0 0 0 1px var(--n-color-surface),0 0 0 3px var(--n-color-accent)}:host([disabled]) label{color:var(--n-color-text-weaker);cursor:default}:host([disabled]) input{cursor:default}:host([disabled]) input:not(:checked){--_n-toggle-background:var(--n-color-border-neutral)}:host([disabled]) input:checked{opacity:.3}.n-label-container{margin-block-end:0}label{-webkit-user-select:none;user-select:none;font-weight:var(--n-font-weight)!important;line-height:var(--n-line-height-l);padding-inline-start:var(--n-space-s);cursor:pointer}.n-hint{padding-inline-start:var(--n-space-s)}.n-error{margin-block-start:var(--n-space-xs);padding-inline-start:var(--n-space-s)}:host([reverse]) .n-error,:host([reverse]) .n-hint,:host([reverse]) label{padding-inline-start:0;padding-inline-end:var(--n-space-s)}:host([size="s"]) .n-toggle{--_n-toggle-size:var(--n-font-size-xs)}:host([size="l"]) .n-toggle{--_n-toggle-size:var(--n-font-size-xl)}`;let v=class extends(c(d(l(i)))){constructor(){super(...arguments),this.checked=!1,this.reverse=!1,this.size="m"}get formValue(){return this.checked?this.value||"on":void 0}render(){const e=n`<div class="n-expand">${this.renderLabel()} ${this.renderError()}</div>`,r=n`<div class="n-input-container"><input ${a(this.focusableRef)} class="n-toggle" id="${this.inputId}" type="checkbox" role="switch" name="${s(this.name)}" .value="${this.value}" .checked="${this.checked}" ?disabled="${this.disabled}" ?required="${this.required}" aria-describedby="${s(this.getDescribedBy())}" aria-invalid="${s(this.getInvalid())}" @change="${this.handleChange}"></div>`;return n`<div class="n-flex">${this.reverse?[e,r]:[r,e]}</div>`}handleChange(e){const n=e.target;this.checked=n.checked,super.handleChange(e)}};v.styles=[g,p,h],r([o({reflect:!0,type:Boolean})],v.prototype,"checked",void 0),r([o({reflect:!0,type:Boolean})],v.prototype,"reverse",void 0),r([o({reflect:!0})],v.prototype,"size",void 0),v=r([t("nord-toggle")],v);var u=v;export{u as default};
2
2
  //# sourceMappingURL=Toggle.js.map
package/lib/Tooltip.js CHANGED
@@ -1,2 +1,2 @@
1
- import{i as t,_ as i,h as e,k as s,t as o}from"./custom-element-CDWT-yC_.js";import{n}from"./property-DeTTNf1t.js";import{r}from"./state-BFYKuryf.js";import{c as a,l,o as d,f as h,s as p}from"./positioning-C9skJeM8.js";import{S as c}from"./SlotController-BL-tOh6b.js";import{s as u}from"./Component-BuB0QgQM.js";import{E as v}from"./EventController-BG-WpaBb.js";import{f as m}from"./fsm-Bq5jMQrK.js";import{o as y}from"./observe-D0n0zOfU.js";function b(t,i){const e=t.getAttribute(i);return e?e.split(/\s+/):[]}function f(t,i,e){t.setAttribute(i,e.join(" "))}const g=t`:host{--_n-tooltip-max-size:var(--n-tooltip-max-size, 50ch);--_n-tooltip-background:rgba(20, 20, 20, 0.95);--_n-tooltip-color:#fff;--_n-tooltip-key-border:rgba(255, 255, 255, 0.03);--_n-tooltip-key-background:rgba(255, 255, 255, 0.1);position:fixed;pointer-events:none;visibility:hidden;opacity:0;transition:opacity var(--n-transition-slowly),visibility var(--n-transition-slowly);transition-timing-function:ease;z-index:var(--n-index-popout)}.n-tooltip{gap:var(--n-space-s);font-family:var(--n-font-family);font-size:var(--n-font-size-xs);line-height:var(--n-line-height);color:var(--_n-tooltip-color);padding:calc(var(--n-space-s)/ 1.5) var(--n-space-s);background-color:var(--_n-tooltip-background);border-radius:var(--n-border-radius-s);word-break:break-word;max-inline-size:var(--_n-tooltip-max-size)}.n-tooltip,.n-tooltip-shortcut{display:flex;align-items:center}.n-tooltip-shortcut{gap:2px}::slotted([slot=shortcut]){box-sizing:border-box;margin:0;inline-size:var(--n-size-icon-m);block-size:var(--n-size-icon-m);border-radius:var(--n-border-radius-s);border:1px solid var(--_n-tooltip-key-border)!important;padding:1px!important;text-align:center;font-size:var(--n-font-size-xs);line-height:var(--n-line-height-tight);letter-spacing:-.5px;vertical-align:middle!important;background-color:var(--_n-tooltip-key-background)}[slot=shortcut]::slotted(nord-icon:not([size])){--_n-icon-size:var(--n-size-icon-s)}`;var x;function k(t,i){return Boolean(i.id)&&t.nodeType===Node.ELEMENT_NODE&&t.getAttribute("aria-describedby")===i.id}function w(t){var i;const e=null===(i=null==t?void 0:t.focusableRef)||void 0===i?void 0:i.value;return e&&"focusableRef"in e?w(e):e}const{transition:E}=m({hidden:{show:"waiting"},visible:{hide:"hidden",reposition:"positioning",show:"positioning"},waiting:{timeout:"positioning",hide:"hidden"},positioning:{positioned:"visible",hide:"hidden"}});let z=x=class extends e{constructor(){super(...arguments),this.shortcutSlot=new c(this,"shortcut"),this.events=new v(this),this.proxy=document.createElement("span"),this.state="hidden",this.coords=[0,0],this.position="block-start",this.role="tooltip",this.id="",this.delay=500,this.updatePosition=t=>a(t,this,{strategy:"fixed",placement:l(this.position),middleware:[d(8),h(),p({padding:8})]}).then((({x:t,y:i})=>{this.coords=[t,i],this.state=E(this.state,"positioned")})),this.hideTooltip=()=>{this.state=E(this.state,"hide")},this.reposition=()=>{this.state=E(this.state,"reposition")},this.handleShow=t=>{const i=t.target;k(i,this)&&(this.currentElement=i,this.state=E(this.state,"show"))},this.handleHide=t=>{t.target===this.currentElement&&this.hideTooltip()},this.hideOnEscape=t=>{"Escape"===t.key&&this.hideTooltip()},this.addDescribedBy=()=>{const t=w(this.currentElement);t&&(this.proxy.hidden=!0,this.proxy.id=this.id,this.proxy.textContent=this.textContent,t.insertAdjacentElement("afterend",this.proxy),function(t,i,e){const s=b(t,i);s.includes(e)||f(t,i,s.concat(e))}(t,"aria-describedby",this.id))},this.removeDescribedBy=()=>{const t=w(this.currentElement);t&&(this.proxy.remove(),function(t,i,e){const s=b(t,i);s.includes(e)&&f(t,i,s.filter((t=>t!==e)))}(t,"aria-describedby",this.id))}}connectedCallback(){super.connectedCallback();const t=this.getRootNode();this.events.listen(t,"keydown",this.hideOnEscape),this.events.listen(t,"mouseover",this.handleShow),this.events.listen(t,"focusin",this.handleShow),this.events.listen(t,"mouseout",this.handleHide),this.events.listen(t,"focusout",this.handleHide),this.events.listen(t,"click",this.handleHide,{capture:!0}),this.events.listen(window,"resize",this.reposition,{passive:!0}),this.events.listen(window,"scroll",this.reposition,{passive:!0})}render(){return s`<div class="n-tooltip"><slot></slot><div class="n-tooltip-shortcut" ?hidden="${this.shortcutSlot.isEmpty}"><slot class="n-tooltip-key" name="shortcut"></slot></div></div>`}handleIdChange(){this.id||console.warn("NORD: The tooltip requires an id attribute and value")}handleStateChange(t){var i;switch(this.state){case"hidden":"waiting"===t&&this.timeoutId&&clearTimeout(this.timeoutId),this.removeDescribedBy(),this.currentElement=void 0,this.style.visibility="hidden",this.style.opacity="0";break;case"visible":{this.timeoutId=void 0,x.lastOpened=this,this.addDescribedBy();const[t,i]=this.coords;this.style.left=`${t}px`,this.style.top=`${i}px`,this.style.visibility="visible",this.style.opacity="1";break}case"waiting":this.timeoutId=setTimeout((()=>{this.state=E(this.state,"timeout")}),this.delay);break;case"positioning":x.lastOpened!==this&&(null===(i=x.lastOpened)||void 0===i||i.hideTooltip()),this.currentElement&&this.updatePosition(this.currentElement)}}};z.styles=[u,g],i([r()],z.prototype,"state",void 0),i([n({reflect:!0})],z.prototype,"position",void 0),i([n({reflect:!0})],z.prototype,"role",void 0),i([n({reflect:!0})],z.prototype,"id",void 0),i([n({reflect:!0,type:Number})],z.prototype,"delay",void 0),i([y("id")],z.prototype,"handleIdChange",null),i([y("state")],z.prototype,"handleStateChange",null),z=x=i([o("nord-tooltip")],z);var _=z;export{_ as default};
1
+ import{i as t,_ as i,h as e,k as s,t as o}from"./custom-element-CDWT-yC_.js";import{n}from"./property-DeTTNf1t.js";import{r}from"./state-BFYKuryf.js";import{c as a,l,o as d,f as h,s as p}from"./positioning-CHP-_dKQ.js";import{S as c}from"./SlotController-BL-tOh6b.js";import{s as u}from"./Component-BuB0QgQM.js";import{E as v}from"./EventController-BG-WpaBb.js";import{f as m}from"./fsm-Bq5jMQrK.js";import{o as y}from"./observe-D0n0zOfU.js";function b(t,i){const e=t.getAttribute(i);return e?e.split(/\s+/):[]}function f(t,i,e){t.setAttribute(i,e.join(" "))}const g=t`:host{--_n-tooltip-max-size:var(--n-tooltip-max-size, 50ch);--_n-tooltip-background:rgba(20, 20, 20, 0.95);--_n-tooltip-color:#fff;--_n-tooltip-key-border:rgba(255, 255, 255, 0.03);--_n-tooltip-key-background:rgba(255, 255, 255, 0.1);position:fixed;pointer-events:none;visibility:hidden;opacity:0;transition:opacity var(--n-transition-slowly),visibility var(--n-transition-slowly);transition-timing-function:ease;z-index:var(--n-index-popout)}.n-tooltip{gap:var(--n-space-s);font-family:var(--n-font-family);font-size:var(--n-font-size-xs);line-height:var(--n-line-height);color:var(--_n-tooltip-color);padding:calc(var(--n-space-s)/ 1.5) var(--n-space-s);background-color:var(--_n-tooltip-background);border-radius:var(--n-border-radius-s);word-break:break-word;max-inline-size:var(--_n-tooltip-max-size)}.n-tooltip,.n-tooltip-shortcut{display:flex;align-items:center}.n-tooltip-shortcut{gap:2px}::slotted([slot=shortcut]){box-sizing:border-box;margin:0;inline-size:var(--n-size-icon-m);block-size:var(--n-size-icon-m);border-radius:var(--n-border-radius-s);border:1px solid var(--_n-tooltip-key-border)!important;padding:1px!important;text-align:center;font-size:var(--n-font-size-xs);line-height:var(--n-line-height-tight);letter-spacing:-.5px;vertical-align:middle!important;background-color:var(--_n-tooltip-key-background)}[slot=shortcut]::slotted(nord-icon:not([size])){--_n-icon-size:var(--n-size-icon-s)}`;var x;function k(t,i){return Boolean(i.id)&&t.nodeType===Node.ELEMENT_NODE&&t.getAttribute("aria-describedby")===i.id}function w(t){var i;const e=null===(i=null==t?void 0:t.focusableRef)||void 0===i?void 0:i.value;return e&&"focusableRef"in e?w(e):e}const{transition:E}=m({hidden:{show:"waiting"},visible:{hide:"hidden",reposition:"positioning",show:"positioning"},waiting:{timeout:"positioning",hide:"hidden"},positioning:{positioned:"visible",hide:"hidden"}});let z=x=class extends e{constructor(){super(...arguments),this.shortcutSlot=new c(this,"shortcut"),this.events=new v(this),this.proxy=document.createElement("span"),this.state="hidden",this.coords=[0,0],this.position="block-start",this.role="tooltip",this.id="",this.delay=500,this.updatePosition=t=>a(t,this,{strategy:"fixed",placement:l(this.position),middleware:[d(8),h(),p({padding:8})]}).then((({x:t,y:i})=>{this.coords=[t,i],this.state=E(this.state,"positioned")})),this.hideTooltip=()=>{this.state=E(this.state,"hide")},this.reposition=()=>{this.state=E(this.state,"reposition")},this.handleShow=t=>{const i=t.target;k(i,this)&&(this.currentElement=i,this.state=E(this.state,"show"))},this.handleHide=t=>{t.target===this.currentElement&&this.hideTooltip()},this.hideOnEscape=t=>{"Escape"===t.key&&this.hideTooltip()},this.addDescribedBy=()=>{const t=w(this.currentElement);t&&(this.proxy.hidden=!0,this.proxy.id=this.id,this.proxy.textContent=this.textContent,t.insertAdjacentElement("afterend",this.proxy),function(t,i,e){const s=b(t,i);s.includes(e)||f(t,i,s.concat(e))}(t,"aria-describedby",this.id))},this.removeDescribedBy=()=>{const t=w(this.currentElement);t&&(this.proxy.remove(),function(t,i,e){const s=b(t,i);s.includes(e)&&f(t,i,s.filter((t=>t!==e)))}(t,"aria-describedby",this.id))}}connectedCallback(){super.connectedCallback();const t=this.getRootNode();this.events.listen(t,"keydown",this.hideOnEscape),this.events.listen(t,"mouseover",this.handleShow),this.events.listen(t,"focusin",this.handleShow),this.events.listen(t,"mouseout",this.handleHide),this.events.listen(t,"focusout",this.handleHide),this.events.listen(t,"click",this.handleHide,{capture:!0}),this.events.listen(window,"resize",this.reposition,{passive:!0}),this.events.listen(window,"scroll",this.reposition,{passive:!0})}render(){return s`<div class="n-tooltip"><slot></slot><div class="n-tooltip-shortcut" ?hidden="${this.shortcutSlot.isEmpty}"><slot class="n-tooltip-key" name="shortcut"></slot></div></div>`}handleIdChange(){this.id||console.warn("NORD: The tooltip requires an id attribute and value")}handleStateChange(t){var i;switch(this.state){case"hidden":"waiting"===t&&this.timeoutId&&clearTimeout(this.timeoutId),this.removeDescribedBy(),this.currentElement=void 0,this.style.visibility="hidden",this.style.opacity="0";break;case"visible":{this.timeoutId=void 0,x.lastOpened=this,this.addDescribedBy();const[t,i]=this.coords;this.style.left=`${t}px`,this.style.top=`${i}px`,this.style.visibility="visible",this.style.opacity="1";break}case"waiting":this.timeoutId=setTimeout((()=>{this.state=E(this.state,"timeout")}),this.delay);break;case"positioning":x.lastOpened!==this&&(null===(i=x.lastOpened)||void 0===i||i.hideTooltip()),this.currentElement&&this.updatePosition(this.currentElement)}}};z.styles=[u,g],i([r()],z.prototype,"state",void 0),i([n({reflect:!0})],z.prototype,"position",void 0),i([n({reflect:!0})],z.prototype,"role",void 0),i([n({reflect:!0})],z.prototype,"id",void 0),i([n({reflect:!0,type:Number})],z.prototype,"delay",void 0),i([y("id")],z.prototype,"handleIdChange",null),i([y("state")],z.prototype,"handleStateChange",null),z=x=i([o("nord-tooltip")],z);var _=z;export{_ as default};
2
2
  //# sourceMappingURL=Tooltip.js.map