@tylertech/forge-ai 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -708,6 +708,10 @@
708
708
  "description": "Default slot for messages",
709
709
  "name": ""
710
710
  },
711
+ {
712
+ "description": "Slot for AI chat header component",
713
+ "name": "header"
714
+ },
711
715
  {
712
716
  "description": "Slot for AI suggestions component",
713
717
  "name": "suggestions"
@@ -719,86 +723,15 @@
719
723
  ],
720
724
  "members": [
721
725
  {
722
- "kind": "field",
723
- "name": "showExpandButton",
724
- "type": {
725
- "text": "boolean"
726
- },
727
- "privacy": "public",
728
- "default": "false",
729
- "description": "Controls whether the expand button is visible in the header",
730
- "attribute": "show-expand-button"
731
- },
732
- {
733
- "kind": "field",
734
- "name": "showMinimizeButton",
735
- "type": {
736
- "text": "boolean"
737
- },
738
- "privacy": "public",
739
- "default": "false",
740
- "description": "Controls whether the minimize button is visible in the header",
741
- "attribute": "show-minimize-button"
742
- },
743
- {
744
- "kind": "field",
745
- "name": "expanded",
746
- "type": {
747
- "text": "boolean"
748
- },
749
- "privacy": "public",
750
- "default": "false",
751
- "description": "Indicates the current expanded state for displaying the appropriate expand/collapse icon",
752
- "attribute": "expanded"
753
- },
754
- {
755
- "kind": "field",
756
- "name": "minimizeIcon",
757
- "type": {
758
- "text": "MinimizeIconType"
759
- },
726
+ "kind": "method",
727
+ "name": "scrollMessagesToBottom",
760
728
  "privacy": "public",
761
- "default": "'default'",
762
- "description": "Controls which minimize icon to display in the header",
763
- "attribute": "minimize-icon"
764
- }
765
- ],
766
- "attributes": [
767
- {
768
- "name": "show-expand-button",
769
- "type": {
770
- "text": "boolean"
771
- },
772
- "default": "false",
773
- "description": "Controls whether the expand button is visible in the header",
774
- "fieldName": "showExpandButton"
775
- },
776
- {
777
- "name": "show-minimize-button",
778
- "type": {
779
- "text": "boolean"
780
- },
781
- "default": "false",
782
- "description": "Controls whether the minimize button is visible in the header",
783
- "fieldName": "showMinimizeButton"
784
- },
785
- {
786
- "name": "expanded",
787
- "type": {
788
- "text": "boolean"
789
- },
790
- "default": "false",
791
- "description": "Indicates the current expanded state for displaying the appropriate expand/collapse icon",
792
- "fieldName": "expanded"
793
- },
794
- {
795
- "name": "minimize-icon",
796
- "type": {
797
- "text": "MinimizeIconType"
729
+ "return": {
730
+ "type": {
731
+ "text": "void"
732
+ }
798
733
  },
799
- "default": "'default'",
800
- "description": "Controls which minimize icon to display in the header",
801
- "fieldName": "minimizeIcon"
734
+ "description": "Scrolls the messages container to the bottom only if user hasn't scrolled up"
802
735
  }
803
736
  ],
804
737
  "superclass": {
@@ -1949,7 +1882,7 @@
1949
1882
  "text": "AiFilePickerVariant"
1950
1883
  },
1951
1884
  "privacy": "public",
1952
- "default": "'button'",
1885
+ "default": "'icon-button'",
1953
1886
  "description": "The variant of the file picker button.",
1954
1887
  "attribute": "variant"
1955
1888
  },
@@ -2003,7 +1936,7 @@
2003
1936
  "type": {
2004
1937
  "text": "AiFilePickerVariant"
2005
1938
  },
2006
- "default": "'button'",
1939
+ "default": "'icon-button'",
2007
1940
  "description": "The variant of the file picker button.",
2008
1941
  "fieldName": "variant"
2009
1942
  },
@@ -2568,7 +2501,7 @@
2568
2501
  "name": "AiPromptComponent",
2569
2502
  "slots": [
2570
2503
  {
2571
- "description": "Slot for action components like dropdown menus, voice input, buttons, etc.",
2504
+ "description": "Slot for action components that are hidden in inline mode (voice input, file picker, model selectors, web search, etc.)",
2572
2505
  "name": "actions"
2573
2506
  }
2574
2507
  ],
@@ -4689,7 +4622,7 @@
4689
4622
  },
4690
4623
  "AiChatInterfaceComponent": {
4691
4624
  "path": "src/lib/ai-chat-interface/ai-chat-interface.ts",
4692
- "lineNumber": 26
4625
+ "lineNumber": 25
4693
4626
  },
4694
4627
  "ForgeAiDropdownMenuItemGroupComponent": {
4695
4628
  "path": "src/lib/ai-dropdown-menu/ai-dropdown-menu-item-group.ts",
@@ -4753,7 +4686,7 @@
4753
4686
  },
4754
4687
  "AiEmbeddedChatComponent": {
4755
4688
  "path": "src/lib/ai-embedded-chat/ai-embedded-chat.ts",
4756
- "lineNumber": 38
4689
+ "lineNumber": 39
4757
4690
  },
4758
4691
  "AiEmptyStateComponent": {
4759
4692
  "path": "src/lib/ai-empty-state/ai-empty-state.ts",
@@ -4777,7 +4710,7 @@
4777
4710
  },
4778
4711
  "AiFloatingChatComponent": {
4779
4712
  "path": "src/lib/ai-floating-chat/ai-floating-chat.ts",
4780
- "lineNumber": 40
4713
+ "lineNumber": 41
4781
4714
  },
4782
4715
  "AiGradientContainerVariant": {
4783
4716
  "path": "src/lib/ai-gradient-container/ai-gradient-container.ts",
@@ -4797,15 +4730,15 @@
4797
4730
  },
4798
4731
  "AiPromptSendEventData": {
4799
4732
  "path": "src/lib/ai-prompt/ai-prompt.ts",
4800
- "lineNumber": 17
4733
+ "lineNumber": 18
4801
4734
  },
4802
4735
  "AiPromptVariant": {
4803
4736
  "path": "src/lib/ai-prompt/ai-prompt.ts",
4804
- "lineNumber": 23
4737
+ "lineNumber": 24
4805
4738
  },
4806
4739
  "AiPromptComponent": {
4807
4740
  "path": "src/lib/ai-prompt/ai-prompt.ts",
4808
- "lineNumber": 37
4741
+ "lineNumber": 38
4809
4742
  },
4810
4743
  "AiReasoningComponent": {
4811
4744
  "path": "src/lib/ai-reasoning/ai-reasoning.ts",
@@ -4833,7 +4766,7 @@
4833
4766
  },
4834
4767
  "AiSidebarChatComponent": {
4835
4768
  "path": "src/lib/ai-sidebar-chat/ai-sidebar-chat.ts",
4836
- "lineNumber": 44
4769
+ "lineNumber": 45
4837
4770
  },
4838
4771
  "Suggestion": {
4839
4772
  "path": "src/lib/ai-suggestions/ai-suggestions.ts",
@@ -1,4 +1,4 @@
1
- const styles = '/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/* prettier-ignore */\n.forge-button {\n --_button-primary-color: var(--forge-button-primary-color, var(--forge-theme-primary, #3f51b5));\n --_button-text-color: var(--forge-button-text-color, var(--_button-primary-color));\n --_button-disabled-color: var(--forge-button-disabled-color, var(--forge-theme-surface-container, #e0e0e0));\n --_button-padding: var(--forge-button-padding, var(--forge-spacing-medium, 16px));\n --_button-display: var(--forge-button-display, inline-grid);\n --_button-justify: var(--forge-button-justify, center);\n --_button-shape: var(--forge-button-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_button-height: var(--forge-button-height, 36px);\n --_button-min-width: var(--forge-button-min-width, 64px);\n --_button-spacing: var(--forge-button-spacing, var(--forge-spacing-xsmall, 8px));\n --_button-border-width: var(--forge-button-border-width, medium);\n --_button-border-style: var(--forge-button-border-style, none);\n --_button-border-color: var(--forge-button-border-color, currentColor);\n --_button-shape-start-start-radius: var(--forge-button-shape-start-start-radius, var(--_button-shape));\n --_button-shape-start-end-radius: var(--forge-button-shape-start-end-radius, var(--_button-shape));\n --_button-shape-end-start-radius: var(--forge-button-shape-end-start-radius, var(--_button-shape));\n --_button-shape-end-end-radius: var(--forge-button-shape-end-end-radius, var(--_button-shape));\n --_button-padding-block: var(--forge-button-padding-block, var(--_button-0));\n --_button-padding-inline: var(--forge-button-padding-inline, var(--_button-padding));\n --_button-background: var(--forge-button-background, transparent);\n --_button-hover-background: var(--forge-button-hover-background, var(--_button-background));\n --_button-active-background: var(--forge-button-active-background, var(--_button-background));\n --_button-color: var(--forge-button-color, var(--_button-text-color));\n --_button-icon-size: var(--forge-button-icon-size, calc(var(--forge-typography-font-size, 1rem) * 1.125));\n --_button-shadow: var(--forge-button-shadow, none);\n --_button-hover-shadow: var(--forge-button-hover-shadow, none);\n --_button-active-shadow: var(--forge-button-active-shadow, none);\n --_button-cursor: var(--forge-button-cursor, pointer);\n --_button-transition-duration: var(--forge-button-transition-duration, var(--forge-animation-duration-short3, 150ms));\n --_button-transition-timing: var(--forge-button-transition-timing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_button-text-padding-inline: var(--forge-button-text-padding-inline, var(--forge-spacing-xsmall, 8px));\n --_button-outlined-background: var(--forge-button-outlined-background, transparent);\n --_button-outlined-color: var(--forge-button-outlined-color, var(--_button-primary-color));\n --_button-outlined-border-width: var(--forge-button-outlined-border-width, var(--forge-border-thin, 1px));\n --_button-outlined-border-style: var(--forge-button-outlined-border-style, solid);\n --_button-outlined-border-color: var(--forge-button-outlined-border-color, var(--_button-primary-color));\n --_button-tonal-background: var(--forge-button-tonal-background, var(--forge-theme-primary-container, #d1d5ed));\n --_button-tonal-disabled-background: var(--forge-button-tonal-disabled-background, var(--_button-disabled-color));\n --_button-tonal-color: var(--forge-button-tonal-color, var(--forge-theme-on-primary-container, #222c62));\n --_button-tonal-disabled-color: var(--forge-button-tonal-disabled-color, var(--_button-disabled-text-color));\n --_button-filled-background: var(--forge-button-filled-background, var(--_button-primary-color));\n --_button-filled-disabled-background: var(--forge-button-filled-disabled-background, var(--_button-disabled-color));\n --_button-filled-color: var(--forge-button-filled-color, var(--forge-theme-on-primary, #ffffff));\n --_button-filled-disabled-color: var(--forge-button-filled-disabled-color, var(--_button-disabled-text-color));\n --_button-raised-background: var(--forge-button-raised-background, var(--_button-primary-color));\n --_button-raised-disabled-background: var(--forge-button-raised-disabled-background, var(--_button-disabled-color));\n --_button-raised-color: var(--forge-button-raised-color, var(--forge-theme-on-primary, #ffffff));\n --_button-raised-disabled-color: var(--forge-button-raised-disabled-color, var(--_button-disabled-text-color));\n --_button-raised-shadow: var(--forge-button-raised-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));\n --_button-raised-hover-shadow: var(--forge-button-raised-hover-shadow, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12));\n --_button-raised-active-shadow: var(--forge-button-raised-active-shadow, 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12));\n --_button-raised-disabled-shadow: var(--forge-button-raised-disabled-shadow, none);\n --_button-link-color: var(--forge-button-link-color, var(--_button-primary-color));\n --_button-link-text-decoration: var(--forge-button-link-text-decoration, underline);\n --_button-link-height: var(--forge-button-link-height, auto);\n --_button-link-padding: var(--forge-button-link-padding, 0);\n --_button-link-line-height: var(--forge-button-link-line-height, normal);\n --_button-link-width: var(--forge-button-link-width, auto);\n --_button-link-hover-text-decoration: var(--forge-button-link-hover-text-decoration, none);\n --_button-link-active-opacity: var(--forge-button-link-active-opacity, 0.65);\n --_button-link-transition-duration: var(--forge-button-link-transition-duration, var(--forge-animation-duration-short3, 150ms));\n --_button-link-transition-timing: var(--forge-button-link-transition-timing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_button-disabled-cursor: var(--forge-button-disabled-cursor, not-allowed);\n --_button-disabled-text-color: var(--forge-button-disabled-text-color, var(--forge-theme-text-low, rgba(0, 0, 0, 0.38)));\n --_button-disabled-background: var(--forge-button-disabled-background, transparent);\n --_button-disabled-border-color: var(--forge-button-disabled-border-color, var(--_button-disabled-color));\n --_button-disabled-shadow: var(--forge-button-disabled-shadow, none);\n --_button-dense-height: var(--forge-button-dense-height, 24px);\n --_button-pill-shape: var(--forge-button-pill-shape, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)));\n --_button-pill-padding-inline: var(--forge-button-pill-padding-inline, var(--forge-spacing-small, 12px));\n --_button-focus-indicator-offset: var(--forge-button-focus-indicator-offset, 4px);\n --_button-text-focus-indicator-offset: var(--forge-button-text-focus-indicator-offset, 0px);\n --_button-link-focus-indicator-offset: var(--forge-button-link-focus-indicator-offset, 2px);\n --_button-popover-icon-transition-duration: var(--forge-button-popover-icon-transition-duration, var(--forge-animation-duration-short3, 150ms));\n --_button-popover-icon-transition-timing: var(--forge-button-popover-icon-transition-timing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_button-popover-icon-open-rotation: var(--forge-button-popover-icon-open-rotation, 180deg);\n}\n\n.forge-button {\n display: var(--_button-display);\n position: relative;\n outline: none;\n vertical-align: middle;\n -webkit-tap-highlight-color: transparent;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-family: var(--forge-typography-button-font-family, var(--forge-typography-font-family, "Roboto", sans-serif));\n font-size: var(--forge-typography-button-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-button-font-size-scale, 0.875)));\n font-weight: var(--forge-typography-button-font-weight, 500);\n line-height: var(--forge-typography-button-line-height, normal);\n letter-spacing: var(--forge-typography-button-letter-spacing, 0.0714285714em);\n text-transform: var(--forge-typography-button-text-transform, inherit);\n text-decoration: var(--forge-typography-button-text-decoration, inherit);\n position: relative;\n display: var(--_button-display);\n grid-auto-flow: column;\n align-items: center;\n justify-content: var(--_button-justify);\n gap: var(--_button-spacing);\n z-index: 0;\n box-sizing: border-box;\n min-inline-size: var(--_button-min-width);\n height: var(--_button-height);\n inline-size: 100%;\n border-width: var(--_button-border-width);\n border-style: var(--_button-border-style);\n border-color: var(--_button-border-color);\n border-start-start-radius: var(--_button-shape-start-start-radius);\n border-start-end-radius: var(--_button-shape-start-end-radius);\n border-end-start-radius: var(--_button-shape-end-start-radius);\n border-end-end-radius: var(--_button-shape-end-end-radius);\n padding-block: var(--_button-padding-block);\n padding-inline: var(--_button-padding-inline);\n box-shadow: var(--_button-shadow);\n outline: none;\n user-select: none;\n -webkit-appearance: none;\n vertical-align: middle;\n text-decoration: none;\n white-space: nowrap;\n background: var(--_button-background);\n color: var(--_button-color);\n cursor: var(--_button-cursor);\n transition-property: box-shadow, background;\n transition-duration: var(--_button-transition-duration);\n transition-timing-function: var(--_button-transition-timing);\n}\n\n.forge-button::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\n\n.forge-button:hover {\n --_button-shadow: var(--_button-hover-shadow);\n background: var(--_button-hover-background);\n}\n\n.forge-button:active {\n --_button-shadow: var(--_button-active-shadow);\n background: var(--_button-active-background);\n}\n\n.forge-button {\n position: relative;\n inline-size: auto;\n}\n\n.forge-button:not(:disabled):not(.forge-button--link) {\n --_state-layer-display: var(--forge-state-layer-display, flex);\n --_state-layer-color: var(--forge-state-layer-color, var(--forge-theme-on-surface, #000000));\n --_state-layer-hover-color: var(--forge-state-layer-hover-color, var(--_state-layer-color));\n --_state-layer-hover-opacity: var(--forge-state-layer-hover-opacity, 0.08);\n --_state-layer-pressed-color: var(--forge-state-layer-pressed-color, var(--_state-layer-color));\n --_state-layer-pressed-opacity: var(--forge-state-layer-pressed-opacity, 0.12);\n --_state-layer-hover-duration: var(--forge-state-layer-hover-duration, 15ms);\n --_state-layer-pressed-duration: var(--forge-state-layer-pressed-duration, 105ms);\n --_state-layer-animation-duration: var(--forge-state-layer-animation-duration, 375ms);\n}\n\n.forge-button:not(:disabled):not(.forge-button--link)::before {\n opacity: 0;\n position: absolute;\n background-color: var(--_state-layer-hover-color);\n inset: 0;\n transition: opacity var(--_state-layer-hover-duration) linear, background-color var(--_state-layer-hover-duration) linear;\n --_state-layer-hover-duration: var(--forge-state-layer-hover-duration, 100ms);\n content: "";\n opacity: 0;\n border-radius: inherit;\n}\n\n.forge-button:not(:disabled):not(.forge-button--link):hover::before {\n background-color: var(--_state-layer-hover-color);\n opacity: var(--_state-layer-hover-opacity);\n}\n\n.forge-button:not(:disabled):not(.forge-button--link):active::before {\n opacity: var(--_state-layer-pressed-opacity);\n transition-duration: var(--_state-layer-pressed-duration);\n --_state-layer-pressed-opacity: var(--forge-state-layer-pressed-opacity, 0.18);\n}\n\n@keyframes forge-focus-indicator-outward-grow {\n from {\n outline-width: 0;\n }\n to {\n outline-width: var(--_focus-indicator-active-width);\n }\n}\n@keyframes forge-focus-indicator-outward-shrink {\n from {\n outline-width: var(--_focus-indicator-active-width);\n }\n}\n@keyframes forge-focus-indicator-inward-grow {\n from {\n border-width: 0;\n }\n to {\n border-width: var(--_focus-indicator-active-width);\n }\n}\n@keyframes forge-focus-indicator-inward-shrink {\n from {\n border-width: var(--_focus-indicator-active-width);\n }\n}\n.forge-button:not(:disabled) {\n outline: none;\n}\n\n.forge-button:not(:disabled):focus-visible::after {\n --_focus-indicator-display: var(--forge-focus-indicator-display, flex);\n --_focus-indicator-width: var(--forge-focus-indicator-width, var(--forge-border-medium, 2px));\n --_focus-indicator-active-width: var(--forge-focus-indicator-active-width, 6px);\n --_focus-indicator-color: var(--forge-focus-indicator-color, var(--forge-theme-primary, #3f51b5));\n --_focus-indicator-shape: var(--forge-focus-indicator-shape, calc(var(--forge-shape-extra-small, 1px) * var(--forge-shape-factor, 1)));\n --_focus-indicator-duration: var(--forge-focus-indicator-duration, var(--forge-animation-duration-long4, 600ms));\n --_focus-indicator-easing: var(--forge-focus-indicator-easing, var(--forge-animation-easing-emphasized, cubic-bezier(0.2, 0, 0, 1)));\n --_focus-indicator-shape-start-start: var(--forge-focus-indicator-shape-start-start, var(--_focus-indicator-shape));\n --_focus-indicator-shape-start-end: var(--forge-focus-indicator-shape-start-end, var(--_focus-indicator-shape));\n --_focus-indicator-shape-end-end: var(--forge-focus-indicator-shape-end-end, var(--_focus-indicator-shape));\n --_focus-indicator-shape-end-start: var(--forge-focus-indicator-shape-end-start, var(--_focus-indicator-shape));\n --_focus-indicator-outward-offset: var(--forge-focus-indicator-outward-offset, var(--forge-spacing-xxsmall, 4px));\n --_focus-indicator-inward-offset: var(--forge-focus-indicator-inward-offset, 0px);\n --_focus-indicator-offset-block: var(--forge-focus-indicator-offset-block, 0);\n --_focus-indicator-offset-inline: var(--forge-focus-indicator-offset-inline, 0);\n}\n\n.forge-button:not(:disabled):focus-visible::after {\n animation-delay: 0s, calc(var(--_focus-indicator-duration) * 0.25);\n animation-duration: calc(var(--_focus-indicator-duration) * 0.25), calc(var(--_focus-indicator-duration) * 0.75);\n animation-timing-function: var(--_focus-indicator-easing);\n box-sizing: border-box;\n color: var(--_focus-indicator-color);\n display: none;\n pointer-events: none;\n position: absolute;\n margin-block: var(--_focus-indicator-offset-block);\n margin-inline: var(--_focus-indicator-offset-inline);\n animation-name: forge-focus-indicator-outward-grow, forge-focus-indicator-outward-shrink;\n border-end-end-radius: calc(var(--_focus-indicator-shape-end-end) + var(--_focus-indicator-outward-offset));\n border-end-start-radius: calc(var(--_focus-indicator-shape-end-start) + var(--_focus-indicator-outward-offset));\n border-start-end-radius: calc(var(--_focus-indicator-shape-start-end) + var(--_focus-indicator-outward-offset));\n border-start-start-radius: calc(var(--_focus-indicator-shape-start-start) + var(--_focus-indicator-outward-offset));\n inset: calc(-1 * var(--_focus-indicator-outward-offset));\n outline: var(--_focus-indicator-width) solid currentColor;\n content: "";\n display: block;\n}\n\n.forge-button:not(:disabled) {\n --forge-focus-indicator-color: var(--_button-primary-color);\n}\n\n.forge-button:disabled {\n cursor: var(--_button-disabled-cursor);\n --_button-background: var(--_button-disabled-background);\n --_button-color: var(--_button-disabled-text-color);\n --_button-shadow: var(--_button-disabled-shadow);\n pointer-events: none;\n pointer-events: initial;\n}\n\n.forge-button:where(:not(.forge-button--outlined, .forge-button--tonal, .forge-button--filled, .forge-button--raised, .forge-button--link)), .forge-button--text {\n --_button-padding-inline: var(--_button-text-padding-inline);\n}\n\n.forge-button--outlined {\n --_button-background: var(--_button-outlined-background);\n --_button-color: var(--_button-outlined-color);\n --_button-border-width: var(--_button-outlined-border-width);\n --_button-border-style: var(--_button-outlined-border-style);\n --_button-border-color: var(--_button-outlined-border-color);\n}\n\n.forge-button--outlined:disabled {\n --_button-border-color: var(--_button-disabled-border-color);\n}\n\n.forge-button--tonal {\n --_button-background: var(--_button-tonal-background);\n --_button-color: var(--_button-tonal-color);\n}\n\n.forge-button--tonal:disabled {\n --_button-background: var(--_button-tonal-disabled-background);\n --_button-color: var(--_button-tonal-disabled-color);\n}\n\n.forge-button--filled, .forge-button--raised {\n --_button-background: var(--_button-filled-background);\n --_button-color: var(--_button-filled-color);\n --forge-state-layer-color: var(--_button-filled-color);\n}\n\n.forge-button--filled:disabled, .forge-button--raised:disabled {\n --_button-background: var(--_button-filled-disabled-background);\n --_button-color: var(--_button-filled-disabled-color);\n}\n\n.forge-button--raised {\n --_button-background: var(--_button-raised-background);\n --_button-color: var(--_button-raised-color);\n --_button-shadow: var(--_button-raised-shadow);\n}\n\n.forge-button--raised:hover {\n --_button-shadow: var(--_button-raised-hover-shadow);\n}\n\n.forge-button--raised:active {\n --_button-shadow: var(--_button-raised-active-shadow);\n}\n\n.forge-button--raised:disabled {\n --_button-background: var(--_button-raised-disabled-background);\n --_button-color: var(--_button-raised-disabled-color);\n --_button-shadow: var(--_button-raised-disabled-shadow);\n}\n\n.forge-button--link {\n --_button-color: var(--_button-link-color);\n --_button-height: var(--_button-link-height);\n --_button-padding: var(--_button-link-padding);\n --_button-focus-indicator-offset: var(--_button-link-focus-indicator-offset);\n text-decoration: var(--_button-link-text-decoration);\n line-height: var(--_button-link-line-height);\n transition: opacity var(--_button-link-transition-duration) var(--_button-link-transition-timing);\n inline-size: var(--_button-link-width);\n}\n\n.forge-button--link:hover {\n text-decoration: var(--_button-link-hover-text-decoration);\n}\n\n.forge-button--link:active {\n opacity: var(--_button-link-active-opacity);\n}\n\n.forge-button--pill {\n --_button-shape: var(--_button-pill-shape);\n --_button-padding-inline: var(--_button-pill-padding-inline);\n --forge-focus-indicator-shape: var(--_button-pill-shape);\n}\n\n.forge-button {\n --forge-icon-font-size: var(--_button-icon-size);\n}\n\n.forge-button--dense {\n --_button-height: var(--_button-dense-height);\n}\n\n@keyframes fadein {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n:host {\n display: inline-block;\n}\n\n.ai-button {\n --forge-button-padding-inline: var(--forge-spacing-xsmall, 8px);\n --forge-button-border-radius: var(--forge-spacing-xsmall, 8px);\n --forge-button-outlined-border-width: 0;\n --forge-button-outlined-background: transparent;\n}\n\nforge-ai-icon {\n color: inherit;\n}\n\n:host(:state(disabled)) forge-ai-icon {\n --forge-ai-icon-fill-color: var(--forge-theme-text-low, rgba(0, 0, 0, 0.38));\n}';
1
+ const styles = '/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/* prettier-ignore */\n.forge-button {\n --_button-primary-color: var(--forge-button-primary-color, var(--forge-theme-primary, #3f51b5));\n --_button-text-color: var(--forge-button-text-color, var(--_button-primary-color));\n --_button-disabled-color: var(--forge-button-disabled-color, var(--forge-theme-surface-container, #e0e0e0));\n --_button-padding: var(--forge-button-padding, var(--forge-spacing-medium, 16px));\n --_button-display: var(--forge-button-display, inline-grid);\n --_button-justify: var(--forge-button-justify, center);\n --_button-shape: var(--forge-button-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_button-height: var(--forge-button-height, 36px);\n --_button-min-width: var(--forge-button-min-width, 64px);\n --_button-spacing: var(--forge-button-spacing, var(--forge-spacing-xsmall, 8px));\n --_button-border-width: var(--forge-button-border-width, medium);\n --_button-border-style: var(--forge-button-border-style, none);\n --_button-border-color: var(--forge-button-border-color, currentColor);\n --_button-shape-start-start-radius: var(--forge-button-shape-start-start-radius, var(--_button-shape));\n --_button-shape-start-end-radius: var(--forge-button-shape-start-end-radius, var(--_button-shape));\n --_button-shape-end-start-radius: var(--forge-button-shape-end-start-radius, var(--_button-shape));\n --_button-shape-end-end-radius: var(--forge-button-shape-end-end-radius, var(--_button-shape));\n --_button-padding-block: var(--forge-button-padding-block, var(--_button-0));\n --_button-padding-inline: var(--forge-button-padding-inline, var(--_button-padding));\n --_button-background: var(--forge-button-background, transparent);\n --_button-hover-background: var(--forge-button-hover-background, var(--_button-background));\n --_button-active-background: var(--forge-button-active-background, var(--_button-background));\n --_button-color: var(--forge-button-color, var(--_button-text-color));\n --_button-icon-size: var(--forge-button-icon-size, calc(var(--forge-typography-font-size, 1rem) * 1.125));\n --_button-shadow: var(--forge-button-shadow, none);\n --_button-hover-shadow: var(--forge-button-hover-shadow, none);\n --_button-active-shadow: var(--forge-button-active-shadow, none);\n --_button-cursor: var(--forge-button-cursor, pointer);\n --_button-transition-duration: var(--forge-button-transition-duration, var(--forge-animation-duration-short3, 150ms));\n --_button-transition-timing: var(--forge-button-transition-timing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_button-text-padding-inline: var(--forge-button-text-padding-inline, var(--forge-spacing-xsmall, 8px));\n --_button-outlined-background: var(--forge-button-outlined-background, transparent);\n --_button-outlined-color: var(--forge-button-outlined-color, var(--_button-primary-color));\n --_button-outlined-border-width: var(--forge-button-outlined-border-width, var(--forge-border-thin, 1px));\n --_button-outlined-border-style: var(--forge-button-outlined-border-style, solid);\n --_button-outlined-border-color: var(--forge-button-outlined-border-color, var(--_button-primary-color));\n --_button-tonal-background: var(--forge-button-tonal-background, var(--forge-theme-primary-container, #d1d5ed));\n --_button-tonal-disabled-background: var(--forge-button-tonal-disabled-background, var(--_button-disabled-color));\n --_button-tonal-color: var(--forge-button-tonal-color, var(--forge-theme-on-primary-container, #222c62));\n --_button-tonal-disabled-color: var(--forge-button-tonal-disabled-color, var(--_button-disabled-text-color));\n --_button-filled-background: var(--forge-button-filled-background, var(--_button-primary-color));\n --_button-filled-disabled-background: var(--forge-button-filled-disabled-background, var(--_button-disabled-color));\n --_button-filled-color: var(--forge-button-filled-color, var(--forge-theme-on-primary, #ffffff));\n --_button-filled-disabled-color: var(--forge-button-filled-disabled-color, var(--_button-disabled-text-color));\n --_button-raised-background: var(--forge-button-raised-background, var(--_button-primary-color));\n --_button-raised-disabled-background: var(--forge-button-raised-disabled-background, var(--_button-disabled-color));\n --_button-raised-color: var(--forge-button-raised-color, var(--forge-theme-on-primary, #ffffff));\n --_button-raised-disabled-color: var(--forge-button-raised-disabled-color, var(--_button-disabled-text-color));\n --_button-raised-shadow: var(--forge-button-raised-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));\n --_button-raised-hover-shadow: var(--forge-button-raised-hover-shadow, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12));\n --_button-raised-active-shadow: var(--forge-button-raised-active-shadow, 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12));\n --_button-raised-disabled-shadow: var(--forge-button-raised-disabled-shadow, none);\n --_button-link-color: var(--forge-button-link-color, var(--_button-primary-color));\n --_button-link-text-decoration: var(--forge-button-link-text-decoration, underline);\n --_button-link-height: var(--forge-button-link-height, auto);\n --_button-link-padding: var(--forge-button-link-padding, 0);\n --_button-link-line-height: var(--forge-button-link-line-height, normal);\n --_button-link-width: var(--forge-button-link-width, auto);\n --_button-link-hover-text-decoration: var(--forge-button-link-hover-text-decoration, none);\n --_button-link-active-opacity: var(--forge-button-link-active-opacity, 0.65);\n --_button-link-transition-duration: var(--forge-button-link-transition-duration, var(--forge-animation-duration-short3, 150ms));\n --_button-link-transition-timing: var(--forge-button-link-transition-timing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_button-disabled-cursor: var(--forge-button-disabled-cursor, not-allowed);\n --_button-disabled-text-color: var(--forge-button-disabled-text-color, var(--forge-theme-text-low, rgba(0, 0, 0, 0.38)));\n --_button-disabled-background: var(--forge-button-disabled-background, transparent);\n --_button-disabled-border-color: var(--forge-button-disabled-border-color, var(--_button-disabled-color));\n --_button-disabled-shadow: var(--forge-button-disabled-shadow, none);\n --_button-dense-height: var(--forge-button-dense-height, 24px);\n --_button-pill-shape: var(--forge-button-pill-shape, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)));\n --_button-pill-padding-inline: var(--forge-button-pill-padding-inline, var(--forge-spacing-small, 12px));\n --_button-focus-indicator-offset: var(--forge-button-focus-indicator-offset, 4px);\n --_button-text-focus-indicator-offset: var(--forge-button-text-focus-indicator-offset, 0px);\n --_button-link-focus-indicator-offset: var(--forge-button-link-focus-indicator-offset, 2px);\n --_button-popover-icon-transition-duration: var(--forge-button-popover-icon-transition-duration, var(--forge-animation-duration-short3, 150ms));\n --_button-popover-icon-transition-timing: var(--forge-button-popover-icon-transition-timing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_button-popover-icon-open-rotation: var(--forge-button-popover-icon-open-rotation, 180deg);\n}\n\n.forge-button {\n display: var(--_button-display);\n position: relative;\n outline: none;\n vertical-align: middle;\n -webkit-tap-highlight-color: transparent;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-family: var(--forge-typography-button-font-family, var(--forge-typography-font-family, "Roboto", sans-serif));\n font-size: var(--forge-typography-button-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-button-font-size-scale, 0.875)));\n font-weight: var(--forge-typography-button-font-weight, 500);\n line-height: var(--forge-typography-button-line-height, normal);\n letter-spacing: var(--forge-typography-button-letter-spacing, 0.0714285714em);\n text-transform: var(--forge-typography-button-text-transform, inherit);\n text-decoration: var(--forge-typography-button-text-decoration, inherit);\n position: relative;\n display: var(--_button-display);\n grid-auto-flow: column;\n align-items: center;\n justify-content: var(--_button-justify);\n gap: var(--_button-spacing);\n z-index: 0;\n box-sizing: border-box;\n min-inline-size: var(--_button-min-width);\n height: var(--_button-height);\n inline-size: 100%;\n border-width: var(--_button-border-width);\n border-style: var(--_button-border-style);\n border-color: var(--_button-border-color);\n border-start-start-radius: var(--_button-shape-start-start-radius);\n border-start-end-radius: var(--_button-shape-start-end-radius);\n border-end-start-radius: var(--_button-shape-end-start-radius);\n border-end-end-radius: var(--_button-shape-end-end-radius);\n padding-block: var(--_button-padding-block);\n padding-inline: var(--_button-padding-inline);\n box-shadow: var(--_button-shadow);\n outline: none;\n user-select: none;\n -webkit-appearance: none;\n vertical-align: middle;\n text-decoration: none;\n white-space: nowrap;\n background: var(--_button-background);\n color: var(--_button-color);\n cursor: var(--_button-cursor);\n transition-property: box-shadow, background;\n transition-duration: var(--_button-transition-duration);\n transition-timing-function: var(--_button-transition-timing);\n}\n\n.forge-button::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\n\n.forge-button:hover {\n --_button-shadow: var(--_button-hover-shadow);\n background: var(--_button-hover-background);\n}\n\n.forge-button:active {\n --_button-shadow: var(--_button-active-shadow);\n background: var(--_button-active-background);\n}\n\n.forge-button {\n position: relative;\n inline-size: auto;\n}\n\n.forge-button:not(:disabled):not(.forge-button--link) {\n --_state-layer-display: var(--forge-state-layer-display, flex);\n --_state-layer-color: var(--forge-state-layer-color, var(--forge-theme-on-surface, #000000));\n --_state-layer-hover-color: var(--forge-state-layer-hover-color, var(--_state-layer-color));\n --_state-layer-hover-opacity: var(--forge-state-layer-hover-opacity, 0.08);\n --_state-layer-pressed-color: var(--forge-state-layer-pressed-color, var(--_state-layer-color));\n --_state-layer-pressed-opacity: var(--forge-state-layer-pressed-opacity, 0.12);\n --_state-layer-hover-duration: var(--forge-state-layer-hover-duration, 15ms);\n --_state-layer-pressed-duration: var(--forge-state-layer-pressed-duration, 105ms);\n --_state-layer-animation-duration: var(--forge-state-layer-animation-duration, 375ms);\n}\n\n.forge-button:not(:disabled):not(.forge-button--link)::before {\n opacity: 0;\n position: absolute;\n background-color: var(--_state-layer-hover-color);\n inset: 0;\n transition: opacity var(--_state-layer-hover-duration) linear, background-color var(--_state-layer-hover-duration) linear;\n --_state-layer-hover-duration: var(--forge-state-layer-hover-duration, 100ms);\n content: "";\n opacity: 0;\n border-radius: inherit;\n}\n\n.forge-button:not(:disabled):not(.forge-button--link):hover::before {\n background-color: var(--_state-layer-hover-color);\n opacity: var(--_state-layer-hover-opacity);\n}\n\n.forge-button:not(:disabled):not(.forge-button--link):active::before {\n opacity: var(--_state-layer-pressed-opacity);\n transition-duration: var(--_state-layer-pressed-duration);\n --_state-layer-pressed-opacity: var(--forge-state-layer-pressed-opacity, 0.18);\n}\n\n@keyframes forge-focus-indicator-outward-grow {\n from {\n outline-width: 0;\n }\n to {\n outline-width: var(--_focus-indicator-active-width);\n }\n}\n@keyframes forge-focus-indicator-outward-shrink {\n from {\n outline-width: var(--_focus-indicator-active-width);\n }\n}\n@keyframes forge-focus-indicator-inward-grow {\n from {\n border-width: 0;\n }\n to {\n border-width: var(--_focus-indicator-active-width);\n }\n}\n@keyframes forge-focus-indicator-inward-shrink {\n from {\n border-width: var(--_focus-indicator-active-width);\n }\n}\n.forge-button:not(:disabled) {\n outline: none;\n}\n\n.forge-button:not(:disabled):focus-visible::after {\n --_focus-indicator-display: var(--forge-focus-indicator-display, flex);\n --_focus-indicator-width: var(--forge-focus-indicator-width, var(--forge-border-medium, 2px));\n --_focus-indicator-active-width: var(--forge-focus-indicator-active-width, 6px);\n --_focus-indicator-color: var(--forge-focus-indicator-color, var(--forge-theme-primary, #3f51b5));\n --_focus-indicator-shape: var(--forge-focus-indicator-shape, calc(var(--forge-shape-extra-small, 1px) * var(--forge-shape-factor, 1)));\n --_focus-indicator-duration: var(--forge-focus-indicator-duration, var(--forge-animation-duration-long4, 600ms));\n --_focus-indicator-easing: var(--forge-focus-indicator-easing, var(--forge-animation-easing-emphasized, cubic-bezier(0.2, 0, 0, 1)));\n --_focus-indicator-shape-start-start: var(--forge-focus-indicator-shape-start-start, var(--_focus-indicator-shape));\n --_focus-indicator-shape-start-end: var(--forge-focus-indicator-shape-start-end, var(--_focus-indicator-shape));\n --_focus-indicator-shape-end-end: var(--forge-focus-indicator-shape-end-end, var(--_focus-indicator-shape));\n --_focus-indicator-shape-end-start: var(--forge-focus-indicator-shape-end-start, var(--_focus-indicator-shape));\n --_focus-indicator-outward-offset: var(--forge-focus-indicator-outward-offset, var(--forge-spacing-xxsmall, 4px));\n --_focus-indicator-inward-offset: var(--forge-focus-indicator-inward-offset, 0px);\n --_focus-indicator-offset-block: var(--forge-focus-indicator-offset-block, 0);\n --_focus-indicator-offset-inline: var(--forge-focus-indicator-offset-inline, 0);\n}\n\n.forge-button:not(:disabled):focus-visible::after {\n animation-delay: 0s, calc(var(--_focus-indicator-duration) * 0.25);\n animation-duration: calc(var(--_focus-indicator-duration) * 0.25), calc(var(--_focus-indicator-duration) * 0.75);\n animation-timing-function: var(--_focus-indicator-easing);\n box-sizing: border-box;\n color: var(--_focus-indicator-color);\n display: none;\n pointer-events: none;\n position: absolute;\n margin-block: var(--_focus-indicator-offset-block);\n margin-inline: var(--_focus-indicator-offset-inline);\n animation-name: forge-focus-indicator-outward-grow, forge-focus-indicator-outward-shrink;\n border-end-end-radius: calc(var(--_focus-indicator-shape-end-end) + var(--_focus-indicator-outward-offset));\n border-end-start-radius: calc(var(--_focus-indicator-shape-end-start) + var(--_focus-indicator-outward-offset));\n border-start-end-radius: calc(var(--_focus-indicator-shape-start-end) + var(--_focus-indicator-outward-offset));\n border-start-start-radius: calc(var(--_focus-indicator-shape-start-start) + var(--_focus-indicator-outward-offset));\n inset: calc(-1 * var(--_focus-indicator-outward-offset));\n outline: var(--_focus-indicator-width) solid currentColor;\n content: "";\n display: block;\n}\n\n.forge-button:not(:disabled) {\n --forge-focus-indicator-color: var(--_button-primary-color);\n}\n\n.forge-button:disabled {\n cursor: var(--_button-disabled-cursor);\n --_button-background: var(--_button-disabled-background);\n --_button-color: var(--_button-disabled-text-color);\n --_button-shadow: var(--_button-disabled-shadow);\n pointer-events: none;\n pointer-events: initial;\n}\n\n.forge-button:where(:not(.forge-button--outlined, .forge-button--tonal, .forge-button--filled, .forge-button--raised, .forge-button--link)), .forge-button--text {\n --_button-padding-inline: var(--_button-text-padding-inline);\n}\n\n.forge-button--outlined {\n --_button-background: var(--_button-outlined-background);\n --_button-color: var(--_button-outlined-color);\n --_button-border-width: var(--_button-outlined-border-width);\n --_button-border-style: var(--_button-outlined-border-style);\n --_button-border-color: var(--_button-outlined-border-color);\n}\n\n.forge-button--outlined:disabled {\n --_button-border-color: var(--_button-disabled-border-color);\n}\n\n.forge-button--tonal {\n --_button-background: var(--_button-tonal-background);\n --_button-color: var(--_button-tonal-color);\n}\n\n.forge-button--tonal:disabled {\n --_button-background: var(--_button-tonal-disabled-background);\n --_button-color: var(--_button-tonal-disabled-color);\n}\n\n.forge-button--filled, .forge-button--raised {\n --_button-background: var(--_button-filled-background);\n --_button-color: var(--_button-filled-color);\n --forge-state-layer-color: var(--_button-filled-color);\n}\n\n.forge-button--filled:disabled, .forge-button--raised:disabled {\n --_button-background: var(--_button-filled-disabled-background);\n --_button-color: var(--_button-filled-disabled-color);\n}\n\n.forge-button--raised {\n --_button-background: var(--_button-raised-background);\n --_button-color: var(--_button-raised-color);\n --_button-shadow: var(--_button-raised-shadow);\n}\n\n.forge-button--raised:hover {\n --_button-shadow: var(--_button-raised-hover-shadow);\n}\n\n.forge-button--raised:active {\n --_button-shadow: var(--_button-raised-active-shadow);\n}\n\n.forge-button--raised:disabled {\n --_button-background: var(--_button-raised-disabled-background);\n --_button-color: var(--_button-raised-disabled-color);\n --_button-shadow: var(--_button-raised-disabled-shadow);\n}\n\n.forge-button--link {\n --_button-color: var(--_button-link-color);\n --_button-height: var(--_button-link-height);\n --_button-padding: var(--_button-link-padding);\n --_button-focus-indicator-offset: var(--_button-link-focus-indicator-offset);\n text-decoration: var(--_button-link-text-decoration);\n line-height: var(--_button-link-line-height);\n transition: opacity var(--_button-link-transition-duration) var(--_button-link-transition-timing);\n inline-size: var(--_button-link-width);\n}\n\n.forge-button--link:hover {\n text-decoration: var(--_button-link-hover-text-decoration);\n}\n\n.forge-button--link:active {\n opacity: var(--_button-link-active-opacity);\n}\n\n.forge-button--pill {\n --_button-shape: var(--_button-pill-shape);\n --_button-padding-inline: var(--_button-pill-padding-inline);\n --forge-focus-indicator-shape: var(--_button-pill-shape);\n}\n\n.forge-button {\n --forge-icon-font-size: var(--_button-icon-size);\n}\n\n.forge-button--dense {\n --_button-height: var(--_button-dense-height);\n}\n\n@keyframes fadein {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n:host {\n display: inline-block;\n}\n\n.ai-button {\n --forge-button-padding-inline: var(--forge-spacing-xsmall, 8px);\n --forge-button-border-radius: var(--forge-spacing-xsmall, 8px);\n --forge-button-outlined-border-width: 0;\n --forge-button-outlined-background: transparent;\n --forge-focus-indicator-shape-start-start: calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1));\n --forge-focus-indicator-shape-start-end: calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1));\n --forge-focus-indicator-shape-end-start: calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1));\n --forge-focus-indicator-shape-end-end: calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1));\n}\n\nforge-ai-icon {\n color: inherit;\n}\n\n:host(:state(disabled)) forge-ai-icon {\n --forge-ai-icon-fill-color: var(--forge-theme-text-low, rgba(0, 0, 0, 0.38));\n}';
2
2
  export {
3
3
  styles as default
4
4
  };
@@ -86,9 +86,9 @@ let AiChatHeaderComponent = class extends LitElement {
86
86
  `
87
87
  )}
88
88
  </button>
89
- <!-- <forge-ai-tooltip id="expand-tooltip" for="expand-button" placement="bottom">
89
+ <forge-ai-tooltip id="expand-tooltip" for="expand-button" placement="bottom">
90
90
  ${this.expanded ? "Collapse to smaller window" : "Expand to full window"}
91
- </forge-ai-tooltip> -->
91
+ </forge-ai-tooltip>
92
92
  `
93
93
  )}
94
94
  ${when(
@@ -130,9 +130,9 @@ let AiChatHeaderComponent = class extends LitElement {
130
130
  `
131
131
  )}
132
132
  </button>
133
- <!-- <forge-ai-tooltip id="minimize-tooltip" for="minimize-button" placement="bottom">
133
+ <forge-ai-tooltip id="minimize-tooltip" for="minimize-button" placement="bottom">
134
134
  Minimize chat to taskbar
135
- </forge-ai-tooltip> -->
135
+ </forge-ai-tooltip>
136
136
  `
137
137
  )}
138
138
  </div>
@@ -1,5 +1,4 @@
1
1
  import { LitElement, TemplateResult } from 'lit';
2
- import { MinimizeIconType } from '../ai-chat-header/ai-chat-header';
3
2
  declare global {
4
3
  interface HTMLElementTagNameMap {
5
4
  'forge-ai-chat-interface': AiChatInterfaceComponent;
@@ -10,29 +9,24 @@ export declare const AiChatInterfaceComponentTagName: keyof HTMLElementTagNameMa
10
9
  * @tag forge-ai-chat-interface
11
10
  *
12
11
  * @slot - Default slot for messages
12
+ * @slot header - Slot for AI chat header component
13
13
  * @slot suggestions - Slot for AI suggestions component
14
14
  * @slot prompt - Slot for AI prompt component
15
15
  */
16
16
  export declare class AiChatInterfaceComponent extends LitElement {
17
17
  #private;
18
18
  static styles: import('lit').CSSResult;
19
- /**
20
- * Controls whether the expand button is visible in the header
21
- */
22
- showExpandButton: boolean;
23
- /**
24
- * Controls whether the minimize button is visible in the header
25
- */
26
- showMinimizeButton: boolean;
27
- /**
28
- * Indicates the current expanded state for displaying the appropriate expand/collapse icon
29
- */
30
- expanded: boolean;
31
- /**
32
- * Controls which minimize icon to display in the header
33
- */
34
- minimizeIcon: MinimizeIconType;
35
19
  private _slottedSuggestionsNodes;
36
20
  private _hasMessages;
21
+ private _resizeObserver;
22
+ private _mutationObserver;
23
+ private _userHasScrolledUp;
24
+ private _isScrollEventListenerAdded;
25
+ /**
26
+ * Scrolls the messages container to the bottom only if user hasn't scrolled up
27
+ */
28
+ scrollMessagesToBottom(): void;
29
+ firstUpdated(): void;
30
+ disconnectedCallback(): void;
37
31
  render(): TemplateResult;
38
32
  }
@@ -1,7 +1,6 @@
1
1
  import { unsafeCSS, LitElement, html, nothing } from "lit";
2
- import { property, queryAssignedNodes, state, customElement } from "lit/decorators.js";
2
+ import { queryAssignedNodes, state, customElement } from "lit/decorators.js";
3
3
  import { when } from "lit/directives/when.js";
4
- import "../ai-chat-header/ai-chat-header.mjs";
5
4
  import "../ai-empty-state/ai-empty-state.mjs";
6
5
  import "../ai-gradient-container/ai-gradient-container.mjs";
7
6
  import styles from "./ai-chat-interface.scss.mjs";
@@ -22,42 +21,69 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
22
21
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
23
22
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
24
23
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
25
- var _AiChatInterfaceComponent_instances, header_get, _suggestionsSlot, suggestions_get, _promptSlot, prompt_get, _messagesSlot, messagesContainer_get, handleSlotChange_fn;
24
+ var _headerSlot, _suggestionsSlot, _AiChatInterfaceComponent_instances, suggestions_get, _promptSlot, prompt_get, _messagesSlot, messagesContainer_get, handleSlotChange_fn, setupResizeObserver_fn, cleanupResizeObserver_fn, setupMutationObserver_fn, cleanupMutationObserver_fn, setupScrollListener_fn, cleanupScrollListener_fn;
26
25
  const AiChatInterfaceComponentTagName = "forge-ai-chat-interface";
27
26
  let AiChatInterfaceComponent = class extends LitElement {
28
27
  constructor() {
29
28
  super(...arguments);
30
29
  __privateAdd(this, _AiChatInterfaceComponent_instances);
31
- this.showExpandButton = false;
32
- this.showMinimizeButton = false;
33
- this.expanded = false;
34
- this.minimizeIcon = "default";
35
30
  this._hasMessages = false;
31
+ this._resizeObserver = null;
32
+ this._mutationObserver = null;
33
+ this._userHasScrolledUp = false;
34
+ this._isScrollEventListenerAdded = false;
35
+ __privateAdd(this, _headerSlot, html`<slot name="header" @slotchange=${__privateMethod(this, _AiChatInterfaceComponent_instances, handleSlotChange_fn)}></slot>`);
36
36
  __privateAdd(this, _suggestionsSlot, html`<slot name="suggestions" @slotchange=${__privateMethod(this, _AiChatInterfaceComponent_instances, handleSlotChange_fn)}></slot>`);
37
37
  __privateAdd(this, _promptSlot, html`<slot name="prompt" @slotchange=${__privateMethod(this, _AiChatInterfaceComponent_instances, handleSlotChange_fn)}></slot>`);
38
38
  __privateAdd(this, _messagesSlot, html`<slot @slotchange=${__privateMethod(this, _AiChatInterfaceComponent_instances, handleSlotChange_fn)}></slot>`);
39
39
  }
40
+ /**
41
+ * Scrolls the messages container to the bottom only if user hasn't scrolled up
42
+ */
43
+ scrollMessagesToBottom() {
44
+ const messagesContainer = this.shadowRoot?.querySelector(".messages-container");
45
+ if (!messagesContainer) {
46
+ return;
47
+ }
48
+ const hasOverflow = messagesContainer.scrollHeight > messagesContainer.clientHeight;
49
+ if (!hasOverflow) {
50
+ messagesContainer.scrollTop = messagesContainer.scrollHeight;
51
+ return;
52
+ }
53
+ if (hasOverflow && !this._isScrollEventListenerAdded) {
54
+ __privateMethod(this, _AiChatInterfaceComponent_instances, setupScrollListener_fn).call(this, messagesContainer);
55
+ }
56
+ const tolerance = 5;
57
+ const isAtBottom = messagesContainer.scrollTop + messagesContainer.clientHeight >= messagesContainer.scrollHeight - tolerance;
58
+ if (isAtBottom) {
59
+ this._userHasScrolledUp = false;
60
+ }
61
+ if (!this._userHasScrolledUp) {
62
+ messagesContainer.scrollTop = messagesContainer.scrollHeight;
63
+ }
64
+ }
65
+ firstUpdated() {
66
+ __privateMethod(this, _AiChatInterfaceComponent_instances, setupResizeObserver_fn).call(this);
67
+ __privateMethod(this, _AiChatInterfaceComponent_instances, setupMutationObserver_fn).call(this);
68
+ }
69
+ disconnectedCallback() {
70
+ super.disconnectedCallback();
71
+ __privateMethod(this, _AiChatInterfaceComponent_instances, cleanupResizeObserver_fn).call(this);
72
+ __privateMethod(this, _AiChatInterfaceComponent_instances, cleanupMutationObserver_fn).call(this);
73
+ __privateMethod(this, _AiChatInterfaceComponent_instances, cleanupScrollListener_fn).call(this);
74
+ }
40
75
  render() {
41
76
  return html`
42
77
  <div class="ai-chat-interface">
43
- ${__privateGet(this, _AiChatInterfaceComponent_instances, header_get)} ${__privateGet(this, _AiChatInterfaceComponent_instances, messagesContainer_get)} ${__privateGet(this, _AiChatInterfaceComponent_instances, suggestions_get)}
78
+ ${__privateGet(this, _headerSlot)} ${__privateGet(this, _AiChatInterfaceComponent_instances, messagesContainer_get)} ${__privateGet(this, _AiChatInterfaceComponent_instances, suggestions_get)}
44
79
  <div class="prompt-container">${__privateGet(this, _AiChatInterfaceComponent_instances, prompt_get)}</div>
45
80
  </div>
46
81
  `;
47
82
  }
48
83
  };
49
- _AiChatInterfaceComponent_instances = /* @__PURE__ */ new WeakSet();
50
- header_get = function() {
51
- return html`
52
- <forge-ai-chat-header
53
- ?show-expand-button=${this.showExpandButton}
54
- ?show-minimize-button=${this.showMinimizeButton}
55
- ?expanded=${this.expanded}
56
- minimize-icon=${this.minimizeIcon}>
57
- </forge-ai-chat-header>
58
- `;
59
- };
84
+ _headerSlot = /* @__PURE__ */ new WeakMap();
60
85
  _suggestionsSlot = /* @__PURE__ */ new WeakMap();
86
+ _AiChatInterfaceComponent_instances = /* @__PURE__ */ new WeakSet();
61
87
  suggestions_get = function() {
62
88
  const hasSuggestions = this._slottedSuggestionsNodes.length > 0;
63
89
  return when(
@@ -85,23 +111,67 @@ handleSlotChange_fn = function(evt) {
85
111
  const assignedElements = slot.assignedElements();
86
112
  this._hasMessages = assignedElements.length > 0;
87
113
  }
88
- if (["suggestions", "prompt", "default"].includes(slotName)) {
114
+ if (["header", "suggestions", "prompt", "default"].includes(slotName)) {
89
115
  this.requestUpdate();
90
116
  }
91
117
  };
118
+ setupResizeObserver_fn = function() {
119
+ const messagesContainer = this.shadowRoot?.querySelector(".messages-container");
120
+ if (!messagesContainer) {
121
+ return;
122
+ }
123
+ this._resizeObserver = new ResizeObserver(() => {
124
+ requestAnimationFrame(() => {
125
+ this.scrollMessagesToBottom();
126
+ });
127
+ });
128
+ this._resizeObserver.observe(messagesContainer);
129
+ };
130
+ cleanupResizeObserver_fn = function() {
131
+ if (this._resizeObserver) {
132
+ this._resizeObserver.disconnect();
133
+ this._resizeObserver = null;
134
+ }
135
+ };
136
+ setupMutationObserver_fn = function() {
137
+ this._mutationObserver = new MutationObserver(() => {
138
+ requestAnimationFrame(() => {
139
+ this.scrollMessagesToBottom();
140
+ });
141
+ });
142
+ this._mutationObserver.observe(this, {
143
+ childList: true,
144
+ subtree: true,
145
+ attributes: false,
146
+ characterData: true
147
+ });
148
+ };
149
+ cleanupMutationObserver_fn = function() {
150
+ if (this._mutationObserver) {
151
+ this._mutationObserver.disconnect();
152
+ this._mutationObserver = null;
153
+ }
154
+ };
155
+ setupScrollListener_fn = function(messagesContainer) {
156
+ let lastScrollTop = messagesContainer.scrollTop;
157
+ const handleScroll = () => {
158
+ const currentScrollTop = messagesContainer.scrollTop;
159
+ if (currentScrollTop < lastScrollTop) {
160
+ this._userHasScrolledUp = true;
161
+ }
162
+ lastScrollTop = currentScrollTop;
163
+ };
164
+ messagesContainer.addEventListener("scroll", handleScroll, { passive: true });
165
+ this._isScrollEventListenerAdded = true;
166
+ };
167
+ cleanupScrollListener_fn = function() {
168
+ const messagesContainer = this.shadowRoot?.querySelector(".messages-container");
169
+ if (messagesContainer && this._isScrollEventListenerAdded) {
170
+ messagesContainer.replaceWith(messagesContainer.cloneNode(true));
171
+ this._isScrollEventListenerAdded = false;
172
+ }
173
+ };
92
174
  AiChatInterfaceComponent.styles = unsafeCSS(styles);
93
- __decorateClass([
94
- property({ type: Boolean, attribute: "show-expand-button" })
95
- ], AiChatInterfaceComponent.prototype, "showExpandButton", 2);
96
- __decorateClass([
97
- property({ type: Boolean, attribute: "show-minimize-button" })
98
- ], AiChatInterfaceComponent.prototype, "showMinimizeButton", 2);
99
- __decorateClass([
100
- property({ type: Boolean })
101
- ], AiChatInterfaceComponent.prototype, "expanded", 2);
102
- __decorateClass([
103
- property({ attribute: "minimize-icon" })
104
- ], AiChatInterfaceComponent.prototype, "minimizeIcon", 2);
105
175
  __decorateClass([
106
176
  queryAssignedNodes({ slot: "suggestions", flatten: true })
107
177
  ], AiChatInterfaceComponent.prototype, "_slottedSuggestionsNodes", 2);
@@ -1,4 +1,4 @@
1
- const styles = '/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/* prettier-ignore */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n:host {\n display: block;\n height: 100%;\n flex-grow: 1;\n}\n\n.ai-chat-interface {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-family: var(--forge-typography-body1-font-family, var(--forge-typography-font-family, "Roboto", sans-serif));\n font-size: var(--forge-typography-body1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, 0.875)));\n font-weight: var(--forge-typography-body1-font-weight, 400);\n line-height: var(--forge-typography-body1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.125)));\n letter-spacing: var(--forge-typography-body1-letter-spacing, 0.0357142857em);\n text-transform: var(--forge-typography-body1-text-transform, inherit);\n text-decoration: var(--forge-typography-body1-text-decoration, inherit);\n color: var(--forge-theme-on-surface, #000000);\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.messages-container::-webkit-scrollbar {\n height: var(--forge-scrollbar-height, 16px);\n width: var(--forge-scrollbar-width, 16px);\n}\n.messages-container::-webkit-scrollbar-track {\n background-color: var(--forge-scrollbar-track-container, var(--forge-theme-surface-container-low, #ebebeb));\n}\n.messages-container::-webkit-scrollbar-track:hover {\n background-color: var(--forge-scrollbar-track-container-hover, var(--forge-theme-surface-container-low, #ebebeb));\n}\n.messages-container::-webkit-scrollbar-corner {\n background-color: var(--forge-scrollbar-track-container, var(--forge-theme-surface-container-low, #ebebeb));\n}\n.messages-container::-webkit-scrollbar-thumb {\n height: var(--forge-scrollbar-thumb-min-height, 32px);\n width: var(--forge-scrollbar-thumb-min-width, 32px);\n border-radius: var(--forge-scrollbar-border-radius, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)));\n border-width: var(--forge-scrollbar-border-width, 3px);\n border-style: solid;\n border-color: transparent;\n background-color: var(--forge-scrollbar-thumb-container, var(--forge-theme-surface-container-medium, #c2c2c2));\n background-clip: content-box;\n}\n.messages-container::-webkit-scrollbar-thumb:hover {\n background-color: var(--forge-scrollbar-thumb-container-hover, var(--forge-theme-surface-container-high, #9e9e9e));\n}\n.messages-container {\n padding-inline-start: var(--forge-spacing-medium, 16px);\n padding-block-end: var(--forge-spacing-medium, 16px);\n scrollbar-gutter: stable;\n overflow-y: auto;\n}\n@media not all and (min-resolution: 0.001dpcm) {\n @supports (-webkit-appearance: none) {\n .messages-container {\n overflow-y: scroll;\n }\n }\n}\n.messages-container {\n background: linear-gradient(to top, var(--forge-theme-primary-container-minimum, #f7f8fc), var(--forge-theme-surface, #ffffff));\n border-block-end: 1px solid var(--forge-theme-outline, #e0e0e0);\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n gap: var(--forge-spacing-medium, 16px);\n}\n\n.suggestions-container {\n padding-inline: var(--forge-spacing-medium, 16px);\n padding-block-start: var(--forge-spacing-medium, 16px);\n}\n\n.prompt-container {\n padding: var(--forge-spacing-medium, 16px);\n}';
1
+ const styles = '/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/* prettier-ignore */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n:host {\n display: block;\n height: 100%;\n flex-grow: 1;\n}\n\n.ai-chat-interface {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-family: var(--forge-typography-body1-font-family, var(--forge-typography-font-family, "Roboto", sans-serif));\n font-size: var(--forge-typography-body1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, 0.875)));\n font-weight: var(--forge-typography-body1-font-weight, 400);\n line-height: var(--forge-typography-body1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.125)));\n letter-spacing: var(--forge-typography-body1-letter-spacing, 0.0357142857em);\n text-transform: var(--forge-typography-body1-text-transform, inherit);\n text-decoration: var(--forge-typography-body1-text-decoration, inherit);\n color: var(--forge-theme-on-surface, #000000);\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.messages-container::-webkit-scrollbar {\n height: var(--forge-scrollbar-height, 16px);\n width: var(--forge-scrollbar-width, 16px);\n}\n.messages-container::-webkit-scrollbar-track {\n background-color: var(--forge-scrollbar-track-container, var(--forge-theme-surface-container-low, #ebebeb));\n}\n.messages-container::-webkit-scrollbar-track:hover {\n background-color: var(--forge-scrollbar-track-container-hover, var(--forge-theme-surface-container-low, #ebebeb));\n}\n.messages-container::-webkit-scrollbar-corner {\n background-color: var(--forge-scrollbar-track-container, var(--forge-theme-surface-container-low, #ebebeb));\n}\n.messages-container::-webkit-scrollbar-thumb {\n height: var(--forge-scrollbar-thumb-min-height, 32px);\n width: var(--forge-scrollbar-thumb-min-width, 32px);\n border-radius: var(--forge-scrollbar-border-radius, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)));\n border-width: var(--forge-scrollbar-border-width, 3px);\n border-style: solid;\n border-color: transparent;\n background-color: var(--forge-scrollbar-thumb-container, var(--forge-theme-surface-container-medium, #c2c2c2));\n background-clip: content-box;\n}\n.messages-container::-webkit-scrollbar-thumb:hover {\n background-color: var(--forge-scrollbar-thumb-container-hover, var(--forge-theme-surface-container-high, #9e9e9e));\n}\n.messages-container {\n padding-inline-start: var(--forge-spacing-medium, 16px);\n padding-block-end: var(--forge-spacing-medium, 16px);\n scrollbar-gutter: stable;\n scroll-behavior: smooth;\n overflow-y: auto;\n}\n@media not all and (min-resolution: 0.001dpcm) {\n @supports (-webkit-appearance: none) {\n .messages-container {\n overflow-y: scroll;\n }\n }\n}\n.messages-container {\n background: linear-gradient(to top, var(--forge-theme-primary-container-minimum, #f7f8fc), var(--forge-theme-surface, #ffffff));\n border-block-end: 1px solid var(--forge-theme-outline, #e0e0e0);\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n gap: var(--forge-spacing-medium, 16px);\n}\n\n.suggestions-container {\n padding-inline: var(--forge-spacing-medium, 16px);\n padding-block-start: var(--forge-spacing-medium, 16px);\n}\n\n.prompt-container {\n padding: var(--forge-spacing-medium, 16px);\n}';
2
2
  export {
3
3
  styles as default
4
4
  };
@@ -4,6 +4,7 @@ import { createRef, ref } from "lit/directives/ref.js";
4
4
  import { when } from "lit/directives/when.js";
5
5
  import "../ai-modal/ai-modal.mjs";
6
6
  import "../ai-chat-interface/ai-chat-interface.mjs";
7
+ import "../ai-chat-header/ai-chat-header.mjs";
7
8
  import "../ai-gradient-container/ai-gradient-container.mjs";
8
9
  import styles from "./ai-embedded-chat.scss.mjs";
9
10
  var __defProp = Object.defineProperty;
@@ -83,11 +84,14 @@ _modalRef = /* @__PURE__ */ new WeakMap();
83
84
  _AiEmbeddedChatComponent_instances = /* @__PURE__ */ new WeakSet();
84
85
  chatInterface_get = function() {
85
86
  return html`
86
- <forge-ai-chat-interface
87
- show-expand-button
88
- ?expanded=${this.expanded}
89
- @forge-ai-chat-header-expand=${__privateMethod(this, _AiEmbeddedChatComponent_instances, handleHeaderExpand_fn)}
90
- @forge-ai-chat-header-minimize=${__privateMethod(this, _AiEmbeddedChatComponent_instances, handleHeaderMinimize_fn)}>
87
+ <forge-ai-chat-interface>
88
+ <forge-ai-chat-header
89
+ slot="header"
90
+ @forge-ai-chat-header-expand=${__privateMethod(this, _AiEmbeddedChatComponent_instances, handleHeaderExpand_fn)}
91
+ @forge-ai-chat-header-minimize=${__privateMethod(this, _AiEmbeddedChatComponent_instances, handleHeaderMinimize_fn)}
92
+ show-expand-button
93
+ ?expanded=${this.expanded}>
94
+ </forge-ai-chat-header>
91
95
  <slot></slot>
92
96
  <slot name="suggestions" slot="suggestions"></slot>
93
97
  <slot name="prompt" slot="prompt"></slot>
@@ -64,7 +64,6 @@ export declare class ForgeAiFilePickerComponent extends LitElement {
64
64
  multiple: boolean;
65
65
  private _isDragOver;
66
66
  private _fileInput;
67
- private _button;
68
67
  connectedCallback(): void;
69
68
  disconnectedCallback(): void;
70
69
  private _handleButtonClick;
@@ -24,7 +24,7 @@ let ForgeAiFilePickerComponent = class extends LitElement {
24
24
  constructor() {
25
25
  super(...arguments);
26
26
  __privateAdd(this, _ForgeAiFilePickerComponent_instances);
27
- this.variant = "button";
27
+ this.variant = "icon-button";
28
28
  this.disabled = false;
29
29
  this.accept = "";
30
30
  this.multiple = false;
@@ -165,9 +165,6 @@ __decorateClass([
165
165
  __decorateClass([
166
166
  query('input[type="file"]')
167
167
  ], ForgeAiFilePickerComponent.prototype, "_fileInput", 2);
168
- __decorateClass([
169
- query("button")
170
- ], ForgeAiFilePickerComponent.prototype, "_button", 2);
171
168
  ForgeAiFilePickerComponent = __decorateClass([
172
169
  customElement("forge-ai-file-picker")
173
170
  ], ForgeAiFilePickerComponent);
@@ -3,6 +3,7 @@ import { property, state, customElement } from "lit/decorators.js";
3
3
  import { createRef, ref } from "lit/directives/ref.js";
4
4
  import "../ai-dialog/ai-dialog.mjs";
5
5
  import "../ai-chat-interface/ai-chat-interface.mjs";
6
+ import "../ai-chat-header/ai-chat-header.mjs";
6
7
  import styles from "./ai-floating-chat.scss.mjs";
7
8
  var __defProp = Object.defineProperty;
8
9
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -45,13 +46,16 @@ let AiFloatingChatComponent = class extends LitElement {
45
46
  ?expanded=${this.expanded}
46
47
  @forge-ai-dialog-fullscreen-change=${__privateMethod(this, _AiFloatingChatComponent_instances, handleFullscreenChange_fn)}
47
48
  @forge-ai-dialog-close=${__privateMethod(this, _AiFloatingChatComponent_instances, handleDialogClose_fn)}>
48
- <forge-ai-chat-interface
49
- ?show-expand-button=${!this._isFullscreen}
50
- show-minimize-button
51
- minimize-icon="default"
52
- ?expanded=${this.expanded}
53
- @forge-ai-chat-header-expand=${__privateMethod(this, _AiFloatingChatComponent_instances, handleHeaderExpand_fn)}
54
- @forge-ai-chat-header-minimize=${__privateMethod(this, _AiFloatingChatComponent_instances, handleHeaderMinimize_fn)}>
49
+ <forge-ai-chat-interface>
50
+ <forge-ai-chat-header
51
+ slot="header"
52
+ @forge-ai-chat-header-expand=${__privateMethod(this, _AiFloatingChatComponent_instances, handleHeaderExpand_fn)}
53
+ @forge-ai-chat-header-minimize=${__privateMethod(this, _AiFloatingChatComponent_instances, handleHeaderMinimize_fn)}
54
+ ?show-expand-button=${!this._isFullscreen}
55
+ show-minimize-button
56
+ minimize-icon="default"
57
+ ?expanded=${this.expanded}>
58
+ </forge-ai-chat-header>
55
59
  <slot></slot>
56
60
  <slot name="suggestions" slot="suggestions"></slot>
57
61
  <slot name="prompt" slot="prompt"></slot>
@@ -17,7 +17,7 @@ export declare const AiPromptComponentTagName: keyof HTMLElementTagNameMap;
17
17
  /**
18
18
  * @tag forge-ai-prompt
19
19
  *
20
- * @slot actions - Slot for action components like dropdown menus, voice input, buttons, etc.
20
+ * @slot actions - Slot for action components that are hidden in inline mode (voice input, file picker, model selectors, web search, etc.)
21
21
  *
22
22
  * @state inline - The prompt is in inline layout mode with actions hidden.
23
23
  * @state stacked - The prompt is in stacked layout mode with actions displayed below the input.
@@ -33,6 +33,7 @@ export declare class AiPromptComponent extends LitElement {
33
33
  value: string;
34
34
  /** Layout variant for the prompt component */
35
35
  variant: AiPromptVariant;
36
+ private _actionsSlottedNodes;
36
37
  constructor();
37
38
  willUpdate(changedProperties: PropertyValues<this>): void;
38
39
  private _handleSend;
@@ -1,5 +1,6 @@
1
1
  import { unsafeCSS, LitElement, html } from "lit";
2
- import { property, customElement } from "lit/decorators.js";
2
+ import { property, queryAssignedNodes, customElement } from "lit/decorators.js";
3
+ import { when } from "lit/directives/when.js";
3
4
  import { toggleState } from "../utils.mjs";
4
5
  import styles from "./ai-prompt.scss.mjs";
5
6
  var __defProp = Object.defineProperty;
@@ -20,7 +21,7 @@ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read fr
20
21
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
21
22
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
22
23
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
23
- var _internals, _AiPromptComponent_instances, setCssState_fn, _inputActions;
24
+ var _internals, _AiPromptComponent_instances, setCssState_fn, _actionsSlot, conditionalActions_get, handleSlotChange_fn;
24
25
  const AiPromptComponentTagName = "forge-ai-prompt";
25
26
  let AiPromptComponent = class extends LitElement {
26
27
  constructor() {
@@ -30,12 +31,7 @@ let AiPromptComponent = class extends LitElement {
30
31
  this.value = "";
31
32
  this.variant = "stacked";
32
33
  __privateAdd(this, _internals);
33
- __privateAdd(this, _inputActions, html`
34
- <hr class="forge-divider" />
35
- <div class="actions">
36
- <slot name="actions"></slot>
37
- </div>
38
- `);
34
+ __privateAdd(this, _actionsSlot, html`<slot name="actions" @slotchange=${__privateMethod(this, _AiPromptComponent_instances, handleSlotChange_fn)}></slot>`);
39
35
  __privateSet(this, _internals, this.attachInternals());
40
36
  __privateMethod(this, _AiPromptComponent_instances, setCssState_fn).call(this);
41
37
  }
@@ -91,7 +87,7 @@ let AiPromptComponent = class extends LitElement {
91
87
  </svg>
92
88
  </button>
93
89
  </div>
94
- ${this.variant === "stacked" ? __privateGet(this, _inputActions) : ""}
90
+ ${__privateGet(this, _AiPromptComponent_instances, conditionalActions_get)}
95
91
  </div>
96
92
  </div>
97
93
  `;
@@ -103,7 +99,25 @@ setCssState_fn = function() {
103
99
  toggleState(__privateGet(this, _internals), "inline", this.variant === "inline");
104
100
  toggleState(__privateGet(this, _internals), "stacked", this.variant === "stacked");
105
101
  };
106
- _inputActions = /* @__PURE__ */ new WeakMap();
102
+ _actionsSlot = /* @__PURE__ */ new WeakMap();
103
+ conditionalActions_get = function() {
104
+ const hasActions = this._actionsSlottedNodes.length > 0;
105
+ return when(
106
+ hasActions,
107
+ () => html`
108
+ <hr class="forge-divider" />
109
+ <div class="actions">${__privateGet(this, _actionsSlot)}</div>
110
+ `,
111
+ () => html`${__privateGet(this, _actionsSlot)}`
112
+ // Always render slot for detection
113
+ );
114
+ };
115
+ handleSlotChange_fn = function(evt) {
116
+ const slotName = evt.target.name;
117
+ if (slotName === "actions") {
118
+ this.requestUpdate();
119
+ }
120
+ };
107
121
  AiPromptComponent.styles = unsafeCSS(styles);
108
122
  __decorateClass([
109
123
  property()
@@ -114,6 +128,9 @@ __decorateClass([
114
128
  __decorateClass([
115
129
  property({ type: String, attribute: "variant" })
116
130
  ], AiPromptComponent.prototype, "variant", 2);
131
+ __decorateClass([
132
+ queryAssignedNodes({ slot: "actions", flatten: true })
133
+ ], AiPromptComponent.prototype, "_actionsSlottedNodes", 2);
117
134
  AiPromptComponent = __decorateClass([
118
135
  customElement(AiPromptComponentTagName)
119
136
  ], AiPromptComponent);
@@ -1,4 +1,4 @@
1
- const styles = '/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n.forge-card {\n --_card-background: var(--forge-card-background, var(--forge-theme-surface, #ffffff));\n --_card-height: var(--forge-card-height, 100%);\n --_card-width: var(--forge-card-width, 100%);\n --_card-outline-color: var(--forge-card-outline-color, var(--forge-theme-outline, #e0e0e0));\n --_card-outline-width: var(--forge-card-outline-width, var(--forge-border-thin, 1px));\n --_card-outline-style: var(--forge-card-outline-style, solid);\n --_card-elevation: var(--forge-card-elevation, none);\n --_card-padding: var(--forge-card-padding, var(--forge-spacing-medium, 16px));\n --_card-shape: var(--forge-card-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_card-overflow: var(--forge-card-overflow, initial);\n --_card-raised-elevation: var(--forge-card-raised-elevation, 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12));\n --_card-raised-outline-width: var(--forge-card-raised-outline-width, 0);\n --_card-height: var(--forge-card-height, auto);\n --_card-width: var(--forge-card-width, auto);\n}\n\n.forge-card {\n background: var(--_card-background);\n border-color: var(--_card-outline-color);\n border-width: var(--_card-outline-width);\n border-style: var(--_card-outline-style);\n border-radius: var(--_card-shape);\n box-shadow: var(--_card-elevation);\n box-sizing: border-box;\n padding: var(--_card-padding);\n overflow: var(--_card-overflow);\n height: var(--_card-height);\n width: var(--_card-width);\n -webkit-tap-highlight-color: transparent;\n}\n\n.forge-card--raised {\n --_card-elevation: var(--_card-raised-elevation);\n --_card-outline-width: var(--_card-raised-outline-width);\n}\n\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/* prettier-ignore */\n@keyframes float-in-label-animation {\n from {\n translate: 0;\n opacity: 40%;\n }\n to {\n translate: var(--_field-floating-label-translation);\n opacity: 100%;\n }\n}\n@keyframes float-out-label-animation {\n from {\n translate: var(--_field-floating-label-translation);\n opacity: 40%;\n }\n to {\n translate: 0;\n opacity: 100%;\n }\n}\n@keyframes multiline-inset-label-background-animation {\n from {\n opacity: 0%;\n }\n to {\n opacity: 100%;\n }\n}\n@layer base, textarea, density, invalid, disabled;\n@layer base {\n .forge-field {\n --_field-shape: var(--forge-field-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_field-outline-style: var(--forge-field-outline-style, solid);\n --_field-outline-width: var(--forge-field-outline-width, var(--forge-border-thin, 1px));\n --_field-height: var(--forge-field-height, 40px);\n --_field-inset-height: var(--forge-field-inset-height, 48px);\n --_field-background: var(--forge-field-background, transparent);\n --_field-padding-inline: var(--forge-field-padding-inline, 12px);\n --_field-disabled-background: var(--forge-field-disabled-background, var(--forge-theme-surface-container-low, #ebebeb));\n --_field-disabled-opacity: var(--forge-field-disabled-opacity, 0.38);\n --_field-placeholder-color: var(--forge-field-placeholder-color, var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6)));\n }\n .forge-field {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--forge-spacing-xsmall, 8px);\n box-shadow: var(--_field-elevation);\n padding-inline: var(--_field-padding-inline);\n border-radius: var(--_field-shape);\n outline-style: var(--_field-outline-style);\n outline-width: var(--_field-outline-width);\n outline-color: var(--forge-theme-outline-low, #9e9e9e);\n outline-offset: calc(var(--_field-outline-width) * -1);\n background: var(--_field-background);\n opacity: var(--_field-disableable-opacity);\n cursor: var(--_field-disableable-cursor);\n }\n .forge-field:hover:not(:has(:where(input, textarea, select, .forge-field__input):disabled)) {\n outline-color: var(--forge-theme-outline-high, #212121);\n }\n .forge-field :where(input, textarea, select, .forge-field__input) {\n box-sizing: border-box;\n margin: 0;\n outline: none;\n border: none;\n background-color: transparent;\n padding-block: 0;\n padding-inline: 0;\n inline-size: 100%;\n block-size: 100%;\n color: inherit;\n font: inherit;\n font-size: var(--_field-font-size);\n text-overflow: ellipsis;\n padding-block-start: 0;\n padding-block-end: 0;\n transition: padding-block var(--_field-floating-animation-duration) var(--_field-floating-animation-timing);\n display: flex;\n block-size: var(--_field-height);\n inline-size: 100%;\n overflow: hidden;\n color: var(--forge-theme-text-high, rgba(0, 0, 0, 0.87));\n background: transparent;\n appearance: none;\n }\n .forge-field :where(input, textarea, select, .forge-field__input)::placeholder {\n color: var(--_field-placeholder-color);\n }\n .forge-field--plain {\n --_field-multiline-inset-label-background: var(--forge-field-multiline-inset-label-background, var(--forge-theme-surface, #ffffff));\n --_field-multiline-inset-label-background-hover: var(--forge-field-multiline-inset-label-background-hover, var(--forge-theme-surface, #ffffff));\n --_field-outline-color: var(--forge-field-outline-color, transparent);\n --_field-outline-color-hover: var(--forge-field-outline-color-hover, transparent);\n --_field-inner-border-display: var(--forge-field-inner-border-display, none);\n --_field-padding-inline: var(--forge-field-padding-inline, 0);\n --_field-surface-display: var(--forge-field-surface-display, none);\n outline-width: 0;\n }\n .forge-field--tonal {\n --_field-outline-color: var(--forge-field-outline-color, transparent);\n --_field-outline-color-hover: var(--forge-field-outline-color-hover, transparent);\n --_field-inner-border-block-size: var(--forge-field-inner-border-block-size, calc(100% - 8px));\n --_field-background: var(--_field-tonal-background);\n --_field-multiline-inset-label-background: var(--forge-field-multiline-inset-label-background, var(--_field-background));\n --_field-hover-background: var(--forge-field-hover-background, tonal-background-hover);\n --_field-multiline-inset-label-background: var(--forge-field-multiline-inset-label-background, var(--_field-multiline-inset-label-tonal-background));\n outline-width: 0;\n background: var(--forge-theme-primary-container-low, #e8eaf6);\n }\n .forge-field--tonal:hover:not(:has(:where(input, textarea, select, .forge-field__input):disabled)) {\n background: var(--forge-theme-surface-container-minimum, #f5f5f5);\n }\n .forge-field--filled {\n --_field-background: var(--_field-filled-background);\n --_field-multiline-inset-label-background: var(--forge-field-multiline-inset-label-background, var(--_field-background));\n background: var(--forge-theme-surface-bright, #ffffff);\n }\n .forge-field--raised {\n --_field-elevation: var(--forge-field-elevation, 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12));\n --_field-elevation-active: var(--forge-field-elevation-active, 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12));\n --_field-outline-color: var(--forge-field-outline-color, transparent);\n --_field-outline-color-hover: var(--forge-field-outline-color-hover, transparent);\n --_field-inner-border-block-size: var(--forge-field-inner-border-block-size, calc(100% - 8px));\n --_field-background: var(--_field-filled-background);\n --_field-multiline-inset-label-background: var(--forge-field-multiline-inset-label-background, var(--_field-background));\n outline-width: 0;\n }\n .forge-field--raised:hover:not(:has(:where(input, textarea, select, .forge-field__input):disabled)) {\n box-shadow: var(--_field-elevation-active);\n }\n .forge-field--rounded {\n --_field-shape: var(--forge-field-shape, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)));\n --_field-padding-inline: var(--forge-field-padding-inline, var(--_field-rounded-container-padding-inline-start));\n }\n .forge-field:has(label) {\n --_field-floating-label-translation: var(--forge-field-floating-label-translation, 0 calc(calc(calc(max(var(--forge-typography-body2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.375))), var(--forge-typography-label2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)))) / 2) + calc((var(--_field-height) - 56px) / 8)) * -1));\n display: grid;\n grid-template-columns: auto 1fr auto;\n gap: 0;\n block-size: var(--_field-height);\n --_field-height: var(--forge-field-height, 48px);\n }\n .forge-field:has(label) label {\n position: absolute;\n grid-column: 2;\n pointer-events: none;\n color: var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6));\n }\n .forge-field:has(label).forge-field--rounded {\n padding-inline: var(--forge-spacing-large, 24px);\n }\n @keyframes forge-field-float-label-in {\n from {\n transform: translateY(15%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .forge-field:has(label).forge-field--float-label-in label {\n animation: forge-field-float-label-in var(--forge-animation-duration-short4, 200ms) var(--forge-animation-easing-accelerate, cubic-bezier(0.3, 0, 1, 1)) forwards;\n }\n @keyframes forge-field-float-label-out {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n .forge-field:has(label).forge-field--float-label-out label {\n animation: forge-field-float-label-out var(--forge-animation-duration-short4, 200ms) var(--forge-animation-easing-accelerate, cubic-bezier(0.3, 0, 1, 1)) forwards;\n }\n .forge-field:has(label).forge-field--float-label label, .forge-field:has(label):has(:where(:where(input, textarea, select, .forge-field__input):autofill, :where(input, textarea, select, .forge-field__input):placeholder-shown)) label {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-family: var(--forge-typography-label2-font-family, var(--forge-typography-font-family, "Roboto", sans-serif));\n font-size: var(--forge-typography-label2-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-font-size-scale, 0.8125)));\n font-weight: var(--forge-typography-label2-font-weight, 400);\n line-height: var(--forge-typography-label2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)));\n letter-spacing: var(--forge-typography-label2-letter-spacing, 0.0096153846em);\n text-transform: var(--forge-typography-label2-text-transform, inherit);\n text-decoration: var(--forge-typography-label2-text-decoration, inherit);\n translate: var(--_field-floating-label-translation);\n }\n .forge-field:has(label).forge-field--float-label:not(.forge-field--extra-small) :where(input, textarea, select, .forge-field__input), .forge-field:has(label):has(:where(:where(input, textarea, select, .forge-field__input):autofill, :where(input, textarea, select, .forge-field__input):placeholder-shown)):not(.forge-field--extra-small) :where(input, textarea, select, .forge-field__input) {\n padding-block-start: calc((max(var(--forge-typography-body2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.375))), var(--forge-typography-label2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)))) / 2 + (var(--_field-height) - 56px) / 8) * 2) !important;\n }\n .forge-field:has(label) :where(input, textarea, select, .forge-field__input) {\n grid-column: 2;\n block-size: var(--_field-height);\n }\n .forge-field:has(label) :where(input, textarea, select, .forge-field__input) ~ * {\n grid-column: 3;\n margin-inline-start: var(--forge-spacing-xsmall, 8px);\n }\n .forge-field:has(label) > :not(:where(input, textarea, select, .forge-field__input) ~ *, :where(input, textarea, select, .forge-field__input), label) {\n grid-column: 1;\n margin-inline-end: var(--forge-spacing-xsmall, 8px);\n }\n @keyframes forge-focus-indicator-outward-grow {\n from {\n outline-width: 0;\n }\n to {\n outline-width: var(--_focus-indicator-active-width);\n }\n }\n @keyframes forge-focus-indicator-outward-shrink {\n from {\n outline-width: var(--_focus-indicator-active-width);\n }\n }\n @keyframes forge-focus-indicator-inward-grow {\n from {\n border-width: 0;\n }\n to {\n border-width: var(--_focus-indicator-active-width);\n }\n }\n @keyframes forge-focus-indicator-inward-shrink {\n from {\n border-width: var(--_focus-indicator-active-width);\n }\n }\n .forge-field:has(:where(input, textarea, select, .forge-field__input):focus) {\n outline: none;\n }\n .forge-field:has(:where(input, textarea, select, .forge-field__input):focus)::after {\n --_focus-indicator-display: var(--forge-focus-indicator-display, flex);\n --_focus-indicator-width: var(--forge-focus-indicator-width, var(--forge-border-medium, 2px));\n --_focus-indicator-active-width: var(--forge-focus-indicator-active-width, 6px);\n --_focus-indicator-color: var(--forge-focus-indicator-color, var(--forge-theme-primary, #3f51b5));\n --_focus-indicator-shape: var(--forge-focus-indicator-shape, calc(var(--forge-shape-extra-small, 1px) * var(--forge-shape-factor, 1)));\n --_focus-indicator-duration: var(--forge-focus-indicator-duration, var(--forge-animation-duration-long4, 600ms));\n --_focus-indicator-easing: var(--forge-focus-indicator-easing, var(--forge-animation-easing-emphasized, cubic-bezier(0.2, 0, 0, 1)));\n --_focus-indicator-shape-start-start: var(--forge-focus-indicator-shape-start-start, var(--_focus-indicator-shape));\n --_focus-indicator-shape-start-end: var(--forge-focus-indicator-shape-start-end, var(--_focus-indicator-shape));\n --_focus-indicator-shape-end-end: var(--forge-focus-indicator-shape-end-end, var(--_focus-indicator-shape));\n --_focus-indicator-shape-end-start: var(--forge-focus-indicator-shape-end-start, var(--_focus-indicator-shape));\n --_focus-indicator-outward-offset: var(--forge-focus-indicator-outward-offset, var(--forge-spacing-xxsmall, 4px));\n --_focus-indicator-inward-offset: var(--forge-focus-indicator-inward-offset, 0px);\n --_focus-indicator-offset-block: var(--forge-focus-indicator-offset-block, 0);\n --_focus-indicator-offset-inline: var(--forge-focus-indicator-offset-inline, 0);\n animation-delay: 0s, calc(var(--_focus-indicator-duration) * 0.25);\n animation-duration: calc(var(--_focus-indicator-duration) * 0.25), calc(var(--_focus-indicator-duration) * 0.75);\n animation-timing-function: var(--_focus-indicator-easing);\n box-sizing: border-box;\n color: var(--_focus-indicator-color);\n display: none;\n pointer-events: none;\n position: absolute;\n margin-block: var(--_focus-indicator-offset-block);\n margin-inline: var(--_focus-indicator-offset-inline);\n animation-name: forge-focus-indicator-outward-grow, forge-focus-indicator-outward-shrink;\n border-end-end-radius: calc(var(--_focus-indicator-shape-end-end) + var(--_focus-indicator-outward-offset));\n border-end-start-radius: calc(var(--_focus-indicator-shape-end-start) + var(--_focus-indicator-outward-offset));\n border-start-end-radius: calc(var(--_focus-indicator-shape-start-end) + var(--_focus-indicator-outward-offset));\n border-start-start-radius: calc(var(--_focus-indicator-shape-start-start) + var(--_focus-indicator-outward-offset));\n inset: calc(-1 * var(--_focus-indicator-outward-offset));\n outline: var(--_focus-indicator-width) solid currentColor;\n content: "";\n display: block;\n border-radius: inherit;\n }\n .forge-field:has(:where(input, textarea, select, .forge-field__input):focus) {\n --forge-focus-indicator-color: var(--forge-theme-primary, #3f51b5);\n --forge-focus-indicator-outward-offset: 0px;\n }\n}\n@layer textarea {\n .forge-field:has(textarea:only-child) {\n padding-inline: 0;\n }\n .forge-field:has(textarea:only-child) textarea {\n padding-inline: var(--_field-padding-inline);\n }\n .forge-field:has(textarea) {\n align-items: start;\n block-size: fit-content;\n }\n .forge-field:has(textarea) textarea {\n padding-block-start: calc((var(--_field-height) - var(--forge-typography-body2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.375)))) / 2);\n padding-block-end: calc(max(var(--forge-typography-body2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.375))), var(--forge-typography-label2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)))) / 2 + (var(--_field-height) - 56px) / 8 + (var(--_field-height) - var(--forge-typography-body2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.375)))) / 2);\n resize: vertical;\n block-size: fit-content;\n }\n .forge-field:has(textarea) *:not(textarea) {\n margin-block-start: var(--forge-spacing-xsmall, 8px);\n }\n}\n@layer density {\n .forge-field--dense, .forge-field--extra-small {\n --_field-height: var(--forge-field-height, 24px);\n --_field-padding-inline-start: var(--forge-field-padding-inline-start, 8px);\n --_field-padding-inline-end: var(--forge-field-padding-inline-end, 4px);\n }\n .forge-field--dense:has(label) label, .forge-field--extra-small:has(label) label {\n display: none;\n }\n .forge-field--small {\n --_field-height: var(--forge-field-height, 32px);\n }\n .forge-field--small:has(label) {\n --_field-height: var(--forge-field-height, 40px);\n }\n .forge-field--large {\n --_field-height: var(--forge-field-height, 48px);\n }\n .forge-field--large:has(label) {\n --_field-height: var(--forge-field-height, 56px);\n }\n .forge-field--extra-large {\n --_field-height: var(--forge-field-height, 56px);\n }\n .forge-field--extra-large:has(label) {\n --_field-height: var(--forge-field-height, 64px);\n }\n}\n@layer disabled {\n .forge-field:has(:where(input, textarea, select, .forge-field__input):disabled) {\n --_field-background: var(--_field-disabled-background);\n --_field-disableable-cursor: var(--forge-field-disableable-cursor, not-allowed);\n --_field-disableable-opacity: var(--forge-field-disableable-opacity, var(--_field-disabled-opacity));\n }\n .forge-field:has(:where(input, textarea, select, .forge-field__input):disabled) :where(input, textarea, select, .forge-field__input):disabled {\n cursor: not-allowed;\n }\n}\n@layer invalid {\n .forge-field--invalid, .forge-field:has(:where(input, textarea, select, .forge-field__input):invalid) {\n outline-color: var(--forge-theme-error, #b00020);\n }\n .forge-field--invalid :not(:where(input, textarea, select, .forge-field__input)), .forge-field:has(:where(input, textarea, select, .forge-field__input):invalid) :not(:where(input, textarea, select, .forge-field__input)) {\n color: var(--forge-theme-on-error-container, #5f0011);\n }\n .forge-field--invalid.forge-field:has(:where(input, textarea, select, .forge-field__input):focus), .forge-field:has(:where(input, textarea, select, .forge-field__input):invalid).forge-field:has(:where(input, textarea, select, .forge-field__input):focus) {\n --forge-focus-indicator-color: var(--forge-theme-error, #b00020);\n --forge-focus-indicator-outward-offset: calc(var(--_field-outline-width) * -1);\n }\n .forge-field--invalid label, .forge-field:has(:where(input, textarea, select, .forge-field__input):invalid) label {\n color: var(--forge-theme-error, #b00020);\n }\n .forge-field--invalid.forge-field--tonal, .forge-field:has(:where(input, textarea, select, .forge-field__input):invalid).forge-field--tonal {\n background: var(--forge-theme-error-container-low, #f6e0e4);\n }\n .forge-field--invalid.forge-field--tonal:hover:not(:has(:where(input, textarea, select, .forge-field__input):disabled)), .forge-field:has(:where(input, textarea, select, .forge-field__input):invalid).forge-field--tonal:hover:not(:has(:where(input, textarea, select, .forge-field__input):disabled)) {\n background: var(--forge-theme-error-container-minimum, #fcf5f6);\n }\n}\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n.forge-divider {\n --_divider-color: var(--forge-divider-color, var(--forge-theme-outline, #e0e0e0));\n --_divider-width: var(--forge-divider-width, var(--forge-border-thin, 1px));\n --_divider-border-style: var(--forge-divider-border-style, solid);\n --_divider-margin: var(--forge-divider-margin, 0);\n}\n\n.forge-divider {\n display: block;\n margin: var(--_divider-margin);\n border: none;\n border-bottom-color: var(--_divider-color);\n border-bottom-width: var(--_divider-width);\n border-bottom-style: var(--_divider-border-style);\n height: 0;\n}\n\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/* prettier-ignore */\n.forge-icon-button {\n --_icon-button-display: var(--forge-icon-button-display, inline-flex);\n --_icon-button-size: var(--forge-icon-button-size, 48px);\n --_icon-button-gap: var(--forge-icon-button-gap, 0);\n --_icon-button-icon-color: var(--forge-icon-button-icon-color, currentColor);\n --_icon-button-background-color: var(--forge-icon-button-background-color, none);\n --_icon-button-icon-size: var(--forge-icon-button-icon-size, calc(var(--forge-typography-font-size, 1rem) * 1.5));\n --_icon-button-cursor: var(--forge-icon-button-cursor, pointer);\n --_icon-button-padding: var(--forge-icon-button-padding, var(--forge-spacing-xxsmall, 4px));\n --_icon-button-border: var(--forge-icon-button-border, none);\n --_icon-button-shadow: var(--forge-icon-button-shadow, none);\n --_icon-button-transition-duration: var(--forge-icon-button-transition-duration, var(--forge-animation-duration-short3, 150ms));\n --_icon-button-transition-timing: var(--forge-icon-button-transition-timing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_icon-button-shape: var(--forge-icon-button-shape, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)));\n --_icon-button-shape-start-start: var(--forge-icon-button-shape-start-start, var(--_icon-button-shape));\n --_icon-button-shape-start-end: var(--forge-icon-button-shape-start-end, var(--_icon-button-shape));\n --_icon-button-shape-end-start: var(--forge-icon-button-shape-end-start, var(--_icon-button-shape));\n --_icon-button-shape-end-end: var(--forge-icon-button-shape-end-end, var(--_icon-button-shape));\n --_icon-button-shape-squared: var(--forge-icon-button-shape-squared, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_icon-button-outlined-border-width: var(--forge-icon-button-outlined-border-width, 1px);\n --_icon-button-outlined-border-style: var(--forge-icon-button-outlined-border-style, solid);\n --_icon-button-outlined-border-color: var(--forge-icon-button-outlined-border-color, var(--_icon-button-icon-color));\n --_icon-button-tonal-icon-color: var(--forge-icon-button-tonal-icon-color, var(--forge-theme-on-primary-container, #222c62));\n --_icon-button-tonal-background-color: var(--forge-icon-button-tonal-background-color, var(--forge-theme-primary-container, #d1d5ed));\n --_icon-button-filled-icon-color: var(--forge-icon-button-filled-icon-color, var(--forge-theme-on-primary, #ffffff));\n --_icon-button-filled-background-color: var(--forge-icon-button-filled-background-color, var(--forge-theme-primary, #3f51b5));\n --_icon-button-raised-shadow: var(--forge-icon-button-raised-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));\n --_icon-button-raised-hover-shadow: var(--forge-icon-button-raised-hover-shadow, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12));\n --_icon-button-raised-active-shadow: var(--forge-icon-button-raised-active-shadow, 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12));\n --_icon-button-raised-disabled-shadow: var(--forge-icon-button-raised-disabled-shadow, none);\n --_icon-button-density-small-size: var(--forge-icon-button-density-small-size, 24px);\n --_icon-button-density-small-padding: var(--forge-icon-button-density-small-padding, var(--forge-spacing-xxxsmall, 2px));\n --_icon-button-density-small-icon-size: var(--forge-icon-button-density-small-icon-size, calc(var(--forge-typography-font-size, 1rem) * 1.125));\n --_icon-button-density-medium-size: var(--forge-icon-button-density-medium-size, 36px);\n --_icon-button-density-medium-padding: var(--forge-icon-button-density-medium-padding, var(--forge-spacing-xxsmall, 4px));\n --_icon-button-density-large-size: var(--forge-icon-button-density-large-size, var(--_icon-button-size));\n --_icon-button-toggle-on-background-color: var(--forge-icon-button-toggle-on-background-color, var(--forge-theme-primary-container, #d1d5ed));\n --_icon-button-toggle-on-icon-color: var(--forge-icon-button-toggle-on-icon-color, var(--forge-theme-primary, #3f51b5));\n --_icon-button-outlined-toggle-on-background-color: var(--forge-icon-button-outlined-toggle-on-background-color, var(--forge-theme-primary-container, #d1d5ed));\n --_icon-button-outlined-toggle-on-icon-color: var(--forge-icon-button-outlined-toggle-on-icon-color, var(--forge-theme-primary, #3f51b5));\n --_icon-button-tonal-toggle-background-color: var(--forge-icon-button-tonal-toggle-background-color, var(--forge-theme-surface-container-low, #ebebeb));\n --_icon-button-tonal-toggle-on-background-color: var(--forge-icon-button-tonal-toggle-on-background-color, var(--forge-theme-primary-container, #d1d5ed));\n --_icon-button-tonal-toggle-on-icon-color: var(--forge-icon-button-tonal-toggle-on-icon-color, var(--forge-theme-primary, #3f51b5));\n --_icon-button-filled-toggle-background-color: var(--forge-icon-button-filled-toggle-background-color, var(--forge-theme-surface-container-low, #ebebeb));\n --_icon-button-filled-toggle-icon-color: var(--forge-icon-button-filled-toggle-icon-color, var(--forge-theme-primary, #3f51b5));\n --_icon-button-filled-toggle-on-background-color: var(--forge-icon-button-filled-toggle-on-background-color, var(--forge-theme-primary, #3f51b5));\n --_icon-button-filled-toggle-on-icon-color: var(--forge-icon-button-filled-toggle-on-icon-color, var(--forge-theme-on-primary, #ffffff));\n --_icon-button-disabled-cursor: var(--forge-icon-button-disabled-cursor, not-allowed);\n --_icon-button-disabled-opacity: var(--forge-icon-button-disabled-opacity, 0.38);\n --_icon-button-popover-icon-padding: var(--forge-icon-button-popover-icon-padding, var(--forge-spacing-xsmall, 8px));\n --_icon-button-focus-indicator-color: var(--forge-icon-button-focus-indicator-color, var(--forge-theme-primary, #3f51b5));\n}\n\n.forge-icon-button {\n display: var(--_icon-button-display);\n position: relative;\n outline: none;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n z-index: 0;\n display: var(--_icon-button-display);\n align-items: center;\n justify-content: center;\n gap: var(--_icon-button-gap);\n box-sizing: border-box;\n height: var(--_icon-button-density-large-size);\n min-width: var(--_icon-button-density-large-size);\n border: var(--_icon-button-border);\n border-start-start-radius: var(--_icon-button-shape-start-start);\n border-start-end-radius: var(--_icon-button-shape-start-end);\n border-end-start-radius: var(--_icon-button-shape-end-start);\n border-end-end-radius: var(--_icon-button-shape-end-end);\n padding: var(--_icon-button-padding);\n box-shadow: var(--_icon-button-shadow);\n color: var(--_icon-button-icon-color);\n background: var(--_icon-button-background-color);\n font-size: var(--_icon-button-icon-size);\n cursor: var(--_icon-button-cursor);\n user-select: none;\n transition-property: box-shadow, background;\n transition-duration: var(--_icon-button-transition-duration);\n transition-timing-function: var(--_icon-button-transition-timing);\n}\n\n.forge-icon-button img,\n.forge-icon-button svg {\n height: var(--_icon-button-icon-size);\n width: var(--_icon-button-icon-size);\n}\n\n.forge-icon-button svg {\n fill: currentColor;\n}\n\n.forge-icon-button:not(:disabled) {\n --_state-layer-display: var(--forge-state-layer-display, flex);\n --_state-layer-color: var(--forge-state-layer-color, var(--forge-theme-on-surface, #000000));\n --_state-layer-hover-color: var(--forge-state-layer-hover-color, var(--_state-layer-color));\n --_state-layer-hover-opacity: var(--forge-state-layer-hover-opacity, 0.08);\n --_state-layer-pressed-color: var(--forge-state-layer-pressed-color, var(--_state-layer-color));\n --_state-layer-pressed-opacity: var(--forge-state-layer-pressed-opacity, 0.12);\n --_state-layer-hover-duration: var(--forge-state-layer-hover-duration, 15ms);\n --_state-layer-pressed-duration: var(--forge-state-layer-pressed-duration, 105ms);\n --_state-layer-animation-duration: var(--forge-state-layer-animation-duration, 375ms);\n}\n\n.forge-icon-button:not(:disabled)::before {\n opacity: 0;\n position: absolute;\n background-color: var(--_state-layer-hover-color);\n inset: 0;\n transition: opacity var(--_state-layer-hover-duration) linear, background-color var(--_state-layer-hover-duration) linear;\n --_state-layer-hover-duration: var(--forge-state-layer-hover-duration, 100ms);\n content: "";\n opacity: 0;\n border-radius: inherit;\n}\n\n.forge-icon-button:not(:disabled):hover::before {\n background-color: var(--_state-layer-hover-color);\n opacity: var(--_state-layer-hover-opacity);\n}\n\n.forge-icon-button:not(:disabled):active::before {\n opacity: var(--_state-layer-pressed-opacity);\n transition-duration: var(--_state-layer-pressed-duration);\n --_state-layer-pressed-opacity: var(--forge-state-layer-pressed-opacity, 0.18);\n}\n\n.forge-icon-button:not(:disabled) {\n --forge-state-layer-color: var(--_icon-button-icon-color);\n}\n\n@keyframes forge-focus-indicator-outward-grow {\n from {\n outline-width: 0;\n }\n to {\n outline-width: var(--_focus-indicator-active-width);\n }\n}\n@keyframes forge-focus-indicator-outward-shrink {\n from {\n outline-width: var(--_focus-indicator-active-width);\n }\n}\n@keyframes forge-focus-indicator-inward-grow {\n from {\n border-width: 0;\n }\n to {\n border-width: var(--_focus-indicator-active-width);\n }\n}\n@keyframes forge-focus-indicator-inward-shrink {\n from {\n border-width: var(--_focus-indicator-active-width);\n }\n}\n.forge-icon-button:not(:disabled) {\n outline: none;\n}\n\n.forge-icon-button:not(:disabled):focus-visible::after {\n --_focus-indicator-display: var(--forge-focus-indicator-display, flex);\n --_focus-indicator-width: var(--forge-focus-indicator-width, var(--forge-border-medium, 2px));\n --_focus-indicator-active-width: var(--forge-focus-indicator-active-width, 6px);\n --_focus-indicator-color: var(--forge-focus-indicator-color, var(--forge-theme-primary, #3f51b5));\n --_focus-indicator-shape: var(--forge-focus-indicator-shape, calc(var(--forge-shape-extra-small, 1px) * var(--forge-shape-factor, 1)));\n --_focus-indicator-duration: var(--forge-focus-indicator-duration, var(--forge-animation-duration-long4, 600ms));\n --_focus-indicator-easing: var(--forge-focus-indicator-easing, var(--forge-animation-easing-emphasized, cubic-bezier(0.2, 0, 0, 1)));\n --_focus-indicator-shape-start-start: var(--forge-focus-indicator-shape-start-start, var(--_focus-indicator-shape));\n --_focus-indicator-shape-start-end: var(--forge-focus-indicator-shape-start-end, var(--_focus-indicator-shape));\n --_focus-indicator-shape-end-end: var(--forge-focus-indicator-shape-end-end, var(--_focus-indicator-shape));\n --_focus-indicator-shape-end-start: var(--forge-focus-indicator-shape-end-start, var(--_focus-indicator-shape));\n --_focus-indicator-outward-offset: var(--forge-focus-indicator-outward-offset, var(--forge-spacing-xxsmall, 4px));\n --_focus-indicator-inward-offset: var(--forge-focus-indicator-inward-offset, 0px);\n --_focus-indicator-offset-block: var(--forge-focus-indicator-offset-block, 0);\n --_focus-indicator-offset-inline: var(--forge-focus-indicator-offset-inline, 0);\n}\n\n.forge-icon-button:not(:disabled):focus-visible::after {\n animation-delay: 0s, calc(var(--_focus-indicator-duration) * 0.25);\n animation-duration: calc(var(--_focus-indicator-duration) * 0.25), calc(var(--_focus-indicator-duration) * 0.75);\n animation-timing-function: var(--_focus-indicator-easing);\n box-sizing: border-box;\n color: var(--_focus-indicator-color);\n display: none;\n pointer-events: none;\n position: absolute;\n margin-block: var(--_focus-indicator-offset-block);\n margin-inline: var(--_focus-indicator-offset-inline);\n animation-name: forge-focus-indicator-outward-grow, forge-focus-indicator-outward-shrink;\n border-end-end-radius: calc(var(--_focus-indicator-shape-end-end) + var(--_focus-indicator-outward-offset));\n border-end-start-radius: calc(var(--_focus-indicator-shape-end-start) + var(--_focus-indicator-outward-offset));\n border-start-end-radius: calc(var(--_focus-indicator-shape-start-end) + var(--_focus-indicator-outward-offset));\n border-start-start-radius: calc(var(--_focus-indicator-shape-start-start) + var(--_focus-indicator-outward-offset));\n inset: calc(-1 * var(--_focus-indicator-outward-offset));\n outline: var(--_focus-indicator-width) solid currentColor;\n content: "";\n display: block;\n}\n\n.forge-icon-button:not(:disabled) {\n --forge-focus-indicator-color: var(--_icon-button-focus-indicator-color);\n --forge-focus-indicator-shape: var(--_icon-button-shape);\n}\n\n.forge-icon-button:not(:disabled):where(.forge-icon-button--text,\n:not(:where(.forge-icon-button--outlined, .forge-icon-button--tonal, .forge-icon-button--filled, .forge-icon-button--raised))) {\n --forge-focus-indicator-outward-offset: 0px;\n}\n\n.forge-icon-button--outlined {\n border-width: var(--_icon-button-outlined-border-width);\n border-style: var(--_icon-button-outlined-border-style);\n border-color: var(--_icon-button-outlined-border-color);\n}\n\n.forge-icon-button--tonal {\n --_icon-button-icon-color: var(--_icon-button-tonal-icon-color);\n --_icon-button-background-color: var(--_icon-button-tonal-background-color);\n}\n\n.forge-icon-button--filled, .forge-icon-button--raised {\n --_icon-button-icon-color: var(--_icon-button-filled-icon-color);\n --_icon-button-background-color: var(--_icon-button-filled-background-color);\n}\n\n.forge-icon-button--raised {\n --_icon-button-shadow: var(--_icon-button-raised-shadow);\n}\n\n.forge-icon-button--raised:hover {\n --_icon-button-raised-shadow: var(--_icon-button-raised-hover-shadow);\n}\n\n.forge-icon-button--raised:active {\n --_icon-button-raised-shadow: var(--_icon-button-raised-active-shadow);\n}\n\n.forge-icon-button--squared {\n --_icon-button-shape: var(--_icon-button-shape-squared);\n}\n\n.forge-icon-button--small {\n --_icon-button-size: var(--_icon-button-density-small-size);\n --_icon-button-icon-size: var(--_icon-button-density-small-icon-size);\n --_icon-button-padding: var(--_icon-button-density-small-padding);\n}\n\n.forge-icon-button--small > * {\n font-size: var(--_icon-button-density-small-icon-size);\n}\n\n.forge-icon-button--medium {\n --_icon-button-size: var(--_icon-button-density-medium-size);\n --_icon-button-padding: var(--_icon-button-density-medium-padding);\n}\n\n.forge-icon-button:disabled {\n pointer-events: none;\n opacity: var(--_icon-button-disabled-opacity);\n pointer-events: auto;\n cursor: not-allowed;\n}\n\n.forge-icon-button forge-circular-progress {\n --forge-circular-progress-indicator-color: var(--_icon-button-icon-color);\n --forge-circular-progress-track-color: transparent;\n --forge-circular-progress-size: 1em;\n}\n\n:host {\n display: block;\n}\n\n.input-container .forge-card {\n --forge-card-padding: 0;\n}\n.input-container .forge-field {\n --forge-theme-outline-low: transparent;\n --forge-field-height: 52px;\n}\n.input-container .actions {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n padding: var(--forge-spacing-xxsmall, 4px);\n height: 52px;\n overflow-x: auto;\n}\n\n::slotted([slot=additional-action]:not(:last-child)) {\n margin-inline-end: var(--forge-spacing-small, 12px);\n}\n\n:host(:state(inline)) ::slotted([slot=additional-action]) {\n display: none;\n}\n\n:host(:state(inline)) .forge-field {\n --forge-field-height: 52px;\n}\n:host(:state(inline)) .forge-divider {\n display: none;\n}\n:host(:state(inline)) .input-container .actions {\n padding: 0;\n}';
1
+ const styles = '/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n.forge-card {\n --_card-background: var(--forge-card-background, var(--forge-theme-surface, #ffffff));\n --_card-height: var(--forge-card-height, 100%);\n --_card-width: var(--forge-card-width, 100%);\n --_card-outline-color: var(--forge-card-outline-color, var(--forge-theme-outline, #e0e0e0));\n --_card-outline-width: var(--forge-card-outline-width, var(--forge-border-thin, 1px));\n --_card-outline-style: var(--forge-card-outline-style, solid);\n --_card-elevation: var(--forge-card-elevation, none);\n --_card-padding: var(--forge-card-padding, var(--forge-spacing-medium, 16px));\n --_card-shape: var(--forge-card-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_card-overflow: var(--forge-card-overflow, initial);\n --_card-raised-elevation: var(--forge-card-raised-elevation, 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12));\n --_card-raised-outline-width: var(--forge-card-raised-outline-width, 0);\n --_card-height: var(--forge-card-height, auto);\n --_card-width: var(--forge-card-width, auto);\n}\n\n.forge-card {\n background: var(--_card-background);\n border-color: var(--_card-outline-color);\n border-width: var(--_card-outline-width);\n border-style: var(--_card-outline-style);\n border-radius: var(--_card-shape);\n box-shadow: var(--_card-elevation);\n box-sizing: border-box;\n padding: var(--_card-padding);\n overflow: var(--_card-overflow);\n height: var(--_card-height);\n width: var(--_card-width);\n -webkit-tap-highlight-color: transparent;\n}\n\n.forge-card--raised {\n --_card-elevation: var(--_card-raised-elevation);\n --_card-outline-width: var(--_card-raised-outline-width);\n}\n\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/* prettier-ignore */\n@keyframes float-in-label-animation {\n from {\n translate: 0;\n opacity: 40%;\n }\n to {\n translate: var(--_field-floating-label-translation);\n opacity: 100%;\n }\n}\n@keyframes float-out-label-animation {\n from {\n translate: var(--_field-floating-label-translation);\n opacity: 40%;\n }\n to {\n translate: 0;\n opacity: 100%;\n }\n}\n@keyframes multiline-inset-label-background-animation {\n from {\n opacity: 0%;\n }\n to {\n opacity: 100%;\n }\n}\n@layer base, textarea, density, invalid, disabled;\n@layer base {\n .forge-field {\n --_field-shape: var(--forge-field-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_field-outline-style: var(--forge-field-outline-style, solid);\n --_field-outline-width: var(--forge-field-outline-width, var(--forge-border-thin, 1px));\n --_field-height: var(--forge-field-height, 40px);\n --_field-inset-height: var(--forge-field-inset-height, 48px);\n --_field-background: var(--forge-field-background, transparent);\n --_field-padding-inline: var(--forge-field-padding-inline, 12px);\n --_field-disabled-background: var(--forge-field-disabled-background, var(--forge-theme-surface-container-low, #ebebeb));\n --_field-disabled-opacity: var(--forge-field-disabled-opacity, 0.38);\n --_field-placeholder-color: var(--forge-field-placeholder-color, var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6)));\n }\n .forge-field {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--forge-spacing-xsmall, 8px);\n box-shadow: var(--_field-elevation);\n padding-inline: var(--_field-padding-inline);\n border-radius: var(--_field-shape);\n outline-style: var(--_field-outline-style);\n outline-width: var(--_field-outline-width);\n outline-color: var(--forge-theme-outline-low, #9e9e9e);\n outline-offset: calc(var(--_field-outline-width) * -1);\n background: var(--_field-background);\n opacity: var(--_field-disableable-opacity);\n cursor: var(--_field-disableable-cursor);\n }\n .forge-field:hover:not(:has(:where(input, textarea, select, .forge-field__input):disabled)) {\n outline-color: var(--forge-theme-outline-high, #212121);\n }\n .forge-field :where(input, textarea, select, .forge-field__input) {\n box-sizing: border-box;\n margin: 0;\n outline: none;\n border: none;\n background-color: transparent;\n padding-block: 0;\n padding-inline: 0;\n inline-size: 100%;\n block-size: 100%;\n color: inherit;\n font: inherit;\n font-size: var(--_field-font-size);\n text-overflow: ellipsis;\n padding-block-start: 0;\n padding-block-end: 0;\n transition: padding-block var(--_field-floating-animation-duration) var(--_field-floating-animation-timing);\n display: flex;\n block-size: var(--_field-height);\n inline-size: 100%;\n overflow: hidden;\n color: var(--forge-theme-text-high, rgba(0, 0, 0, 0.87));\n background: transparent;\n appearance: none;\n }\n .forge-field :where(input, textarea, select, .forge-field__input)::placeholder {\n color: var(--_field-placeholder-color);\n }\n .forge-field--plain {\n --_field-multiline-inset-label-background: var(--forge-field-multiline-inset-label-background, var(--forge-theme-surface, #ffffff));\n --_field-multiline-inset-label-background-hover: var(--forge-field-multiline-inset-label-background-hover, var(--forge-theme-surface, #ffffff));\n --_field-outline-color: var(--forge-field-outline-color, transparent);\n --_field-outline-color-hover: var(--forge-field-outline-color-hover, transparent);\n --_field-inner-border-display: var(--forge-field-inner-border-display, none);\n --_field-padding-inline: var(--forge-field-padding-inline, 0);\n --_field-surface-display: var(--forge-field-surface-display, none);\n outline-width: 0;\n }\n .forge-field--tonal {\n --_field-outline-color: var(--forge-field-outline-color, transparent);\n --_field-outline-color-hover: var(--forge-field-outline-color-hover, transparent);\n --_field-inner-border-block-size: var(--forge-field-inner-border-block-size, calc(100% - 8px));\n --_field-background: var(--_field-tonal-background);\n --_field-multiline-inset-label-background: var(--forge-field-multiline-inset-label-background, var(--_field-background));\n --_field-hover-background: var(--forge-field-hover-background, tonal-background-hover);\n --_field-multiline-inset-label-background: var(--forge-field-multiline-inset-label-background, var(--_field-multiline-inset-label-tonal-background));\n outline-width: 0;\n background: var(--forge-theme-primary-container-low, #e8eaf6);\n }\n .forge-field--tonal:hover:not(:has(:where(input, textarea, select, .forge-field__input):disabled)) {\n background: var(--forge-theme-surface-container-minimum, #f5f5f5);\n }\n .forge-field--filled {\n --_field-background: var(--_field-filled-background);\n --_field-multiline-inset-label-background: var(--forge-field-multiline-inset-label-background, var(--_field-background));\n background: var(--forge-theme-surface-bright, #ffffff);\n }\n .forge-field--raised {\n --_field-elevation: var(--forge-field-elevation, 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12));\n --_field-elevation-active: var(--forge-field-elevation-active, 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12));\n --_field-outline-color: var(--forge-field-outline-color, transparent);\n --_field-outline-color-hover: var(--forge-field-outline-color-hover, transparent);\n --_field-inner-border-block-size: var(--forge-field-inner-border-block-size, calc(100% - 8px));\n --_field-background: var(--_field-filled-background);\n --_field-multiline-inset-label-background: var(--forge-field-multiline-inset-label-background, var(--_field-background));\n outline-width: 0;\n }\n .forge-field--raised:hover:not(:has(:where(input, textarea, select, .forge-field__input):disabled)) {\n box-shadow: var(--_field-elevation-active);\n }\n .forge-field--rounded {\n --_field-shape: var(--forge-field-shape, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)));\n --_field-padding-inline: var(--forge-field-padding-inline, var(--_field-rounded-container-padding-inline-start));\n }\n .forge-field:has(label) {\n --_field-floating-label-translation: var(--forge-field-floating-label-translation, 0 calc(calc(calc(max(var(--forge-typography-body2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.375))), var(--forge-typography-label2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)))) / 2) + calc((var(--_field-height) - 56px) / 8)) * -1));\n display: grid;\n grid-template-columns: auto 1fr auto;\n gap: 0;\n block-size: var(--_field-height);\n --_field-height: var(--forge-field-height, 48px);\n }\n .forge-field:has(label) label {\n position: absolute;\n grid-column: 2;\n pointer-events: none;\n color: var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6));\n }\n .forge-field:has(label).forge-field--rounded {\n padding-inline: var(--forge-spacing-large, 24px);\n }\n @keyframes forge-field-float-label-in {\n from {\n transform: translateY(15%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n .forge-field:has(label).forge-field--float-label-in label {\n animation: forge-field-float-label-in var(--forge-animation-duration-short4, 200ms) var(--forge-animation-easing-accelerate, cubic-bezier(0.3, 0, 1, 1)) forwards;\n }\n @keyframes forge-field-float-label-out {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n .forge-field:has(label).forge-field--float-label-out label {\n animation: forge-field-float-label-out var(--forge-animation-duration-short4, 200ms) var(--forge-animation-easing-accelerate, cubic-bezier(0.3, 0, 1, 1)) forwards;\n }\n .forge-field:has(label).forge-field--float-label label, .forge-field:has(label):has(:where(:where(input, textarea, select, .forge-field__input):autofill, :where(input, textarea, select, .forge-field__input):placeholder-shown)) label {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-family: var(--forge-typography-label2-font-family, var(--forge-typography-font-family, "Roboto", sans-serif));\n font-size: var(--forge-typography-label2-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-font-size-scale, 0.8125)));\n font-weight: var(--forge-typography-label2-font-weight, 400);\n line-height: var(--forge-typography-label2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)));\n letter-spacing: var(--forge-typography-label2-letter-spacing, 0.0096153846em);\n text-transform: var(--forge-typography-label2-text-transform, inherit);\n text-decoration: var(--forge-typography-label2-text-decoration, inherit);\n translate: var(--_field-floating-label-translation);\n }\n .forge-field:has(label).forge-field--float-label:not(.forge-field--extra-small) :where(input, textarea, select, .forge-field__input), .forge-field:has(label):has(:where(:where(input, textarea, select, .forge-field__input):autofill, :where(input, textarea, select, .forge-field__input):placeholder-shown)):not(.forge-field--extra-small) :where(input, textarea, select, .forge-field__input) {\n padding-block-start: calc((max(var(--forge-typography-body2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.375))), var(--forge-typography-label2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)))) / 2 + (var(--_field-height) - 56px) / 8) * 2) !important;\n }\n .forge-field:has(label) :where(input, textarea, select, .forge-field__input) {\n grid-column: 2;\n block-size: var(--_field-height);\n }\n .forge-field:has(label) :where(input, textarea, select, .forge-field__input) ~ * {\n grid-column: 3;\n margin-inline-start: var(--forge-spacing-xsmall, 8px);\n }\n .forge-field:has(label) > :not(:where(input, textarea, select, .forge-field__input) ~ *, :where(input, textarea, select, .forge-field__input), label) {\n grid-column: 1;\n margin-inline-end: var(--forge-spacing-xsmall, 8px);\n }\n @keyframes forge-focus-indicator-outward-grow {\n from {\n outline-width: 0;\n }\n to {\n outline-width: var(--_focus-indicator-active-width);\n }\n }\n @keyframes forge-focus-indicator-outward-shrink {\n from {\n outline-width: var(--_focus-indicator-active-width);\n }\n }\n @keyframes forge-focus-indicator-inward-grow {\n from {\n border-width: 0;\n }\n to {\n border-width: var(--_focus-indicator-active-width);\n }\n }\n @keyframes forge-focus-indicator-inward-shrink {\n from {\n border-width: var(--_focus-indicator-active-width);\n }\n }\n .forge-field:has(:where(input, textarea, select, .forge-field__input):focus) {\n outline: none;\n }\n .forge-field:has(:where(input, textarea, select, .forge-field__input):focus)::after {\n --_focus-indicator-display: var(--forge-focus-indicator-display, flex);\n --_focus-indicator-width: var(--forge-focus-indicator-width, var(--forge-border-medium, 2px));\n --_focus-indicator-active-width: var(--forge-focus-indicator-active-width, 6px);\n --_focus-indicator-color: var(--forge-focus-indicator-color, var(--forge-theme-primary, #3f51b5));\n --_focus-indicator-shape: var(--forge-focus-indicator-shape, calc(var(--forge-shape-extra-small, 1px) * var(--forge-shape-factor, 1)));\n --_focus-indicator-duration: var(--forge-focus-indicator-duration, var(--forge-animation-duration-long4, 600ms));\n --_focus-indicator-easing: var(--forge-focus-indicator-easing, var(--forge-animation-easing-emphasized, cubic-bezier(0.2, 0, 0, 1)));\n --_focus-indicator-shape-start-start: var(--forge-focus-indicator-shape-start-start, var(--_focus-indicator-shape));\n --_focus-indicator-shape-start-end: var(--forge-focus-indicator-shape-start-end, var(--_focus-indicator-shape));\n --_focus-indicator-shape-end-end: var(--forge-focus-indicator-shape-end-end, var(--_focus-indicator-shape));\n --_focus-indicator-shape-end-start: var(--forge-focus-indicator-shape-end-start, var(--_focus-indicator-shape));\n --_focus-indicator-outward-offset: var(--forge-focus-indicator-outward-offset, var(--forge-spacing-xxsmall, 4px));\n --_focus-indicator-inward-offset: var(--forge-focus-indicator-inward-offset, 0px);\n --_focus-indicator-offset-block: var(--forge-focus-indicator-offset-block, 0);\n --_focus-indicator-offset-inline: var(--forge-focus-indicator-offset-inline, 0);\n animation-delay: 0s, calc(var(--_focus-indicator-duration) * 0.25);\n animation-duration: calc(var(--_focus-indicator-duration) * 0.25), calc(var(--_focus-indicator-duration) * 0.75);\n animation-timing-function: var(--_focus-indicator-easing);\n box-sizing: border-box;\n color: var(--_focus-indicator-color);\n display: none;\n pointer-events: none;\n position: absolute;\n margin-block: var(--_focus-indicator-offset-block);\n margin-inline: var(--_focus-indicator-offset-inline);\n animation-name: forge-focus-indicator-outward-grow, forge-focus-indicator-outward-shrink;\n border-end-end-radius: calc(var(--_focus-indicator-shape-end-end) + var(--_focus-indicator-outward-offset));\n border-end-start-radius: calc(var(--_focus-indicator-shape-end-start) + var(--_focus-indicator-outward-offset));\n border-start-end-radius: calc(var(--_focus-indicator-shape-start-end) + var(--_focus-indicator-outward-offset));\n border-start-start-radius: calc(var(--_focus-indicator-shape-start-start) + var(--_focus-indicator-outward-offset));\n inset: calc(-1 * var(--_focus-indicator-outward-offset));\n outline: var(--_focus-indicator-width) solid currentColor;\n content: "";\n display: block;\n border-radius: inherit;\n }\n .forge-field:has(:where(input, textarea, select, .forge-field__input):focus) {\n --forge-focus-indicator-color: var(--forge-theme-primary, #3f51b5);\n --forge-focus-indicator-outward-offset: 0px;\n }\n}\n@layer textarea {\n .forge-field:has(textarea:only-child) {\n padding-inline: 0;\n }\n .forge-field:has(textarea:only-child) textarea {\n padding-inline: var(--_field-padding-inline);\n }\n .forge-field:has(textarea) {\n align-items: start;\n block-size: fit-content;\n }\n .forge-field:has(textarea) textarea {\n padding-block-start: calc((var(--_field-height) - var(--forge-typography-body2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.375)))) / 2);\n padding-block-end: calc(max(var(--forge-typography-body2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.375))), var(--forge-typography-label2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)))) / 2 + (var(--_field-height) - 56px) / 8 + (var(--_field-height) - var(--forge-typography-body2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.375)))) / 2);\n resize: vertical;\n block-size: fit-content;\n }\n .forge-field:has(textarea) *:not(textarea) {\n margin-block-start: var(--forge-spacing-xsmall, 8px);\n }\n}\n@layer density {\n .forge-field--dense, .forge-field--extra-small {\n --_field-height: var(--forge-field-height, 24px);\n --_field-padding-inline-start: var(--forge-field-padding-inline-start, 8px);\n --_field-padding-inline-end: var(--forge-field-padding-inline-end, 4px);\n }\n .forge-field--dense:has(label) label, .forge-field--extra-small:has(label) label {\n display: none;\n }\n .forge-field--small {\n --_field-height: var(--forge-field-height, 32px);\n }\n .forge-field--small:has(label) {\n --_field-height: var(--forge-field-height, 40px);\n }\n .forge-field--large {\n --_field-height: var(--forge-field-height, 48px);\n }\n .forge-field--large:has(label) {\n --_field-height: var(--forge-field-height, 56px);\n }\n .forge-field--extra-large {\n --_field-height: var(--forge-field-height, 56px);\n }\n .forge-field--extra-large:has(label) {\n --_field-height: var(--forge-field-height, 64px);\n }\n}\n@layer disabled {\n .forge-field:has(:where(input, textarea, select, .forge-field__input):disabled) {\n --_field-background: var(--_field-disabled-background);\n --_field-disableable-cursor: var(--forge-field-disableable-cursor, not-allowed);\n --_field-disableable-opacity: var(--forge-field-disableable-opacity, var(--_field-disabled-opacity));\n }\n .forge-field:has(:where(input, textarea, select, .forge-field__input):disabled) :where(input, textarea, select, .forge-field__input):disabled {\n cursor: not-allowed;\n }\n}\n@layer invalid {\n .forge-field--invalid, .forge-field:has(:where(input, textarea, select, .forge-field__input):invalid) {\n outline-color: var(--forge-theme-error, #b00020);\n }\n .forge-field--invalid :not(:where(input, textarea, select, .forge-field__input)), .forge-field:has(:where(input, textarea, select, .forge-field__input):invalid) :not(:where(input, textarea, select, .forge-field__input)) {\n color: var(--forge-theme-on-error-container, #5f0011);\n }\n .forge-field--invalid.forge-field:has(:where(input, textarea, select, .forge-field__input):focus), .forge-field:has(:where(input, textarea, select, .forge-field__input):invalid).forge-field:has(:where(input, textarea, select, .forge-field__input):focus) {\n --forge-focus-indicator-color: var(--forge-theme-error, #b00020);\n --forge-focus-indicator-outward-offset: calc(var(--_field-outline-width) * -1);\n }\n .forge-field--invalid label, .forge-field:has(:where(input, textarea, select, .forge-field__input):invalid) label {\n color: var(--forge-theme-error, #b00020);\n }\n .forge-field--invalid.forge-field--tonal, .forge-field:has(:where(input, textarea, select, .forge-field__input):invalid).forge-field--tonal {\n background: var(--forge-theme-error-container-low, #f6e0e4);\n }\n .forge-field--invalid.forge-field--tonal:hover:not(:has(:where(input, textarea, select, .forge-field__input):disabled)), .forge-field:has(:where(input, textarea, select, .forge-field__input):invalid).forge-field--tonal:hover:not(:has(:where(input, textarea, select, .forge-field__input):disabled)) {\n background: var(--forge-theme-error-container-minimum, #fcf5f6);\n }\n}\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n.forge-divider {\n --_divider-color: var(--forge-divider-color, var(--forge-theme-outline, #e0e0e0));\n --_divider-width: var(--forge-divider-width, var(--forge-border-thin, 1px));\n --_divider-border-style: var(--forge-divider-border-style, solid);\n --_divider-margin: var(--forge-divider-margin, 0);\n}\n\n.forge-divider {\n display: block;\n margin: var(--_divider-margin);\n border: none;\n border-bottom-color: var(--_divider-color);\n border-bottom-width: var(--_divider-width);\n border-bottom-style: var(--_divider-border-style);\n height: 0;\n}\n\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/* prettier-ignore */\n.forge-icon-button {\n --_icon-button-display: var(--forge-icon-button-display, inline-flex);\n --_icon-button-size: var(--forge-icon-button-size, 48px);\n --_icon-button-gap: var(--forge-icon-button-gap, 0);\n --_icon-button-icon-color: var(--forge-icon-button-icon-color, currentColor);\n --_icon-button-background-color: var(--forge-icon-button-background-color, none);\n --_icon-button-icon-size: var(--forge-icon-button-icon-size, calc(var(--forge-typography-font-size, 1rem) * 1.5));\n --_icon-button-cursor: var(--forge-icon-button-cursor, pointer);\n --_icon-button-padding: var(--forge-icon-button-padding, var(--forge-spacing-xxsmall, 4px));\n --_icon-button-border: var(--forge-icon-button-border, none);\n --_icon-button-shadow: var(--forge-icon-button-shadow, none);\n --_icon-button-transition-duration: var(--forge-icon-button-transition-duration, var(--forge-animation-duration-short3, 150ms));\n --_icon-button-transition-timing: var(--forge-icon-button-transition-timing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_icon-button-shape: var(--forge-icon-button-shape, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)));\n --_icon-button-shape-start-start: var(--forge-icon-button-shape-start-start, var(--_icon-button-shape));\n --_icon-button-shape-start-end: var(--forge-icon-button-shape-start-end, var(--_icon-button-shape));\n --_icon-button-shape-end-start: var(--forge-icon-button-shape-end-start, var(--_icon-button-shape));\n --_icon-button-shape-end-end: var(--forge-icon-button-shape-end-end, var(--_icon-button-shape));\n --_icon-button-shape-squared: var(--forge-icon-button-shape-squared, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_icon-button-outlined-border-width: var(--forge-icon-button-outlined-border-width, 1px);\n --_icon-button-outlined-border-style: var(--forge-icon-button-outlined-border-style, solid);\n --_icon-button-outlined-border-color: var(--forge-icon-button-outlined-border-color, var(--_icon-button-icon-color));\n --_icon-button-tonal-icon-color: var(--forge-icon-button-tonal-icon-color, var(--forge-theme-on-primary-container, #222c62));\n --_icon-button-tonal-background-color: var(--forge-icon-button-tonal-background-color, var(--forge-theme-primary-container, #d1d5ed));\n --_icon-button-filled-icon-color: var(--forge-icon-button-filled-icon-color, var(--forge-theme-on-primary, #ffffff));\n --_icon-button-filled-background-color: var(--forge-icon-button-filled-background-color, var(--forge-theme-primary, #3f51b5));\n --_icon-button-raised-shadow: var(--forge-icon-button-raised-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));\n --_icon-button-raised-hover-shadow: var(--forge-icon-button-raised-hover-shadow, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12));\n --_icon-button-raised-active-shadow: var(--forge-icon-button-raised-active-shadow, 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12));\n --_icon-button-raised-disabled-shadow: var(--forge-icon-button-raised-disabled-shadow, none);\n --_icon-button-density-small-size: var(--forge-icon-button-density-small-size, 24px);\n --_icon-button-density-small-padding: var(--forge-icon-button-density-small-padding, var(--forge-spacing-xxxsmall, 2px));\n --_icon-button-density-small-icon-size: var(--forge-icon-button-density-small-icon-size, calc(var(--forge-typography-font-size, 1rem) * 1.125));\n --_icon-button-density-medium-size: var(--forge-icon-button-density-medium-size, 36px);\n --_icon-button-density-medium-padding: var(--forge-icon-button-density-medium-padding, var(--forge-spacing-xxsmall, 4px));\n --_icon-button-density-large-size: var(--forge-icon-button-density-large-size, var(--_icon-button-size));\n --_icon-button-toggle-on-background-color: var(--forge-icon-button-toggle-on-background-color, var(--forge-theme-primary-container, #d1d5ed));\n --_icon-button-toggle-on-icon-color: var(--forge-icon-button-toggle-on-icon-color, var(--forge-theme-primary, #3f51b5));\n --_icon-button-outlined-toggle-on-background-color: var(--forge-icon-button-outlined-toggle-on-background-color, var(--forge-theme-primary-container, #d1d5ed));\n --_icon-button-outlined-toggle-on-icon-color: var(--forge-icon-button-outlined-toggle-on-icon-color, var(--forge-theme-primary, #3f51b5));\n --_icon-button-tonal-toggle-background-color: var(--forge-icon-button-tonal-toggle-background-color, var(--forge-theme-surface-container-low, #ebebeb));\n --_icon-button-tonal-toggle-on-background-color: var(--forge-icon-button-tonal-toggle-on-background-color, var(--forge-theme-primary-container, #d1d5ed));\n --_icon-button-tonal-toggle-on-icon-color: var(--forge-icon-button-tonal-toggle-on-icon-color, var(--forge-theme-primary, #3f51b5));\n --_icon-button-filled-toggle-background-color: var(--forge-icon-button-filled-toggle-background-color, var(--forge-theme-surface-container-low, #ebebeb));\n --_icon-button-filled-toggle-icon-color: var(--forge-icon-button-filled-toggle-icon-color, var(--forge-theme-primary, #3f51b5));\n --_icon-button-filled-toggle-on-background-color: var(--forge-icon-button-filled-toggle-on-background-color, var(--forge-theme-primary, #3f51b5));\n --_icon-button-filled-toggle-on-icon-color: var(--forge-icon-button-filled-toggle-on-icon-color, var(--forge-theme-on-primary, #ffffff));\n --_icon-button-disabled-cursor: var(--forge-icon-button-disabled-cursor, not-allowed);\n --_icon-button-disabled-opacity: var(--forge-icon-button-disabled-opacity, 0.38);\n --_icon-button-popover-icon-padding: var(--forge-icon-button-popover-icon-padding, var(--forge-spacing-xsmall, 8px));\n --_icon-button-focus-indicator-color: var(--forge-icon-button-focus-indicator-color, var(--forge-theme-primary, #3f51b5));\n}\n\n.forge-icon-button {\n display: var(--_icon-button-display);\n position: relative;\n outline: none;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n z-index: 0;\n display: var(--_icon-button-display);\n align-items: center;\n justify-content: center;\n gap: var(--_icon-button-gap);\n box-sizing: border-box;\n height: var(--_icon-button-density-large-size);\n min-width: var(--_icon-button-density-large-size);\n border: var(--_icon-button-border);\n border-start-start-radius: var(--_icon-button-shape-start-start);\n border-start-end-radius: var(--_icon-button-shape-start-end);\n border-end-start-radius: var(--_icon-button-shape-end-start);\n border-end-end-radius: var(--_icon-button-shape-end-end);\n padding: var(--_icon-button-padding);\n box-shadow: var(--_icon-button-shadow);\n color: var(--_icon-button-icon-color);\n background: var(--_icon-button-background-color);\n font-size: var(--_icon-button-icon-size);\n cursor: var(--_icon-button-cursor);\n user-select: none;\n transition-property: box-shadow, background;\n transition-duration: var(--_icon-button-transition-duration);\n transition-timing-function: var(--_icon-button-transition-timing);\n}\n\n.forge-icon-button img,\n.forge-icon-button svg {\n height: var(--_icon-button-icon-size);\n width: var(--_icon-button-icon-size);\n}\n\n.forge-icon-button svg {\n fill: currentColor;\n}\n\n.forge-icon-button:not(:disabled) {\n --_state-layer-display: var(--forge-state-layer-display, flex);\n --_state-layer-color: var(--forge-state-layer-color, var(--forge-theme-on-surface, #000000));\n --_state-layer-hover-color: var(--forge-state-layer-hover-color, var(--_state-layer-color));\n --_state-layer-hover-opacity: var(--forge-state-layer-hover-opacity, 0.08);\n --_state-layer-pressed-color: var(--forge-state-layer-pressed-color, var(--_state-layer-color));\n --_state-layer-pressed-opacity: var(--forge-state-layer-pressed-opacity, 0.12);\n --_state-layer-hover-duration: var(--forge-state-layer-hover-duration, 15ms);\n --_state-layer-pressed-duration: var(--forge-state-layer-pressed-duration, 105ms);\n --_state-layer-animation-duration: var(--forge-state-layer-animation-duration, 375ms);\n}\n\n.forge-icon-button:not(:disabled)::before {\n opacity: 0;\n position: absolute;\n background-color: var(--_state-layer-hover-color);\n inset: 0;\n transition: opacity var(--_state-layer-hover-duration) linear, background-color var(--_state-layer-hover-duration) linear;\n --_state-layer-hover-duration: var(--forge-state-layer-hover-duration, 100ms);\n content: "";\n opacity: 0;\n border-radius: inherit;\n}\n\n.forge-icon-button:not(:disabled):hover::before {\n background-color: var(--_state-layer-hover-color);\n opacity: var(--_state-layer-hover-opacity);\n}\n\n.forge-icon-button:not(:disabled):active::before {\n opacity: var(--_state-layer-pressed-opacity);\n transition-duration: var(--_state-layer-pressed-duration);\n --_state-layer-pressed-opacity: var(--forge-state-layer-pressed-opacity, 0.18);\n}\n\n.forge-icon-button:not(:disabled) {\n --forge-state-layer-color: var(--_icon-button-icon-color);\n}\n\n@keyframes forge-focus-indicator-outward-grow {\n from {\n outline-width: 0;\n }\n to {\n outline-width: var(--_focus-indicator-active-width);\n }\n}\n@keyframes forge-focus-indicator-outward-shrink {\n from {\n outline-width: var(--_focus-indicator-active-width);\n }\n}\n@keyframes forge-focus-indicator-inward-grow {\n from {\n border-width: 0;\n }\n to {\n border-width: var(--_focus-indicator-active-width);\n }\n}\n@keyframes forge-focus-indicator-inward-shrink {\n from {\n border-width: var(--_focus-indicator-active-width);\n }\n}\n.forge-icon-button:not(:disabled) {\n outline: none;\n}\n\n.forge-icon-button:not(:disabled):focus-visible::after {\n --_focus-indicator-display: var(--forge-focus-indicator-display, flex);\n --_focus-indicator-width: var(--forge-focus-indicator-width, var(--forge-border-medium, 2px));\n --_focus-indicator-active-width: var(--forge-focus-indicator-active-width, 6px);\n --_focus-indicator-color: var(--forge-focus-indicator-color, var(--forge-theme-primary, #3f51b5));\n --_focus-indicator-shape: var(--forge-focus-indicator-shape, calc(var(--forge-shape-extra-small, 1px) * var(--forge-shape-factor, 1)));\n --_focus-indicator-duration: var(--forge-focus-indicator-duration, var(--forge-animation-duration-long4, 600ms));\n --_focus-indicator-easing: var(--forge-focus-indicator-easing, var(--forge-animation-easing-emphasized, cubic-bezier(0.2, 0, 0, 1)));\n --_focus-indicator-shape-start-start: var(--forge-focus-indicator-shape-start-start, var(--_focus-indicator-shape));\n --_focus-indicator-shape-start-end: var(--forge-focus-indicator-shape-start-end, var(--_focus-indicator-shape));\n --_focus-indicator-shape-end-end: var(--forge-focus-indicator-shape-end-end, var(--_focus-indicator-shape));\n --_focus-indicator-shape-end-start: var(--forge-focus-indicator-shape-end-start, var(--_focus-indicator-shape));\n --_focus-indicator-outward-offset: var(--forge-focus-indicator-outward-offset, var(--forge-spacing-xxsmall, 4px));\n --_focus-indicator-inward-offset: var(--forge-focus-indicator-inward-offset, 0px);\n --_focus-indicator-offset-block: var(--forge-focus-indicator-offset-block, 0);\n --_focus-indicator-offset-inline: var(--forge-focus-indicator-offset-inline, 0);\n}\n\n.forge-icon-button:not(:disabled):focus-visible::after {\n animation-delay: 0s, calc(var(--_focus-indicator-duration) * 0.25);\n animation-duration: calc(var(--_focus-indicator-duration) * 0.25), calc(var(--_focus-indicator-duration) * 0.75);\n animation-timing-function: var(--_focus-indicator-easing);\n box-sizing: border-box;\n color: var(--_focus-indicator-color);\n display: none;\n pointer-events: none;\n position: absolute;\n margin-block: var(--_focus-indicator-offset-block);\n margin-inline: var(--_focus-indicator-offset-inline);\n animation-name: forge-focus-indicator-outward-grow, forge-focus-indicator-outward-shrink;\n border-end-end-radius: calc(var(--_focus-indicator-shape-end-end) + var(--_focus-indicator-outward-offset));\n border-end-start-radius: calc(var(--_focus-indicator-shape-end-start) + var(--_focus-indicator-outward-offset));\n border-start-end-radius: calc(var(--_focus-indicator-shape-start-end) + var(--_focus-indicator-outward-offset));\n border-start-start-radius: calc(var(--_focus-indicator-shape-start-start) + var(--_focus-indicator-outward-offset));\n inset: calc(-1 * var(--_focus-indicator-outward-offset));\n outline: var(--_focus-indicator-width) solid currentColor;\n content: "";\n display: block;\n}\n\n.forge-icon-button:not(:disabled) {\n --forge-focus-indicator-color: var(--_icon-button-focus-indicator-color);\n --forge-focus-indicator-shape: var(--_icon-button-shape);\n}\n\n.forge-icon-button:not(:disabled):where(.forge-icon-button--text,\n:not(:where(.forge-icon-button--outlined, .forge-icon-button--tonal, .forge-icon-button--filled, .forge-icon-button--raised))) {\n --forge-focus-indicator-outward-offset: 0px;\n}\n\n.forge-icon-button--outlined {\n border-width: var(--_icon-button-outlined-border-width);\n border-style: var(--_icon-button-outlined-border-style);\n border-color: var(--_icon-button-outlined-border-color);\n}\n\n.forge-icon-button--tonal {\n --_icon-button-icon-color: var(--_icon-button-tonal-icon-color);\n --_icon-button-background-color: var(--_icon-button-tonal-background-color);\n}\n\n.forge-icon-button--filled, .forge-icon-button--raised {\n --_icon-button-icon-color: var(--_icon-button-filled-icon-color);\n --_icon-button-background-color: var(--_icon-button-filled-background-color);\n}\n\n.forge-icon-button--raised {\n --_icon-button-shadow: var(--_icon-button-raised-shadow);\n}\n\n.forge-icon-button--raised:hover {\n --_icon-button-raised-shadow: var(--_icon-button-raised-hover-shadow);\n}\n\n.forge-icon-button--raised:active {\n --_icon-button-raised-shadow: var(--_icon-button-raised-active-shadow);\n}\n\n.forge-icon-button--squared {\n --_icon-button-shape: var(--_icon-button-shape-squared);\n}\n\n.forge-icon-button--small {\n --_icon-button-size: var(--_icon-button-density-small-size);\n --_icon-button-icon-size: var(--_icon-button-density-small-icon-size);\n --_icon-button-padding: var(--_icon-button-density-small-padding);\n}\n\n.forge-icon-button--small > * {\n font-size: var(--_icon-button-density-small-icon-size);\n}\n\n.forge-icon-button--medium {\n --_icon-button-size: var(--_icon-button-density-medium-size);\n --_icon-button-padding: var(--_icon-button-density-medium-padding);\n}\n\n.forge-icon-button:disabled {\n pointer-events: none;\n opacity: var(--_icon-button-disabled-opacity);\n pointer-events: auto;\n cursor: not-allowed;\n}\n\n.forge-icon-button forge-circular-progress {\n --forge-circular-progress-indicator-color: var(--_icon-button-icon-color);\n --forge-circular-progress-track-color: transparent;\n --forge-circular-progress-size: 1em;\n}\n\n:host {\n display: block;\n}\n\n.input-container .forge-card {\n --forge-card-padding: 0;\n}\n.input-container .forge-field {\n --forge-theme-outline-low: transparent;\n --forge-field-height: 52px;\n}\n.input-container .actions {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n padding: var(--forge-spacing-xxsmall, 4px);\n height: 52px;\n overflow-x: auto;\n}\n\n::slotted([slot=actions]:not(:last-child)) {\n margin-inline-end: var(--forge-spacing-small, 12px);\n}\n\n:host(:state(inline)) .forge-field {\n --forge-field-height: 52px;\n}\n:host(:state(inline)) .forge-divider {\n display: none;\n}\n:host(:state(inline)) .actions {\n display: none;\n}';
2
2
  export {
3
3
  styles as default
4
4
  };
@@ -4,6 +4,7 @@ import { createRef, ref } from "lit/directives/ref.js";
4
4
  import { when } from "lit/directives/when.js";
5
5
  import "../ai-sidebar/ai-sidebar.mjs";
6
6
  import "../ai-chat-interface/ai-chat-interface.mjs";
7
+ import "../ai-chat-header/ai-chat-header.mjs";
7
8
  import "../ai-modal/ai-modal.mjs";
8
9
  import styles from "./ai-sidebar-chat.scss.mjs";
9
10
  var __defProp = Object.defineProperty;
@@ -110,13 +111,16 @@ _modalRef = /* @__PURE__ */ new WeakMap();
110
111
  _AiSidebarChatComponent_instances = /* @__PURE__ */ new WeakSet();
111
112
  chatInterface_get = function() {
112
113
  return html`
113
- <forge-ai-chat-interface
114
- show-expand-button
115
- ?show-minimize-button=${!this.expanded}
116
- minimize-icon=${this.expanded ? "default" : "panel"}
117
- ?expanded=${this.expanded}
118
- @forge-ai-chat-header-expand=${__privateMethod(this, _AiSidebarChatComponent_instances, handleHeaderExpand_fn)}
119
- @forge-ai-chat-header-minimize=${__privateMethod(this, _AiSidebarChatComponent_instances, handleHeaderMinimize_fn)}>
114
+ <forge-ai-chat-interface>
115
+ <forge-ai-chat-header
116
+ slot="header"
117
+ @forge-ai-chat-header-expand=${__privateMethod(this, _AiSidebarChatComponent_instances, handleHeaderExpand_fn)}
118
+ @forge-ai-chat-header-minimize=${__privateMethod(this, _AiSidebarChatComponent_instances, handleHeaderMinimize_fn)}
119
+ show-expand-button
120
+ ?show-minimize-button=${!this.expanded}
121
+ minimize-icon=${this.expanded ? "default" : "panel"}
122
+ ?expanded=${this.expanded}>
123
+ </forge-ai-chat-header>
120
124
  <slot></slot>
121
125
  <slot name="suggestions" slot="suggestions"></slot>
122
126
  <slot name="prompt" slot="prompt"></slot>
@@ -190,9 +190,10 @@ let ForgeAiTooltipComponent = class extends LitElement {
190
190
  .anchor=${this._anchorElement}
191
191
  .placement=${this.placement}
192
192
  flip
193
+ shift
193
194
  .open=${this.open}
194
195
  @ai-overlay-toggle=${this._onOverlayToggle}>
195
- <div class="ai-tooltip" data-placement=${this.placement}>${__privateGet(this, _ForgeAiTooltipComponent_instances, tooltipContent_get)}</div>
196
+ <div class="ai-tooltip">${__privateGet(this, _ForgeAiTooltipComponent_instances, tooltipContent_get)}</div>
196
197
  </forge-ai-overlay>`,
197
198
  () => html`
198
199
  <!-- Content shown when closed for accessibility -->
@@ -1,4 +1,4 @@
1
- const styles = '/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/* prettier-ignore */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n@keyframes slidein {\n from {\n opacity: 0;\n transform: translateX(var(--_tooltip-slidein-x)) translateY(var(--_tooltip-slidein-y));\n }\n to {\n opacity: 1;\n transform: translateX(0) translateY(0);\n }\n}\n:host {\n display: inline-block;\n position: relative;\n}\n\n.ai-tooltip {\n --_tooltip-slidein-x: 0;\n --_tooltip-slidein-y: 0;\n --_tooltip-background: var(--forge-tooltip-background, var(--forge-theme-surface-inverse, #333333));\n --_tooltip-color: var(--forge-tooltip-color, var(--forge-theme-on-surface-inverse, #ffffff));\n --_tooltip-shape: var(--forge-tooltip-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_tooltip-padding: var(--forge-tooltip-padding, var(--forge-spacing-xsmall, 8px));\n --_tooltip-padding-block: var(--forge-tooltip-padding-block, var(--_tooltip-padding));\n --_tooltip-padding-inline: var(--forge-tooltip-padding-inline, var(--_tooltip-padding));\n --_tooltip-width: var(--forge-tooltip-width, max-content);\n --_tooltip-max-width: var(--forge-tooltip-max-width, 320px);\n --_tooltip-elevation: var(--forge-tooltip-elevation, var(--forge-theme-surface-bright-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)));\n --_tooltip-content-align: var(--forge-tooltip-content-align, center);\n --_tooltip-border-width: var(--forge-tooltip-border-width, 0);\n --_tooltip-border-style: var(--forge-tooltip-border-style, solid);\n --_tooltip-border-color: var(--forge-tooltip-border-color, var(--forge-theme-outline, #e0e0e0));\n --_tooltip-animation-timing: var(--forge-tooltip-animation-timing, var(--forge-animation-easing-decelerate, cubic-bezier(0, 0, 0, 1)));\n --_tooltip-animation-duration: var(--forge-tooltip-animation-duration, var(--forge-animation-duration-short3, 150ms));\n --_tooltip-animation-offset: var(--forge-tooltip-animation-offset, 24px);\n --_tooltip-arrow-size: var(--forge-tooltip-arrow-size, 8px);\n --_tooltip-arrow-height: var(--forge-tooltip-arrow-height, var(--_tooltip-arrow-size));\n --_tooltip-arrow-width: var(--forge-tooltip-arrow-width, var(--_tooltip-arrow-size));\n --_tooltip-arrow-shape: var(--forge-tooltip-arrow-shape, calc(var(--forge-shape-small, 2px) * var(--forge-shape-factor, 1)));\n --_tooltip-arrow-rotation: var(--forge-tooltip-arrow-rotation, 0deg);\n --_tooltip-arrow-top-rotation: var(--forge-tooltip-arrow-top-rotation, 315deg);\n --_tooltip-arrow-right-rotation: var(--forge-tooltip-arrow-right-rotation, 45deg);\n --_tooltip-arrow-bottom-rotation: var(--forge-tooltip-arrow-bottom-rotation, 135deg);\n --_tooltip-arrow-left-rotation: var(--forge-tooltip-arrow-left-rotation, 225deg);\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-family: var(--forge-typography-body1-font-family, var(--forge-typography-font-family, "Roboto", sans-serif));\n font-size: var(--forge-typography-body1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, 0.875)));\n font-weight: var(--forge-typography-body1-font-weight, 400);\n line-height: var(--forge-typography-body1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.125)));\n letter-spacing: var(--forge-typography-body1-letter-spacing, 0.0357142857em);\n text-transform: var(--forge-typography-body1-text-transform, inherit);\n text-decoration: var(--forge-typography-body1-text-decoration, inherit);\n position: relative;\n background: var(--_tooltip-background);\n color: var(--_tooltip-color);\n border-radius: var(--_tooltip-shape);\n border-width: var(--_tooltip-border-width);\n border-style: var(--_tooltip-border-style);\n border-color: var(--_tooltip-border-color);\n padding-block: var(--_tooltip-padding-block);\n padding-inline: var(--_tooltip-padding-inline);\n box-shadow: var(--_tooltip-elevation);\n width: var(--_tooltip-width);\n max-width: var(--_tooltip-max-width);\n text-align: var(--_tooltip-content-align);\n line-height: normal;\n white-space: normal;\n animation-duration: var(--_tooltip-animation-duration);\n animation-timing-function: var(--_tooltip-animation-timing);\n animation-name: slidein;\n animation-fill-mode: forwards;\n}\n\n.tooltip-content--hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n}\n\n@keyframes tooltip-fadein {\n from {\n opacity: 0;\n transform: scale(0.8);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}';
1
+ const styles = '/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/* prettier-ignore */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n@keyframes slidein {\n from {\n opacity: 0;\n transform: translateX(var(--_tooltip-slidein-x)) translateY(var(--_tooltip-slidein-y));\n }\n to {\n opacity: 1;\n transform: translateX(0) translateY(0);\n }\n}\n:host {\n display: inline-block;\n position: relative;\n}\n\n.ai-tooltip {\n --_tooltip-background: var(--forge-tooltip-background, var(--forge-theme-surface-inverse, #333333));\n --_tooltip-color: var(--forge-tooltip-color, var(--forge-theme-on-surface-inverse, #ffffff));\n --_tooltip-shape: var(--forge-tooltip-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_tooltip-padding: var(--forge-tooltip-padding, var(--forge-spacing-xsmall, 8px));\n --_tooltip-padding-block: var(--forge-tooltip-padding-block, var(--_tooltip-padding));\n --_tooltip-padding-inline: var(--forge-tooltip-padding-inline, var(--_tooltip-padding));\n --_tooltip-width: var(--forge-tooltip-width, max-content);\n --_tooltip-max-width: var(--forge-tooltip-max-width, 320px);\n --_tooltip-elevation: var(--forge-tooltip-elevation, var(--forge-theme-surface-bright-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)));\n --_tooltip-content-align: var(--forge-tooltip-content-align, center);\n --_tooltip-border-width: var(--forge-tooltip-border-width, 0);\n --_tooltip-border-style: var(--forge-tooltip-border-style, solid);\n --_tooltip-border-color: var(--forge-tooltip-border-color, var(--forge-theme-outline, #e0e0e0));\n --_tooltip-animation-timing: var(--forge-tooltip-animation-timing, var(--forge-animation-easing-decelerate, cubic-bezier(0, 0, 0, 1)));\n --_tooltip-animation-duration: var(--forge-tooltip-animation-duration, var(--forge-animation-duration-short3, 150ms));\n --_tooltip-animation-offset: var(--forge-tooltip-animation-offset, 24px);\n --_tooltip-arrow-size: var(--forge-tooltip-arrow-size, 8px);\n --_tooltip-arrow-height: var(--forge-tooltip-arrow-height, var(--_tooltip-arrow-size));\n --_tooltip-arrow-width: var(--forge-tooltip-arrow-width, var(--_tooltip-arrow-size));\n --_tooltip-arrow-shape: var(--forge-tooltip-arrow-shape, calc(var(--forge-shape-small, 2px) * var(--forge-shape-factor, 1)));\n --_tooltip-arrow-rotation: var(--forge-tooltip-arrow-rotation, 0deg);\n --_tooltip-arrow-top-rotation: var(--forge-tooltip-arrow-top-rotation, 315deg);\n --_tooltip-arrow-right-rotation: var(--forge-tooltip-arrow-right-rotation, 45deg);\n --_tooltip-arrow-bottom-rotation: var(--forge-tooltip-arrow-bottom-rotation, 135deg);\n --_tooltip-arrow-left-rotation: var(--forge-tooltip-arrow-left-rotation, 225deg);\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-family: var(--forge-typography-body1-font-family, var(--forge-typography-font-family, "Roboto", sans-serif));\n font-size: var(--forge-typography-body1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, 0.875)));\n font-weight: var(--forge-typography-body1-font-weight, 400);\n line-height: var(--forge-typography-body1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.125)));\n letter-spacing: var(--forge-typography-body1-letter-spacing, 0.0357142857em);\n text-transform: var(--forge-typography-body1-text-transform, inherit);\n text-decoration: var(--forge-typography-body1-text-decoration, inherit);\n position: relative;\n background: var(--_tooltip-background);\n color: var(--_tooltip-color);\n border-radius: var(--_tooltip-shape);\n border-width: var(--_tooltip-border-width);\n border-style: var(--_tooltip-border-style);\n border-color: var(--_tooltip-border-color);\n padding-block: var(--_tooltip-padding-block);\n padding-inline: var(--_tooltip-padding-inline);\n box-shadow: var(--_tooltip-elevation);\n width: var(--_tooltip-width);\n max-width: var(--_tooltip-max-width);\n text-align: var(--_tooltip-content-align);\n line-height: normal;\n white-space: normal;\n animation-duration: var(--_tooltip-animation-duration);\n animation-timing-function: var(--_tooltip-animation-timing);\n animation-name: slidein;\n animation-fill-mode: forwards;\n animation-duration: 150ms;\n animation-timing-function: cubic-bezier(0, 0, 0, 1);\n animation-name: tooltip-fadein, tooltip-scalein;\n transform-origin: center center;\n}\n\nforge-ai-overlay[data-position-placement^=top]:not([data-position-placement*="-"]) .ai-tooltip {\n transform-origin: bottom center;\n}\nforge-ai-overlay[data-position-placement^=top][data-position-placement$=-start] .ai-tooltip {\n transform-origin: bottom left;\n}\nforge-ai-overlay[data-position-placement^=top][data-position-placement$=-end] .ai-tooltip {\n transform-origin: bottom right;\n}\n\nforge-ai-overlay[data-position-placement^=right]:not([data-position-placement*="-"]) .ai-tooltip {\n transform-origin: left center;\n}\nforge-ai-overlay[data-position-placement^=right][data-position-placement$=-start] .ai-tooltip {\n transform-origin: left top;\n}\nforge-ai-overlay[data-position-placement^=right][data-position-placement$=-end] .ai-tooltip {\n transform-origin: left bottom;\n}\n\nforge-ai-overlay[data-position-placement^=bottom]:not([data-position-placement*="-"]) .ai-tooltip {\n transform-origin: top center;\n}\nforge-ai-overlay[data-position-placement^=bottom][data-position-placement$=-start] .ai-tooltip {\n transform-origin: top left;\n}\nforge-ai-overlay[data-position-placement^=bottom][data-position-placement$=-end] .ai-tooltip {\n transform-origin: top right;\n}\n\nforge-ai-overlay[data-position-placement^=left]:not([data-position-placement*="-"]) .ai-tooltip {\n transform-origin: right center;\n}\nforge-ai-overlay[data-position-placement^=left][data-position-placement$=-start] .ai-tooltip {\n transform-origin: right top;\n}\nforge-ai-overlay[data-position-placement^=left][data-position-placement$=-end] .ai-tooltip {\n transform-origin: right bottom;\n}\n\n.tooltip-content--hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n}\n\n@keyframes tooltip-fadein {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes tooltip-scalein {\n from {\n transform: scale(0.8);\n }\n to {\n transform: scale(1);\n }\n}';
2
2
  export {
3
3
  styles as default
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tylertech/forge-ai",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "A library of Tyler Forge™ AI chat interface web components.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Tyler Technologies, Inc.",