@f-ewald/components 1.2.0 → 1.3.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.
- package/README.md +15 -2
- package/custom-elements.json +1020 -76
- package/dist/action-bar.d.ts +24 -0
- package/dist/action-bar.d.ts.map +1 -0
- package/dist/action-bar.js +67 -0
- package/dist/action-bar.js.map +1 -0
- package/dist/app-shell.d.ts +86 -0
- package/dist/app-shell.d.ts.map +1 -0
- package/dist/app-shell.js +460 -0
- package/dist/app-shell.js.map +1 -0
- package/dist/app-sidebar.d.ts +44 -0
- package/dist/app-sidebar.d.ts.map +1 -0
- package/dist/app-sidebar.js +211 -0
- package/dist/app-sidebar.js.map +1 -0
- package/dist/form-actions.d.ts +27 -0
- package/dist/form-actions.d.ts.map +1 -0
- package/dist/form-actions.js +65 -0
- package/dist/form-actions.js.map +1 -0
- package/dist/icons.d.ts +1 -0
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +1 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.js +82 -5
- package/dist/mcp-server.js.map +1 -1
- package/dist/page-header.d.ts +27 -0
- package/dist/page-header.d.ts.map +1 -0
- package/dist/page-header.js +106 -0
- package/dist/page-header.js.map +1 -0
- package/dist/pagination-nav.d.ts +34 -0
- package/dist/pagination-nav.d.ts.map +1 -0
- package/dist/pagination-nav.js +144 -0
- package/dist/pagination-nav.js.map +1 -0
- package/dist/popover-panel.js +1 -1
- package/dist/popover-panel.js.map +1 -1
- package/dist/timeline-container.d.ts +22 -0
- package/dist/timeline-container.d.ts.map +1 -0
- package/dist/timeline-container.js +42 -0
- package/dist/timeline-container.js.map +1 -0
- package/dist/timeline-entry.d.ts +31 -0
- package/dist/timeline-entry.d.ts.map +1 -0
- package/dist/timeline-entry.js +170 -0
- package/dist/timeline-entry.js.map +1 -0
- package/docs/action-bar.md +41 -0
- package/docs/app-shell.md +85 -0
- package/docs/app-sidebar.md +69 -0
- package/docs/design-language.md +74 -1
- package/docs/form-actions.md +43 -0
- package/docs/layouts/detail-only.md +52 -0
- package/docs/layouts/form-page.md +52 -0
- package/docs/layouts/list-detail.md +52 -0
- package/docs/layouts/list-only.md +50 -0
- package/docs/layouts/record-detail.md +88 -0
- package/docs/mcp-evaluation.md +21 -0
- package/docs/page-header.md +47 -0
- package/docs/pagination-nav.md +54 -0
- package/docs/timeline-container.md +44 -0
- package/docs/timeline-entry.md +52 -0
- package/llms.txt +229 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-shell.js","sourceRoot":"","sources":["../src/app-shell.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, css, html, nothing, type PropertyValues } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { iconBars3 } from \"./icons.js\";\nimport \"./kbd-hint.js\";\nimport { tokens } from \"./tokens.js\";\n\n/** Fired when the built-in toggle changes the sidebar state. */\nexport interface SidebarToggleDetail {\n /** Desktop rail state. */\n collapsed: boolean;\n /** Mobile drawer open state. */\n mobileOpen: boolean;\n}\n\n/**\n * The dashboard page shell: a slot-based CSS-grid backbone that arranges a\n * full-height sidebar, a top bar, the main content, an optional right-hand\n * detail column, and an optional footer. It owns the responsive behavior so\n * consumers don't re-implement it — above the shared 48rem breakpoint the\n * sidebar collapses to an icon rail and the detail region is an inline column;\n * at or below it the sidebar becomes an off-canvas drawer and the detail region\n * an overlay, both dismissed by a scrim or Escape.\n *\n * Widths are tunable per instance via `--component-sidebar-width` (16rem),\n * `--component-sidebar-rail-width` (3.5rem), and `--component-topbar-height`\n * (3rem); the detail column reuses the 20rem/25rem panel widths. The main\n * content area is white by default — override it with\n * `--component-main-background`. Give the shell a height (e.g. `height: 100vh`)\n * so the sidebar and main can size and scroll.\n *\n * The built-in top-bar button toggles the sidebar, and so does pressing `[`\n * anywhere on the page (ignored while typing in a text field or with a\n * modifier held). Hovering or keyboard-focusing the toggle reveals a tooltip\n * naming the action and its `[` shortcut — the shortcut is not shown as\n * permanent chrome.\n *\n * @element app-shell\n * @slot - Main content area.\n * @slot sidebar - Full-height navigation (typically `app-sidebar`).\n * @slot topbar - Top bar content, right of the built-in toggle.\n * @slot detail - Optional right-hand detail; shown when `detail-open` is set.\n * @slot footer - Optional footer beneath the main content.\n * @fires sidebar-toggle - The built-in toggle changed the sidebar state.\n * @fires detail-close - The scrim or Escape dismissed the mobile detail overlay.\n */\n@customElement(\"app-shell\")\nexport class AppShell extends LitElement {\n /** Collapses the sidebar to an icon rail on desktop. */\n @property({ type: Boolean, reflect: true, attribute: \"sidebar-collapsed\" })\n sidebarCollapsed = false;\n /** Shows the right-hand detail region (inline column, or overlay on mobile). */\n @property({ type: Boolean, reflect: true, attribute: \"detail-open\" }) detailOpen = false;\n /** Detail width: `compact` (20rem) or `comfortable` (25rem). */\n @property({ attribute: \"detail-width\" }) detailWidth: \"compact\" | \"comfortable\" = \"compact\";\n\n /** Whether the viewport is at/below the 48rem breakpoint. */\n @state() private _mobile = false;\n /** Whether the mobile off-canvas nav drawer is open. */\n @state() private _mobileNavOpen = false;\n /** Whether the footer slot has assigned content. */\n @state() private _hasFooter = false;\n\n static override styles = [\n tokens,\n css`\n :host {\n display: block;\n block-size: 100%;\n }\n .shell {\n --_sidebar-w: var(--component-sidebar-width, 16rem);\n --_detail-w: 0px;\n display: grid;\n grid-template-columns: var(--_sidebar-w) minmax(0, 1fr) var(--_detail-w);\n grid-template-rows: auto minmax(0, 1fr) auto;\n grid-template-areas:\n \"sidebar topbar topbar\"\n \"sidebar main detail\"\n \"sidebar footer footer\";\n block-size: 100%;\n min-height: 0;\n background: var(--ui-surface, #ffffff);\n }\n :host([sidebar-collapsed]) .shell {\n --_sidebar-w: var(--component-sidebar-rail-width, 3.5rem);\n }\n :host([detail-open]) .shell {\n --_detail-w: 20rem;\n }\n :host([detail-open][detail-width=\"comfortable\"]) .shell {\n --_detail-w: 25rem;\n }\n .sidebar {\n grid-area: sidebar;\n min-height: 0;\n overflow: hidden;\n border-right: 1px solid var(--ui-border, #e2e8f0);\n background: var(--ui-surface, #ffffff);\n }\n .topbar {\n grid-area: topbar;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n min-height: var(--component-topbar-height, 3rem);\n padding: 0.5rem 0.75rem;\n border-bottom: 1px solid var(--ui-border, #e2e8f0);\n background: var(--ui-surface, #ffffff);\n }\n .nav-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n width: 2rem;\n height: 2rem;\n padding: 0;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--ui-text-muted, #64748b);\n border-radius: var(--ui-radius-sm, 0.25rem);\n }\n .nav-group {\n position: relative;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n flex: 0 0 auto;\n }\n .nav-tip {\n position: absolute;\n top: 100%;\n left: 0;\n margin-top: 0.25rem;\n z-index: var(--component-layer-z, 100);\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n white-space: nowrap;\n padding: 0.25rem 0.5rem;\n border-radius: var(--ui-radius-sm, 0.25rem);\n background: var(--ui-tooltip, #0f172a);\n color: var(--ui-on-accent, #ffffff);\n box-shadow: var(--ui-shadow, 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1));\n font-size: var(--ui-font-size-sm, 0.75rem);\n line-height: var(--ui-line-height-tight, 1.25);\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n transition: opacity 120ms ease;\n }\n .nav-toggle:hover + .nav-tip,\n .nav-toggle:focus-visible + .nav-tip {\n opacity: 1;\n visibility: visible;\n }\n .nav-toggle:hover {\n background: var(--ui-surface-muted, #f8fafc);\n }\n .nav-toggle:focus-visible {\n outline: none;\n box-shadow: var(--ui-focus-ring, 0 0 0 3px rgb(79 70 229 / 0.35));\n }\n .topbar-content {\n flex: 1 1 auto;\n min-width: 0;\n }\n .main {\n grid-area: main;\n min-height: 0;\n min-width: 0;\n overflow: auto;\n padding: 1rem;\n background: var(--component-main-background, var(--ui-surface, #ffffff));\n }\n .detail {\n grid-area: detail;\n display: none;\n min-height: 0;\n overflow: auto;\n border-left: 1px solid var(--ui-border, #e2e8f0);\n background: var(--ui-surface, #ffffff);\n }\n :host([detail-open]) .detail {\n display: block;\n }\n .footer {\n grid-area: footer;\n padding: 0.5rem 0.75rem;\n border-top: 1px solid var(--ui-border, #e2e8f0);\n background: var(--ui-surface, #ffffff);\n }\n .footer.empty {\n display: none;\n }\n .scrim {\n display: none;\n }\n @media (max-width: 48rem) {\n .shell {\n grid-template-columns: minmax(0, 1fr);\n grid-template-rows: auto minmax(0, 1fr) auto;\n grid-template-areas:\n \"topbar\"\n \"main\"\n \"footer\";\n }\n .sidebar {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n width: var(--component-sidebar-width, 16rem);\n z-index: var(--component-layer-z, 100);\n transform: translateX(-100%);\n transition: transform 250ms ease;\n }\n .shell.nav-open .sidebar {\n transform: translateX(0);\n box-shadow: var(\n --ui-shadow-lg,\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1)\n );\n }\n .detail {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: var(--_detail-w, 20rem);\n max-width: calc(100vw - 3rem);\n z-index: var(--component-layer-z, 100);\n transform: translateX(110%);\n transition: transform 250ms ease;\n }\n :host([detail-open]) .detail {\n transform: translateX(0);\n box-shadow: var(\n --ui-shadow-lg,\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1)\n );\n }\n .scrim.show {\n display: block;\n position: fixed;\n inset: 0;\n z-index: calc(var(--component-layer-z, 100) - 1);\n background: var(--ui-overlay, rgb(15 23 42 / 0.45));\n border: none;\n }\n }\n @media (prefers-reduced-motion: reduce) {\n .sidebar,\n .detail,\n .nav-tip {\n transition: none;\n }\n }\n @media (forced-colors: active) {\n .nav-toggle:focus-visible {\n outline: 2px solid CanvasText;\n outline-offset: 2px;\n box-shadow: none;\n }\n .nav-tip {\n border: 1px solid CanvasText;\n }\n }\n `,\n ];\n\n private _mediaQuery: MediaQueryList | null = null;\n private _previousFocus: HTMLElement | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._mediaQuery = window.matchMedia(\"(max-width: 48rem)\");\n this._mobile = this._mediaQuery.matches;\n this._mediaQuery.addEventListener(\"change\", this._onMediaChange);\n window.addEventListener(\"keydown\", this._onKeydown);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._mediaQuery?.removeEventListener(\"change\", this._onMediaChange);\n this._mediaQuery = null;\n window.removeEventListener(\"keydown\", this._onKeydown);\n }\n\n /** Tracks the breakpoint and closes the mobile drawer when returning to desktop. */\n private _onMediaChange = (event: MediaQueryListEvent): void => {\n this._mobile = event.matches;\n if (!event.matches) this._mobileNavOpen = false;\n };\n\n /** Handles the `[` sidebar shortcut and Escape dismissal of mobile overlays. */\n private _onKeydown = (event: KeyboardEvent): void => {\n if (event.defaultPrevented) return;\n if (event.key === \"Escape\" && this._mobile) {\n if (this.detailOpen) {\n event.preventDefault();\n this._closeDetail();\n } else if (this._mobileNavOpen) {\n event.preventDefault();\n this._mobileNavOpen = false;\n }\n return;\n }\n if (\n event.key === \"[\" &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n !this._isEditableTarget(event)\n ) {\n event.preventDefault();\n this._toggleSidebar();\n }\n };\n\n /** Whether the keydown originated in a text field, so the shortcut defers to typing. */\n private _isEditableTarget(event: KeyboardEvent): boolean {\n const target = event.composedPath()[0] as HTMLElement | undefined;\n if (!target) return false;\n if (target.isContentEditable) return true;\n const tag = target.tagName;\n return tag === \"INPUT\" || tag === \"TEXTAREA\" || tag === \"SELECT\";\n }\n\n /** Toggles the rail (desktop) or the off-canvas drawer (mobile) and announces it. */\n private _toggleSidebar(): void {\n if (this._mobile) {\n this._mobileNavOpen = !this._mobileNavOpen;\n if (this._mobileNavOpen) this._previousFocus = document.activeElement as HTMLElement | null;\n } else {\n this.sidebarCollapsed = !this.sidebarCollapsed;\n }\n this.dispatchEvent(\n new CustomEvent<SidebarToggleDetail>(\"sidebar-toggle\", {\n detail: { collapsed: this.sidebarCollapsed, mobileOpen: this._mobileNavOpen },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n /** Closes the detail overlay and notifies the consumer that owns `detail-open`. */\n private _closeDetail(): void {\n this.detailOpen = false;\n this.dispatchEvent(new CustomEvent(\"detail-close\", { bubbles: true, composed: true }));\n }\n\n /** Scrim click dismisses whichever overlay is open. */\n private _onScrim(): void {\n if (this.detailOpen) this._closeDetail();\n if (this._mobileNavOpen) this._mobileNavOpen = false;\n }\n\n protected override updated(changed: PropertyValues): void {\n if (changed.has(\"sidebarCollapsed\") || changed.has(\"_mobile\")) this._syncSidebar();\n if (!changed.has(\"_mobileNavOpen\")) return;\n if (this._mobileNavOpen) {\n this.shadowRoot?.querySelector<HTMLElement>(\".sidebar\")?.focus();\n return;\n }\n if (this._previousFocus?.isConnected) this._previousFocus.focus();\n this._previousFocus = null;\n }\n\n /**\n * Mirrors the shell's rail state onto the slotted sidebar so it hides labels\n * when collapsed on desktop, and always shows them in the mobile drawer.\n */\n private _syncSidebar(): void {\n const rail = this.sidebarCollapsed && !this._mobile;\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot[name=\"sidebar\"]');\n for (const element of slot?.assignedElements() ?? []) {\n element.toggleAttribute(\"collapsed\", rail);\n }\n }\n\n override render() {\n const scrimActive = this._mobile && (this._mobileNavOpen || this.detailOpen);\n return html`\n <div class=\"shell ${this._mobileNavOpen ? \"nav-open\" : \"\"}\">\n <aside class=\"sidebar\" tabindex=\"-1\" aria-label=\"Primary\">\n <slot name=\"sidebar\" @slotchange=${this._syncSidebar}></slot>\n </aside>\n <header class=\"topbar\">\n <div class=\"nav-group\">\n <button\n class=\"nav-toggle\"\n type=\"button\"\n aria-label=\"Toggle navigation\"\n aria-keyshortcuts=\"[\"\n aria-describedby=\"nav-tip\"\n aria-expanded=${this._mobile ? String(this._mobileNavOpen) : String(!this.sidebarCollapsed)}\n @click=${this._toggleSidebar}\n >\n ${iconBars3(18)}\n </button>\n <span class=\"nav-tip\" id=\"nav-tip\" role=\"tooltip\">\n <span\n >${this._mobile\n ? \"Navigation\"\n : this.sidebarCollapsed\n ? \"Expand sidebar\"\n : \"Collapse sidebar\"}</span\n >\n ${this._mobile ? nothing : html`<kbd-hint keys=\"[\"></kbd-hint>`}\n </span>\n </div>\n <div class=\"topbar-content\"><slot name=\"topbar\"></slot></div>\n </header>\n <main class=\"main\"><slot></slot></main>\n <aside\n class=\"detail\"\n aria-label=\"Detail\"\n ?inert=${!this.detailOpen}\n aria-hidden=${String(!this.detailOpen)}\n >\n <slot name=\"detail\"></slot>\n </aside>\n <footer class=\"footer ${this._hasFooter ? \"\" : \"empty\"}\">\n <slot name=\"footer\" @slotchange=${this._onFooterSlotChange}></slot>\n </footer>\n <button\n class=\"scrim ${scrimActive ? \"show\" : \"\"}\"\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Close\"\n @click=${this._onScrim}\n ?hidden=${!scrimActive}\n ></button>\n </div>\n `;\n }\n\n /** Collapses the footer row when nothing is slotted into it. */\n private _onFooterSlotChange(event: Event): void {\n this._hasFooter = (event.target as HTMLSlotElement).assignedNodes({ flatten: true }).length > 0;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"app-shell\": AppShell;\n }\n}\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
/**
|
|
3
|
+
* Collapsible navigation sidebar for the `app-shell` sidebar slot. It is
|
|
4
|
+
* deliberately presentational and router-agnostic: the consumer supplies the
|
|
5
|
+
* nav items as plain `<a>`/`<button>` elements (each an icon followed by a
|
|
6
|
+
* label), optional `<p>` group headings, and marks the active item with
|
|
7
|
+
* `aria-current="page"`. The sidebar styles them, tracks hover/active/focus,
|
|
8
|
+
* and — in collapsed "rail" mode — centers the icons and hides the labels.
|
|
9
|
+
*
|
|
10
|
+
* Rail mode is driven by the `collapsed` attribute (the parent `app-shell`
|
|
11
|
+
* toggles it). Labels are hidden by the inherited `--app-sidebar-label` custom
|
|
12
|
+
* property, so each label element should read it, e.g.
|
|
13
|
+
* `<span style="display: var(--app-sidebar-label, inline)">Reports</span>`;
|
|
14
|
+
* keep an `aria-label` on the item so its accessible name survives collapse.
|
|
15
|
+
* The sidebar fills the width and height of its container — `app-shell` owns
|
|
16
|
+
* the actual rail/expanded width.
|
|
17
|
+
*
|
|
18
|
+
* @element app-sidebar
|
|
19
|
+
* @slot - Navigation items: `<a>`/`<button>` links and optional `<p>` headings.
|
|
20
|
+
* @slot header - Optional brand pinned to the top: a small logo plus a name.
|
|
21
|
+
* Wrap the name in a `--app-sidebar-label` element so rail mode shows only the
|
|
22
|
+
* logo, centered in line with the nav icons.
|
|
23
|
+
* @slot footer - Optional account/settings area pinned to the bottom.
|
|
24
|
+
*/
|
|
25
|
+
export declare class AppSidebar extends LitElement {
|
|
26
|
+
/** Collapses the sidebar to an icon rail (centers icons, hides labels). */
|
|
27
|
+
collapsed: boolean;
|
|
28
|
+
/** Whether the header slot has assigned content. */
|
|
29
|
+
private _hasHeader;
|
|
30
|
+
/** Whether the footer slot has assigned content. */
|
|
31
|
+
private _hasFooter;
|
|
32
|
+
static styles: import("lit").CSSResult[];
|
|
33
|
+
/** Collapses the header row when nothing is slotted into it. */
|
|
34
|
+
private _onHeaderSlotChange;
|
|
35
|
+
/** Collapses the footer row when nothing is slotted into it. */
|
|
36
|
+
private _onFooterSlotChange;
|
|
37
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
38
|
+
}
|
|
39
|
+
declare global {
|
|
40
|
+
interface HTMLElementTagNameMap {
|
|
41
|
+
"app-sidebar": AppSidebar;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=app-sidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-sidebar.d.ts","sourceRoot":"","sources":["../src/app-sidebar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,2EAA2E;IAC/B,SAAS,UAAS;IAE9D,oDAAoD;IAC3C,OAAO,CAAC,UAAU,CAAS;IACpC,oDAAoD;IAC3C,OAAO,CAAC,UAAU,CAAS;IAEpC,OAAgB,MAAM,4BAkIpB;IAEF,gEAAgE;IAChE,OAAO,CAAC,mBAAmB;IAI3B,gEAAgE;IAChE,OAAO,CAAC,mBAAmB;IAIlB,MAAM,yCAcd;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, css, html } from "lit";
|
|
8
|
+
import { customElement, property, state } from "lit/decorators.js";
|
|
9
|
+
import { tokens } from "./tokens.js";
|
|
10
|
+
/**
|
|
11
|
+
* Collapsible navigation sidebar for the `app-shell` sidebar slot. It is
|
|
12
|
+
* deliberately presentational and router-agnostic: the consumer supplies the
|
|
13
|
+
* nav items as plain `<a>`/`<button>` elements (each an icon followed by a
|
|
14
|
+
* label), optional `<p>` group headings, and marks the active item with
|
|
15
|
+
* `aria-current="page"`. The sidebar styles them, tracks hover/active/focus,
|
|
16
|
+
* and — in collapsed "rail" mode — centers the icons and hides the labels.
|
|
17
|
+
*
|
|
18
|
+
* Rail mode is driven by the `collapsed` attribute (the parent `app-shell`
|
|
19
|
+
* toggles it). Labels are hidden by the inherited `--app-sidebar-label` custom
|
|
20
|
+
* property, so each label element should read it, e.g.
|
|
21
|
+
* `<span style="display: var(--app-sidebar-label, inline)">Reports</span>`;
|
|
22
|
+
* keep an `aria-label` on the item so its accessible name survives collapse.
|
|
23
|
+
* The sidebar fills the width and height of its container — `app-shell` owns
|
|
24
|
+
* the actual rail/expanded width.
|
|
25
|
+
*
|
|
26
|
+
* @element app-sidebar
|
|
27
|
+
* @slot - Navigation items: `<a>`/`<button>` links and optional `<p>` headings.
|
|
28
|
+
* @slot header - Optional brand pinned to the top: a small logo plus a name.
|
|
29
|
+
* Wrap the name in a `--app-sidebar-label` element so rail mode shows only the
|
|
30
|
+
* logo, centered in line with the nav icons.
|
|
31
|
+
* @slot footer - Optional account/settings area pinned to the bottom.
|
|
32
|
+
*/
|
|
33
|
+
let AppSidebar = class AppSidebar extends LitElement {
|
|
34
|
+
constructor() {
|
|
35
|
+
super(...arguments);
|
|
36
|
+
/** Collapses the sidebar to an icon rail (centers icons, hides labels). */
|
|
37
|
+
this.collapsed = false;
|
|
38
|
+
/** Whether the header slot has assigned content. */
|
|
39
|
+
this._hasHeader = false;
|
|
40
|
+
/** Whether the footer slot has assigned content. */
|
|
41
|
+
this._hasFooter = false;
|
|
42
|
+
}
|
|
43
|
+
static { this.styles = [
|
|
44
|
+
tokens,
|
|
45
|
+
css `
|
|
46
|
+
:host {
|
|
47
|
+
display: block;
|
|
48
|
+
height: 100%;
|
|
49
|
+
--app-sidebar-label: inline;
|
|
50
|
+
}
|
|
51
|
+
:host([collapsed]) {
|
|
52
|
+
--app-sidebar-label: none;
|
|
53
|
+
}
|
|
54
|
+
.sidebar {
|
|
55
|
+
display: flex;
|
|
56
|
+
flex-direction: column;
|
|
57
|
+
height: 100%;
|
|
58
|
+
min-height: 0;
|
|
59
|
+
background: var(--ui-surface, #ffffff);
|
|
60
|
+
color: var(--ui-text, #0f172a);
|
|
61
|
+
font-family: var(
|
|
62
|
+
--ui-font,
|
|
63
|
+
ui-sans-serif,
|
|
64
|
+
system-ui,
|
|
65
|
+
sans-serif,
|
|
66
|
+
"Apple Color Emoji",
|
|
67
|
+
"Segoe UI Emoji",
|
|
68
|
+
"Segoe UI Symbol",
|
|
69
|
+
"Noto Color Emoji"
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
.brand {
|
|
73
|
+
flex: 0 0 auto;
|
|
74
|
+
display: flex;
|
|
75
|
+
align-items: center;
|
|
76
|
+
padding: 0.75rem;
|
|
77
|
+
border-bottom: 1px solid var(--ui-border, #e2e8f0);
|
|
78
|
+
}
|
|
79
|
+
.foot {
|
|
80
|
+
flex: 0 0 auto;
|
|
81
|
+
padding: 0.75rem;
|
|
82
|
+
border-top: 1px solid var(--ui-border, #e2e8f0);
|
|
83
|
+
}
|
|
84
|
+
.brand.empty,
|
|
85
|
+
.foot.empty {
|
|
86
|
+
display: none;
|
|
87
|
+
}
|
|
88
|
+
.nav {
|
|
89
|
+
flex: 1 1 auto;
|
|
90
|
+
min-height: 0;
|
|
91
|
+
overflow-y: auto;
|
|
92
|
+
display: flex;
|
|
93
|
+
flex-direction: column;
|
|
94
|
+
gap: 0.25rem;
|
|
95
|
+
padding: 0.5rem;
|
|
96
|
+
}
|
|
97
|
+
::slotted(a),
|
|
98
|
+
::slotted(button) {
|
|
99
|
+
display: flex;
|
|
100
|
+
align-items: center;
|
|
101
|
+
gap: 0.5rem;
|
|
102
|
+
width: 100%;
|
|
103
|
+
box-sizing: border-box;
|
|
104
|
+
padding: 0.5rem;
|
|
105
|
+
border: none;
|
|
106
|
+
border-radius: var(--ui-radius-sm, 0.25rem);
|
|
107
|
+
background: none;
|
|
108
|
+
color: var(--ui-text, #0f172a);
|
|
109
|
+
text-align: left;
|
|
110
|
+
text-decoration: none;
|
|
111
|
+
white-space: nowrap;
|
|
112
|
+
cursor: pointer;
|
|
113
|
+
font-size: var(--ui-font-size-sm, 0.75rem);
|
|
114
|
+
font-weight: var(--ui-font-weight-medium, 500);
|
|
115
|
+
line-height: var(--ui-line-height-tight, 1.25);
|
|
116
|
+
font-family: var(
|
|
117
|
+
--ui-font,
|
|
118
|
+
ui-sans-serif,
|
|
119
|
+
system-ui,
|
|
120
|
+
sans-serif,
|
|
121
|
+
"Apple Color Emoji",
|
|
122
|
+
"Segoe UI Emoji",
|
|
123
|
+
"Segoe UI Symbol",
|
|
124
|
+
"Noto Color Emoji"
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
::slotted(a:hover),
|
|
128
|
+
::slotted(button:hover) {
|
|
129
|
+
background: var(--ui-surface-muted, #f8fafc);
|
|
130
|
+
}
|
|
131
|
+
::slotted(a[aria-current]),
|
|
132
|
+
::slotted(button[aria-current]) {
|
|
133
|
+
background: var(--ui-surface-muted, #f8fafc);
|
|
134
|
+
color: var(--ui-primary, #4f46e5);
|
|
135
|
+
font-weight: var(--ui-font-weight-semibold, 600);
|
|
136
|
+
}
|
|
137
|
+
::slotted(a:focus-visible),
|
|
138
|
+
::slotted(button:focus-visible) {
|
|
139
|
+
outline: none;
|
|
140
|
+
box-shadow: var(--ui-focus-ring, 0 0 0 3px rgb(79 70 229 / 0.35));
|
|
141
|
+
}
|
|
142
|
+
::slotted(p) {
|
|
143
|
+
margin: 0;
|
|
144
|
+
padding: 0.5rem 0.5rem 0.25rem;
|
|
145
|
+
font-size: var(--ui-font-size-xs, 0.6875rem);
|
|
146
|
+
font-weight: var(--ui-font-weight-semibold, 600);
|
|
147
|
+
line-height: var(--ui-line-height-tight, 1.25);
|
|
148
|
+
text-transform: uppercase;
|
|
149
|
+
letter-spacing: var(--ui-tracking-wide, 0.04em);
|
|
150
|
+
color: var(--ui-text-muted, #64748b);
|
|
151
|
+
}
|
|
152
|
+
:host([collapsed]) ::slotted(a),
|
|
153
|
+
:host([collapsed]) ::slotted(button) {
|
|
154
|
+
justify-content: center;
|
|
155
|
+
}
|
|
156
|
+
:host([collapsed]) ::slotted(p) {
|
|
157
|
+
display: none;
|
|
158
|
+
}
|
|
159
|
+
:host([collapsed]) .brand {
|
|
160
|
+
justify-content: center;
|
|
161
|
+
padding-left: 0.5rem;
|
|
162
|
+
padding-right: 0.5rem;
|
|
163
|
+
}
|
|
164
|
+
@media (forced-colors: active) {
|
|
165
|
+
::slotted(a:focus-visible),
|
|
166
|
+
::slotted(button:focus-visible) {
|
|
167
|
+
outline: 2px solid CanvasText;
|
|
168
|
+
outline-offset: 2px;
|
|
169
|
+
box-shadow: none;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
`,
|
|
173
|
+
]; }
|
|
174
|
+
/** Collapses the header row when nothing is slotted into it. */
|
|
175
|
+
_onHeaderSlotChange(event) {
|
|
176
|
+
this._hasHeader = event.target.assignedNodes({ flatten: true }).length > 0;
|
|
177
|
+
}
|
|
178
|
+
/** Collapses the footer row when nothing is slotted into it. */
|
|
179
|
+
_onFooterSlotChange(event) {
|
|
180
|
+
this._hasFooter = event.target.assignedNodes({ flatten: true }).length > 0;
|
|
181
|
+
}
|
|
182
|
+
render() {
|
|
183
|
+
return html `
|
|
184
|
+
<div class="sidebar">
|
|
185
|
+
<div class="brand ${this._hasHeader ? "" : "empty"}">
|
|
186
|
+
<slot name="header" @slotchange=${this._onHeaderSlotChange}></slot>
|
|
187
|
+
</div>
|
|
188
|
+
<nav class="nav" aria-label="Sidebar">
|
|
189
|
+
<slot></slot>
|
|
190
|
+
</nav>
|
|
191
|
+
<div class="foot ${this._hasFooter ? "" : "empty"}">
|
|
192
|
+
<slot name="footer" @slotchange=${this._onFooterSlotChange}></slot>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
`;
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
__decorate([
|
|
199
|
+
property({ type: Boolean, reflect: true })
|
|
200
|
+
], AppSidebar.prototype, "collapsed", void 0);
|
|
201
|
+
__decorate([
|
|
202
|
+
state()
|
|
203
|
+
], AppSidebar.prototype, "_hasHeader", void 0);
|
|
204
|
+
__decorate([
|
|
205
|
+
state()
|
|
206
|
+
], AppSidebar.prototype, "_hasFooter", void 0);
|
|
207
|
+
AppSidebar = __decorate([
|
|
208
|
+
customElement("app-sidebar")
|
|
209
|
+
], AppSidebar);
|
|
210
|
+
export { AppSidebar };
|
|
211
|
+
//# sourceMappingURL=app-sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-sidebar.js","sourceRoot":"","sources":["../src/app-sidebar.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAAnC;;QACL,2EAA2E;QAC/B,cAAS,GAAG,KAAK,CAAC;QAE9D,oDAAoD;QACnC,eAAU,GAAG,KAAK,CAAC;QACpC,oDAAoD;QACnC,eAAU,GAAG,KAAK,CAAC;IA+JtC,CAAC;aA7JiB,WAAM,GAAG;QACvB,MAAM;QACN,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+HF;KACF,AAlIqB,CAkIpB;IAEF,gEAAgE;IACxD,mBAAmB,CAAC,KAAY;QACtC,IAAI,CAAC,UAAU,GAAI,KAAK,CAAC,MAA0B,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAClG,CAAC;IAED,gEAAgE;IACxD,mBAAmB,CAAC,KAAY;QACtC,IAAI,CAAC,UAAU,GAAI,KAAK,CAAC,MAA0B,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAClG,CAAC;IAEQ,MAAM;QACb,OAAO,IAAI,CAAA;;4BAEa,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;4CACd,IAAI,CAAC,mBAAmB;;;;;2BAKzC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;4CACb,IAAI,CAAC,mBAAmB;;;KAG/D,CAAC;IACJ,CAAC;CACF,CAAA;AApK6C;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CAAmB;AAG7C;IAAhB,KAAK,EAAE;8CAA4B;AAEnB;IAAhB,KAAK,EAAE;8CAA4B;AAPzB,UAAU;IADtB,aAAa,CAAC,aAAa,CAAC;GAChB,UAAU,CAsKtB","sourcesContent":["import { LitElement, css, html } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { tokens } from \"./tokens.js\";\n\n/**\n * Collapsible navigation sidebar for the `app-shell` sidebar slot. It is\n * deliberately presentational and router-agnostic: the consumer supplies the\n * nav items as plain `<a>`/`<button>` elements (each an icon followed by a\n * label), optional `<p>` group headings, and marks the active item with\n * `aria-current=\"page\"`. The sidebar styles them, tracks hover/active/focus,\n * and — in collapsed \"rail\" mode — centers the icons and hides the labels.\n *\n * Rail mode is driven by the `collapsed` attribute (the parent `app-shell`\n * toggles it). Labels are hidden by the inherited `--app-sidebar-label` custom\n * property, so each label element should read it, e.g.\n * `<span style=\"display: var(--app-sidebar-label, inline)\">Reports</span>`;\n * keep an `aria-label` on the item so its accessible name survives collapse.\n * The sidebar fills the width and height of its container — `app-shell` owns\n * the actual rail/expanded width.\n *\n * @element app-sidebar\n * @slot - Navigation items: `<a>`/`<button>` links and optional `<p>` headings.\n * @slot header - Optional brand pinned to the top: a small logo plus a name.\n * Wrap the name in a `--app-sidebar-label` element so rail mode shows only the\n * logo, centered in line with the nav icons.\n * @slot footer - Optional account/settings area pinned to the bottom.\n */\n@customElement(\"app-sidebar\")\nexport class AppSidebar extends LitElement {\n /** Collapses the sidebar to an icon rail (centers icons, hides labels). */\n @property({ type: Boolean, reflect: true }) collapsed = false;\n\n /** Whether the header slot has assigned content. */\n @state() private _hasHeader = false;\n /** Whether the footer slot has assigned content. */\n @state() private _hasFooter = false;\n\n static override styles = [\n tokens,\n css`\n :host {\n display: block;\n height: 100%;\n --app-sidebar-label: inline;\n }\n :host([collapsed]) {\n --app-sidebar-label: none;\n }\n .sidebar {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n background: var(--ui-surface, #ffffff);\n color: var(--ui-text, #0f172a);\n font-family: var(\n --ui-font,\n ui-sans-serif,\n system-ui,\n sans-serif,\n \"Apple Color Emoji\",\n \"Segoe UI Emoji\",\n \"Segoe UI Symbol\",\n \"Noto Color Emoji\"\n );\n }\n .brand {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n padding: 0.75rem;\n border-bottom: 1px solid var(--ui-border, #e2e8f0);\n }\n .foot {\n flex: 0 0 auto;\n padding: 0.75rem;\n border-top: 1px solid var(--ui-border, #e2e8f0);\n }\n .brand.empty,\n .foot.empty {\n display: none;\n }\n .nav {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n padding: 0.5rem;\n }\n ::slotted(a),\n ::slotted(button) {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n box-sizing: border-box;\n padding: 0.5rem;\n border: none;\n border-radius: var(--ui-radius-sm, 0.25rem);\n background: none;\n color: var(--ui-text, #0f172a);\n text-align: left;\n text-decoration: none;\n white-space: nowrap;\n cursor: pointer;\n font-size: var(--ui-font-size-sm, 0.75rem);\n font-weight: var(--ui-font-weight-medium, 500);\n line-height: var(--ui-line-height-tight, 1.25);\n font-family: var(\n --ui-font,\n ui-sans-serif,\n system-ui,\n sans-serif,\n \"Apple Color Emoji\",\n \"Segoe UI Emoji\",\n \"Segoe UI Symbol\",\n \"Noto Color Emoji\"\n );\n }\n ::slotted(a:hover),\n ::slotted(button:hover) {\n background: var(--ui-surface-muted, #f8fafc);\n }\n ::slotted(a[aria-current]),\n ::slotted(button[aria-current]) {\n background: var(--ui-surface-muted, #f8fafc);\n color: var(--ui-primary, #4f46e5);\n font-weight: var(--ui-font-weight-semibold, 600);\n }\n ::slotted(a:focus-visible),\n ::slotted(button:focus-visible) {\n outline: none;\n box-shadow: var(--ui-focus-ring, 0 0 0 3px rgb(79 70 229 / 0.35));\n }\n ::slotted(p) {\n margin: 0;\n padding: 0.5rem 0.5rem 0.25rem;\n font-size: var(--ui-font-size-xs, 0.6875rem);\n font-weight: var(--ui-font-weight-semibold, 600);\n line-height: var(--ui-line-height-tight, 1.25);\n text-transform: uppercase;\n letter-spacing: var(--ui-tracking-wide, 0.04em);\n color: var(--ui-text-muted, #64748b);\n }\n :host([collapsed]) ::slotted(a),\n :host([collapsed]) ::slotted(button) {\n justify-content: center;\n }\n :host([collapsed]) ::slotted(p) {\n display: none;\n }\n :host([collapsed]) .brand {\n justify-content: center;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n }\n @media (forced-colors: active) {\n ::slotted(a:focus-visible),\n ::slotted(button:focus-visible) {\n outline: 2px solid CanvasText;\n outline-offset: 2px;\n box-shadow: none;\n }\n }\n `,\n ];\n\n /** Collapses the header row when nothing is slotted into it. */\n private _onHeaderSlotChange(event: Event): void {\n this._hasHeader = (event.target as HTMLSlotElement).assignedNodes({ flatten: true }).length > 0;\n }\n\n /** Collapses the footer row when nothing is slotted into it. */\n private _onFooterSlotChange(event: Event): void {\n this._hasFooter = (event.target as HTMLSlotElement).assignedNodes({ flatten: true }).length > 0;\n }\n\n override render() {\n return html`\n <div class=\"sidebar\">\n <div class=\"brand ${this._hasHeader ? \"\" : \"empty\"}\">\n <slot name=\"header\" @slotchange=${this._onHeaderSlotChange}></slot>\n </div>\n <nav class=\"nav\" aria-label=\"Sidebar\">\n <slot></slot>\n </nav>\n <div class=\"foot ${this._hasFooter ? \"\" : \"empty\"}\">\n <slot name=\"footer\" @slotchange=${this._onFooterSlotChange}></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"app-sidebar\": AppSidebar;\n }\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
/**
|
|
3
|
+
* Form footer button bar with a fixed action order for internal apps: the
|
|
4
|
+
* primary (submit) button is always rightmost, the secondary (cancel) button
|
|
5
|
+
* sits to its immediate left, and an optional tertiary/destructive action is
|
|
6
|
+
* pinned to the far left. The order is enforced by the component regardless of
|
|
7
|
+
* the source order the buttons are authored in, so every form in a product
|
|
8
|
+
* reads the same way.
|
|
9
|
+
*
|
|
10
|
+
* Purely presentational: it lays out whatever controls (usually `ui-button`)
|
|
11
|
+
* are slotted and never intercepts their clicks, `type="submit"`, or events.
|
|
12
|
+
*
|
|
13
|
+
* @element form-actions
|
|
14
|
+
* @slot start - Optional far-left action (e.g. a destructive "Delete").
|
|
15
|
+
* @slot secondary - The secondary/cancel action, placed left of primary.
|
|
16
|
+
* @slot primary - The primary/submit action, always rightmost.
|
|
17
|
+
*/
|
|
18
|
+
export declare class FormActions extends LitElement {
|
|
19
|
+
static styles: import("lit").CSSResult[];
|
|
20
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
21
|
+
}
|
|
22
|
+
declare global {
|
|
23
|
+
interface HTMLElementTagNameMap {
|
|
24
|
+
"form-actions": FormActions;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=form-actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-actions.d.ts","sourceRoot":"","sources":["../src/form-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;;;;;;;;;GAeG;AACH,qBACa,WAAY,SAAQ,UAAU;IACzC,OAAgB,MAAM,4BAuBpB;IAEO,MAAM,yCAQd;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, css, html } from "lit";
|
|
8
|
+
import { customElement } from "lit/decorators.js";
|
|
9
|
+
import { tokens } from "./tokens.js";
|
|
10
|
+
/**
|
|
11
|
+
* Form footer button bar with a fixed action order for internal apps: the
|
|
12
|
+
* primary (submit) button is always rightmost, the secondary (cancel) button
|
|
13
|
+
* sits to its immediate left, and an optional tertiary/destructive action is
|
|
14
|
+
* pinned to the far left. The order is enforced by the component regardless of
|
|
15
|
+
* the source order the buttons are authored in, so every form in a product
|
|
16
|
+
* reads the same way.
|
|
17
|
+
*
|
|
18
|
+
* Purely presentational: it lays out whatever controls (usually `ui-button`)
|
|
19
|
+
* are slotted and never intercepts their clicks, `type="submit"`, or events.
|
|
20
|
+
*
|
|
21
|
+
* @element form-actions
|
|
22
|
+
* @slot start - Optional far-left action (e.g. a destructive "Delete").
|
|
23
|
+
* @slot secondary - The secondary/cancel action, placed left of primary.
|
|
24
|
+
* @slot primary - The primary/submit action, always rightmost.
|
|
25
|
+
*/
|
|
26
|
+
let FormActions = class FormActions extends LitElement {
|
|
27
|
+
static { this.styles = [
|
|
28
|
+
tokens,
|
|
29
|
+
css `
|
|
30
|
+
:host {
|
|
31
|
+
display: block;
|
|
32
|
+
}
|
|
33
|
+
.actions {
|
|
34
|
+
display: flex;
|
|
35
|
+
flex-wrap: wrap;
|
|
36
|
+
align-items: center;
|
|
37
|
+
justify-content: flex-end;
|
|
38
|
+
gap: 0.5rem;
|
|
39
|
+
}
|
|
40
|
+
.start {
|
|
41
|
+
display: flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
gap: 0.5rem;
|
|
44
|
+
margin-right: auto;
|
|
45
|
+
}
|
|
46
|
+
::slotted(*) {
|
|
47
|
+
margin: 0;
|
|
48
|
+
}
|
|
49
|
+
`,
|
|
50
|
+
]; }
|
|
51
|
+
render() {
|
|
52
|
+
return html `
|
|
53
|
+
<div class="actions">
|
|
54
|
+
<span class="start"><slot name="start"></slot></span>
|
|
55
|
+
<slot name="secondary"></slot>
|
|
56
|
+
<slot name="primary"></slot>
|
|
57
|
+
</div>
|
|
58
|
+
`;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
FormActions = __decorate([
|
|
62
|
+
customElement("form-actions")
|
|
63
|
+
], FormActions);
|
|
64
|
+
export { FormActions };
|
|
65
|
+
//# sourceMappingURL=form-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-actions.js","sourceRoot":"","sources":["../src/form-actions.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;;;;;;;;;;;GAeG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;aACzB,WAAM,GAAG;QACvB,MAAM;QACN,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;KAoBF;KACF,AAvBqB,CAuBpB;IAEO,MAAM;QACb,OAAO,IAAI,CAAA;;;;;;KAMV,CAAC;IACJ,CAAC;CACF,CAAA;AAnCY,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CAmCvB","sourcesContent":["import { LitElement, css, html } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { tokens } from \"./tokens.js\";\n\n/**\n * Form footer button bar with a fixed action order for internal apps: the\n * primary (submit) button is always rightmost, the secondary (cancel) button\n * sits to its immediate left, and an optional tertiary/destructive action is\n * pinned to the far left. The order is enforced by the component regardless of\n * the source order the buttons are authored in, so every form in a product\n * reads the same way.\n *\n * Purely presentational: it lays out whatever controls (usually `ui-button`)\n * are slotted and never intercepts their clicks, `type=\"submit\"`, or events.\n *\n * @element form-actions\n * @slot start - Optional far-left action (e.g. a destructive \"Delete\").\n * @slot secondary - The secondary/cancel action, placed left of primary.\n * @slot primary - The primary/submit action, always rightmost.\n */\n@customElement(\"form-actions\")\nexport class FormActions extends LitElement {\n static override styles = [\n tokens,\n css`\n :host {\n display: block;\n }\n .actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: 0.5rem;\n }\n .start {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-right: auto;\n }\n ::slotted(*) {\n margin: 0;\n }\n `,\n ];\n\n override render() {\n return html`\n <div class=\"actions\">\n <span class=\"start\"><slot name=\"start\"></slot></span>\n <slot name=\"secondary\"></slot>\n <slot name=\"primary\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"form-actions\": FormActions;\n }\n}\n"]}
|
package/dist/icons.d.ts
CHANGED
|
@@ -37,4 +37,5 @@ export declare const iconDocument: (size?: number) => import("lit-html").Templat
|
|
|
37
37
|
export declare const iconSquares2x2: (size?: number) => import("lit-html").TemplateResult<2>;
|
|
38
38
|
export declare const iconChatBubbleLeftRight: (size?: number) => import("lit-html").TemplateResult<2>;
|
|
39
39
|
export declare const iconArrowTopRightOnSquare: (size?: number) => import("lit-html").TemplateResult<2>;
|
|
40
|
+
export declare const iconAcademicCap: (size?: number) => import("lit-html").TemplateResult<2>;
|
|
40
41
|
//# sourceMappingURL=icons.d.ts.map
|
package/dist/icons.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK,yDAC2O,CAAC;AAE9P,eAAO,MAAM,SAAS,yDAC+P,CAAC;AAEtR,eAAO,MAAM,eAAe,yDACwO,CAAC;AAErQ,eAAO,MAAM,gBAAgB,yDACqO,CAAC;AAEnQ,eAAO,MAAM,OAAO,yDAC2xC,CAAC;AAEhzC,eAAO,MAAM,QAAQ,yDAC4W,CAAC;AAElY,eAAO,MAAM,sBAAsB,yDAC6Y,CAAC;AAEjb,eAAO,MAAM,UAAU,yDACqX,CAAC;AAE7Y,eAAO,MAAM,SAAS,yDACgnB,CAAC;AAEvoB,eAAO,MAAM,QAAQ,yDAC0O,CAAC;AAEhQ,eAAO,MAAM,cAAc,yDACme,CAAC;AAE/f,eAAO,MAAM,kBAAkB,yDACob,CAAC;AAEpd,eAAO,MAAM,QAAQ,yDAC8b,CAAC;AAEpd,eAAO,MAAM,UAAU,yDACiY,CAAC;AAEzZ,eAAO,MAAM,SAAS,yDACmQ,CAAC;AAE1R,eAAO,MAAM,OAAO,yDACif,CAAC;AAEtgB,eAAO,MAAM,YAAY,yDACib,CAAC;AAE3c,eAAO,MAAM,qBAAqB,yDAC4V,CAAC;AAE/X,eAAO,MAAM,OAAO,yDACyhB,CAAC;AAE9iB,eAAO,MAAM,eAAe,yDAC2Q,CAAC;AAExS,eAAO,MAAM,OAAO,yDACsZ,CAAC;AAE3a,eAAO,MAAM,qBAAqB,yDACma,CAAC;AAEtc,eAAO,MAAM,aAAa,yDACsX,CAAC;AAEjZ,eAAO,MAAM,cAAc,yDACiP,CAAC;AAE7Q,eAAO,MAAM,QAAQ,yDAC6X,CAAC;AAEnZ,eAAO,MAAM,SAAS,yDACgX,CAAC;AAEvY,eAAO,MAAM,cAAc,yDAC8f,CAAC;AAE1hB,eAAO,MAAM,OAAO,yDAC4e,CAAC;AAEjgB,eAAO,MAAM,YAAY,yDAC4hB,CAAC;AAEtjB,eAAO,MAAM,eAAe,yDAC+Z,CAAC;AAE5b,eAAO,MAAM,cAAc,yDACqZ,CAAC;AAEjb,eAAO,MAAM,yBAAyB,yDACuxB,CAAC;AAE9zB,eAAO,MAAM,WAAW,yDACge,CAAC;AAEzf,eAAO,MAAM,UAAU,yDACqd,CAAC;AAE7e,eAAO,MAAM,eAAe,yDACuO,CAAC;AAEpQ,eAAO,MAAM,YAAY,yDACid,CAAC;AAE3e,eAAO,MAAM,cAAc,yDACosB,CAAC;AAEhuB,eAAO,MAAM,uBAAuB,yDAC2sB,CAAC;AAEhvB,eAAO,MAAM,yBAAyB,yDACuU,CAAC"}
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK,yDAC2O,CAAC;AAE9P,eAAO,MAAM,SAAS,yDAC+P,CAAC;AAEtR,eAAO,MAAM,eAAe,yDACwO,CAAC;AAErQ,eAAO,MAAM,gBAAgB,yDACqO,CAAC;AAEnQ,eAAO,MAAM,OAAO,yDAC2xC,CAAC;AAEhzC,eAAO,MAAM,QAAQ,yDAC4W,CAAC;AAElY,eAAO,MAAM,sBAAsB,yDAC6Y,CAAC;AAEjb,eAAO,MAAM,UAAU,yDACqX,CAAC;AAE7Y,eAAO,MAAM,SAAS,yDACgnB,CAAC;AAEvoB,eAAO,MAAM,QAAQ,yDAC0O,CAAC;AAEhQ,eAAO,MAAM,cAAc,yDACme,CAAC;AAE/f,eAAO,MAAM,kBAAkB,yDACob,CAAC;AAEpd,eAAO,MAAM,QAAQ,yDAC8b,CAAC;AAEpd,eAAO,MAAM,UAAU,yDACiY,CAAC;AAEzZ,eAAO,MAAM,SAAS,yDACmQ,CAAC;AAE1R,eAAO,MAAM,OAAO,yDACif,CAAC;AAEtgB,eAAO,MAAM,YAAY,yDACib,CAAC;AAE3c,eAAO,MAAM,qBAAqB,yDAC4V,CAAC;AAE/X,eAAO,MAAM,OAAO,yDACyhB,CAAC;AAE9iB,eAAO,MAAM,eAAe,yDAC2Q,CAAC;AAExS,eAAO,MAAM,OAAO,yDACsZ,CAAC;AAE3a,eAAO,MAAM,qBAAqB,yDACma,CAAC;AAEtc,eAAO,MAAM,aAAa,yDACsX,CAAC;AAEjZ,eAAO,MAAM,cAAc,yDACiP,CAAC;AAE7Q,eAAO,MAAM,QAAQ,yDAC6X,CAAC;AAEnZ,eAAO,MAAM,SAAS,yDACgX,CAAC;AAEvY,eAAO,MAAM,cAAc,yDAC8f,CAAC;AAE1hB,eAAO,MAAM,OAAO,yDAC4e,CAAC;AAEjgB,eAAO,MAAM,YAAY,yDAC4hB,CAAC;AAEtjB,eAAO,MAAM,eAAe,yDAC+Z,CAAC;AAE5b,eAAO,MAAM,cAAc,yDACqZ,CAAC;AAEjb,eAAO,MAAM,yBAAyB,yDACuxB,CAAC;AAE9zB,eAAO,MAAM,WAAW,yDACge,CAAC;AAEzf,eAAO,MAAM,UAAU,yDACqd,CAAC;AAE7e,eAAO,MAAM,eAAe,yDACuO,CAAC;AAEpQ,eAAO,MAAM,YAAY,yDACid,CAAC;AAE3e,eAAO,MAAM,cAAc,yDACosB,CAAC;AAEhuB,eAAO,MAAM,uBAAuB,yDAC2sB,CAAC;AAEhvB,eAAO,MAAM,yBAAyB,yDACuU,CAAC;AAE9W,eAAO,MAAM,eAAe,yDAC6pB,CAAC"}
|
package/dist/icons.js
CHANGED
|
@@ -40,4 +40,5 @@ export const iconDocument = (size = 18) => svg `<svg xmlns="http://www.w3.org/20
|
|
|
40
40
|
export const iconSquares2x2 = (size = 18) => svg `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="1.5" stroke="currentColor" width=${size} height=${size} aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25A2.25 2.25 0 0 1 13.5 18v-2.25Z"/></svg>`;
|
|
41
41
|
export const iconChatBubbleLeftRight = (size = 18) => svg `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="1.5" stroke="currentColor" width=${size} height=${size} aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 0 1-.825-.242m9.345-8.334a2.126 2.126 0 0 0-.476-.095 48.64 48.64 0 0 0-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0 0 11.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155"/></svg>`;
|
|
42
42
|
export const iconArrowTopRightOnSquare = (size = 16) => svg `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="1.5" stroke="currentColor" width=${size} height=${size} aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"/></svg>`;
|
|
43
|
+
export const iconAcademicCap = (size = 18) => svg `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="1.5" stroke="currentColor" width=${size} height=${size} aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M4.26 10.147a60.438 60.438 0 0 0-.491 6.347A48.62 48.62 0 0 1 12 20.904a48.62 48.62 0 0 1 8.232-4.41 60.46 60.46 0 0 0-.491-6.347m-15.482 0a50.636 50.636 0 0 0-2.658-.813A59.906 59.906 0 0 1 12 3.493a59.903 59.903 0 0 1 10.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0 1 12 13.489a50.702 50.702 0 0 1 7.74-3.342M6.75 15a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm0 0v-3.675A55.378 55.378 0 0 1 12 8.443m-7.007 11.55A5.981 5.981 0 0 0 6.75 15.75v-1.5"/></svg>`;
|
|
43
44
|
//# sourceMappingURL=icons.js.map
|
package/dist/icons.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"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","sourcesContent":["import { svg } from \"lit\";\n\n// GENERATED by scripts/generate-icons.mjs — do not edit;\n// add names to the ICONS list in the script and re-run `npm run icons`.\n\nexport const iconX = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18 18 6M6 6l12 12\"/></svg>`;\n\nexport const iconBars3 = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\"/></svg>`;\n\nexport const iconChevronLeft = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5 8.25 12l7.5-7.5\"/></svg>`;\n\nexport const iconChevronRight = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m8.25 4.5 7.5 7.5-7.5 7.5\"/></svg>`;\n\nexport const iconCog = (size = 20) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z\"/> <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/></svg>`;\n\nexport const iconInfo = (size = 20) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z\"/></svg>`;\n\nexport const iconQuestionMarkCircle = (size = 20) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z\"/></svg>`;\n\nexport const iconPencil = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125\"/></svg>`;\n\nexport const iconTrash = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0\"/></svg>`;\n\nexport const iconPlus = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4.5v15m7.5-7.5h-15\"/></svg>`;\n\nexport const iconListBullet = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z\"/></svg>`;\n\nexport const iconCurrencyDollar = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v12m-3-2.818.879.659c1.171.879 3.07.879 4.242 0 1.172-.879 1.172-2.303 0-3.182C13.536 12.219 12.768 12 12 12c-.725 0-1.45-.22-2.003-.659-1.106-.879-1.106-2.303 0-3.182s2.9-.879 4.006 0l.415.33M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\"/></svg>`;\n\nexport const iconHome = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m2.25 12 8.954-8.955c.44-.439 1.152-.439 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25\"/></svg>`;\n\nexport const iconMapPin = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/> <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1 1 15 0Z\"/></svg>`;\n\nexport const iconClock = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\"/></svg>`;\n\nexport const iconTag = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.568 3H5.25A2.25 2.25 0 0 0 3 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 0 0 5.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 0 0 9.568 3Z\"/> <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 6h.008v.008H6V6Z\"/></svg>`;\n\nexport const iconCalendar = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\"/></svg>`;\n\nexport const iconArrowsPointingOut = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15\"/></svg>`;\n\nexport const iconMap = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 6.75V15m6-6v8.25m.503 3.498 4.875-2.437c.381-.19.622-.58.622-1.006V4.82c0-.836-.88-1.38-1.628-1.006l-3.869 1.934c-.317.159-.69.159-1.006 0L9.503 3.252a1.125 1.125 0 0 0-1.006 0L3.622 5.689C3.24 5.88 3 6.27 3 6.695V19.18c0 .836.88 1.38 1.628 1.006l3.869-1.934c.317-.159.69-.159 1.006 0l4.994 2.497c.317.158.69.158 1.006 0Z\"/></svg>`;\n\nexport const iconCheckCircle = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\"/></svg>`;\n\nexport const iconSun = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z\"/></svg>`;\n\nexport const iconShieldExclamation = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m0-10.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.75c0 5.592 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.57-.598-3.75h-.152c-3.196 0-6.1-1.25-8.25-3.286Zm0 13.036h.008v.008H12v-.008Z\"/></svg>`;\n\nexport const iconArrowPath = (size = 12) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99\"/></svg>`;\n\nexport const iconArrowRight = (size = 12) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3\"/></svg>`;\n\nexport const iconLink = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244\"/></svg>`;\n\nexport const iconHeart = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12Z\"/></svg>`;\n\nexport const iconHeartSolid = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path d=\"m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z\"/></svg>`;\n\nexport const iconEye = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z\"/> <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/></svg>`;\n\nexport const iconEyeSlash = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88\"/></svg>`;\n\nexport const iconShieldCheck = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\"/></svg>`;\n\nexport const iconUserCircle = (size = 20) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.963 0a9 9 0 1 0-11.963 0m11.963 0A8.966 8.966 0 0 1 12 21a8.966 8.966 0 0 1-5.982-2.275M15 9.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/></svg>`;\n\nexport const iconClipboardDocumentList = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z\"/></svg>`;\n\nexport const iconCpuChip = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 3v1.5M4.5 8.25H3m18 0h-1.5M4.5 12H3m18 0h-1.5m-15 3.75H3m18 0h-1.5M8.25 19.5V21M12 3v1.5m0 15V21m3.75-18v1.5m0 15V21m-9-1.5h10.5a2.25 2.25 0 0 0 2.25-2.25V6.75a2.25 2.25 0 0 0-2.25-2.25H6.75A2.25 2.25 0 0 0 4.5 6.75v10.5a2.25 2.25 0 0 0 2.25 2.25Zm.75-12h9v9h-9v-9Z\"/></svg>`;\n\nexport const iconFolder = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 12.75V12A2.25 2.25 0 0 1 4.5 9.75h15A2.25 2.25 0 0 1 21.75 12v.75m-8.69-6.44-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z\"/></svg>`;\n\nexport const iconChevronDown = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m19.5 8.25-7.5 7.5-7.5-7.5\"/></svg>`;\n\nexport const iconDocument = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\"/></svg>`;\n\nexport const iconSquares2x2 = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25A2.25 2.25 0 0 1 13.5 18v-2.25Z\"/></svg>`;\n\nexport const iconChatBubbleLeftRight = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 0 1-.825-.242m9.345-8.334a2.126 2.126 0 0 0-.476-.095 48.64 48.64 0 0 0-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0 0 11.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155\"/></svg>`;\n\nexport const iconArrowTopRightOnSquare = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25\"/></svg>`;\n"]}
|
|
1
|
+
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"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","sourcesContent":["import { svg } from \"lit\";\n\n// GENERATED by scripts/generate-icons.mjs — do not edit;\n// add names to the ICONS list in the script and re-run `npm run icons`.\n\nexport const iconX = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18 18 6M6 6l12 12\"/></svg>`;\n\nexport const iconBars3 = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\"/></svg>`;\n\nexport const iconChevronLeft = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5 8.25 12l7.5-7.5\"/></svg>`;\n\nexport const iconChevronRight = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m8.25 4.5 7.5 7.5-7.5 7.5\"/></svg>`;\n\nexport const iconCog = (size = 20) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z\"/> <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/></svg>`;\n\nexport const iconInfo = (size = 20) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z\"/></svg>`;\n\nexport const iconQuestionMarkCircle = (size = 20) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z\"/></svg>`;\n\nexport const iconPencil = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125\"/></svg>`;\n\nexport const iconTrash = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0\"/></svg>`;\n\nexport const iconPlus = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4.5v15m7.5-7.5h-15\"/></svg>`;\n\nexport const iconListBullet = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z\"/></svg>`;\n\nexport const iconCurrencyDollar = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v12m-3-2.818.879.659c1.171.879 3.07.879 4.242 0 1.172-.879 1.172-2.303 0-3.182C13.536 12.219 12.768 12 12 12c-.725 0-1.45-.22-2.003-.659-1.106-.879-1.106-2.303 0-3.182s2.9-.879 4.006 0l.415.33M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\"/></svg>`;\n\nexport const iconHome = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m2.25 12 8.954-8.955c.44-.439 1.152-.439 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25\"/></svg>`;\n\nexport const iconMapPin = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/> <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1 1 15 0Z\"/></svg>`;\n\nexport const iconClock = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\"/></svg>`;\n\nexport const iconTag = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.568 3H5.25A2.25 2.25 0 0 0 3 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 0 0 5.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 0 0 9.568 3Z\"/> <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 6h.008v.008H6V6Z\"/></svg>`;\n\nexport const iconCalendar = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\"/></svg>`;\n\nexport const iconArrowsPointingOut = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15\"/></svg>`;\n\nexport const iconMap = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 6.75V15m6-6v8.25m.503 3.498 4.875-2.437c.381-.19.622-.58.622-1.006V4.82c0-.836-.88-1.38-1.628-1.006l-3.869 1.934c-.317.159-.69.159-1.006 0L9.503 3.252a1.125 1.125 0 0 0-1.006 0L3.622 5.689C3.24 5.88 3 6.27 3 6.695V19.18c0 .836.88 1.38 1.628 1.006l3.869-1.934c.317-.159.69-.159 1.006 0l4.994 2.497c.317.158.69.158 1.006 0Z\"/></svg>`;\n\nexport const iconCheckCircle = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\"/></svg>`;\n\nexport const iconSun = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z\"/></svg>`;\n\nexport const iconShieldExclamation = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m0-10.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.75c0 5.592 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.57-.598-3.75h-.152c-3.196 0-6.1-1.25-8.25-3.286Zm0 13.036h.008v.008H12v-.008Z\"/></svg>`;\n\nexport const iconArrowPath = (size = 12) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99\"/></svg>`;\n\nexport const iconArrowRight = (size = 12) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3\"/></svg>`;\n\nexport const iconLink = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244\"/></svg>`;\n\nexport const iconHeart = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12Z\"/></svg>`;\n\nexport const iconHeartSolid = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path d=\"m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z\"/></svg>`;\n\nexport const iconEye = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z\"/> <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/></svg>`;\n\nexport const iconEyeSlash = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88\"/></svg>`;\n\nexport const iconShieldCheck = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\"/></svg>`;\n\nexport const iconUserCircle = (size = 20) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.963 0a9 9 0 1 0-11.963 0m11.963 0A8.966 8.966 0 0 1 12 21a8.966 8.966 0 0 1-5.982-2.275M15 9.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/></svg>`;\n\nexport const iconClipboardDocumentList = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z\"/></svg>`;\n\nexport const iconCpuChip = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 3v1.5M4.5 8.25H3m18 0h-1.5M4.5 12H3m18 0h-1.5m-15 3.75H3m18 0h-1.5M8.25 19.5V21M12 3v1.5m0 15V21m3.75-18v1.5m0 15V21m-9-1.5h10.5a2.25 2.25 0 0 0 2.25-2.25V6.75a2.25 2.25 0 0 0-2.25-2.25H6.75A2.25 2.25 0 0 0 4.5 6.75v10.5a2.25 2.25 0 0 0 2.25 2.25Zm.75-12h9v9h-9v-9Z\"/></svg>`;\n\nexport const iconFolder = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 12.75V12A2.25 2.25 0 0 1 4.5 9.75h15A2.25 2.25 0 0 1 21.75 12v.75m-8.69-6.44-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z\"/></svg>`;\n\nexport const iconChevronDown = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m19.5 8.25-7.5 7.5-7.5-7.5\"/></svg>`;\n\nexport const iconDocument = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\"/></svg>`;\n\nexport const iconSquares2x2 = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25A2.25 2.25 0 0 1 13.5 18v-2.25Z\"/></svg>`;\n\nexport const iconChatBubbleLeftRight = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 0 1-.825-.242m9.345-8.334a2.126 2.126 0 0 0-.476-.095 48.64 48.64 0 0 0-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0 0 11.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155\"/></svg>`;\n\nexport const iconArrowTopRightOnSquare = (size = 16) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25\"/></svg>`;\n\nexport const iconAcademicCap = (size = 18) =>\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke=\"currentColor\" width=${size} height=${size} aria-hidden=\"true\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.26 10.147a60.438 60.438 0 0 0-.491 6.347A48.62 48.62 0 0 1 12 20.904a48.62 48.62 0 0 1 8.232-4.41 60.46 60.46 0 0 0-.491-6.347m-15.482 0a50.636 50.636 0 0 0-2.658-.813A59.906 59.906 0 0 1 12 3.493a59.903 59.903 0 0 1 10.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0 1 12 13.489a50.702 50.702 0 0 1 7.74-3.342M6.75 15a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm0 0v-3.675A55.378 55.378 0 0 1 12 8.443m-7.007 11.55A5.981 5.981 0 0 0 6.75 15.75v-1.5\"/></svg>`;\n"]}
|