@synergy-design-system/components 1.0.0-main.13 → 1.0.0-main.14

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.
Files changed (127) hide show
  1. package/dist/chunks/{chunk.J44T4LO6.js → chunk.23HTU3YE.js} +4 -4
  2. package/dist/chunks/{chunk.FLF2E2W4.js → chunk.2MPTR6IQ.js} +7 -7
  3. package/dist/chunks/{chunk.MFFJYORB.js → chunk.4CBN5LPQ.js} +4 -4
  4. package/dist/chunks/{chunk.UFEBKPYW.js → chunk.4CPH57PN.js} +2 -2
  5. package/dist/chunks/{chunk.UFEBKPYW.js.map → chunk.4CPH57PN.js.map} +1 -1
  6. package/dist/chunks/chunk.4I6M5V6O.js +56 -0
  7. package/dist/chunks/chunk.4I6M5V6O.js.map +7 -0
  8. package/dist/chunks/{chunk.7QGGFKPO.js → chunk.4OPZ7M2M.js} +8 -8
  9. package/dist/chunks/chunk.4ZURABYO.js +24 -0
  10. package/dist/chunks/chunk.4ZURABYO.js.map +7 -0
  11. package/dist/chunks/{chunk.SQTGI355.js → chunk.7UOMTJPT.js} +8 -8
  12. package/dist/chunks/{chunk.MMNWMRST.js → chunk.AULPKG2K.js} +2 -2
  13. package/dist/chunks/chunk.F4MRQLNL.js +25 -0
  14. package/dist/chunks/chunk.F4MRQLNL.js.map +7 -0
  15. package/dist/chunks/chunk.FOASOAQU.js +12 -0
  16. package/dist/chunks/chunk.FOASOAQU.js.map +7 -0
  17. package/dist/chunks/chunk.FUY24CRJ.js +127 -0
  18. package/dist/chunks/chunk.FUY24CRJ.js.map +7 -0
  19. package/dist/chunks/chunk.FVF5BUAX.js +86 -0
  20. package/dist/chunks/chunk.FVF5BUAX.js.map +7 -0
  21. package/dist/chunks/{chunk.LJVC6UEV.js → chunk.JBK2MO2R.js} +7 -7
  22. package/dist/chunks/chunk.JBYBQ5TQ.js +132 -0
  23. package/dist/chunks/chunk.JBYBQ5TQ.js.map +7 -0
  24. package/dist/chunks/{chunk.VNC7HKGP.js → chunk.JHXCBOUD.js} +2 -2
  25. package/dist/chunks/{chunk.VNC7HKGP.js.map → chunk.JHXCBOUD.js.map} +1 -1
  26. package/dist/chunks/chunk.JVQAUENN.js +351 -0
  27. package/dist/chunks/chunk.JVQAUENN.js.map +7 -0
  28. package/dist/chunks/{chunk.FKB4BI2F.js → chunk.KWKQLGGC.js} +2 -2
  29. package/dist/chunks/{chunk.NXKZDAMQ.js → chunk.LWBUJBAK.js} +2 -2
  30. package/dist/chunks/{chunk.T5JJNDG6.js → chunk.N7RYRY7D.js} +2 -2
  31. package/dist/chunks/{chunk.HOGDOKQS.js → chunk.NUQ6NORO.js} +5 -5
  32. package/dist/chunks/chunk.OVVMSN4D.js +37 -0
  33. package/dist/chunks/chunk.OVVMSN4D.js.map +7 -0
  34. package/dist/chunks/{chunk.WANL6A7U.js → chunk.OXUFFH57.js} +4 -4
  35. package/dist/chunks/{chunk.WDCAHRYG.js → chunk.P2LNG2PZ.js} +4 -2
  36. package/dist/chunks/chunk.PS3OVBUX.js +111 -0
  37. package/dist/chunks/chunk.PS3OVBUX.js.map +7 -0
  38. package/dist/chunks/chunk.Q55ULCHV.js +12 -0
  39. package/dist/chunks/chunk.Q55ULCHV.js.map +7 -0
  40. package/dist/chunks/{chunk.KALIQJUH.js → chunk.USYEVNFG.js} +5 -5
  41. package/dist/chunks/chunk.UYGJ3ZOA.js +12 -0
  42. package/dist/chunks/chunk.UYGJ3ZOA.js.map +7 -0
  43. package/dist/chunks/chunk.V6VND4OF.js +49 -0
  44. package/dist/chunks/chunk.V6VND4OF.js.map +7 -0
  45. package/dist/chunks/{chunk.TKXG7VM3.js → chunk.X3XOXXN3.js} +2 -2
  46. package/dist/chunks/{chunk.WTCUSH7V.js → chunk.Z3RZUTQU.js} +2 -2
  47. package/dist/chunks/chunk.ZXJWGKP4.js +12 -0
  48. package/dist/chunks/chunk.ZXJWGKP4.js.map +7 -0
  49. package/dist/components/button/button.component.js +9 -9
  50. package/dist/components/button/button.js +10 -10
  51. package/dist/components/button-group/button-group.component.d.ts +28 -0
  52. package/dist/components/button-group/button-group.component.js +11 -0
  53. package/dist/components/button-group/button-group.component.js.map +7 -0
  54. package/dist/components/button-group/button-group.d.ts +8 -0
  55. package/dist/components/button-group/button-group.js +12 -0
  56. package/dist/components/button-group/button-group.js.map +7 -0
  57. package/dist/components/button-group/button-group.styles.d.ts +2 -0
  58. package/dist/components/button-group/button-group.styles.js +9 -0
  59. package/dist/components/button-group/button-group.styles.js.map +7 -0
  60. package/dist/components/checkbox/checkbox.component.js +7 -7
  61. package/dist/components/checkbox/checkbox.js +8 -8
  62. package/dist/components/checkbox/checkbox.styles.js +2 -2
  63. package/dist/components/icon/icon.component.js +3 -3
  64. package/dist/components/icon/icon.js +4 -4
  65. package/dist/components/input/input.component.js +8 -8
  66. package/dist/components/input/input.js +9 -9
  67. package/dist/components/input/input.styles.js +2 -2
  68. package/dist/components/radio/radio.component.d.ts +53 -0
  69. package/dist/components/radio/radio.component.js +19 -0
  70. package/dist/components/radio/radio.component.js.map +7 -0
  71. package/dist/components/radio/radio.custom.styles.d.ts +2 -0
  72. package/dist/components/radio/radio.custom.styles.js +8 -0
  73. package/dist/components/radio/radio.custom.styles.js.map +7 -0
  74. package/dist/components/radio/radio.d.ts +8 -0
  75. package/dist/components/radio/radio.js +20 -0
  76. package/dist/components/radio/radio.js.map +7 -0
  77. package/dist/components/radio/radio.styles.d.ts +2 -0
  78. package/dist/components/radio/radio.styles.js +10 -0
  79. package/dist/components/radio/radio.styles.js.map +7 -0
  80. package/dist/components/radio-button/radio-button.component.d.ts +53 -0
  81. package/dist/components/radio-button/radio-button.component.js +15 -0
  82. package/dist/components/radio-button/radio-button.component.js.map +7 -0
  83. package/dist/components/radio-button/radio-button.d.ts +8 -0
  84. package/dist/components/radio-button/radio-button.js +16 -0
  85. package/dist/components/radio-button/radio-button.js.map +7 -0
  86. package/dist/components/radio-button/radio-button.styles.d.ts +2 -0
  87. package/dist/components/radio-button/radio-button.styles.js +11 -0
  88. package/dist/components/radio-button/radio-button.styles.js.map +7 -0
  89. package/dist/components/radio-group/radio-group.component.d.ts +89 -0
  90. package/dist/components/radio-group/radio-group.component.js +18 -0
  91. package/dist/components/radio-group/radio-group.component.js.map +7 -0
  92. package/dist/components/radio-group/radio-group.custom.styles.d.ts +2 -0
  93. package/dist/components/radio-group/radio-group.custom.styles.js +8 -0
  94. package/dist/components/radio-group/radio-group.custom.styles.js.map +7 -0
  95. package/dist/components/radio-group/radio-group.d.ts +8 -0
  96. package/dist/components/radio-group/radio-group.js +19 -0
  97. package/dist/components/radio-group/radio-group.js.map +7 -0
  98. package/dist/components/radio-group/radio-group.styles.d.ts +2 -0
  99. package/dist/components/radio-group/radio-group.styles.js +11 -0
  100. package/dist/components/radio-group/radio-group.styles.js.map +7 -0
  101. package/dist/components/spinner/spinner.component.js +3 -3
  102. package/dist/components/textarea/textarea.component.js +6 -6
  103. package/dist/components/textarea/textarea.js +7 -7
  104. package/dist/components/textarea/textarea.styles.js +2 -2
  105. package/dist/custom-elements.json +1799 -809
  106. package/dist/synergy.d.ts +4 -0
  107. package/dist/synergy.js +53 -27
  108. package/dist/utilities/form.js +2 -2
  109. package/dist/vscode.html-custom-data.json +162 -32
  110. package/dist/web-types.json +363 -72
  111. package/package.json +2 -2
  112. /package/dist/chunks/{chunk.J44T4LO6.js.map → chunk.23HTU3YE.js.map} +0 -0
  113. /package/dist/chunks/{chunk.FLF2E2W4.js.map → chunk.2MPTR6IQ.js.map} +0 -0
  114. /package/dist/chunks/{chunk.MFFJYORB.js.map → chunk.4CBN5LPQ.js.map} +0 -0
  115. /package/dist/chunks/{chunk.7QGGFKPO.js.map → chunk.4OPZ7M2M.js.map} +0 -0
  116. /package/dist/chunks/{chunk.SQTGI355.js.map → chunk.7UOMTJPT.js.map} +0 -0
  117. /package/dist/chunks/{chunk.MMNWMRST.js.map → chunk.AULPKG2K.js.map} +0 -0
  118. /package/dist/chunks/{chunk.LJVC6UEV.js.map → chunk.JBK2MO2R.js.map} +0 -0
  119. /package/dist/chunks/{chunk.FKB4BI2F.js.map → chunk.KWKQLGGC.js.map} +0 -0
  120. /package/dist/chunks/{chunk.NXKZDAMQ.js.map → chunk.LWBUJBAK.js.map} +0 -0
  121. /package/dist/chunks/{chunk.T5JJNDG6.js.map → chunk.N7RYRY7D.js.map} +0 -0
  122. /package/dist/chunks/{chunk.HOGDOKQS.js.map → chunk.NUQ6NORO.js.map} +0 -0
  123. /package/dist/chunks/{chunk.WANL6A7U.js.map → chunk.OXUFFH57.js.map} +0 -0
  124. /package/dist/chunks/{chunk.WDCAHRYG.js.map → chunk.P2LNG2PZ.js.map} +0 -0
  125. /package/dist/chunks/{chunk.KALIQJUH.js.map → chunk.USYEVNFG.js.map} +0 -0
  126. /package/dist/chunks/{chunk.TKXG7VM3.js.map → chunk.X3XOXXN3.js.map} +0 -0
  127. /package/dist/chunks/{chunk.WTCUSH7V.js.map → chunk.Z3RZUTQU.js.map} +0 -0
@@ -1,9 +1,9 @@
1
- import {
2
- form_control_styles_default
3
- } from "./chunk.VNC7HKGP.js";
4
1
  import {
5
2
  textarea_custom_styles_default
6
3
  } from "./chunk.YBIBWRKC.js";
4
+ import {
5
+ form_control_styles_default
6
+ } from "./chunk.JHXCBOUD.js";
7
7
  import {
8
8
  component_styles_default
9
9
  } from "./chunk.O7USYXBT.js";
@@ -186,4 +186,4 @@ var textarea_styles_default = css`
186
186
  export {
187
187
  textarea_styles_default
188
188
  };
189
- //# sourceMappingURL=chunk.J44T4LO6.js.map
189
+ //# sourceMappingURL=chunk.23HTU3YE.js.map
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  textarea_styles_default
3
- } from "./chunk.J44T4LO6.js";
4
- import {
5
- HasSlotController
6
- } from "./chunk.XGXFE6IF.js";
3
+ } from "./chunk.23HTU3YE.js";
7
4
  import {
8
5
  defaultValue
9
6
  } from "./chunk.WFAJR3FN.js";
7
+ import {
8
+ HasSlotController
9
+ } from "./chunk.XGXFE6IF.js";
10
10
  import {
11
11
  FormControlController
12
- } from "./chunk.WDCAHRYG.js";
12
+ } from "./chunk.P2LNG2PZ.js";
13
13
  import {
14
14
  watch
15
15
  } from "./chunk.VZ7S7YYN.js";
16
16
  import {
17
17
  SynergyElement
18
- } from "./chunk.UFEBKPYW.js";
18
+ } from "./chunk.4CPH57PN.js";
19
19
  import {
20
20
  __decorateClass
21
21
  } from "./chunk.DJOAQ4JU.js";
@@ -357,4 +357,4 @@ __decorateClass([
357
357
  export {
358
358
  SynTextarea
359
359
  };
360
- //# sourceMappingURL=chunk.FLF2E2W4.js.map
360
+ //# sourceMappingURL=chunk.2MPTR6IQ.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- component_styles_default
3
- } from "./chunk.O7USYXBT.js";
4
1
  import {
5
2
  checkbox_custom_styles_default
6
3
  } from "./chunk.2XZKXVMR.js";
4
+ import {
5
+ component_styles_default
6
+ } from "./chunk.O7USYXBT.js";
7
7
 
8
8
  // src/components/checkbox/checkbox.styles.ts
9
9
  import { css } from "lit";
@@ -134,4 +134,4 @@ var checkbox_styles_default = css`
134
134
  export {
135
135
  checkbox_styles_default
136
136
  };
137
- //# sourceMappingURL=chunk.MFFJYORB.js.map
137
+ //# sourceMappingURL=chunk.4CBN5LPQ.js.map
@@ -48,7 +48,7 @@ var SynergyElement = class extends LitElement {
48
48
  };
49
49
  /* eslint-disable */
50
50
  // @ts-expect-error This is auto-injected at build time.
51
- SynergyElement.version = "1.0.0-main.13";
51
+ SynergyElement.version = "1.0.0-main.14";
52
52
  SynergyElement.dependencies = {};
53
53
  __decorateClass([
54
54
  property()
@@ -60,4 +60,4 @@ __decorateClass([
60
60
  export {
61
61
  SynergyElement
62
62
  };
63
- //# sourceMappingURL=chunk.UFEBKPYW.js.map
63
+ //# sourceMappingURL=chunk.4CPH57PN.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/internal/synergy-element.ts"],
4
- "sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport { LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\n\n// Match event type name strings that are registered on GlobalEventHandlersEventMap...\ntype EventTypeRequiresDetail<T> = T extends keyof GlobalEventHandlersEventMap\n ? // ...where the event detail is an object...\n GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, unknown>>\n ? // ...that is non-empty...\n GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, never>>\n ? never\n : // ...and has at least one non-optional property\n Partial<GlobalEventHandlersEventMap[T]['detail']> extends GlobalEventHandlersEventMap[T]['detail']\n ? never\n : T\n : never\n : never;\n\n// The inverse of the above (match any type that doesn't match EventTypeRequiresDetail)\ntype EventTypeDoesNotRequireDetail<T> = T extends keyof GlobalEventHandlersEventMap\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, unknown>>\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, never>>\n ? T\n : Partial<GlobalEventHandlersEventMap[T]['detail']> extends GlobalEventHandlersEventMap[T]['detail']\n ? T\n : never\n : T\n : T;\n\n// `keyof EventTypesWithRequiredDetail` lists all registered event types that require detail\ntype EventTypesWithRequiredDetail = {\n [EventType in keyof GlobalEventHandlersEventMap as EventTypeRequiresDetail<EventType>]: true;\n};\n\n// `keyof EventTypesWithoutRequiredDetail` lists all registered event types that do NOT require detail\ntype EventTypesWithoutRequiredDetail = {\n [EventType in keyof GlobalEventHandlersEventMap as EventTypeDoesNotRequireDetail<EventType>]: true;\n};\n\n// Helper to make a specific property of an object non-optional\ntype WithRequired<T, K extends keyof T> = T & { [P in K]-?: T[P] };\n\n// Given an event name string, get a valid type for the options to initialize the event that is more restrictive than\n// just CustomEventInit when appropriate (validate the type of the event detail, and require it to be provided if the\n// event requires it)\ntype SynEventInit<T> = T extends keyof GlobalEventHandlersEventMap\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, unknown>>\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, never>>\n ? CustomEventInit<GlobalEventHandlersEventMap[T]['detail']>\n : Partial<GlobalEventHandlersEventMap[T]['detail']> extends GlobalEventHandlersEventMap[T]['detail']\n ? CustomEventInit<GlobalEventHandlersEventMap[T]['detail']>\n : WithRequired<CustomEventInit<GlobalEventHandlersEventMap[T]['detail']>, 'detail'>\n : CustomEventInit\n : CustomEventInit;\n\n// Given an event name string, get the type of the event\ntype GetCustomEventType<T> = T extends keyof GlobalEventHandlersEventMap\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<unknown>\n ? GlobalEventHandlersEventMap[T]\n : CustomEvent<unknown>\n : CustomEvent<unknown>;\n\n// `keyof ValidEventTypeMap` is equivalent to `keyof GlobalEventHandlersEventMap` but gives a nicer error message\ntype ValidEventTypeMap = EventTypesWithRequiredDetail | EventTypesWithoutRequiredDetail;\n\nexport default class SynergyElement extends LitElement {\n // Make localization attributes reactive\n @property() dir: string;\n @property() lang: string;\n\n /** Emits a custom event with more convenient defaults. */\n emit<T extends string & keyof EventTypesWithoutRequiredDetail>(\n name: EventTypeDoesNotRequireDetail<T>,\n options?: SynEventInit<T> | undefined\n ): GetCustomEventType<T>;\n emit<T extends string & keyof EventTypesWithRequiredDetail>(\n name: EventTypeRequiresDetail<T>,\n options: SynEventInit<T>\n ): GetCustomEventType<T>;\n emit<T extends string & keyof ValidEventTypeMap>(\n name: T,\n options?: SynEventInit<T> | undefined\n ): GetCustomEventType<T> {\n const event = new CustomEvent(name, {\n bubbles: true,\n cancelable: false,\n composed: true,\n detail: {},\n ...options\n });\n\n this.dispatchEvent(event);\n\n return event as GetCustomEventType<T>;\n }\n\n /* eslint-disable */\n // @ts-expect-error This is auto-injected at build time.\n static version = \"1.0.0-main.13\";\n \n\n static define(name: string, elementConstructor = this, options: ElementDefinitionOptions = {}) {\n const currentlyRegisteredConstructor = customElements.get(name) as\n | CustomElementConstructor\n | typeof SynergyElement;\n\n if (!currentlyRegisteredConstructor) {\n customElements.define(name, class extends elementConstructor {} as unknown as CustomElementConstructor, options);\n return;\n }\n\n let newVersion = ' (unknown version)';\n let existingVersion = newVersion;\n\n if ('version' in elementConstructor && elementConstructor.version) {\n newVersion = ' v' + elementConstructor.version;\n }\n\n if ('version' in currentlyRegisteredConstructor && currentlyRegisteredConstructor.version) {\n existingVersion = ' v' + currentlyRegisteredConstructor.version;\n }\n\n // Need to make sure we're not working with null or empty strings before doing version comparisons.\n if (newVersion && existingVersion && newVersion === existingVersion) {\n // If versions match, we don't need to warn anyone. Carry on.\n return;\n }\n\n console.warn(\n `Attempted to register <${name}>${newVersion}, but <${name}>${existingVersion} has already been registered.`\n );\n }\n\n static dependencies: Record<string, typeof SynergyElement> = {};\n\n constructor() {\n super();\n Object.entries((this.constructor as typeof SynergyElement).dependencies).forEach(([name, component]) => {\n (this.constructor as typeof SynergyElement).define(name, component);\n });\n }\n}\n\nexport interface SynergyFormControl extends SynergyElement {\n // Form attributes\n name: string;\n value: unknown;\n disabled?: boolean;\n defaultValue?: unknown;\n defaultChecked?: boolean;\n form?: string;\n\n // Constraint validation attributes\n pattern?: string;\n min?: number | string | Date;\n max?: number | string | Date;\n step?: number | 'any';\n required?: boolean;\n minlength?: number;\n maxlength?: number;\n\n // Form validation properties\n readonly validity: ValidityState;\n readonly validationMessage: string;\n\n // Form validation methods\n checkValidity: () => boolean;\n getForm: () => HTMLFormElement | null;\n reportValidity: () => boolean;\n setCustomValidity: (message: string) => void;\n}\n"],
4
+ "sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport { LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\n\n// Match event type name strings that are registered on GlobalEventHandlersEventMap...\ntype EventTypeRequiresDetail<T> = T extends keyof GlobalEventHandlersEventMap\n ? // ...where the event detail is an object...\n GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, unknown>>\n ? // ...that is non-empty...\n GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, never>>\n ? never\n : // ...and has at least one non-optional property\n Partial<GlobalEventHandlersEventMap[T]['detail']> extends GlobalEventHandlersEventMap[T]['detail']\n ? never\n : T\n : never\n : never;\n\n// The inverse of the above (match any type that doesn't match EventTypeRequiresDetail)\ntype EventTypeDoesNotRequireDetail<T> = T extends keyof GlobalEventHandlersEventMap\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, unknown>>\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, never>>\n ? T\n : Partial<GlobalEventHandlersEventMap[T]['detail']> extends GlobalEventHandlersEventMap[T]['detail']\n ? T\n : never\n : T\n : T;\n\n// `keyof EventTypesWithRequiredDetail` lists all registered event types that require detail\ntype EventTypesWithRequiredDetail = {\n [EventType in keyof GlobalEventHandlersEventMap as EventTypeRequiresDetail<EventType>]: true;\n};\n\n// `keyof EventTypesWithoutRequiredDetail` lists all registered event types that do NOT require detail\ntype EventTypesWithoutRequiredDetail = {\n [EventType in keyof GlobalEventHandlersEventMap as EventTypeDoesNotRequireDetail<EventType>]: true;\n};\n\n// Helper to make a specific property of an object non-optional\ntype WithRequired<T, K extends keyof T> = T & { [P in K]-?: T[P] };\n\n// Given an event name string, get a valid type for the options to initialize the event that is more restrictive than\n// just CustomEventInit when appropriate (validate the type of the event detail, and require it to be provided if the\n// event requires it)\ntype SynEventInit<T> = T extends keyof GlobalEventHandlersEventMap\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, unknown>>\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, never>>\n ? CustomEventInit<GlobalEventHandlersEventMap[T]['detail']>\n : Partial<GlobalEventHandlersEventMap[T]['detail']> extends GlobalEventHandlersEventMap[T]['detail']\n ? CustomEventInit<GlobalEventHandlersEventMap[T]['detail']>\n : WithRequired<CustomEventInit<GlobalEventHandlersEventMap[T]['detail']>, 'detail'>\n : CustomEventInit\n : CustomEventInit;\n\n// Given an event name string, get the type of the event\ntype GetCustomEventType<T> = T extends keyof GlobalEventHandlersEventMap\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<unknown>\n ? GlobalEventHandlersEventMap[T]\n : CustomEvent<unknown>\n : CustomEvent<unknown>;\n\n// `keyof ValidEventTypeMap` is equivalent to `keyof GlobalEventHandlersEventMap` but gives a nicer error message\ntype ValidEventTypeMap = EventTypesWithRequiredDetail | EventTypesWithoutRequiredDetail;\n\nexport default class SynergyElement extends LitElement {\n // Make localization attributes reactive\n @property() dir: string;\n @property() lang: string;\n\n /** Emits a custom event with more convenient defaults. */\n emit<T extends string & keyof EventTypesWithoutRequiredDetail>(\n name: EventTypeDoesNotRequireDetail<T>,\n options?: SynEventInit<T> | undefined\n ): GetCustomEventType<T>;\n emit<T extends string & keyof EventTypesWithRequiredDetail>(\n name: EventTypeRequiresDetail<T>,\n options: SynEventInit<T>\n ): GetCustomEventType<T>;\n emit<T extends string & keyof ValidEventTypeMap>(\n name: T,\n options?: SynEventInit<T> | undefined\n ): GetCustomEventType<T> {\n const event = new CustomEvent(name, {\n bubbles: true,\n cancelable: false,\n composed: true,\n detail: {},\n ...options\n });\n\n this.dispatchEvent(event);\n\n return event as GetCustomEventType<T>;\n }\n\n /* eslint-disable */\n // @ts-expect-error This is auto-injected at build time.\n static version = \"1.0.0-main.14\";\n \n\n static define(name: string, elementConstructor = this, options: ElementDefinitionOptions = {}) {\n const currentlyRegisteredConstructor = customElements.get(name) as\n | CustomElementConstructor\n | typeof SynergyElement;\n\n if (!currentlyRegisteredConstructor) {\n customElements.define(name, class extends elementConstructor {} as unknown as CustomElementConstructor, options);\n return;\n }\n\n let newVersion = ' (unknown version)';\n let existingVersion = newVersion;\n\n if ('version' in elementConstructor && elementConstructor.version) {\n newVersion = ' v' + elementConstructor.version;\n }\n\n if ('version' in currentlyRegisteredConstructor && currentlyRegisteredConstructor.version) {\n existingVersion = ' v' + currentlyRegisteredConstructor.version;\n }\n\n // Need to make sure we're not working with null or empty strings before doing version comparisons.\n if (newVersion && existingVersion && newVersion === existingVersion) {\n // If versions match, we don't need to warn anyone. Carry on.\n return;\n }\n\n console.warn(\n `Attempted to register <${name}>${newVersion}, but <${name}>${existingVersion} has already been registered.`\n );\n }\n\n static dependencies: Record<string, typeof SynergyElement> = {};\n\n constructor() {\n super();\n Object.entries((this.constructor as typeof SynergyElement).dependencies).forEach(([name, component]) => {\n (this.constructor as typeof SynergyElement).define(name, component);\n });\n }\n}\n\nexport interface SynergyFormControl extends SynergyElement {\n // Form attributes\n name: string;\n value: unknown;\n disabled?: boolean;\n defaultValue?: unknown;\n defaultChecked?: boolean;\n form?: string;\n\n // Constraint validation attributes\n pattern?: string;\n min?: number | string | Date;\n max?: number | string | Date;\n step?: number | 'any';\n required?: boolean;\n minlength?: number;\n maxlength?: number;\n\n // Form validation properties\n readonly validity: ValidityState;\n readonly validationMessage: string;\n\n // Form validation methods\n checkValidity: () => boolean;\n getForm: () => HTMLFormElement | null;\n reportValidity: () => boolean;\n setCustomValidity: (message: string) => void;\n}\n"],
5
5
  "mappings": ";;;;;;AAMA,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AA+DzB,IAAqB,iBAArB,cAA4C,WAAW;AAAA,EAsErD,cAAc;AACZ,UAAM;AACN,WAAO,QAAS,KAAK,YAAsC,YAAY,EAAE,QAAQ,CAAC,CAAC,MAAM,SAAS,MAAM;AACtG,MAAC,KAAK,YAAsC,OAAO,MAAM,SAAS;AAAA,IACpE,CAAC;AAAA,EACH;AAAA,EA7DA,KACE,MACA,SACuB;AACvB,UAAM,QAAQ,IAAI,YAAY,MAAM;AAAA,MAClC,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,QAAQ,CAAC;AAAA,OACN,QACJ;AAED,SAAK,cAAc,KAAK;AAExB,WAAO;AAAA,EACT;AAAA,EAOA,OAAO,OAAO,MAAc,qBAAqB,MAAM,UAAoC,CAAC,GAAG;AAC7F,UAAM,iCAAiC,eAAe,IAAI,IAAI;AAI9D,QAAI,CAAC,gCAAgC;AACnC,qBAAe,OAAO,MAAM,cAAc,mBAAmB;AAAA,MAAC,GAA0C,OAAO;AAC/G;AAAA,IACF;AAEA,QAAI,aAAa;AACjB,QAAI,kBAAkB;AAEtB,QAAI,aAAa,sBAAsB,mBAAmB,SAAS;AACjE,mBAAa,OAAO,mBAAmB;AAAA,IACzC;AAEA,QAAI,aAAa,kCAAkC,+BAA+B,SAAS;AACzF,wBAAkB,OAAO,+BAA+B;AAAA,IAC1D;AAGA,QAAI,cAAc,mBAAmB,eAAe,iBAAiB;AAEnE;AAAA,IACF;AAEA,YAAQ;AAAA,MACN,0BAA0B,IAAI,IAAI,UAAU,UAAU,IAAI,IAAI,eAAe;AAAA,IAC/E;AAAA,EACF;AAUF;AAAA;AAAA;AA5EqB,eAiCZ,UAAU;AAjCE,eAoEZ,eAAsD,CAAC;AAlElD;AAAA,EAAX,SAAS;AAAA,GAFS,eAEP;AACA;AAAA,EAAX,SAAS;AAAA,GAHS,eAGP;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,56 @@
1
+ import {
2
+ radio_group_custom_styles_default
3
+ } from "./chunk.F4MRQLNL.js";
4
+ import {
5
+ form_control_styles_default
6
+ } from "./chunk.JHXCBOUD.js";
7
+ import {
8
+ component_styles_default
9
+ } from "./chunk.O7USYXBT.js";
10
+
11
+ // src/components/radio-group/radio-group.styles.ts
12
+ import { css } from "lit";
13
+ var radio_group_styles_default = css`
14
+ /* stylelint-disable */
15
+ ${component_styles_default}
16
+ ${form_control_styles_default}
17
+
18
+ :host {
19
+ display: block;
20
+ }
21
+
22
+ .form-control {
23
+ position: relative;
24
+ border: none;
25
+ padding: 0;
26
+ margin: 0;
27
+ }
28
+
29
+ .form-control__label {
30
+ padding: 0;
31
+ }
32
+
33
+ .radio-group--required .radio-group__label::after {
34
+ content: var(--syn-input-required-content);
35
+ margin-inline-start: var(--syn-input-required-content-offset);
36
+ }
37
+
38
+ .visually-hidden {
39
+ position: absolute;
40
+ width: 1px;
41
+ height: 1px;
42
+ padding: 0;
43
+ margin: -1px;
44
+ overflow: hidden;
45
+ clip: rect(0, 0, 0, 0);
46
+ white-space: nowrap;
47
+ border: 0;
48
+ }
49
+
50
+ ${radio_group_custom_styles_default}
51
+ `;
52
+
53
+ export {
54
+ radio_group_styles_default
55
+ };
56
+ //# sourceMappingURL=chunk.4I6M5V6O.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/radio-group/radio-group.styles.ts"],
4
+ "sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport { css } from 'lit';\nimport customStyles from './radio-group.custom.styles.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport formControlStyles from '../../styles/form-control.styles.js';\n\nexport default css`\n\t/* stylelint-disable */\n ${componentStyles}\n ${formControlStyles}\n\n :host {\n display: block;\n }\n\n .form-control {\n position: relative;\n border: none;\n padding: 0;\n margin: 0;\n }\n\n .form-control__label {\n padding: 0;\n }\n\n .radio-group--required .radio-group__label::after {\n content: var(--syn-input-required-content);\n margin-inline-start: var(--syn-input-required-content-offset);\n }\n\n .visually-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 white-space: nowrap;\n border: 0;\n }\n\n ${customStyles}\n`;\n\n"],
5
+ "mappings": ";;;;;;;;;;;AAMA,SAAS,WAAW;AAKpB,IAAO,6BAAQ;AAAA;AAAA,IAEX,wBAAe;AAAA,IACf,2BAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAkCjB,iCAAY;AAAA;",
6
+ "names": []
7
+ }
@@ -1,28 +1,28 @@
1
1
  import {
2
2
  SynSpinner
3
- } from "./chunk.KALIQJUH.js";
3
+ } from "./chunk.USYEVNFG.js";
4
4
  import {
5
5
  LocalizeController
6
6
  } from "./chunk.R6VNLE6N.js";
7
7
  import {
8
8
  HasSlotController
9
9
  } from "./chunk.XGXFE6IF.js";
10
- import {
11
- button_styles_default
12
- } from "./chunk.YTS5TRJZ.js";
13
10
  import {
14
11
  FormControlController,
15
12
  validValidityState
16
- } from "./chunk.WDCAHRYG.js";
13
+ } from "./chunk.P2LNG2PZ.js";
17
14
  import {
18
15
  SynIcon
19
- } from "./chunk.LJVC6UEV.js";
16
+ } from "./chunk.JBK2MO2R.js";
20
17
  import {
21
18
  watch
22
19
  } from "./chunk.VZ7S7YYN.js";
20
+ import {
21
+ button_styles_default
22
+ } from "./chunk.YTS5TRJZ.js";
23
23
  import {
24
24
  SynergyElement
25
- } from "./chunk.UFEBKPYW.js";
25
+ } from "./chunk.4CPH57PN.js";
26
26
  import {
27
27
  __decorateClass
28
28
  } from "./chunk.DJOAQ4JU.js";
@@ -277,4 +277,4 @@ __decorateClass([
277
277
  export {
278
278
  SynButton
279
279
  };
280
- //# sourceMappingURL=chunk.7QGGFKPO.js.map
280
+ //# sourceMappingURL=chunk.4OPZ7M2M.js.map
@@ -0,0 +1,24 @@
1
+ import {
2
+ component_styles_default
3
+ } from "./chunk.O7USYXBT.js";
4
+
5
+ // src/components/button-group/button-group.styles.ts
6
+ import { css } from "lit";
7
+ var button_group_styles_default = css`
8
+ /* stylelint-disable */
9
+ ${component_styles_default}
10
+
11
+ :host {
12
+ display: inline-block;
13
+ }
14
+
15
+ .button-group {
16
+ display: flex;
17
+ flex-wrap: nowrap;
18
+ }
19
+ `;
20
+
21
+ export {
22
+ button_group_styles_default
23
+ };
24
+ //# sourceMappingURL=chunk.4ZURABYO.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/button-group/button-group.styles.ts"],
4
+ "sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport { css } from 'lit';\nimport componentStyles from '../../styles/component.styles.js';\n\nexport default css`\n\t/* stylelint-disable */\n ${componentStyles}\n\n :host {\n display: inline-block;\n }\n\n .button-group {\n display: flex;\n flex-wrap: nowrap;\n }\n`;\n"],
5
+ "mappings": ";;;;;AAMA,SAAS,WAAW;AAGpB,IAAO,8BAAQ;AAAA;AAAA,IAEX,wBAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -1,27 +1,27 @@
1
1
  import {
2
2
  input_styles_default
3
- } from "./chunk.WANL6A7U.js";
3
+ } from "./chunk.OXUFFH57.js";
4
+ import {
5
+ defaultValue
6
+ } from "./chunk.WFAJR3FN.js";
4
7
  import {
5
8
  LocalizeController
6
9
  } from "./chunk.R6VNLE6N.js";
7
10
  import {
8
11
  HasSlotController
9
12
  } from "./chunk.XGXFE6IF.js";
10
- import {
11
- defaultValue
12
- } from "./chunk.WFAJR3FN.js";
13
13
  import {
14
14
  FormControlController
15
- } from "./chunk.WDCAHRYG.js";
15
+ } from "./chunk.P2LNG2PZ.js";
16
16
  import {
17
17
  SynIcon
18
- } from "./chunk.LJVC6UEV.js";
18
+ } from "./chunk.JBK2MO2R.js";
19
19
  import {
20
20
  watch
21
21
  } from "./chunk.VZ7S7YYN.js";
22
22
  import {
23
23
  SynergyElement
24
- } from "./chunk.UFEBKPYW.js";
24
+ } from "./chunk.4CPH57PN.js";
25
25
  import {
26
26
  __decorateClass
27
27
  } from "./chunk.DJOAQ4JU.js";
@@ -477,4 +477,4 @@ __decorateClass([
477
477
  export {
478
478
  SynInput
479
479
  };
480
- //# sourceMappingURL=chunk.SQTGI355.js.map
480
+ //# sourceMappingURL=chunk.7UOMTJPT.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynCheckbox
3
- } from "./chunk.HOGDOKQS.js";
3
+ } from "./chunk.NUQ6NORO.js";
4
4
 
5
5
  // src/components/checkbox/checkbox.ts
6
6
  var checkbox_default = SynCheckbox;
@@ -9,4 +9,4 @@ SynCheckbox.define("syn-checkbox");
9
9
  export {
10
10
  checkbox_default
11
11
  };
12
- //# sourceMappingURL=chunk.MMNWMRST.js.map
12
+ //# sourceMappingURL=chunk.AULPKG2K.js.map
@@ -0,0 +1,25 @@
1
+ // src/components/radio-group/radio-group.custom.styles.ts
2
+ import { css } from "lit";
3
+ var radio_group_custom_styles_default = css`
4
+ ::slotted(syn-radio:not(:last-child)) {
5
+ margin-bottom: var(--syn-spacing-x-small);
6
+ }
7
+
8
+ :host([data-user-invalid]) {
9
+ --syn-input-border-color: var(--syn-input-border-color-focus-error);
10
+ --syn-input-border-color-hover: var(--syn-input-border-color-focus-error);
11
+ --syn-color-primary-600: var(--syn-color-error-700);
12
+ --syn-color-primary-900: var(--syn-color-error-900);
13
+ --syn-color-primary-950: var(--syn-color-error-950);
14
+ }
15
+
16
+ .form-control--has-help-text.form-control--radio-group .form-control__help-text {
17
+ margin-top: var(--syn-spacing-x-small);
18
+ }
19
+
20
+ `;
21
+
22
+ export {
23
+ radio_group_custom_styles_default
24
+ };
25
+ //# sourceMappingURL=chunk.F4MRQLNL.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/radio-group/radio-group.custom.styles.ts"],
4
+ "sourcesContent": ["import { css } from 'lit';\n\nexport default css`\n ::slotted(syn-radio:not(:last-child)) {\n margin-bottom: var(--syn-spacing-x-small);\n }\n\n :host([data-user-invalid]) {\n --syn-input-border-color: var(--syn-input-border-color-focus-error);\n --syn-input-border-color-hover: var(--syn-input-border-color-focus-error);\n --syn-color-primary-600: var(--syn-color-error-700);\n --syn-color-primary-900: var(--syn-color-error-900);\n --syn-color-primary-950: var(--syn-color-error-950);\n }\n\n .form-control--has-help-text.form-control--radio-group .form-control__help-text {\n margin-top: var(--syn-spacing-x-small);\n }\n\n`;\n"],
5
+ "mappings": ";AAAA,SAAS,WAAW;AAEpB,IAAO,oCAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,12 @@
1
+ import {
2
+ SynRadioGroup
3
+ } from "./chunk.JVQAUENN.js";
4
+
5
+ // src/components/radio-group/radio-group.ts
6
+ var radio_group_default = SynRadioGroup;
7
+ SynRadioGroup.define("syn-radio-group");
8
+
9
+ export {
10
+ radio_group_default
11
+ };
12
+ //# sourceMappingURL=chunk.FOASOAQU.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/radio-group/radio-group.ts"],
4
+ "sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport SynRadioGroup from './radio-group.component.js';\n\nexport * from './radio-group.component.js';\nexport default SynRadioGroup;\n\nSynRadioGroup.define('syn-radio-group');\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'syn-radio-group': SynRadioGroup;\n }\n}\n"],
5
+ "mappings": ";;;;;AASA,IAAO,sBAAQ;AAEf,cAAc,OAAO,iBAAiB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,127 @@
1
+ import {
2
+ radio_button_styles_default
3
+ } from "./chunk.OVVMSN4D.js";
4
+ import {
5
+ HasSlotController
6
+ } from "./chunk.XGXFE6IF.js";
7
+ import {
8
+ watch
9
+ } from "./chunk.VZ7S7YYN.js";
10
+ import {
11
+ SynergyElement
12
+ } from "./chunk.4CPH57PN.js";
13
+ import {
14
+ __decorateClass
15
+ } from "./chunk.DJOAQ4JU.js";
16
+
17
+ // src/components/radio-button/radio-button.component.ts
18
+ import { classMap } from "lit/directives/class-map.js";
19
+ import { html } from "lit/static-html.js";
20
+ import { ifDefined } from "lit/directives/if-defined.js";
21
+ import { property, query, state } from "lit/decorators.js";
22
+ var SynRadioButton = class extends SynergyElement {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.hasSlotController = new HasSlotController(this, "[default]", "prefix", "suffix");
26
+ this.hasFocus = false;
27
+ this.checked = false;
28
+ this.disabled = false;
29
+ this.size = "medium";
30
+ }
31
+ connectedCallback() {
32
+ super.connectedCallback();
33
+ this.setAttribute("role", "presentation");
34
+ }
35
+ handleBlur() {
36
+ this.hasFocus = false;
37
+ this.emit("syn-blur");
38
+ }
39
+ handleClick(e) {
40
+ if (this.disabled) {
41
+ e.preventDefault();
42
+ e.stopPropagation();
43
+ return;
44
+ }
45
+ this.checked = true;
46
+ }
47
+ handleFocus() {
48
+ this.hasFocus = true;
49
+ this.emit("syn-focus");
50
+ }
51
+ handleDisabledChange() {
52
+ this.setAttribute("aria-disabled", this.disabled ? "true" : "false");
53
+ }
54
+ /** Sets focus on the radio button. */
55
+ focus(options) {
56
+ this.input.focus(options);
57
+ }
58
+ /** Removes focus from the radio button. */
59
+ blur() {
60
+ this.input.blur();
61
+ }
62
+ render() {
63
+ return html`
64
+ <div part="base" role="presentation">
65
+ <button
66
+ part="${`button${this.checked ? " button--checked" : ""}`}"
67
+ role="radio"
68
+ aria-checked="${this.checked}"
69
+ class=${classMap({
70
+ button: true,
71
+ "button--small": this.size === "small",
72
+ "button--medium": this.size === "medium",
73
+ "button--large": this.size === "large",
74
+ "button--checked": this.checked,
75
+ "button--disabled": this.disabled,
76
+ "button--focused": this.hasFocus,
77
+ "button--outline": true,
78
+ "button--has-label": this.hasSlotController.test("[default]"),
79
+ "button--has-prefix": this.hasSlotController.test("prefix"),
80
+ "button--has-suffix": this.hasSlotController.test("suffix")
81
+ })}
82
+ aria-disabled=${this.disabled}
83
+ type="button"
84
+ value=${ifDefined(this.value)}
85
+ tabindex="${this.checked ? "0" : "-1"}"
86
+ @blur=${this.handleBlur}
87
+ @focus=${this.handleFocus}
88
+ @click=${this.handleClick}
89
+ >
90
+ <slot name="prefix" part="prefix" class="button__prefix"></slot>
91
+ <slot part="label" class="button__label"></slot>
92
+ <slot name="suffix" part="suffix" class="button__suffix"></slot>
93
+ </button>
94
+ </div>
95
+ `;
96
+ }
97
+ };
98
+ SynRadioButton.styles = radio_button_styles_default;
99
+ __decorateClass([
100
+ query(".button")
101
+ ], SynRadioButton.prototype, "input", 2);
102
+ __decorateClass([
103
+ query(".hidden-input")
104
+ ], SynRadioButton.prototype, "hiddenInput", 2);
105
+ __decorateClass([
106
+ state()
107
+ ], SynRadioButton.prototype, "hasFocus", 2);
108
+ __decorateClass([
109
+ property({ type: Boolean, reflect: true })
110
+ ], SynRadioButton.prototype, "checked", 2);
111
+ __decorateClass([
112
+ property()
113
+ ], SynRadioButton.prototype, "value", 2);
114
+ __decorateClass([
115
+ property({ type: Boolean, reflect: true })
116
+ ], SynRadioButton.prototype, "disabled", 2);
117
+ __decorateClass([
118
+ property({ reflect: true })
119
+ ], SynRadioButton.prototype, "size", 2);
120
+ __decorateClass([
121
+ watch("disabled", { waitUntilFirstUpdate: true })
122
+ ], SynRadioButton.prototype, "handleDisabledChange", 1);
123
+
124
+ export {
125
+ SynRadioButton
126
+ };
127
+ //# sourceMappingURL=chunk.FUY24CRJ.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/radio-button/radio-button.component.ts"],
4
+ "sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport { classMap } from 'lit/directives/class-map.js';\nimport { HasSlotController } from '../../internal/slot.js';\nimport { html } from 'lit/static-html.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { property, query, state } from 'lit/decorators.js';\nimport { watch } from '../../internal/watch.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport styles from './radio-button.styles.js';\nimport type { CSSResultGroup } from 'lit';\n\n/**\n * @summary Radios buttons allow the user to select a single option from a group using a button-like control.\n * @documentation https://synergy.style/components/radio-button\n * @status stable\n * @since 2.0\n *\n * @slot - The radio button's label.\n * @slot prefix - A presentational prefix icon or similar element.\n * @slot suffix - A presentational suffix icon or similar element.\n *\n * @event syn-blur - Emitted when the button loses focus.\n * @event syn-focus - Emitted when the button gains focus.\n *\n * @csspart base - The component's base wrapper.\n * @csspart button - The internal `<button>` element.\n * @csspart button--checked - The internal button element when the radio button is checked.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart label - The container that wraps the radio button's label.\n * @csspart suffix - The container that wraps the suffix.\n */\nexport default class SynRadioButton extends SynergyElement {\n static styles: CSSResultGroup = styles;\n\n private readonly hasSlotController = new HasSlotController(this, '[default]', 'prefix', 'suffix');\n\n @query('.button') input: HTMLInputElement;\n @query('.hidden-input') hiddenInput: HTMLInputElement;\n\n @state() protected hasFocus = false;\n\n /**\n * @internal The radio button's checked state. This is exposed as an \"internal\" attribute so we can reflect it, making\n * it easier to style in button groups.\n */\n @property({ type: Boolean, reflect: true }) checked = false;\n\n /** The radio's value. When selected, the radio group will receive this value. */\n @property() value: string;\n\n /** Disables the radio button. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /**\n * The radio button's size. When used inside a radio group, the size will be determined by the radio group's size so\n * this attribute can typically be omitted.\n */\n @property({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'presentation');\n }\n\n private handleBlur() {\n this.hasFocus = false;\n this.emit('syn-blur');\n }\n\n private handleClick(e: MouseEvent) {\n if (this.disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n this.checked = true;\n }\n\n private handleFocus() {\n this.hasFocus = true;\n this.emit('syn-focus');\n }\n\n @watch('disabled', { waitUntilFirstUpdate: true })\n handleDisabledChange() {\n this.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');\n }\n\n /** Sets focus on the radio button. */\n focus(options?: FocusOptions) {\n this.input.focus(options);\n }\n\n /** Removes focus from the radio button. */\n blur() {\n this.input.blur();\n }\n\n render() {\n return html`\n <div part=\"base\" role=\"presentation\">\n <button\n part=\"${`button${this.checked ? ' button--checked' : ''}`}\"\n role=\"radio\"\n aria-checked=\"${this.checked}\"\n class=${classMap({\n button: true,\n 'button--small': this.size === 'small',\n 'button--medium': this.size === 'medium',\n 'button--large': this.size === 'large',\n 'button--checked': this.checked,\n 'button--disabled': this.disabled,\n 'button--focused': this.hasFocus,\n 'button--outline': true,\n 'button--has-label': this.hasSlotController.test('[default]'),\n 'button--has-prefix': this.hasSlotController.test('prefix'),\n 'button--has-suffix': this.hasSlotController.test('suffix')\n })}\n aria-disabled=${this.disabled}\n type=\"button\"\n value=${ifDefined(this.value)}\n tabindex=\"${this.checked ? '0' : '-1'}\"\n @blur=${this.handleBlur}\n @focus=${this.handleFocus}\n @click=${this.handleClick}\n >\n <slot name=\"prefix\" part=\"prefix\" class=\"button__prefix\"></slot>\n <slot part=\"label\" class=\"button__label\"></slot>\n <slot name=\"suffix\" part=\"suffix\" class=\"button__suffix\"></slot>\n </button>\n </div>\n `;\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAMA,SAAS,gBAAgB;AAEzB,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAC1B,SAAS,UAAU,OAAO,aAAa;AA0BvC,IAAqB,iBAArB,cAA4C,eAAe;AAAA,EAA3D;AAAA;AAGE,SAAiB,oBAAoB,IAAI,kBAAkB,MAAM,aAAa,UAAU,QAAQ;AAKvF,SAAU,WAAW;AAMc,mBAAU;AAMV,oBAAW;AAM1B,gBAAqC;AAAA;AAAA,EAElE,oBAAoB;AAClB,UAAM,kBAAkB;AACxB,SAAK,aAAa,QAAQ,cAAc;AAAA,EAC1C;AAAA,EAEQ,aAAa;AACnB,SAAK,WAAW;AAChB,SAAK,KAAK,UAAU;AAAA,EACtB;AAAA,EAEQ,YAAY,GAAe;AACjC,QAAI,KAAK,UAAU;AACjB,QAAE,eAAe;AACjB,QAAE,gBAAgB;AAClB;AAAA,IACF;AAEA,SAAK,UAAU;AAAA,EACjB;AAAA,EAEQ,cAAc;AACpB,SAAK,WAAW;AAChB,SAAK,KAAK,WAAW;AAAA,EACvB;AAAA,EAGA,uBAAuB;AACrB,SAAK,aAAa,iBAAiB,KAAK,WAAW,SAAS,OAAO;AAAA,EACrE;AAAA;AAAA,EAGA,MAAM,SAAwB;AAC5B,SAAK,MAAM,MAAM,OAAO;AAAA,EAC1B;AAAA;AAAA,EAGA,OAAO;AACL,SAAK,MAAM,KAAK;AAAA,EAClB;AAAA,EAEA,SAAS;AACP,WAAO;AAAA;AAAA;AAAA,kBAGO,SAAS,KAAK,UAAU,qBAAqB,EAAE,EAAE;AAAA;AAAA,0BAEzC,KAAK,OAAO;AAAA,kBACpB,SAAS;AAAA,MACf,QAAQ;AAAA,MACR,iBAAiB,KAAK,SAAS;AAAA,MAC/B,kBAAkB,KAAK,SAAS;AAAA,MAChC,iBAAiB,KAAK,SAAS;AAAA,MAC/B,mBAAmB,KAAK;AAAA,MACxB,oBAAoB,KAAK;AAAA,MACzB,mBAAmB,KAAK;AAAA,MACxB,mBAAmB;AAAA,MACnB,qBAAqB,KAAK,kBAAkB,KAAK,WAAW;AAAA,MAC5D,sBAAsB,KAAK,kBAAkB,KAAK,QAAQ;AAAA,MAC1D,sBAAsB,KAAK,kBAAkB,KAAK,QAAQ;AAAA,IAC5D,CAAC,CAAC;AAAA,0BACc,KAAK,QAAQ;AAAA;AAAA,kBAErB,UAAU,KAAK,KAAK,CAAC;AAAA,sBACjB,KAAK,UAAU,MAAM,IAAI;AAAA,kBAC7B,KAAK,UAAU;AAAA,mBACd,KAAK,WAAW;AAAA,mBAChB,KAAK,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQjC;AACF;AAvGqB,eACZ,SAAyB;AAId;AAAA,EAAjB,MAAM,SAAS;AAAA,GALG,eAKD;AACM;AAAA,EAAvB,MAAM,eAAe;AAAA,GANH,eAMK;AAEL;AAAA,EAAlB,MAAM;AAAA,GARY,eAQA;AAMyB;AAAA,EAA3C,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAdvB,eAcyB;AAGhC;AAAA,EAAX,SAAS;AAAA,GAjBS,eAiBP;AAGgC;AAAA,EAA3C,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GApBvB,eAoByB;AAMf;AAAA,EAA5B,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,GA1BR,eA0BU;AA4B7B;AAAA,EADC,MAAM,YAAY,EAAE,sBAAsB,KAAK,CAAC;AAAA,GArD9B,eAsDnB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,86 @@
1
+ import {
2
+ SynergyElement
3
+ } from "./chunk.4CPH57PN.js";
4
+ import {
5
+ button_group_styles_default
6
+ } from "./chunk.4ZURABYO.js";
7
+ import {
8
+ __decorateClass
9
+ } from "./chunk.DJOAQ4JU.js";
10
+
11
+ // src/components/button-group/button-group.component.ts
12
+ import { html } from "lit";
13
+ import { property, query, state } from "lit/decorators.js";
14
+ var SynButtonGroup = class extends SynergyElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.disableRole = false;
18
+ this.label = "";
19
+ }
20
+ handleFocus(event) {
21
+ const button = findButton(event.target);
22
+ button == null ? void 0 : button.classList.add("syn-button-group__button--focus");
23
+ }
24
+ handleBlur(event) {
25
+ const button = findButton(event.target);
26
+ button == null ? void 0 : button.classList.remove("syn-button-group__button--focus");
27
+ }
28
+ handleMouseOver(event) {
29
+ const button = findButton(event.target);
30
+ button == null ? void 0 : button.classList.add("syn-button-group__button--hover");
31
+ }
32
+ handleMouseOut(event) {
33
+ const button = findButton(event.target);
34
+ button == null ? void 0 : button.classList.remove("syn-button-group__button--hover");
35
+ }
36
+ handleSlotChange() {
37
+ const slottedElements = [...this.defaultSlot.assignedElements({ flatten: true })];
38
+ slottedElements.forEach((el) => {
39
+ const index = slottedElements.indexOf(el);
40
+ const button = findButton(el);
41
+ if (button) {
42
+ button.classList.add("syn-button-group__button");
43
+ button.classList.toggle("syn-button-group__button--first", index === 0);
44
+ button.classList.toggle("syn-button-group__button--inner", index > 0 && index < slottedElements.length - 1);
45
+ button.classList.toggle("syn-button-group__button--last", index === slottedElements.length - 1);
46
+ button.classList.toggle("syn-button-group__button--radio", button.tagName.toLowerCase() === "syn-radio-button");
47
+ }
48
+ });
49
+ }
50
+ render() {
51
+ return html`
52
+ <div
53
+ part="base"
54
+ class="button-group"
55
+ role="${this.disableRole ? "presentation" : "group"}"
56
+ aria-label=${this.label}
57
+ @focusout=${this.handleBlur}
58
+ @focusin=${this.handleFocus}
59
+ @mouseover=${this.handleMouseOver}
60
+ @mouseout=${this.handleMouseOut}
61
+ >
62
+ <slot @slotchange=${this.handleSlotChange}></slot>
63
+ </div>
64
+ `;
65
+ }
66
+ };
67
+ SynButtonGroup.styles = button_group_styles_default;
68
+ __decorateClass([
69
+ query("slot")
70
+ ], SynButtonGroup.prototype, "defaultSlot", 2);
71
+ __decorateClass([
72
+ state()
73
+ ], SynButtonGroup.prototype, "disableRole", 2);
74
+ __decorateClass([
75
+ property()
76
+ ], SynButtonGroup.prototype, "label", 2);
77
+ function findButton(el) {
78
+ var _a;
79
+ const selector = "syn-button, syn-radio-button";
80
+ return (_a = el.closest(selector)) != null ? _a : el.querySelector(selector);
81
+ }
82
+
83
+ export {
84
+ SynButtonGroup
85
+ };
86
+ //# sourceMappingURL=chunk.FVF5BUAX.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/button-group/button-group.component.ts"],
4
+ "sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport { html } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport styles from './button-group.styles.js';\nimport type { CSSResultGroup } from 'lit';\n\n/**\n * @summary Button groups can be used to group related buttons into sections.\n * @documentation https://synergy.style/components/button-group\n * @status stable\n * @since 2.0\n *\n * @slot - One or more `<syn-button>` elements to display in the button group.\n *\n * @csspart base - The component's base wrapper.\n */\nexport default class SynButtonGroup extends SynergyElement {\n static styles: CSSResultGroup = styles;\n\n @query('slot') defaultSlot: HTMLSlotElement;\n\n @state() disableRole = false;\n\n /**\n * A label to use for the button group. This won't be displayed on the screen, but it will be announced by assistive\n * devices when interacting with the control and is strongly recommended.\n */\n @property() label = '';\n\n private handleFocus(event: Event) {\n const button = findButton(event.target as HTMLElement);\n button?.classList.add('syn-button-group__button--focus');\n }\n\n private handleBlur(event: Event) {\n const button = findButton(event.target as HTMLElement);\n button?.classList.remove('syn-button-group__button--focus');\n }\n\n private handleMouseOver(event: Event) {\n const button = findButton(event.target as HTMLElement);\n button?.classList.add('syn-button-group__button--hover');\n }\n\n private handleMouseOut(event: Event) {\n const button = findButton(event.target as HTMLElement);\n button?.classList.remove('syn-button-group__button--hover');\n }\n\n private handleSlotChange() {\n const slottedElements = [...this.defaultSlot.assignedElements({ flatten: true })] as HTMLElement[];\n\n slottedElements.forEach(el => {\n const index = slottedElements.indexOf(el);\n const button = findButton(el);\n\n if (button) {\n button.classList.add('syn-button-group__button');\n button.classList.toggle('syn-button-group__button--first', index === 0);\n button.classList.toggle('syn-button-group__button--inner', index > 0 && index < slottedElements.length - 1);\n button.classList.toggle('syn-button-group__button--last', index === slottedElements.length - 1);\n button.classList.toggle('syn-button-group__button--radio', button.tagName.toLowerCase() === 'syn-radio-button');\n }\n });\n }\n\n render() {\n // eslint-disable-next-line lit-a11y/mouse-events-have-key-events\n return html`\n <div\n part=\"base\"\n class=\"button-group\"\n role=\"${this.disableRole ? 'presentation' : 'group'}\"\n aria-label=${this.label}\n @focusout=${this.handleBlur}\n @focusin=${this.handleFocus}\n @mouseover=${this.handleMouseOver}\n @mouseout=${this.handleMouseOut}\n >\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n `;\n }\n}\n\nfunction findButton(el: HTMLElement) {\n const selector = 'syn-button, syn-radio-button';\n\n // The button could be the target element or a child of it (e.g. a dropdown or tooltip anchor)\n return el.closest(selector) ?? el.querySelector(selector);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;AAMA,SAAS,YAAY;AACrB,SAAS,UAAU,OAAO,aAAa;AAevC,IAAqB,iBAArB,cAA4C,eAAe;AAAA,EAA3D;AAAA;AAKW,uBAAc;AAMX,iBAAQ;AAAA;AAAA,EAEZ,YAAY,OAAc;AAChC,UAAM,SAAS,WAAW,MAAM,MAAqB;AACrD,qCAAQ,UAAU,IAAI;AAAA,EACxB;AAAA,EAEQ,WAAW,OAAc;AAC/B,UAAM,SAAS,WAAW,MAAM,MAAqB;AACrD,qCAAQ,UAAU,OAAO;AAAA,EAC3B;AAAA,EAEQ,gBAAgB,OAAc;AACpC,UAAM,SAAS,WAAW,MAAM,MAAqB;AACrD,qCAAQ,UAAU,IAAI;AAAA,EACxB;AAAA,EAEQ,eAAe,OAAc;AACnC,UAAM,SAAS,WAAW,MAAM,MAAqB;AACrD,qCAAQ,UAAU,OAAO;AAAA,EAC3B;AAAA,EAEQ,mBAAmB;AACzB,UAAM,kBAAkB,CAAC,GAAG,KAAK,YAAY,iBAAiB,EAAE,SAAS,KAAK,CAAC,CAAC;AAEhF,oBAAgB,QAAQ,QAAM;AAC5B,YAAM,QAAQ,gBAAgB,QAAQ,EAAE;AACxC,YAAM,SAAS,WAAW,EAAE;AAE5B,UAAI,QAAQ;AACV,eAAO,UAAU,IAAI,0BAA0B;AAC/C,eAAO,UAAU,OAAO,mCAAmC,UAAU,CAAC;AACtE,eAAO,UAAU,OAAO,mCAAmC,QAAQ,KAAK,QAAQ,gBAAgB,SAAS,CAAC;AAC1G,eAAO,UAAU,OAAO,kCAAkC,UAAU,gBAAgB,SAAS,CAAC;AAC9F,eAAO,UAAU,OAAO,mCAAmC,OAAO,QAAQ,YAAY,MAAM,kBAAkB;AAAA,MAChH;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,SAAS;AAEP,WAAO;AAAA;AAAA;AAAA;AAAA,gBAIK,KAAK,cAAc,iBAAiB,OAAO;AAAA,qBACtC,KAAK,KAAK;AAAA,oBACX,KAAK,UAAU;AAAA,mBAChB,KAAK,WAAW;AAAA,qBACd,KAAK,eAAe;AAAA,oBACrB,KAAK,cAAc;AAAA;AAAA,4BAEX,KAAK,gBAAgB;AAAA;AAAA;AAAA,EAG/C;AACF;AAnEqB,eACZ,SAAyB;AAEjB;AAAA,EAAd,MAAM,MAAM;AAAA,GAHM,eAGJ;AAEN;AAAA,EAAR,MAAM;AAAA,GALY,eAKV;AAMG;AAAA,EAAX,SAAS;AAAA,GAXS,eAWP;AA0Dd,SAAS,WAAW,IAAiB;AA3FrC;AA4FE,QAAM,WAAW;AAGjB,UAAO,QAAG,QAAQ,QAAQ,MAAnB,YAAwB,GAAG,cAAc,QAAQ;AAC1D;",
6
+ "names": []
7
+ }