@3ddv/software-division-components 2.0.4 → 2.0.6

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3ddv-software-division-components-generic-rich-text-editor.mjs","sources":["../../generic/rich-text-editor/types.ts","../../generic/rich-text-editor/ui/editor-toolbar/editor-toolbar.component.ts","../../generic/rich-text-editor/ui/editor-toolbar/editor-toolbar.component.html","../../generic/rich-text-editor/ui/link-modal/link-modal.component.ts","../../generic/rich-text-editor/ui/link-modal/link-modal.component.html","../../generic/rich-text-editor/rich-text-editor.component.ts","../../generic/rich-text-editor/rich-text-editor.component.html","../../generic/rich-text-editor/3ddv-software-division-components-generic-rich-text-editor.ts"],"sourcesContent":["import type { Extension } from '@tiptap/core';\n\n/**\n * Custom toolbar button configuration for extending the toolbar\n */\nexport interface CustomToolbarButton {\n /** Unique identifier for the button */\n id: string;\n /** Icon to display (SVG string or icon name) */\n icon: string;\n /** Tooltip text */\n title: string;\n /** Click handler function */\n action: () => void;\n /** Function to determine active state */\n isActive?: () => boolean;\n}\n\n/**\n * Configuration for the rich text editor toolbar\n */\nexport interface ToolbarConfig {\n /** Enable bold formatting */\n bold?: boolean;\n /** Enable italic formatting */\n italic?: boolean;\n /** Enable underline formatting */\n underline?: boolean;\n /** Enable strikethrough formatting */\n strike?: boolean;\n /** Enable bullet list */\n bulletList?: boolean;\n /** Enable ordered list */\n orderedList?: boolean;\n /** Heading levels to enable (1-6) */\n headings?: (1 | 2 | 3 | 4 | 5 | 6)[];\n /** Enable horizontal rule insertion */\n horizontalRule?: boolean;\n /** Enable link insertion/editing */\n link?: boolean;\n /** Enable blockquote formatting */\n blockquote?: boolean;\n /** Enable inline code formatting */\n code?: boolean;\n /** Enable code block */\n codeBlock?: boolean;\n /** Enable undo button */\n undo?: boolean;\n /** Enable redo button */\n redo?: boolean;\n /** Custom buttons to add to the toolbar */\n customButtons?: CustomToolbarButton[];\n}\n\n/**\n * Preset name for toolbar configuration\n */\nexport type ToolbarPreset = 'minimal' | 'standard' | 'full';\n\n/**\n * Predefined toolbar presets\n */\nexport const TOOLBAR_PRESETS: Record<ToolbarPreset, ToolbarConfig> = {\n minimal: {\n bold: true,\n italic: true,\n link: true,\n },\n standard: {\n bold: true,\n italic: true,\n underline: true,\n bulletList: true,\n orderedList: true,\n headings: [1, 2, 3],\n link: true,\n },\n full: {\n bold: true,\n italic: true,\n underline: true,\n strike: true,\n bulletList: true,\n orderedList: true,\n headings: [1, 2, 3, 4, 5, 6],\n horizontalRule: true,\n link: true,\n blockquote: true,\n code: true,\n codeBlock: true,\n undo: true,\n redo: true,\n },\n};\n\n/**\n * Default toolbar configuration (standard preset)\n */\nexport const DEFAULT_TOOLBAR_CONFIG: ToolbarConfig = TOOLBAR_PRESETS.standard;\n\n/**\n * Configuration for link behavior in the editor\n */\nexport interface LinkConfig {\n /** Whether links open on click (default: false) */\n openOnClick?: boolean;\n /** CSS classes to apply to links */\n linkClass?: string;\n /** Whether to add rel=\"noopener noreferrer\" to external links */\n addNoopener?: boolean;\n /** Whether to add target=\"_blank\" to links */\n openInNewTab?: boolean;\n}\n\n/**\n * Default link configuration\n */\nexport const DEFAULT_LINK_CONFIG: LinkConfig = {\n openOnClick: false,\n linkClass: 'text-blue-500 underline',\n addNoopener: true,\n openInNewTab: true,\n};\n\n/**\n * Error display mode for the editor\n */\nexport type ErrorDisplayMode = 'always' | 'after-submit';\n\n/**\n * Full editor configuration options\n */\nexport interface EditorConfig {\n /** Placeholder text when editor is empty */\n placeholder?: string;\n /** Minimum height of the editor */\n minHeight?: string;\n /** Maximum height of the editor (enables scrolling) */\n maxHeight?: string;\n /** Whether the editor should auto-focus on initialization */\n autoFocus?: boolean;\n /** Custom TipTap extensions to add or override defaults */\n extensions?: Extension[];\n /** Link behavior configuration */\n linkConfig?: LinkConfig;\n /** Whether to enable spellcheck */\n spellcheck?: boolean;\n}\n\n/**\n * Default editor configuration\n */\nexport const DEFAULT_EDITOR_CONFIG: EditorConfig = {\n placeholder: '',\n minHeight: '180px',\n autoFocus: false,\n linkConfig: DEFAULT_LINK_CONFIG,\n spellcheck: true,\n};\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { Editor } from '@tiptap/core';\nimport { ToolbarConfig, DEFAULT_TOOLBAR_CONFIG } from '../../types';\n\n/**\n * Toolbar component for the rich text editor\n * Provides formatting buttons with responsive design and active state tracking\n */\n@Component({\n selector: 'sdc-editor-toolbar',\n standalone: true,\n imports: [],\n templateUrl: './editor-toolbar.component.html',\n styleUrls: ['./editor-toolbar.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorToolbarComponent {\n /** The TipTap editor instance */\n public readonly editor = input.required<Editor>();\n\n /** Toolbar configuration */\n public readonly config = input<ToolbarConfig>(DEFAULT_TOOLBAR_CONFIG);\n\n /** Event emitted when link button is clicked */\n public readonly linkRequested = output<void>();\n\n /** Mobile menu visibility state */\n public readonly showMobileMenu = signal(false);\n\n /** Computed config with defaults applied */\n protected readonly mergedConfig = computed(() => {\n return { ...DEFAULT_TOOLBAR_CONFIG, ...this.config() };\n });\n\n /** Check if any formatting option is enabled */\n protected readonly hasFormattingOptions = computed(() => {\n const cfg = this.mergedConfig();\n return cfg.bold || cfg.italic || cfg.underline || cfg.strike;\n });\n\n /** Check if any list option is enabled */\n protected readonly hasListOptions = computed(() => {\n const cfg = this.mergedConfig();\n return cfg.bulletList || cfg.orderedList;\n });\n\n /** Check if any heading is enabled */\n protected readonly hasHeadings = computed(() => {\n const cfg = this.mergedConfig();\n return cfg.headings && cfg.headings.length > 0;\n });\n\n /** Check if history buttons are enabled */\n protected readonly hasHistory = computed(() => {\n const cfg = this.mergedConfig();\n return cfg.undo || cfg.redo;\n });\n\n /** Check if code options are enabled */\n protected readonly hasCodeOptions = computed(() => {\n const cfg = this.mergedConfig();\n return cfg.code || cfg.codeBlock;\n });\n\n /** Toggle mobile menu visibility */\n toggleMobileMenu(): void {\n this.showMobileMenu.update(v => !v);\n }\n\n /** Toggle heading with smart selection handling */\n toggleHeading(level: 1 | 2 | 3 | 4 | 5 | 6): void {\n const editor = this.editor();\n const { from, to } = editor.state.selection;\n const selectedText = editor.state.doc.textBetween(from, to);\n\n if (selectedText) {\n // Delete selected text and insert heading with the text\n editor\n .chain()\n .focus()\n .deleteRange({ from, to })\n .insertContent(`<h${level}>${selectedText}</h${level}>`)\n .run();\n } else {\n // Toggle heading on current line\n editor.chain().focus().toggleHeading({ level }).run();\n }\n }\n\n /** Request link insertion/editing */\n setLink(): void {\n this.linkRequested.emit();\n }\n\n /** Toggle bold formatting */\n toggleBold(): void {\n this.editor().chain().focus().toggleBold().run();\n }\n\n /** Toggle italic formatting */\n toggleItalic(): void {\n this.editor().chain().focus().toggleItalic().run();\n }\n\n /** Toggle underline formatting */\n toggleUnderline(): void {\n this.editor().chain().focus().toggleUnderline().run();\n }\n\n /** Toggle strikethrough formatting */\n toggleStrike(): void {\n this.editor().chain().focus().toggleStrike().run();\n }\n\n /** Toggle bullet list */\n toggleBulletList(): void {\n this.editor().chain().focus().toggleBulletList().run();\n }\n\n /** Toggle ordered list */\n toggleOrderedList(): void {\n this.editor().chain().focus().toggleOrderedList().run();\n }\n\n /** Insert horizontal rule */\n insertHorizontalRule(): void {\n this.editor().chain().focus().setHorizontalRule().run();\n }\n\n /** Toggle blockquote */\n toggleBlockquote(): void {\n this.editor().chain().focus().toggleBlockquote().run();\n }\n\n /** Toggle inline code */\n toggleCode(): void {\n this.editor().chain().focus().toggleCode().run();\n }\n\n /** Toggle code block */\n toggleCodeBlock(): void {\n this.editor().chain().focus().toggleCodeBlock().run();\n }\n\n /** Undo last action */\n undo(): void {\n this.editor().chain().focus().undo().run();\n }\n\n /** Redo last undone action */\n redo(): void {\n this.editor().chain().focus().redo().run();\n }\n\n /** Remove link from selection */\n unsetLink(): void {\n this.editor().chain().focus().unsetLink().run();\n }\n\n /** Check if a formatting type is active */\n isActive(type: string, options?: Record<string, unknown>): boolean {\n return this.editor().isActive(type, options);\n }\n\n /** Track function for heading levels */\n trackByLevel(index: number, level: number): number {\n return level;\n }\n\n /** Track function for custom buttons */\n trackByButtonId(index: number, btn: { id: string }): string {\n return btn.id;\n }\n}\n","<div class=\"sdc-editor-toolbar\">\n <!-- Mobile: Expandable toolbar -->\n <div class=\"sdc-editor-toolbar__mobile\">\n <div class=\"sdc-editor-toolbar__mobile-container\">\n <!-- Primary actions row -->\n <div class=\"sdc-editor-toolbar__mobile-primary\">\n <div class=\"sdc-editor-toolbar__button-group\">\n @if (mergedConfig().bold) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('bold')\"\n (click)=\"toggleBold()\"\n title=\"Bold\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M6 4h5a3 3 0 0 1 0 6H6zm0 6h6a3 3 0 0 1 0 6H6z\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().italic) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('italic')\"\n (click)=\"toggleItalic()\"\n title=\"Italic\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M10 4h6M4 16h6m2-12l-6 16\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().link) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('link')\"\n (click)=\"setLink()\"\n title=\"Link\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M8 12a3 3 0 0 0 4.24 0l3.5-3.5a3 3 0 0 0-4.24-4.24l-.88.87M12 8a3 3 0 0 0-4.24 0l-3.5 3.5a3 3 0 0 0 4.24 4.24l.88-.87\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n </div>\n\n <!-- Toggle button -->\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button sdc-editor-toolbar__toggle\"\n [class.sdc-editor-toolbar__toggle--open]=\"showMobileMenu()\"\n (click)=\"toggleMobileMenu()\"\n title=\"More options\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M6 8l4 4 4-4\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n\n <!-- Expanded toolbar -->\n @if (showMobileMenu()) {\n <div class=\"sdc-editor-toolbar__mobile-expanded\">\n <!-- Text formatting -->\n <div class=\"sdc-editor-toolbar__button-group\">\n @if (mergedConfig().underline) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('underline')\"\n (click)=\"toggleUnderline()\"\n title=\"Underline\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M6 4v5a4 4 0 0 0 8 0V4M4 17h12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().strike) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('strike')\"\n (click)=\"toggleStrike()\"\n title=\"Strikethrough\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M4 10h12M7 4c-1.5 0-3 1-3 3s1.5 3 3 3h6c1.5 0 3 1 3 3s-1.5 3-3 3\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().bulletList) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('bulletList')\"\n (click)=\"toggleBulletList()\"\n title=\"Bullet List\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"5\" cy=\"5\" r=\"1.5\" fill=\"currentColor\" />\n <circle cx=\"5\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" />\n <circle cx=\"5\" cy=\"15\" r=\"1.5\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"4\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"9\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"14\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().orderedList) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('orderedList')\"\n (click)=\"toggleOrderedList()\"\n title=\"Ordered List\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 20 20\" fill=\"none\">\n <text x=\"3\" y=\"7\" font-size=\"6\" fill=\"currentColor\">1.</text>\n <text x=\"3\" y=\"12\" font-size=\"6\" fill=\"currentColor\">2.</text>\n <text x=\"3\" y=\"17\" font-size=\"6\" fill=\"currentColor\">3.</text>\n <rect x=\"9\" y=\"4\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"9\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"14\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n </svg>\n </button>\n }\n </div>\n\n <!-- Headings -->\n @if (hasHeadings()) {\n <div class=\"sdc-editor-toolbar__button-group\">\n @for (level of mergedConfig().headings; track level) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button sdc-editor-toolbar__button--text\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('heading', { level })\"\n (click)=\"toggleHeading(level)\"\n [title]=\"'Heading ' + level\">\n H{{ level }}\n </button>\n }\n </div>\n }\n\n <!-- Extra options -->\n <div class=\"sdc-editor-toolbar__button-group\">\n @if (mergedConfig().blockquote) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('blockquote')\"\n (click)=\"toggleBlockquote()\"\n title=\"Blockquote\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M4 8h4v4H4zM12 8h4v4h-4zM4 12v2a2 2 0 0 0 2 2M12 12v2a2 2 0 0 0 2 2\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().horizontalRule) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n (click)=\"insertHorizontalRule()\"\n title=\"Horizontal Rule\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M2 10h16\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n </button>\n }\n\n @if (isActive('link')) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n (click)=\"unsetLink()\"\n title=\"Remove Link\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M8 12a3 3 0 0 0 4.24 0l3.5-3.5a3 3 0 0 0-4.24-4.24M12 8a3 3 0 0 0-4.24 0l-3.5 3.5a3 3 0 0 0 4.24 4.24M3 17l14-14\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Desktop: Full toolbar -->\n <div class=\"sdc-editor-toolbar__desktop\">\n <!-- Text formatting group -->\n @if (hasFormattingOptions()) {\n <div class=\"sdc-editor-toolbar__button-group\">\n @if (mergedConfig().bold) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('bold')\"\n (click)=\"toggleBold()\"\n title=\"Bold\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M6 4h5a3 3 0 0 1 0 6H6zm0 6h6a3 3 0 0 1 0 6H6z\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().italic) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('italic')\"\n (click)=\"toggleItalic()\"\n title=\"Italic\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M10 4h6M4 16h6m2-12l-6 16\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().underline) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('underline')\"\n (click)=\"toggleUnderline()\"\n title=\"Underline\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M6 4v5a4 4 0 0 0 8 0V4M4 17h12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().strike) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('strike')\"\n (click)=\"toggleStrike()\"\n title=\"Strikethrough\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M4 10h12M7 4c-1.5 0-3 1-3 3s1.5 3 3 3h6c1.5 0 3 1 3 3s-1.5 3-3 3\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n </div>\n\n <div class=\"sdc-editor-toolbar__separator\"></div>\n }\n\n <!-- List group -->\n @if (hasListOptions()) {\n <div class=\"sdc-editor-toolbar__button-group\">\n @if (mergedConfig().bulletList) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('bulletList')\"\n (click)=\"toggleBulletList()\"\n title=\"Bullet List\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"5\" cy=\"5\" r=\"1.5\" fill=\"currentColor\" />\n <circle cx=\"5\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" />\n <circle cx=\"5\" cy=\"15\" r=\"1.5\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"4\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"9\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"14\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().orderedList) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('orderedList')\"\n (click)=\"toggleOrderedList()\"\n title=\"Ordered List\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <text x=\"3\" y=\"7\" font-size=\"6\" fill=\"currentColor\">1.</text>\n <text x=\"3\" y=\"12\" font-size=\"6\" fill=\"currentColor\">2.</text>\n <text x=\"3\" y=\"17\" font-size=\"6\" fill=\"currentColor\">3.</text>\n <rect x=\"9\" y=\"4\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"9\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n <rect x=\"9\" y=\"14\" width=\"8\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n </svg>\n </button>\n }\n </div>\n\n <div class=\"sdc-editor-toolbar__separator\"></div>\n }\n\n <!-- Headings group -->\n @if (hasHeadings()) {\n <div class=\"sdc-editor-toolbar__button-group\">\n @for (level of mergedConfig().headings; track level) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button sdc-editor-toolbar__button--text\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('heading', { level })\"\n (click)=\"toggleHeading(level)\"\n [title]=\"'Heading ' + level\">\n H{{ level }}\n </button>\n }\n </div>\n\n <div class=\"sdc-editor-toolbar__separator\"></div>\n }\n\n <!-- Block formatting group -->\n @if (mergedConfig().blockquote || mergedConfig().horizontalRule || hasCodeOptions()) {\n <div class=\"sdc-editor-toolbar__button-group\">\n @if (mergedConfig().blockquote) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('blockquote')\"\n (click)=\"toggleBlockquote()\"\n title=\"Blockquote\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M4 8h4v4H4zM12 8h4v4h-4zM4 12v2a2 2 0 0 0 2 2M12 12v2a2 2 0 0 0 2 2\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().code) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('code')\"\n (click)=\"toggleCode()\"\n title=\"Inline Code\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M7 5l-4 5 4 5M13 5l4 5-4 5\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().codeBlock) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('codeBlock')\"\n (click)=\"toggleCodeBlock()\"\n title=\"Code Block\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"2\" />\n <path d=\"M6 7l-2 3 2 3M10 7l2 3-2 3\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().horizontalRule) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n (click)=\"insertHorizontalRule()\"\n title=\"Horizontal Rule\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M2 10h16\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n </button>\n }\n </div>\n\n <div class=\"sdc-editor-toolbar__separator\"></div>\n }\n\n <!-- Link group -->\n @if (mergedConfig().link) {\n <div class=\"sdc-editor-toolbar__button-group\">\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"isActive('link')\"\n (click)=\"setLink()\"\n title=\"Insert Link\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M8 12a3 3 0 0 0 4.24 0l3.5-3.5a3 3 0 0 0-4.24-4.24l-.88.87M12 8a3 3 0 0 0-4.24 0l-3.5 3.5a3 3 0 0 0 4.24 4.24l.88-.87\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n\n @if (isActive('link')) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n (click)=\"unsetLink()\"\n title=\"Remove Link\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M8 12a3 3 0 0 0 4.24 0l3.5-3.5a3 3 0 0 0-4.24-4.24M12 8a3 3 0 0 0-4.24 0l-3.5 3.5a3 3 0 0 0 4.24 4.24M3 17l14-14\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n </div>\n }\n\n <!-- History group -->\n @if (hasHistory()) {\n <div class=\"sdc-editor-toolbar__separator\"></div>\n <div class=\"sdc-editor-toolbar__button-group\">\n @if (mergedConfig().undo) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n (click)=\"undo()\"\n title=\"Undo\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M4 8h10a4 4 0 0 1 0 8H10M4 8l4-4M4 8l4 4\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n\n @if (mergedConfig().redo) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n (click)=\"redo()\"\n title=\"Redo\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M16 8H6a4 4 0 0 0 0 8h4M16 8l-4-4M16 8l-4 4\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n </div>\n }\n\n <!-- Custom buttons -->\n @if (mergedConfig().customButtons && mergedConfig().customButtons!.length > 0) {\n <div class=\"sdc-editor-toolbar__separator\"></div>\n <div class=\"sdc-editor-toolbar__button-group\">\n @for (btn of mergedConfig().customButtons; track btn.id) {\n <button\n type=\"button\"\n class=\"sdc-editor-toolbar__button\"\n [class.sdc-editor-toolbar__button--active]=\"btn.isActive ? btn.isActive() : false\"\n (click)=\"btn.action()\"\n [title]=\"btn.title\"\n [innerHTML]=\"btn.icon\">\n </button>\n }\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\n\n/**\n * Link data structure for link insertion\n */\nexport interface LinkData {\n url: string;\n text: string;\n}\n\n/**\n * Modal component for inserting/editing links in the rich text editor\n */\n@Component({\n selector: 'sdc-link-modal',\n standalone: true,\n imports: [ReactiveFormsModule],\n templateUrl: './link-modal.component.html',\n styleUrls: ['./link-modal.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinkModalComponent {\n private readonly fb = inject(FormBuilder);\n\n /** Whether the modal is visible */\n public readonly visible = input<boolean>(false);\n\n /** Pre-selected text to use as link text */\n public readonly selectedText = input<string>('');\n\n /** Existing URL when editing a link */\n public readonly existingUrl = input<string>('');\n\n /** Event emitted when a link is added/updated */\n public readonly linkAdded = output<LinkData>();\n\n /** Event emitted when the modal is closed */\n public readonly closed = output<void>();\n\n /** Form group for link data */\n public readonly linkForm: FormGroup;\n\n /** Track if form was submitted to show validation errors */\n protected readonly submitted = signal(false);\n\n /** Computed title based on whether we're editing or adding */\n protected readonly modalTitle = computed(() => {\n return this.existingUrl() ? 'Edit Link' : 'Add Link';\n });\n\n constructor() {\n this.linkForm = this.fb.group({\n url: ['', [Validators.required, Validators.pattern('https?://.+')]],\n text: ['', Validators.required],\n });\n\n // Effect to update form when inputs change\n effect(() => {\n const text = this.selectedText();\n const url = this.existingUrl();\n const isVisible = this.visible();\n\n if (isVisible) {\n this.linkForm.patchValue({\n text: text || '',\n url: url || '',\n });\n this.submitted.set(false);\n }\n });\n }\n\n /** Submit the form and emit link data */\n addLink(): void {\n this.submitted.set(true);\n\n if (this.linkForm.valid) {\n const { url, text } = this.linkForm.value;\n this.linkAdded.emit({ url, text });\n this.closeModal();\n } else {\n this.linkForm.markAllAsTouched();\n }\n }\n\n /** Close the modal and reset form */\n closeModal(): void {\n this.closed.emit();\n this.linkForm.reset();\n this.submitted.set(false);\n }\n\n /** Check if a field has errors and should show them */\n hasError(fieldName: string): boolean {\n const field = this.linkForm.get(fieldName);\n return !!(field?.invalid && (field?.touched || this.submitted()));\n }\n\n /** Get specific error for a field */\n getError(fieldName: string, errorType: string): boolean {\n const field = this.linkForm.get(fieldName);\n return !!field?.errors?.[errorType];\n }\n}\n","@if (visible()) {\n <div class=\"sdc-link-modal__overlay\" (click)=\"closeModal()\">\n <div class=\"sdc-link-modal__container\" (click)=\"$event.stopPropagation()\">\n <!-- Header -->\n <div class=\"sdc-link-modal__header\">\n <h3 class=\"sdc-link-modal__title\">{{ modalTitle() }}</h3>\n <button\n type=\"button\"\n class=\"sdc-link-modal__close\"\n (click)=\"closeModal()\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M15 5L5 15M5 5l10 10\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"sdc-link-modal__content\">\n <form [formGroup]=\"linkForm\" class=\"sdc-link-modal__form\">\n <!-- Link Text Field -->\n <div class=\"sdc-link-modal__field\">\n <label for=\"linkText\" class=\"sdc-link-modal__label\">\n Link Text\n </label>\n <input\n id=\"linkText\"\n type=\"text\"\n formControlName=\"text\"\n placeholder=\"Enter link text\"\n class=\"sdc-link-modal__input\"\n [class.sdc-link-modal__input--error]=\"hasError('text')\" />\n @if (hasError('text')) {\n <span class=\"sdc-link-modal__error\">\n Link text is required\n </span>\n }\n </div>\n\n <!-- URL Field -->\n <div class=\"sdc-link-modal__field\">\n <label for=\"linkUrl\" class=\"sdc-link-modal__label\">\n URL\n </label>\n <input\n id=\"linkUrl\"\n type=\"url\"\n formControlName=\"url\"\n placeholder=\"https://example.com\"\n class=\"sdc-link-modal__input\"\n [class.sdc-link-modal__input--error]=\"hasError('url')\" />\n @if (hasError('url')) {\n <span class=\"sdc-link-modal__error\">\n @if (getError('url', 'required')) {\n URL is required\n } @else if (getError('url', 'pattern')) {\n URL must start with http:// or https://\n }\n </span>\n }\n <span class=\"sdc-link-modal__hint\">\n Must start with http:// or https://\n </span>\n </div>\n </form>\n </div>\n\n <!-- Footer -->\n <div class=\"sdc-link-modal__footer\">\n <button\n type=\"button\"\n class=\"sdc-link-modal__button sdc-link-modal__button--secondary\"\n (click)=\"closeModal()\">\n Cancel\n </button>\n <button\n type=\"button\"\n class=\"sdc-link-modal__button sdc-link-modal__button--primary\"\n [disabled]=\"linkForm.invalid\"\n (click)=\"addLink()\">\n {{ existingUrl() ? 'Update' : 'Add' }} Link\n </button>\n </div>\n </div>\n </div>\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n OnDestroy,\n OnInit,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormSubmittedEvent,\n ReactiveFormsModule,\n ValidationErrors,\n} from '@angular/forms';\nimport { Editor } from '@tiptap/core';\nimport StarterKit from '@tiptap/starter-kit';\nimport Underline from '@tiptap/extension-underline';\nimport Link from '@tiptap/extension-link';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { Subscription } from 'rxjs';\nimport { ThemeClass } from '@3ddv/software-division-components/shared';\nimport {\n ToolbarConfig,\n ToolbarPreset,\n TOOLBAR_PRESETS,\n DEFAULT_TOOLBAR_CONFIG,\n LinkConfig,\n DEFAULT_LINK_CONFIG,\n ErrorDisplayMode,\n} from './types';\nimport { EditorToolbarComponent } from './ui/editor-toolbar/editor-toolbar.component';\nimport { LinkModalComponent, LinkData } from './ui/link-modal/link-modal.component';\n\n/**\n * A rich text editor component built on TipTap\n *\n * This component provides a WYSIWYG editor with configurable toolbar,\n * form integration, and theme support.\n *\n * @since 1.5.0\n */\n@Component({\n selector: 'sdc-rich-text-editor',\n standalone: true,\n imports: [ReactiveFormsModule, EditorToolbarComponent, LinkModalComponent],\n templateUrl: './rich-text-editor.component.html',\n styleUrls: ['./rich-text-editor.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RichTextEditorComponent implements OnInit, AfterViewInit, OnDestroy {\n /** Editor content container element */\n private readonly editorContent = viewChild<ElementRef<HTMLDivElement>>('editorContent');\n\n /** TipTap editor instance (signal for change detection) */\n public readonly editorSignal = signal<Editor | null>(null);\n\n /** Getter for backward compatibility */\n public get editor(): Editor | null {\n return this.editorSignal();\n }\n\n // ============================================\n // Input signals\n // ============================================\n\n /** Theme class to apply */\n public readonly theme = input<ThemeClass>('theme-sdc');\n\n /** Form control for two-way binding */\n public readonly control = input<AbstractControl<string | null> | FormControl | null>(null);\n\n /** Placeholder text when editor is empty */\n public readonly placeholder = input<string>('');\n\n /** Whether the editor is disabled */\n public readonly disabled = input<boolean>(false);\n\n /** Minimum height of the editor */\n public readonly minHeight = input<string>('180px');\n\n /** Maximum height of the editor (enables scrolling) */\n public readonly maxHeight = input<string | null>(null);\n\n /** Toolbar configuration object */\n public readonly toolbarConfig = input<ToolbarConfig>(DEFAULT_TOOLBAR_CONFIG);\n\n /** Toolbar preset name (overrides toolbarConfig) */\n public readonly toolbarPreset = input<ToolbarPreset | null>(null);\n\n /** Link behavior configuration */\n public readonly linkConfig = input<LinkConfig>(DEFAULT_LINK_CONFIG);\n\n /** Error display mode */\n public readonly errorDisplayMode = input<ErrorDisplayMode>('after-submit');\n\n /** Custom error message */\n public readonly errorMessage = input<string>('');\n\n /** Label text */\n public readonly label = input<string>('');\n\n /** Label position */\n public readonly labelPosition = input<'top' | 'left'>('top');\n\n /** Name attribute for form control */\n public readonly name = input<string>('');\n\n /** Whether to autofocus the editor on init */\n public readonly autoFocus = input<boolean>(false);\n\n // ============================================\n // Output signals\n // ============================================\n\n /** Emits when the editor is ready */\n public readonly editorReady = output<Editor>();\n\n /** Emits HTML content on change */\n public readonly contentChange = output<string>();\n\n /** Emits on focus */\n public readonly onFocus = output<FocusEvent>();\n\n /** Emits on blur */\n public readonly onBlur = output<FocusEvent>();\n\n // ============================================\n // Internal state\n // ============================================\n\n /** Form control state for validation display */\n public readonly controlState = signal<{\n invalid: boolean;\n touched: boolean;\n dirty: boolean;\n errors: ValidationErrors | null;\n isFormSubmitted: boolean;\n }>({ invalid: false, touched: false, dirty: false, errors: null, isFormSubmitted: false });\n\n /** Link modal visibility state */\n protected readonly showLinkModal = signal(false);\n\n /** Selected text for link modal */\n protected readonly selectedText = signal('');\n\n /** Existing URL when editing a link */\n protected readonly existingLinkUrl = signal('');\n\n /** Subscriptions for cleanup */\n private readonly subscriptions: Subscription[] = [];\n\n /** Flag to prevent update loops */\n private isUpdatingFromEditor = false;\n\n /** Cached form control reference (to avoid calling signals in callbacks) */\n private formControlRef: AbstractControl<string | null> | FormControl | null = null;\n\n // ============================================\n // Computed values\n // ============================================\n\n /** Computed toolbar config using preset or custom config */\n protected readonly computedToolbarConfig = computed(() => {\n const preset = this.toolbarPreset();\n if (preset) {\n return TOOLBAR_PRESETS[preset];\n }\n return this.toolbarConfig();\n });\n\n /** Computed class string for the component */\n protected readonly computedClass = computed(() => {\n const themeClass = this.theme();\n const errorClass = this.showError() ? 'has-error' : '';\n const disabledClass = this.disabled() ? 'sdc-rich-text-editor--disabled' : '';\n return ['sdc-rich-text-editor', themeClass, errorClass, disabledClass].filter(Boolean).join(' ');\n });\n\n /** Computed label class */\n protected readonly labelClass = computed(() => {\n const position = this.labelPosition();\n return position === 'left' ? 'sdc-rich-text-editor__label left' : 'sdc-rich-text-editor__label top';\n });\n\n /** Whether to show the label */\n protected readonly showLabel = computed(() => {\n return this.label() && this.label().trim().length > 0;\n });\n\n /** Current error message to display */\n protected readonly currentErrorMessage = computed(() => {\n const customMessage = this.errorMessage();\n const hasErrors = Object.keys(this.controlState()?.errors ?? {}).length > 0;\n\n if (hasErrors && customMessage && customMessage.trim().length > 0) {\n return customMessage;\n }\n\n if (hasErrors) {\n const firstErrorKey = Object.keys(this.controlState()?.errors ?? {})[0];\n return this.getValidatorErrorMessage(firstErrorKey);\n }\n\n return '';\n });\n\n /** Whether to show error */\n protected readonly showError = computed(() => {\n const errorMode = this.errorDisplayMode();\n\n if (this.controlState()?.invalid) {\n if (errorMode === 'always') {\n return this.controlState()?.touched || this.controlState()?.dirty || this.controlState()?.isFormSubmitted;\n } else if (errorMode === 'after-submit') {\n return this.controlState()?.isFormSubmitted;\n }\n }\n\n return false;\n });\n\n /** Computed editor styles */\n protected readonly editorStyles = computed(() => {\n const styles: Record<string, string> = {\n minHeight: this.minHeight(),\n };\n const maxH = this.maxHeight();\n if (maxH) {\n styles['maxHeight'] = maxH;\n styles['overflowY'] = 'auto';\n }\n return styles;\n });\n\n constructor() {\n // No effects needed - disabled state is set during initialization\n // and can be updated via setDisabled() method if needed dynamically\n }\n\n ngOnInit(): void {\n // Validate required inputs\n if ((this.control() || this.showLabel()) && !this.name()) {\n console.warn('RichTextEditorComponent: name is recommended when control or label inputs are present');\n }\n\n // Cache the control reference to avoid calling signals in callbacks\n const ctrl = this.control();\n this.formControlRef = ctrl;\n\n // Subscribe to form events for validation\n const formEventsSubscription = ctrl?.parent?.events.subscribe(event => {\n if (event instanceof FormSubmittedEvent) {\n this.controlState.set({ ...this.controlState(), isFormSubmitted: true });\n\n if (event.source.status === 'INVALID') {\n this.controlState.set({ ...this.controlState(), invalid: true });\n }\n }\n this.updateErrors();\n });\n\n const statusChangesSubscription = ctrl?.statusChanges.subscribe(status => {\n if (status === 'INVALID') {\n this.controlState.set({ ...this.controlState(), invalid: true });\n }\n this.updateErrors();\n });\n\n if (formEventsSubscription) {\n this.subscriptions.push(formEventsSubscription);\n }\n if (statusChangesSubscription) {\n this.subscriptions.push(statusChangesSubscription);\n }\n }\n\n ngAfterViewInit(): void {\n this.initializeEditor();\n }\n\n ngOnDestroy(): void {\n this.editorSignal()?.destroy();\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n /** Initialize the TipTap editor */\n private initializeEditor(): void {\n const element = this.editorContent()?.nativeElement;\n if (!element) return;\n\n const linkCfg = { ...DEFAULT_LINK_CONFIG, ...this.linkConfig() };\n\n const newEditor = new Editor({\n element,\n extensions: [\n StarterKit.configure({\n heading: {\n levels: this.computedToolbarConfig().headings || [1, 2, 3],\n },\n }),\n Underline,\n Link.configure({\n openOnClick: linkCfg.openOnClick,\n HTMLAttributes: {\n class: linkCfg.linkClass,\n ...(linkCfg.openInNewTab ? { target: '_blank' } : {}),\n ...(linkCfg.addNoopener ? { rel: 'noopener noreferrer' } : {}),\n },\n }),\n Placeholder.configure({\n placeholder: this.placeholder(),\n }),\n ],\n content: this.formControlRef?.value || '',\n editable: !this.disabled(),\n autofocus: this.autoFocus(),\n onUpdate: ({ editor }) => {\n this.isUpdatingFromEditor = true;\n const html = editor.getHTML();\n\n // Update form control - cache the control reference\n const ctrl = this.formControlRef;\n if (ctrl) {\n ctrl.setValue(html, { emitEvent: false });\n ctrl.markAsDirty();\n }\n\n // Emit content change\n this.contentChange.emit(html);\n\n this.isUpdatingFromEditor = false;\n },\n onFocus: ({ event }) => {\n this.controlState.set({ ...this.controlState(), touched: true });\n this.onFocus.emit(event);\n },\n onBlur: ({ event }) => {\n this.controlState.set({ ...this.controlState(), touched: true });\n // Update errors on blur to ensure validation shows after touch\n this.updateErrors();\n this.onBlur.emit(event);\n },\n });\n\n // Set the signal to trigger change detection\n this.editorSignal.set(newEditor);\n this.editorReady.emit(newEditor);\n }\n\n /** Update error state from form control */\n private updateErrors(): void {\n const ctrl = this.formControlRef;\n const newErrors = ctrl?.errors || null;\n this.controlState.set({\n ...this.controlState(),\n errors: newErrors,\n invalid: !!newErrors,\n });\n }\n\n /** Get error message for validator */\n private getValidatorErrorMessage(errorKey: string): string {\n switch (errorKey) {\n case 'required':\n return 'This field is required.';\n case 'minlength':\n return 'Content is too short.';\n case 'maxlength':\n return 'Content is too long.';\n default:\n return 'Please enter a valid value.';\n }\n }\n\n /** Handle link button click from toolbar */\n protected handleLinkRequested(): void {\n const editor = this.editorSignal();\n if (!editor) return;\n\n const { from, to } = editor.state.selection;\n const selectedText = editor.state.doc.textBetween(from, to);\n\n // Check if we're on an existing link\n const linkMark = editor.getAttributes('link');\n const existingUrl = linkMark?.href || '';\n\n this.selectedText.set(selectedText);\n this.existingLinkUrl.set(existingUrl);\n this.showLinkModal.set(true);\n }\n\n /** Handle link added from modal */\n protected handleLinkAdded(data: LinkData): void {\n const editor = this.editorSignal();\n if (!editor) return;\n\n const { url, text } = data;\n const { from, to } = editor.state.selection;\n const hasSelection = from !== to;\n\n if (hasSelection) {\n // Update selected text with link\n editor.chain().focus().setLink({ href: url }).run();\n } else {\n // Insert new link at cursor position\n editor.chain().focus().insertContent(`<a href=\"${url}\">${text}</a>`).run();\n }\n }\n\n /** Handle link modal close */\n protected handleLinkModalClose(): void {\n this.showLinkModal.set(false);\n this.selectedText.set('');\n this.existingLinkUrl.set('');\n }\n}\n","<div [class]=\"computedClass()\">\n <!-- Label -->\n @if (showLabel()) {\n <label [for]=\"name()\" [class]=\"labelClass()\">\n {{ label() }}\n </label>\n }\n\n <div class=\"sdc-rich-text-editor__wrapper\" [class.sdc-rich-text-editor__wrapper--left-label]=\"labelPosition() === 'left'\">\n <!-- Toolbar -->\n @if (editorSignal()) {\n <sdc-editor-toolbar\n [editor]=\"editorSignal()!\"\n [config]=\"computedToolbarConfig()\"\n (linkRequested)=\"handleLinkRequested()\"\n />\n }\n\n <!-- Editor content area -->\n <div\n class=\"sdc-rich-text-editor__content\"\n [class.sdc-rich-text-editor__content--error]=\"showError()\"\n [class.sdc-rich-text-editor__content--disabled]=\"disabled()\"\n [style]=\"editorStyles()\">\n <div #editorContent class=\"sdc-rich-text-editor__prosemirror\"></div>\n </div>\n\n <!-- Error message -->\n @if (showError() && currentErrorMessage()) {\n <div class=\"sdc-rich-text-editor__error\">\n {{ currentErrorMessage() }}\n </div>\n }\n </div>\n</div>\n\n<!-- Link Modal -->\n<sdc-link-modal\n [visible]=\"showLinkModal()\"\n [selectedText]=\"selectedText()\"\n [existingUrl]=\"existingLinkUrl()\"\n (linkAdded)=\"handleLinkAdded($event)\"\n (closed)=\"handleLinkModalClose()\"\n/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3ddv/software-division-components",
3
- "version": "2.0.4",
3
+ "version": "2.0.6",
4
4
  "main": "./fesm2022/3ddv-software-division-components.mjs",
5
5
  "module": "fesm2022/3ddv-software-division-components.mjs",
6
6
  "typings": "types/3ddv-software-division-components.d.ts",
package/styles.css CHANGED
@@ -1,2 +1,2 @@
1
- /*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-600:oklch(57.7% .245 27.325);--color-green-600:oklch(62.7% .194 149.214);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-gray-600:oklch(44.6% .03 256.802);--color-neutral-50:oklch(98.5% 0 0);--color-neutral-100:oklch(97% 0 0);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-300:oklch(87% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-500:oklch(55.6% 0 0);--color-neutral-600:oklch(43.9% 0 0);--color-neutral-700:oklch(37.1% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-2xl:1.5rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-extrabold:800;--tracking-tight:-.025em;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--radius-sm:calc(var(--radius) - 4px);--radius-md:calc(var(--radius) - 2px);--radius-lg:var(--radius);--radius-xl:calc(var(--radius) + 4px);--radius-2xl:1rem;--radius-3xl:1.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:var(--primary);--color-secondary:var(--secondary);--color-accent:var(--accent)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-12{top:calc(var(--spacing) * -12)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.-right-12{right:calc(var(--spacing) * -12)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-12{bottom:calc(var(--spacing) * -12)}.-left-12{left:calc(var(--spacing) * -12)}.left-1{left:calc(var(--spacing) * 1)}.left-1\/2{left:50%}.z-50{z-index:50}.z-\[2\]{z-index:2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.container{margin-inline:auto;padding-inline:2rem}.-mt-4{margin-top:calc(var(--spacing) * -4)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-3{margin-right:calc(var(--spacing) * 3)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.ml-2{margin-left:calc(var(--spacing) * 2)}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-24{height:calc(var(--spacing) * 24)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-72{width:calc(var(--spacing) * 72)}.w-\[280px\]{width:280px}.w-auto{width:auto}.w-full{width:100%}.max-w-lg{max-width:var(--container-lg)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[8rem\]{min-width:8rem}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-default{cursor:default}.resize{resize:both}.resize-none{resize:none}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-8{border-style:var(--tw-border-style);border-width:8px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-blue-500{border-color:var(--color-blue-500)}.border-border{border-color:var(--border)}.border-destructive{border-color:var(--destructive)}.border-input{border-color:var(--input)}.bg-background{background-color:var(--background)}.bg-black{background-color:var(--color-black)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-destructive{background-color:var(--destructive)}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-4{padding-block:calc(var(--spacing) * 4)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-black{color:var(--color-black)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-gray-600{color:var(--color-gray-600)}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-accent{outline-color:var(--accent)}.outline-white{outline-color:var(--color-white)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[animation-duration\:200\]{animation-duration:200}.focus-within\:relative:focus-within{position:relative}.focus-within\:z-20:focus-within{z-index:20}@media (hover:hover){.hover\:scale-95:hover{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-accent:focus{--tw-ring-color:var(--accent)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}@media (hover:hover){.disabled\:hover\:transform-none:disabled:hover{transform:none}}.has-\[\>ng-icon\]\:px-2\.5:has(>ng-icon){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>ng-icon\]\:px-3:has(>ng-icon){padding-inline:calc(var(--spacing) * 3)}.has-\[\>ng-icon\]\:px-4:has(>ng-icon){padding-inline:calc(var(--spacing) * 4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-selected\:opacity-100[aria-selected=true]{opacity:1}.data-\[active\]\:bg-accent[data-active]{background-color:var(--accent)}.data-\[active\]\:text-white[data-active]{color:var(--color-white)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:text-muted-foreground[data-disabled]{color:var(--muted-foreground)}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[outside\]\:text-muted-foreground[data-outside]{color:var(--muted-foreground)}.data-\[outside\]\:opacity-50[data-outside]{opacity:.5}.data-\[outside\]\:aria-selected\:bg-accent\/50[data-outside][aria-selected=true]{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.data-\[outside\]\:aria-selected\:bg-accent\/50[data-outside][aria-selected=true]{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.data-\[outside\]\:aria-selected\:text-muted-foreground[data-outside][aria-selected=true]{color:var(--muted-foreground)}.data-\[outside\]\:aria-selected\:opacity-30[data-outside][aria-selected=true]{opacity:.3}.data-\[selected\]\:bg-accent[data-selected]{background-color:var(--accent)}.data-\[selected\]\:bg-primary[data-selected]{background-color:var(--primary)}.data-\[selected\]\:text-primary-foreground[data-selected]{color:var(--primary-foreground)}.first\:data-\[selected\]\:rounded-l-md:first-child[data-selected]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.last\:data-\[selected\]\:rounded-r-md:last-child[data-selected]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}@media (hover:hover){.data-\[selected\]\:hover\:bg-primary[data-selected]:hover{background-color:var(--primary)}.data-\[selected\]\:hover\:text-primary-foreground[data-selected]:hover{color:var(--primary-foreground)}}.data-\[selected\]\:focus\:bg-primary[data-selected]:focus{background-color:var(--primary)}.data-\[selected\]\:focus\:text-primary-foreground[data-selected]:focus{color:var(--primary-foreground)}.data-\[selected\]\:data-\[outside\]\:bg-accent\/50[data-selected][data-outside]{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:data-\[outside\]\:bg-accent\/50[data-selected][data-outside]{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.data-\[side\=bottom\]\:top-\[2px\][data-side=bottom]{top:2px}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:.5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-.5rem}.data-\[side\=top\]\:bottom-\[2px\][data-side=top]{bottom:2px}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:.5rem}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing) * 9)}.data-\[size\=sm\]\:h-6[data-size=sm]{height:calc(var(--spacing) * 6)}.data-\[state\=closed\]\:animate-out[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:slide-out-to-top-\[2\%\][data-state=closed]{--tw-exit-translate-y:-2%}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:slide-in-from-top-\[2\%\][data-state=open]{--tw-enter-translate-y:-2%}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[today\]\:bg-accent[data-today]{background-color:var(--accent)}.data-\[today\]\:text-accent-foreground[data-today]{color:var(--accent-foreground)}@media (min-width:40rem){.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.sm\:text-left{text-align:left}}@media (min-width:48rem){.md\:mr-6{margin-right:calc(var(--spacing) * 6)}.md\:w-full{width:100%}}@media (min-width:64rem){.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.lg\:font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}}@media (prefers-color-scheme:dark){.dark\:border-input{border-color:var(--input)}.dark\:bg-destructive\/60{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/60{background-color:color-mix(in oklab, var(--destructive) 60%, transparent)}}.dark\:bg-input\/30{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30{background-color:color-mix(in oklab, var(--input) 30%, transparent)}}@media (hover:hover){.dark\:hover\:bg-accent\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/50:hover{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.dark\:hover\:bg-input\/50:hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:hover{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.dark\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}.dark\:focus-visible\:ring-destructive\/40:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}}.\[\&_ng-icon\]\:pointer-events-none ng-icon{pointer-events:none}.\[\&_ng-icon\]\:shrink-0 ng-icon{flex-shrink:0}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\.ng-invalid\.ng-touched\]\:border-destructive.ng-invalid.ng-touched{border-color:var(--destructive)}.\[\&\.ng-invalid\.ng-touched\]\:text-destructive.ng-invalid.ng-touched{color:var(--destructive)}.\[\&\.ng-invalid\.ng-touched\]\:focus-visible\:ring-destructive\/20.ng-invalid.ng-touched:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.\[\&\.ng-invalid\.ng-touched\]\:focus-visible\:ring-destructive\/20.ng-invalid.ng-touched:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}@media (prefers-color-scheme:dark){.dark\:\[\&\.ng-invalid\.ng-touched\]\:focus-visible\:ring-destructive\/40.ng-invalid.ng-touched:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:\[\&\.ng-invalid\.ng-touched\]\:focus-visible\:ring-destructive\/40.ng-invalid.ng-touched:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}}.\[\&\:has\(\[aria-selected\]\.day-range-end\)\]\:rounded-r-md:has([aria-selected].day-range-end){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>ng-icon\]\:pointer-events-none>ng-icon{pointer-events:none}.\[\&\>ng-icon\]\:size-4>ng-icon{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>ng-icon\]\:shrink-0>ng-icon{flex-shrink:0}.\[\&\>ng-icon\]\:text-muted-foreground>ng-icon{color:var(--muted-foreground)}.\[\&\>ng-icon\]\:text-white>ng-icon{color:var(--color-white)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;width:100%;height:100%;top:0;left:0}.cdk-overlay-container{z-index:1000;position:fixed}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{z-index:1000;display:flex;position:absolute}.cdk-overlay-pane{pointer-events:auto;box-sizing:border-box;z-index:1000;max-width:100%;max-height:100%;display:flex;position:absolute}.cdk-overlay-backdrop{pointer-events:auto;-webkit-tap-highlight-color:#0000;opacity:0;touch-action:manipulation;z-index:1000;transition:opacity .4s cubic-bezier(.25,.8,.25,1);position:absolute;inset:0}@media (prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media (forced-colors:active){.cdk-overlay-backdrop-showing{opacity:.6}}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{visibility:hidden;opacity:1;transition:visibility 1ms linear,opacity 1ms linear}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{z-index:1000;flex-direction:column;min-width:1px;min-height:1px;display:flex;position:absolute}.cdk-global-scrollblock{width:100%;position:fixed;overflow-y:scroll}.cdk-overlay-popover{pointer-events:none;white-space:normal;color:inherit;background:0 0;border:none;outline:0;width:100%;height:100%;padding:0;text-decoration:none;position:fixed;inset:0 auto auto 0;overflow:visible}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{z-index:auto;position:fixed}@keyframes indeterminate{0%{transform:translate(-100%)scaleX(.5)}to{transform:translate(100%)scaleX(.5)}}:root{--font-primary:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-secondary:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--text-xxs:.625rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--font-light:300;--font-regular:400;--font-medium:500;--font-semibold:600;--font-bold:700;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--space-0:0;--space-px:1px;--space-0_5:.125rem;--space-1:.25rem;--space-1_5:.375rem;--space-2:.5rem;--space-2_5:.625rem;--space-3:.75rem;--space-3_5:.875rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-7:1.75rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--radius-none:0;--radius-sm:.125rem;--radius-default:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--radius-full:9999px;--border-0:0;--border-default:1px;--border-2:2px;--border-3:3px;--border-4:4px;--border-6:6px;--border-8:8px;--color-neutral-50:#f8fafc;--color-neutral-100:#f1f5f9;--color-neutral-200:#e1e7ef;--color-neutral-250:#dedede;--color-neutral-300:#cbd2dc;--color-neutral-400:#97a3b4;--color-neutral-500:#61748f;--color-neutral-600:#435670;--color-neutral-650:#373a53;--color-neutral-700:#324258;--color-neutral-800:#1d283a;--color-neutral-900:#0f1729;--color-pure-white:#fff;--color-pure-black:#000;--color-pure-gray:gray;--color-primary:#ff820d;--color-primary-hover:#e06c00;--color-primary-active:#b85900;--color-primary-50:#fff7f0;--color-primary-100:#ffe7d1;--color-primary-200:#ffd5ad;--color-secondary:#0f2b5e;--color-secondary-hover:#14387b;--color-secondary-active:#19469a;--color-secondary-50:#f2f6fd;--color-secondary-100:#e0e9fa;--color-secondary-200:#c6d7f6;--color-alternative:#0da2e7;--color-alternative-hover:#0788c0;--color-alternative-active:#0369a0;--color-alternative-50:#f0f9ff;--color-alternative-100:#e1f3fe;--color-success:#36d399;--color-success-hover:#10b77f;--color-success-active:#059467;--color-success-50:#edfdf5;--color-success-100:#d1fae5;--color-warning:#fbbd23;--color-warning-hover:#db7706;--color-warning-active:#ad5700;--color-warning-50:#fffbeb;--color-warning-100:#fef3c8;--color-danger:#dc2828;--color-danger-hover:#b51c1c;--color-danger-active:#891010;--color-danger-50:#fef1f1;--color-danger-100:#fee1e1;--font-sans:"Geist Sans", sans-serif;--background:var(--color-pure-white);--foreground:var(--color-neutral-600);--card:var(--color-pure-white);--card-foreground:var(--color-neutral-600);--popover:var(--color-pure-white);--popover-foreground:var(--color-neutral-600);--primary:var(--color-primary);--primary-foreground:var(--color-pure-white);--secondary:var(--color-neutral-100);--secondary-foreground:var(--color-neutral-600);--muted:var(--color-neutral-50);--muted-foreground:var(--color-neutral-500);--accent:var(--color-primary-200);--accent-foreground:var(--color-neutral-700);--destructive:var(--color-danger);--destructive-foreground:var(--color-pure-white);--border:var(--color-neutral-200);--input:var(--color-neutral-200);--ring:var(--color-primary);--radius:var(--radius-lg);color-scheme:light}@media (max-width:1024px){.cdk-overlay-pane:has(>hlm-select-content),.cdk-overlay-pane:has(>hlm-select-content.full-width){width:100%!important;left:0!important;right:0!important}}:root{--p-button-primary-color:white!important;--p-button-primary-contrast-color:white!important;--p-button-primary-hover-color:white!important}.sdc-datepicker{--sdc-datepicker-label-color:var(--color-neutral-700);--sdc-datepicker-label-size:var(--text-base);--sdc-datepicker-label-weight:var(--font-semibold);--sdc-datepicker-label-gap:var(--space-6);--sdc-datepicker-label-width:auto;--sdc-datepicker-input-width:100%;--sdc-datepicker-input-background:var(--color-pure-white);--sdc-datepicker-input-border-color:var(--color-neutral-300);--sdc-datepicker-input-border-width:var(--border-default);--sdc-datepicker-input-border-radius:var(--radius-full);--sdc-datepicker-input-padding-vertical:var(--space-2);--sdc-datepicker-input-padding-horizontal:var(--space-3);--sdc-datepicker-input-text-color:var(--color-neutral-900);--sdc-datepicker-input-text-size:var(--text-base);--sdc-datepicker-input-text-weight:var(--font-medium);--sdc-datepicker-input-border-hover:var(--color-neutral-500);--sdc-datepicker-input-focus-ring-width:var(--border-default);--sdc-datepicker-input-focus-ring-color:var(--color-primary);--sdc-datepicker-input-focus-ring-offset:var(--border-2);--sdc-datepicker-placeholder-color:var(--color-neutral-500);--sdc-datepicker-placeholder-size:var(--text-sm);--sdc-datepicker-placeholder-weight:var(--font-medium);--sdc-datepicker-hint-color:var(--color-neutral-600);--sdc-datepicker-hint-size:var(--text-xs);--sdc-datepicker-error-color:var(--color-danger);--sdc-datepicker-error-size:var(--text-xs);--sdc-datepicker-calendar-background:var(--color-pure-white);--sdc-datepicker-calendar-border-color:var(--color-neutral-200);--sdc-datepicker-calendar-border-width:var(--border-default);--sdc-datepicker-calendar-border-radius:var(--radius-lg);--sdc-datepicker-calendar-shadow:0 1px 3px #00000014;--sdc-datepicker-calendar-padding:var(--space-4);--sdc-datepicker-month-year-text-color:var(--color-neutral-900);--sdc-datepicker-month-year-text-size:var(--text-base);--sdc-datepicker-month-year-text-weight:var(--font-semibold);--sdc-datepicker-month-year-hover-text-color:var(--color-neutral-900);--sdc-datepicker-month-year-padding:var(--space-2);--sdc-datepicker-month-year-button-background:var(--color-pure-white);--sdc-datepicker-month-year-button-text-color-hover:var(--color-pure-white);--sdc-datepicker-month-year-button-background-hover:var(--color-neutral-900);--sdc-datepicker-day-button-disabled-background:transparent;--sdc-datepicker-day-button-disabled-text-color:var(--color-neutral-300);--sdc-datepicker-day-button-background:transparent;--sdc-datepicker-day-button-text-color:var(--color-neutral-900);--sdc-datepicker-day-button-text-size:var(--text-sm);--sdc-datepicker-day-button-text-weight:var(--font-semibold);--sdc-datepicker-day-button-border-radius:var(--radius-md);--sdc-datepicker-day-button-padding:var(--space-2);--sdc-datepicker-day-button-hover-background:var(--color-secondary);--sdc-datepicker-day-button-hover-text-color:var(--color-pure-white)}.component-container{gap:var(--sdc-datepicker-label-gap);width:var(--sdc-datepicker-input-width);flex-direction:column;display:flex}.component-container hlm-date-picker{width:var(--sdc-datepicker-input-width)}.sdc-datepicker-label{font-weight:var(--sdc-datepicker-label-weight);font-size:var(--sdc-datepicker-label-size);color:hsl(var(--sdc-datepicker-label-color));width:var(--sdc-datepicker-label-width);padding-left:var(--sdc-datepicker-input-padding-horizontal);line-height:1.25rem;display:block}.component-container:has(.sdc-datepicker-label.left){flex-direction:row;align-items:center;padding-left:0}.sdc-datepicker button[brnpopovertrigger]{width:var(--sdc-datepicker-input-width);background:var(--sdc-datepicker-input-background);border:var(--sdc-datepicker-input-border-width) solid hsl(var(--sdc-datepicker-input-border-color));border-radius:var(--sdc-datepicker-input-border-radius);padding:var(--sdc-datepicker-input-padding-vertical) var(--sdc-datepicker-input-padding-horizontal);color:hsl(var(--sdc-datepicker-input-text-color));font-size:var(--sdc-datepicker-input-text-size);font-weight:var(--sdc-datepicker-input-text-weight);cursor:pointer;outline:none}.sdc-datepicker-placeholder{color:hsl(var(--sdc-datepicker-placeholder-color));font-size:var(--sdc-datepicker-placeholder-size);font-weight:var(--sdc-datepicker-placeholder-weight)}.sdc-datepicker button[brnpopovertrigger]:hover:not(:disabled){border-color:hsl(var(--sdc-datepicker-input-border-hover))}.sdc-datepicker button[brnpopovertrigger][data-state=open]{outline:var(--sdc-datepicker-input-focus-ring-width) solid hsl(var(--sdc-datepicker-input-focus-ring-color));outline-offset:var(--sdc-datepicker-input-focus-ring-offset)}.sdc-datepicker button[brnpopovertrigger]:disabled{opacity:.6;cursor:not-allowed;background:hsl(var(--color-neutral-100))}.sdc-datepicker-error{color:hsl(var(--sdc-datepicker-error-color));font-size:var(--sdc-datepicker-error-size);line-height:1rem}.sdc-datepicker-hint{color:hsl(var(--sdc-datepicker-hint-color));font-size:var(--sdc-datepicker-hint-size);line-height:1rem}.sdc-datepicker div[brncalendar]{background:hsl(var(--sdc-datepicker-calendar-background));border:var(--sdc-datepicker-calendar-border-width) solid hsl(var(--sdc-datepicker-calendar-border-color));border-radius:var(--sdc-datepicker-calendar-border-radius);box-shadow:var(--sdc-datepicker-calendar-shadow);padding:var(--sdc-datepicker-calendar-padding)}.sdc-datepicker div[brncalendarheader]{color:hsl(var(--sdc-datepicker-month-year-text-color));font-size:var(--sdc-datepicker-month-year-text-size);font-weight:var(--sdc-datepicker-month-year-text-weight);padding:var(--sdc-datepicker-month-year-padding)}.sdc-datepicker button[brncalendarpreviousbutton],.sdc-datepicker button[brncalendarnextbutton]{cursor:pointer;color:hsl(var(--sdc-datepicker-month-year-text-color));background:hsl(var(--sdc-datepicker-month-year-button-background));transition:all .2s}.sdc-datepicker button[brncalendarpreviousbutton]:disabled,.sdc-datepicker button[brncalendarnextbutton]:disabled{opacity:.6;cursor:not-allowed;color:hsl(var(--color-neutral-100))}.sdc-datepicker button[brncalendarpreviousbutton]:hover:not(:disabled),.sdc-datepicker button[brncalendarnextbutton]:hover:not(:disabled){color:hsl(var(--sdc-datepicker-month-year-button-text-color-hover));background:hsl(var(--sdc-datepicker-month-year-button-background-hover))}.sdc-datepicker button[brncalendarcellbutton]{background:hsl(var(--sdc-datepicker-day-button-background));color:hsl(var(--sdc-datepicker-day-button-text-color));font-size:var(--sdc-datepicker-day-button-text-size);font-weight:var(--sdc-datepicker-day-button-text-weight);border-radius:var(--sdc-datepicker-day-button-border-radius);padding:var(--sdc-datepicker-day-button-padding);cursor:pointer;transition:all .2s}.sdc-datepicker button[brncalendarcellbutton]:hover:not(:disabled){background-color:hsl(var(--sdc-datepicker-day-button-hover-background));color:hsl(var(--sdc-datepicker-day-button-hover-text-color))}.sdc-datepicker button[brncalendarcellbutton]:disabled{background-color:hsl(var(--sdc-datepicker-day-button-disabled-background));color:hsl(var(--sdc-datepicker-day-button-disabled-text-color));cursor:not-allowed}.variant-primary.sdc-datepicker{--sdc-datepicker-day-button-hover-background:var(--color-primary)}.variant-secondary.sdc-datepicker{--sdc-datepicker-day-button-hover-background:var(--color-secondary)}.variant-alternative.sdc-datepicker{--sdc-datepicker-day-button-hover-background:var(--color-alternative)}.variant-success.sdc-datepicker{--sdc-datepicker-day-button-hover-background:var(--color-success)}.variant-warning.sdc-datepicker{--sdc-datepicker-day-button-hover-background:var(--color-warning)}.variant-danger.sdc-datepicker{--sdc-datepicker-day-button-hover-background:var(--color-danger)}.radius-default.sdc-datepicker{--sdc-datepicker-input-border-radius:var(--radius-default);--sdc-datepicker-day-button-border-radius:var(--radius-default)}.radius-sm.sdc-datepicker{--sdc-datepicker-input-border-radius:var(--radius-sm);--sdc-datepicker-day-button-border-radius:var(--radius-sm)}.radius-md.sdc-datepicker{--sdc-datepicker-input-border-radius:var(--radius-md);--sdc-datepicker-day-button-border-radius:var(--radius-md)}.radius-lg.sdc-datepicker{--sdc-datepicker-input-border-radius:var(--radius-lg);--sdc-datepicker-day-button-border-radius:var(--radius-lg)}.radius-xl.sdc-datepicker{--sdc-datepicker-input-border-radius:var(--radius-xl);--sdc-datepicker-day-button-border-radius:var(--radius-xl)}.dialog-overlay-margin{margin:0 1rem}.sdc-ripple{background-color:var(--sdc-button-ripple-color);pointer-events:none;border-radius:50%;animation:.6s linear ripple-animation;position:absolute;transform:scale(0)}@keyframes ripple-animation{to{opacity:0;transform:scale(4)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-600:oklch(57.7% .245 27.325);--color-green-600:oklch(62.7% .194 149.214);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-gray-600:oklch(44.6% .03 256.802);--color-neutral-50:oklch(98.5% 0 0);--color-neutral-100:oklch(97% 0 0);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-300:oklch(87% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-500:oklch(55.6% 0 0);--color-neutral-600:oklch(43.9% 0 0);--color-neutral-700:oklch(37.1% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-2xl:1.5rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-extrabold:800;--tracking-tight:-.025em;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--radius-sm:calc(var(--radius) - 4px);--radius-md:calc(var(--radius) - 2px);--radius-lg:var(--radius);--radius-xl:calc(var(--radius) + 4px);--radius-2xl:1rem;--radius-3xl:1.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:var(--primary);--color-secondary:var(--secondary);--color-accent:var(--accent)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-12{top:calc(var(--spacing) * -12)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.-right-12{right:calc(var(--spacing) * -12)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-12{bottom:calc(var(--spacing) * -12)}.-left-12{left:calc(var(--spacing) * -12)}.left-1{left:calc(var(--spacing) * 1)}.left-1\/2{left:50%}.z-50{z-index:50}.z-\[2\]{z-index:2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.container{margin-inline:auto;padding-inline:2rem}.-mt-4{margin-top:calc(var(--spacing) * -4)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-3{margin-right:calc(var(--spacing) * 3)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.ml-2{margin-left:calc(var(--spacing) * 2)}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-24{height:calc(var(--spacing) * 24)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-72{width:calc(var(--spacing) * 72)}.w-\[280px\]{width:280px}.w-auto{width:auto}.w-full{width:100%}.max-w-lg{max-width:var(--container-lg)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[8rem\]{min-width:8rem}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-default{cursor:default}.resize{resize:both}.resize-none{resize:none}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-8{border-style:var(--tw-border-style);border-width:8px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-blue-500{border-color:var(--color-blue-500)}.border-border{border-color:var(--border)}.border-destructive{border-color:var(--destructive)}.border-input{border-color:var(--input)}.bg-background{background-color:var(--background)}.bg-black{background-color:var(--color-black)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-destructive{background-color:var(--destructive)}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-4{padding-block:calc(var(--spacing) * 4)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-black{color:var(--color-black)}.text-blue-500{color:var(--color-blue-500)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-gray-600{color:var(--color-gray-600)}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.italic{font-style:italic}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-accent{outline-color:var(--accent)}.outline-white{outline-color:var(--color-white)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[animation-duration\:200\]{animation-duration:200}.focus-within\:relative:focus-within{position:relative}.focus-within\:z-20:focus-within{z-index:20}@media (hover:hover){.hover\:scale-95:hover{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-accent:focus{--tw-ring-color:var(--accent)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}@media (hover:hover){.disabled\:hover\:transform-none:disabled:hover{transform:none}}.has-\[\>ng-icon\]\:px-2\.5:has(>ng-icon){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>ng-icon\]\:px-3:has(>ng-icon){padding-inline:calc(var(--spacing) * 3)}.has-\[\>ng-icon\]\:px-4:has(>ng-icon){padding-inline:calc(var(--spacing) * 4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-selected\:opacity-100[aria-selected=true]{opacity:1}.data-\[active\]\:bg-accent[data-active]{background-color:var(--accent)}.data-\[active\]\:text-white[data-active]{color:var(--color-white)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:text-muted-foreground[data-disabled]{color:var(--muted-foreground)}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[outside\]\:text-muted-foreground[data-outside]{color:var(--muted-foreground)}.data-\[outside\]\:opacity-50[data-outside]{opacity:.5}.data-\[outside\]\:aria-selected\:bg-accent\/50[data-outside][aria-selected=true]{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.data-\[outside\]\:aria-selected\:bg-accent\/50[data-outside][aria-selected=true]{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.data-\[outside\]\:aria-selected\:text-muted-foreground[data-outside][aria-selected=true]{color:var(--muted-foreground)}.data-\[outside\]\:aria-selected\:opacity-30[data-outside][aria-selected=true]{opacity:.3}.data-\[selected\]\:bg-accent[data-selected]{background-color:var(--accent)}.data-\[selected\]\:bg-primary[data-selected]{background-color:var(--primary)}.data-\[selected\]\:text-primary-foreground[data-selected]{color:var(--primary-foreground)}.first\:data-\[selected\]\:rounded-l-md:first-child[data-selected]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.last\:data-\[selected\]\:rounded-r-md:last-child[data-selected]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}@media (hover:hover){.data-\[selected\]\:hover\:bg-primary[data-selected]:hover{background-color:var(--primary)}.data-\[selected\]\:hover\:text-primary-foreground[data-selected]:hover{color:var(--primary-foreground)}}.data-\[selected\]\:focus\:bg-primary[data-selected]:focus{background-color:var(--primary)}.data-\[selected\]\:focus\:text-primary-foreground[data-selected]:focus{color:var(--primary-foreground)}.data-\[selected\]\:data-\[outside\]\:bg-accent\/50[data-selected][data-outside]{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:data-\[outside\]\:bg-accent\/50[data-selected][data-outside]{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.data-\[side\=bottom\]\:top-\[2px\][data-side=bottom]{top:2px}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:.5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-.5rem}.data-\[side\=top\]\:bottom-\[2px\][data-side=top]{bottom:2px}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:.5rem}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing) * 9)}.data-\[size\=sm\]\:h-6[data-size=sm]{height:calc(var(--spacing) * 6)}.data-\[state\=closed\]\:animate-out[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:slide-out-to-top-\[2\%\][data-state=closed]{--tw-exit-translate-y:-2%}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:slide-in-from-top-\[2\%\][data-state=open]{--tw-enter-translate-y:-2%}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[today\]\:bg-accent[data-today]{background-color:var(--accent)}.data-\[today\]\:text-accent-foreground[data-today]{color:var(--accent-foreground)}@media (min-width:40rem){.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.sm\:text-left{text-align:left}}@media (min-width:48rem){.md\:mr-6{margin-right:calc(var(--spacing) * 6)}.md\:w-full{width:100%}}@media (min-width:64rem){.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.lg\:font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}}@media (prefers-color-scheme:dark){.dark\:border-input{border-color:var(--input)}.dark\:bg-destructive\/60{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/60{background-color:color-mix(in oklab, var(--destructive) 60%, transparent)}}.dark\:bg-input\/30{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30{background-color:color-mix(in oklab, var(--input) 30%, transparent)}}@media (hover:hover){.dark\:hover\:bg-accent\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/50:hover{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.dark\:hover\:bg-input\/50:hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:hover{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.dark\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}.dark\:focus-visible\:ring-destructive\/40:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}}.\[\&_ng-icon\]\:pointer-events-none ng-icon{pointer-events:none}.\[\&_ng-icon\]\:shrink-0 ng-icon{flex-shrink:0}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\.ng-invalid\.ng-touched\]\:border-destructive.ng-invalid.ng-touched{border-color:var(--destructive)}.\[\&\.ng-invalid\.ng-touched\]\:text-destructive.ng-invalid.ng-touched{color:var(--destructive)}.\[\&\.ng-invalid\.ng-touched\]\:focus-visible\:ring-destructive\/20.ng-invalid.ng-touched:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.\[\&\.ng-invalid\.ng-touched\]\:focus-visible\:ring-destructive\/20.ng-invalid.ng-touched:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}@media (prefers-color-scheme:dark){.dark\:\[\&\.ng-invalid\.ng-touched\]\:focus-visible\:ring-destructive\/40.ng-invalid.ng-touched:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:\[\&\.ng-invalid\.ng-touched\]\:focus-visible\:ring-destructive\/40.ng-invalid.ng-touched:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}}.\[\&\:has\(\[aria-selected\]\.day-range-end\)\]\:rounded-r-md:has([aria-selected].day-range-end){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>ng-icon\]\:pointer-events-none>ng-icon{pointer-events:none}.\[\&\>ng-icon\]\:size-4>ng-icon{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>ng-icon\]\:shrink-0>ng-icon{flex-shrink:0}.\[\&\>ng-icon\]\:text-muted-foreground>ng-icon{color:var(--muted-foreground)}.\[\&\>ng-icon\]\:text-white>ng-icon{color:var(--color-white)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;width:100%;height:100%;top:0;left:0}.cdk-overlay-container{z-index:1000;position:fixed}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{z-index:1000;display:flex;position:absolute}.cdk-overlay-pane{pointer-events:auto;box-sizing:border-box;z-index:1000;max-width:100%;max-height:100%;display:flex;position:absolute}.cdk-overlay-backdrop{pointer-events:auto;-webkit-tap-highlight-color:#0000;opacity:0;touch-action:manipulation;z-index:1000;transition:opacity .4s cubic-bezier(.25,.8,.25,1);position:absolute;inset:0}@media (prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media (forced-colors:active){.cdk-overlay-backdrop-showing{opacity:.6}}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{visibility:hidden;opacity:1;transition:visibility 1ms linear,opacity 1ms linear}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{z-index:1000;flex-direction:column;min-width:1px;min-height:1px;display:flex;position:absolute}.cdk-global-scrollblock{width:100%;position:fixed;overflow-y:scroll}.cdk-overlay-popover{pointer-events:none;white-space:normal;color:inherit;background:0 0;border:none;outline:0;width:100%;height:100%;padding:0;text-decoration:none;position:fixed;inset:0 auto auto 0;overflow:visible}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{z-index:auto;position:fixed}@keyframes indeterminate{0%{transform:translate(-100%)scaleX(.5)}to{transform:translate(100%)scaleX(.5)}}:root{--font-primary:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-secondary:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--text-xxs:.625rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--font-light:300;--font-regular:400;--font-medium:500;--font-semibold:600;--font-bold:700;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--space-0:0;--space-px:1px;--space-0_5:.125rem;--space-1:.25rem;--space-1_5:.375rem;--space-2:.5rem;--space-2_5:.625rem;--space-3:.75rem;--space-3_5:.875rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-7:1.75rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--radius-none:0;--radius-sm:.125rem;--radius-default:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--radius-full:9999px;--border-0:0;--border-default:1px;--border-2:2px;--border-3:3px;--border-4:4px;--border-6:6px;--border-8:8px;--color-neutral-50:#f8fafc;--color-neutral-100:#f1f5f9;--color-neutral-200:#e1e7ef;--color-neutral-250:#dedede;--color-neutral-300:#cbd2dc;--color-neutral-400:#97a3b4;--color-neutral-500:#61748f;--color-neutral-600:#435670;--color-neutral-650:#373a53;--color-neutral-700:#324258;--color-neutral-800:#1d283a;--color-neutral-900:#0f1729;--color-pure-white:#fff;--color-pure-black:#000;--color-pure-gray:gray;--color-primary:#ff820d;--color-primary-hover:#e06c00;--color-primary-active:#b85900;--color-primary-50:#fff7f0;--color-primary-100:#ffe7d1;--color-primary-200:#ffd5ad;--color-secondary:#0f2b5e;--color-secondary-hover:#14387b;--color-secondary-active:#19469a;--color-secondary-50:#f2f6fd;--color-secondary-100:#e0e9fa;--color-secondary-200:#c6d7f6;--color-alternative:#0da2e7;--color-alternative-hover:#0788c0;--color-alternative-active:#0369a0;--color-alternative-50:#f0f9ff;--color-alternative-100:#e1f3fe;--color-success:#36d399;--color-success-hover:#10b77f;--color-success-active:#059467;--color-success-50:#edfdf5;--color-success-100:#d1fae5;--color-warning:#fbbd23;--color-warning-hover:#db7706;--color-warning-active:#ad5700;--color-warning-50:#fffbeb;--color-warning-100:#fef3c8;--color-danger:#dc2828;--color-danger-hover:#b51c1c;--color-danger-active:#891010;--color-danger-50:#fef1f1;--color-danger-100:#fee1e1;--font-sans:"Geist Sans", sans-serif;--background:var(--color-pure-white);--foreground:var(--color-neutral-600);--card:var(--color-pure-white);--card-foreground:var(--color-neutral-600);--popover:var(--color-pure-white);--popover-foreground:var(--color-neutral-600);--primary:var(--color-primary);--primary-foreground:var(--color-pure-white);--secondary:var(--color-neutral-100);--secondary-foreground:var(--color-neutral-600);--muted:var(--color-neutral-50);--muted-foreground:var(--color-neutral-500);--accent:var(--color-primary-200);--accent-foreground:var(--color-neutral-700);--destructive:var(--color-danger);--destructive-foreground:var(--color-pure-white);--border:var(--color-neutral-200);--input:var(--color-neutral-200);--ring:var(--color-primary);--radius:var(--radius-lg);color-scheme:light}@media (max-width:1024px){.cdk-overlay-pane:has(>hlm-select-content),.cdk-overlay-pane:has(>hlm-select-content.full-width){width:100%!important;left:0!important;right:0!important}}:root{--p-button-primary-color:white!important;--p-button-primary-contrast-color:white!important;--p-button-primary-hover-color:white!important}.sdc-datepicker{--sdc-datepicker-label-color:var(--color-neutral-700);--sdc-datepicker-label-size:var(--text-base);--sdc-datepicker-label-weight:var(--font-semibold);--sdc-datepicker-label-gap:var(--space-6);--sdc-datepicker-label-width:auto;--sdc-datepicker-input-width:100%;--sdc-datepicker-input-background:var(--color-pure-white);--sdc-datepicker-input-border-color:var(--color-neutral-300);--sdc-datepicker-input-border-width:var(--border-default);--sdc-datepicker-input-border-radius:var(--radius-full);--sdc-datepicker-input-padding-vertical:var(--space-2);--sdc-datepicker-input-padding-horizontal:var(--space-3);--sdc-datepicker-input-text-color:var(--color-neutral-900);--sdc-datepicker-input-text-size:var(--text-base);--sdc-datepicker-input-text-weight:var(--font-medium);--sdc-datepicker-input-border-hover:var(--color-neutral-500);--sdc-datepicker-input-focus-ring-width:var(--border-default);--sdc-datepicker-input-focus-ring-color:var(--color-primary);--sdc-datepicker-input-focus-ring-offset:var(--border-2);--sdc-datepicker-placeholder-color:var(--color-neutral-500);--sdc-datepicker-placeholder-size:var(--text-sm);--sdc-datepicker-placeholder-weight:var(--font-medium);--sdc-datepicker-hint-color:var(--color-neutral-600);--sdc-datepicker-hint-size:var(--text-xs);--sdc-datepicker-error-color:var(--color-danger);--sdc-datepicker-error-size:var(--text-xs);--sdc-datepicker-calendar-background:var(--color-pure-white);--sdc-datepicker-calendar-border-color:var(--color-neutral-200);--sdc-datepicker-calendar-border-width:var(--border-default);--sdc-datepicker-calendar-border-radius:var(--radius-lg);--sdc-datepicker-calendar-shadow:0 1px 3px #00000014;--sdc-datepicker-calendar-padding:var(--space-4);--sdc-datepicker-month-year-text-color:var(--color-neutral-900);--sdc-datepicker-month-year-text-size:var(--text-base);--sdc-datepicker-month-year-text-weight:var(--font-semibold);--sdc-datepicker-month-year-hover-text-color:var(--color-neutral-900);--sdc-datepicker-month-year-padding:var(--space-2);--sdc-datepicker-month-year-button-background:var(--color-pure-white);--sdc-datepicker-month-year-button-text-color-hover:var(--color-pure-white);--sdc-datepicker-month-year-button-background-hover:var(--color-neutral-900);--sdc-datepicker-day-button-disabled-background:transparent;--sdc-datepicker-day-button-disabled-text-color:var(--color-neutral-300);--sdc-datepicker-day-button-background:transparent;--sdc-datepicker-day-button-text-color:var(--color-neutral-900);--sdc-datepicker-day-button-text-size:var(--text-sm);--sdc-datepicker-day-button-text-weight:var(--font-semibold);--sdc-datepicker-day-button-border-radius:var(--radius-md);--sdc-datepicker-day-button-padding:var(--space-2);--sdc-datepicker-day-button-hover-background:var(--color-secondary);--sdc-datepicker-day-button-hover-text-color:var(--color-pure-white)}.component-container{gap:var(--sdc-datepicker-label-gap);width:var(--sdc-datepicker-input-width);flex-direction:column;display:flex}.component-container hlm-date-picker{width:var(--sdc-datepicker-input-width)}.sdc-datepicker-label{font-weight:var(--sdc-datepicker-label-weight);font-size:var(--sdc-datepicker-label-size);color:hsl(var(--sdc-datepicker-label-color));width:var(--sdc-datepicker-label-width);padding-left:var(--sdc-datepicker-input-padding-horizontal);line-height:1.25rem;display:block}.component-container:has(.sdc-datepicker-label.left){flex-direction:row;align-items:center;padding-left:0}.sdc-datepicker button[brnpopovertrigger]{width:var(--sdc-datepicker-input-width);background:var(--sdc-datepicker-input-background);border:var(--sdc-datepicker-input-border-width) solid hsl(var(--sdc-datepicker-input-border-color));border-radius:var(--sdc-datepicker-input-border-radius);padding:var(--sdc-datepicker-input-padding-vertical) var(--sdc-datepicker-input-padding-horizontal);color:hsl(var(--sdc-datepicker-input-text-color));font-size:var(--sdc-datepicker-input-text-size);font-weight:var(--sdc-datepicker-input-text-weight);cursor:pointer;outline:none}.sdc-datepicker-placeholder{color:hsl(var(--sdc-datepicker-placeholder-color));font-size:var(--sdc-datepicker-placeholder-size);font-weight:var(--sdc-datepicker-placeholder-weight)}.sdc-datepicker button[brnpopovertrigger]:hover:not(:disabled){border-color:hsl(var(--sdc-datepicker-input-border-hover))}.sdc-datepicker button[brnpopovertrigger][data-state=open]{outline:var(--sdc-datepicker-input-focus-ring-width) solid hsl(var(--sdc-datepicker-input-focus-ring-color));outline-offset:var(--sdc-datepicker-input-focus-ring-offset)}.sdc-datepicker button[brnpopovertrigger]:disabled{opacity:.6;cursor:not-allowed;background:hsl(var(--color-neutral-100))}.sdc-datepicker-error{color:hsl(var(--sdc-datepicker-error-color));font-size:var(--sdc-datepicker-error-size);line-height:1rem}.sdc-datepicker-hint{color:hsl(var(--sdc-datepicker-hint-color));font-size:var(--sdc-datepicker-hint-size);line-height:1rem}.sdc-datepicker div[brncalendar]{background:hsl(var(--sdc-datepicker-calendar-background));border:var(--sdc-datepicker-calendar-border-width) solid hsl(var(--sdc-datepicker-calendar-border-color));border-radius:var(--sdc-datepicker-calendar-border-radius);box-shadow:var(--sdc-datepicker-calendar-shadow);padding:var(--sdc-datepicker-calendar-padding)}.sdc-datepicker div[brncalendarheader]{color:hsl(var(--sdc-datepicker-month-year-text-color));font-size:var(--sdc-datepicker-month-year-text-size);font-weight:var(--sdc-datepicker-month-year-text-weight);padding:var(--sdc-datepicker-month-year-padding)}.sdc-datepicker button[brncalendarpreviousbutton],.sdc-datepicker button[brncalendarnextbutton]{cursor:pointer;color:hsl(var(--sdc-datepicker-month-year-text-color));background:hsl(var(--sdc-datepicker-month-year-button-background));transition:all .2s}.sdc-datepicker button[brncalendarpreviousbutton]:disabled,.sdc-datepicker button[brncalendarnextbutton]:disabled{opacity:.6;cursor:not-allowed;color:hsl(var(--color-neutral-100))}.sdc-datepicker button[brncalendarpreviousbutton]:hover:not(:disabled),.sdc-datepicker button[brncalendarnextbutton]:hover:not(:disabled){color:hsl(var(--sdc-datepicker-month-year-button-text-color-hover));background:hsl(var(--sdc-datepicker-month-year-button-background-hover))}.sdc-datepicker button[brncalendarcellbutton]{background:hsl(var(--sdc-datepicker-day-button-background));color:hsl(var(--sdc-datepicker-day-button-text-color));font-size:var(--sdc-datepicker-day-button-text-size);font-weight:var(--sdc-datepicker-day-button-text-weight);border-radius:var(--sdc-datepicker-day-button-border-radius);padding:var(--sdc-datepicker-day-button-padding);cursor:pointer;transition:all .2s}.sdc-datepicker button[brncalendarcellbutton]:hover:not(:disabled){background-color:hsl(var(--sdc-datepicker-day-button-hover-background));color:hsl(var(--sdc-datepicker-day-button-hover-text-color))}.sdc-datepicker button[brncalendarcellbutton]:disabled{background-color:hsl(var(--sdc-datepicker-day-button-disabled-background));color:hsl(var(--sdc-datepicker-day-button-disabled-text-color));cursor:not-allowed}.variant-primary.sdc-datepicker{--sdc-datepicker-day-button-hover-background:var(--color-primary)}.variant-secondary.sdc-datepicker{--sdc-datepicker-day-button-hover-background:var(--color-secondary)}.variant-alternative.sdc-datepicker{--sdc-datepicker-day-button-hover-background:var(--color-alternative)}.variant-success.sdc-datepicker{--sdc-datepicker-day-button-hover-background:var(--color-success)}.variant-warning.sdc-datepicker{--sdc-datepicker-day-button-hover-background:var(--color-warning)}.variant-danger.sdc-datepicker{--sdc-datepicker-day-button-hover-background:var(--color-danger)}.radius-default.sdc-datepicker{--sdc-datepicker-input-border-radius:var(--radius-default);--sdc-datepicker-day-button-border-radius:var(--radius-default)}.radius-sm.sdc-datepicker{--sdc-datepicker-input-border-radius:var(--radius-sm);--sdc-datepicker-day-button-border-radius:var(--radius-sm)}.radius-md.sdc-datepicker{--sdc-datepicker-input-border-radius:var(--radius-md);--sdc-datepicker-day-button-border-radius:var(--radius-md)}.radius-lg.sdc-datepicker{--sdc-datepicker-input-border-radius:var(--radius-lg);--sdc-datepicker-day-button-border-radius:var(--radius-lg)}.radius-xl.sdc-datepicker{--sdc-datepicker-input-border-radius:var(--radius-xl);--sdc-datepicker-day-button-border-radius:var(--radius-xl)}.dialog-overlay-margin{margin:0 1rem}.sdc-ripple{background-color:var(--sdc-button-ripple-color);pointer-events:none;border-radius:50%;animation:.6s linear ripple-animation;position:absolute;transform:scale(0)}@keyframes ripple-animation{to{opacity:0;transform:scale(4)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}