@raqm/ui 0.0.0-stage → 0.1.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.
Files changed (178) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE.md +28 -0
  4. package/README.md +125 -3
  5. package/combobox/README.md +17 -0
  6. package/fesm2022/raqm-ui-accordion.mjs +414 -0
  7. package/fesm2022/raqm-ui-accordion.mjs.map +1 -0
  8. package/fesm2022/raqm-ui-alert-dialog.mjs +457 -0
  9. package/fesm2022/raqm-ui-alert-dialog.mjs.map +1 -0
  10. package/fesm2022/raqm-ui-alert.mjs +195 -0
  11. package/fesm2022/raqm-ui-alert.mjs.map +1 -0
  12. package/fesm2022/raqm-ui-aspect-ratio.mjs +66 -0
  13. package/fesm2022/raqm-ui-aspect-ratio.mjs.map +1 -0
  14. package/fesm2022/raqm-ui-attachment.mjs +435 -0
  15. package/fesm2022/raqm-ui-attachment.mjs.map +1 -0
  16. package/fesm2022/raqm-ui-avatar.mjs +337 -0
  17. package/fesm2022/raqm-ui-avatar.mjs.map +1 -0
  18. package/fesm2022/raqm-ui-badge.mjs +68 -0
  19. package/fesm2022/raqm-ui-badge.mjs.map +1 -0
  20. package/fesm2022/raqm-ui-breadcrumb.mjs +309 -0
  21. package/fesm2022/raqm-ui-breadcrumb.mjs.map +1 -0
  22. package/fesm2022/raqm-ui-button-group.mjs +138 -0
  23. package/fesm2022/raqm-ui-button-group.mjs.map +1 -0
  24. package/fesm2022/raqm-ui-button.mjs +295 -0
  25. package/fesm2022/raqm-ui-button.mjs.map +1 -0
  26. package/fesm2022/raqm-ui-calendar.mjs +1394 -0
  27. package/fesm2022/raqm-ui-calendar.mjs.map +1 -0
  28. package/fesm2022/raqm-ui-card.mjs +331 -0
  29. package/fesm2022/raqm-ui-card.mjs.map +1 -0
  30. package/fesm2022/raqm-ui-carousel.mjs +410 -0
  31. package/fesm2022/raqm-ui-carousel.mjs.map +1 -0
  32. package/fesm2022/raqm-ui-checkbox.mjs +86 -0
  33. package/fesm2022/raqm-ui-checkbox.mjs.map +1 -0
  34. package/fesm2022/raqm-ui-collapsible.mjs +266 -0
  35. package/fesm2022/raqm-ui-collapsible.mjs.map +1 -0
  36. package/fesm2022/raqm-ui-combobox.mjs +1584 -0
  37. package/fesm2022/raqm-ui-combobox.mjs.map +1 -0
  38. package/fesm2022/raqm-ui-command.mjs +1210 -0
  39. package/fesm2022/raqm-ui-command.mjs.map +1 -0
  40. package/fesm2022/raqm-ui-context-menu.mjs +723 -0
  41. package/fesm2022/raqm-ui-context-menu.mjs.map +1 -0
  42. package/fesm2022/raqm-ui-dialog.mjs +1214 -0
  43. package/fesm2022/raqm-ui-dialog.mjs.map +1 -0
  44. package/fesm2022/raqm-ui-drawer.mjs +687 -0
  45. package/fesm2022/raqm-ui-drawer.mjs.map +1 -0
  46. package/fesm2022/raqm-ui-dropdown-menu.mjs +1168 -0
  47. package/fesm2022/raqm-ui-dropdown-menu.mjs.map +1 -0
  48. package/fesm2022/raqm-ui-empty.mjs +272 -0
  49. package/fesm2022/raqm-ui-empty.mjs.map +1 -0
  50. package/fesm2022/raqm-ui-field.mjs +517 -0
  51. package/fesm2022/raqm-ui-field.mjs.map +1 -0
  52. package/fesm2022/raqm-ui-hover-card.mjs +828 -0
  53. package/fesm2022/raqm-ui-hover-card.mjs.map +1 -0
  54. package/fesm2022/raqm-ui-input-group.mjs +270 -0
  55. package/fesm2022/raqm-ui-input-group.mjs.map +1 -0
  56. package/fesm2022/raqm-ui-input-otp.mjs +788 -0
  57. package/fesm2022/raqm-ui-input-otp.mjs.map +1 -0
  58. package/fesm2022/raqm-ui-input.mjs +73 -0
  59. package/fesm2022/raqm-ui-input.mjs.map +1 -0
  60. package/fesm2022/raqm-ui-item.mjs +495 -0
  61. package/fesm2022/raqm-ui-item.mjs.map +1 -0
  62. package/fesm2022/raqm-ui-kbd.mjs +80 -0
  63. package/fesm2022/raqm-ui-kbd.mjs.map +1 -0
  64. package/fesm2022/raqm-ui-label.mjs +44 -0
  65. package/fesm2022/raqm-ui-label.mjs.map +1 -0
  66. package/fesm2022/raqm-ui-menubar.mjs +536 -0
  67. package/fesm2022/raqm-ui-menubar.mjs.map +1 -0
  68. package/fesm2022/raqm-ui-native-select.mjs +131 -0
  69. package/fesm2022/raqm-ui-native-select.mjs.map +1 -0
  70. package/fesm2022/raqm-ui-navigation-menu.mjs +1399 -0
  71. package/fesm2022/raqm-ui-navigation-menu.mjs.map +1 -0
  72. package/fesm2022/raqm-ui-overlay-internal.mjs +185 -0
  73. package/fesm2022/raqm-ui-overlay-internal.mjs.map +1 -0
  74. package/fesm2022/raqm-ui-pagination.mjs +440 -0
  75. package/fesm2022/raqm-ui-pagination.mjs.map +1 -0
  76. package/fesm2022/raqm-ui-popover.mjs +1495 -0
  77. package/fesm2022/raqm-ui-popover.mjs.map +1 -0
  78. package/fesm2022/raqm-ui-progress.mjs +369 -0
  79. package/fesm2022/raqm-ui-progress.mjs.map +1 -0
  80. package/fesm2022/raqm-ui-questionnaire.mjs +1005 -0
  81. package/fesm2022/raqm-ui-questionnaire.mjs.map +1 -0
  82. package/fesm2022/raqm-ui-radio-group.mjs +151 -0
  83. package/fesm2022/raqm-ui-radio-group.mjs.map +1 -0
  84. package/fesm2022/raqm-ui-resizable.mjs +439 -0
  85. package/fesm2022/raqm-ui-resizable.mjs.map +1 -0
  86. package/fesm2022/raqm-ui-scroll-area.mjs +510 -0
  87. package/fesm2022/raqm-ui-scroll-area.mjs.map +1 -0
  88. package/fesm2022/raqm-ui-select.mjs +1073 -0
  89. package/fesm2022/raqm-ui-select.mjs.map +1 -0
  90. package/fesm2022/raqm-ui-separator.mjs +103 -0
  91. package/fesm2022/raqm-ui-separator.mjs.map +1 -0
  92. package/fesm2022/raqm-ui-sheet.mjs +411 -0
  93. package/fesm2022/raqm-ui-sheet.mjs.map +1 -0
  94. package/fesm2022/raqm-ui-sidebar.mjs +1784 -0
  95. package/fesm2022/raqm-ui-sidebar.mjs.map +1 -0
  96. package/fesm2022/raqm-ui-skeleton.mjs +50 -0
  97. package/fesm2022/raqm-ui-skeleton.mjs.map +1 -0
  98. package/fesm2022/raqm-ui-slider.mjs +609 -0
  99. package/fesm2022/raqm-ui-slider.mjs.map +1 -0
  100. package/fesm2022/raqm-ui-spinner.mjs +137 -0
  101. package/fesm2022/raqm-ui-spinner.mjs.map +1 -0
  102. package/fesm2022/raqm-ui-switch.mjs +109 -0
  103. package/fesm2022/raqm-ui-switch.mjs.map +1 -0
  104. package/fesm2022/raqm-ui-table.mjs +271 -0
  105. package/fesm2022/raqm-ui-table.mjs.map +1 -0
  106. package/fesm2022/raqm-ui-tabs.mjs +536 -0
  107. package/fesm2022/raqm-ui-tabs.mjs.map +1 -0
  108. package/fesm2022/raqm-ui-textarea.mjs +37 -0
  109. package/fesm2022/raqm-ui-textarea.mjs.map +1 -0
  110. package/fesm2022/raqm-ui-toast.mjs +918 -0
  111. package/fesm2022/raqm-ui-toast.mjs.map +1 -0
  112. package/fesm2022/raqm-ui-toggle-group.mjs +462 -0
  113. package/fesm2022/raqm-ui-toggle-group.mjs.map +1 -0
  114. package/fesm2022/raqm-ui-toggle.mjs +158 -0
  115. package/fesm2022/raqm-ui-toggle.mjs.map +1 -0
  116. package/fesm2022/raqm-ui-tooltip.mjs +1226 -0
  117. package/fesm2022/raqm-ui-tooltip.mjs.map +1 -0
  118. package/fesm2022/raqm-ui.mjs +50 -0
  119. package/input-otp/README.md +12 -0
  120. package/package.json +275 -3
  121. package/styles/theme.css +4322 -0
  122. package/types/raqm-ui-accordion.d.ts +124 -0
  123. package/types/raqm-ui-alert-dialog.d.ts +81 -0
  124. package/types/raqm-ui-alert.d.ts +29 -0
  125. package/types/raqm-ui-aspect-ratio.d.ts +13 -0
  126. package/types/raqm-ui-attachment.d.ts +72 -0
  127. package/types/raqm-ui-avatar.d.ts +67 -0
  128. package/types/raqm-ui-badge.d.ts +20 -0
  129. package/types/raqm-ui-breadcrumb.d.ts +35 -0
  130. package/types/raqm-ui-button-group.d.ts +27 -0
  131. package/types/raqm-ui-button.d.ts +80 -0
  132. package/types/raqm-ui-calendar.d.ts +359 -0
  133. package/types/raqm-ui-card.d.ts +34 -0
  134. package/types/raqm-ui-carousel.d.ts +81 -0
  135. package/types/raqm-ui-checkbox.d.ts +24 -0
  136. package/types/raqm-ui-collapsible.d.ts +72 -0
  137. package/types/raqm-ui-combobox.d.ts +405 -0
  138. package/types/raqm-ui-command.d.ts +256 -0
  139. package/types/raqm-ui-context-menu.d.ts +196 -0
  140. package/types/raqm-ui-dialog.d.ts +232 -0
  141. package/types/raqm-ui-drawer.d.ts +121 -0
  142. package/types/raqm-ui-dropdown-menu.d.ts +319 -0
  143. package/types/raqm-ui-empty.d.ts +35 -0
  144. package/types/raqm-ui-field.d.ts +88 -0
  145. package/types/raqm-ui-hover-card.d.ts +139 -0
  146. package/types/raqm-ui-input-group.d.ts +45 -0
  147. package/types/raqm-ui-input-otp.d.ts +197 -0
  148. package/types/raqm-ui-input.d.ts +16 -0
  149. package/types/raqm-ui-item.d.ts +71 -0
  150. package/types/raqm-ui-kbd.d.ts +12 -0
  151. package/types/raqm-ui-label.d.ts +6 -0
  152. package/types/raqm-ui-menubar.d.ts +159 -0
  153. package/types/raqm-ui-native-select.d.ts +23 -0
  154. package/types/raqm-ui-navigation-menu.d.ts +230 -0
  155. package/types/raqm-ui-overlay-internal.d.ts +5 -0
  156. package/types/raqm-ui-pagination.d.ts +84 -0
  157. package/types/raqm-ui-popover.d.ts +235 -0
  158. package/types/raqm-ui-progress.d.ts +79 -0
  159. package/types/raqm-ui-questionnaire.d.ts +217 -0
  160. package/types/raqm-ui-radio-group.d.ts +48 -0
  161. package/types/raqm-ui-resizable.d.ts +98 -0
  162. package/types/raqm-ui-scroll-area.d.ts +132 -0
  163. package/types/raqm-ui-select.d.ts +205 -0
  164. package/types/raqm-ui-separator.d.ts +21 -0
  165. package/types/raqm-ui-sheet.d.ts +79 -0
  166. package/types/raqm-ui-sidebar.d.ts +285 -0
  167. package/types/raqm-ui-skeleton.d.ts +6 -0
  168. package/types/raqm-ui-slider.d.ts +129 -0
  169. package/types/raqm-ui-spinner.d.ts +32 -0
  170. package/types/raqm-ui-switch.d.ts +32 -0
  171. package/types/raqm-ui-table.d.ts +36 -0
  172. package/types/raqm-ui-tabs.d.ts +154 -0
  173. package/types/raqm-ui-textarea.d.ts +6 -0
  174. package/types/raqm-ui-toast.d.ts +190 -0
  175. package/types/raqm-ui-toggle-group.d.ts +167 -0
  176. package/types/raqm-ui-toggle.d.ts +42 -0
  177. package/types/raqm-ui-tooltip.d.ts +207 -0
  178. package/types/raqm-ui.d.ts +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raqm-ui-input-otp.mjs","names":[],"sources":["../../../projects/ui/input-otp/input-otp-context.ts","../../../projects/ui/input-otp/input-otp-parts.ts","../../../projects/ui/input-otp/input-otp.ts","../../../projects/ui/input-otp/input-otp.component.html","../../../projects/ui/input-otp/public-api.ts"],"sourcesContent":["// Input OTP contract: the internal state the decorative slots mirror from the root.\r\n\r\nimport { InjectionToken, Signal } from '@angular/core';\r\n\r\n/** Internal state read by the decorative slots; only the native input is interactive. */\r\nexport interface RaqmInputOtpContext {\r\n readonly currentValue: Signal<string>;\r\n readonly invalidState: Signal<boolean>;\r\n isActive(index: number): boolean;\r\n}\r\nexport const RAQM_INPUT_OTP = new InjectionToken<RaqmInputOtpContext>('RaqmInputOtp');\r\n","// Input OTP presentation parts: the grouping, one mirrored slot and the decorative separator.\r\n// None of them is a tab stop; the root's single native `<input>` stays the only control.\r\n\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n computed,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\n\r\nimport { RAQM_INPUT_OTP } from './input-otp-context';\r\n\r\n/** Visual grouping of adjoining OTP slots; never introduces another tab stop. */\r\n@Directive({\r\n selector: 'raqm-input-otp-group, [raqm-input-otp-group]',\r\n host: {\r\n class: 'raqm-input-otp-group',\r\n 'data-raqm-slot': 'input-otp-group',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class RaqmInputOtpGroupDirective {}\r\n\r\n/** One indexed presentation slot mirrored from the root's single native input. */\r\n@Component({\r\n selector: 'raqm-input-otp-slot',\r\n template: `{{ char() }}\r\n @if (active() && !char()) {\r\n <span class=\"raqm-input-otp-slot__caret\"><span></span></span>\r\n }`,\r\n styleUrl: './input-otp-slot.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-input-otp-slot',\r\n 'data-raqm-slot': 'input-otp-slot',\r\n 'aria-hidden': 'true',\r\n '[attr.data-raqm-index]': 'index()',\r\n '[attr.data-raqm-active]': 'active()',\r\n '[attr.aria-invalid]': 'invalid() ? \"true\" : null',\r\n },\r\n})\r\nexport class RaqmInputOtpSlotComponent {\r\n readonly index = input.required<number>();\r\n readonly ariaInvalid = input<string | boolean | null>(null, { alias: 'aria-invalid' });\r\n private readonly root = inject(RAQM_INPUT_OTP);\r\n protected readonly char = computed(() => this.root.currentValue()[this.index()] ?? '');\r\n protected readonly active = computed(() => this.root.isActive(this.index()));\r\n protected readonly invalid = computed(\r\n () =>\r\n this.root.invalidState() ||\r\n (this.ariaInvalid() !== null &&\r\n this.ariaInvalid() !== false &&\r\n this.ariaInvalid() !== 'false'),\r\n );\r\n}\r\n\r\n/** Decorative separator, hidden from the input's accessible value. */\r\n@Component({\r\n selector: 'raqm-input-otp-separator',\r\n template: `<svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <path d=\"M5 12h14\" />\r\n </svg>`,\r\n styleUrl: './input-otp-separator.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-input-otp-separator',\r\n 'data-raqm-slot': 'input-otp-separator',\r\n role: 'separator',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class RaqmInputOtpSeparatorComponent {}\r\n","// Input OTP root: one native text input with projected slot presentation. The grouping, slot\r\n// and separator parts live in `input-otp-parts.ts` and re-export through this module.\r\n\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n afterEveryRender,\r\n afterRenderEffect,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\n\r\nimport { RAQM_INPUT_OTP } from './input-otp-context';\r\n\r\nexport { RAQM_INPUT_OTP } from './input-otp-context';\r\nexport type { RaqmInputOtpContext } from './input-otp-context';\r\nexport {\r\n RaqmInputOtpGroupDirective,\r\n RaqmInputOtpSeparatorComponent,\r\n RaqmInputOtpSlotComponent,\r\n} from './input-otp-parts';\r\n\r\n/**\r\n * One native text input with projected OTP slot presentation.\r\n *\r\n * @remarks\r\n * A composite widget, not a form control: no `ControlValueAccessor` ships. The projection adds no\r\n * tab stop — the single native `<input>` is the only control, and its forwarded `id` keeps\r\n * `<label for>` and the `aria-*` aliases on the real control.\r\n */\r\n@Component({\r\n selector: 'raqm-input-otp',\r\n templateUrl: './input-otp.component.html',\r\n styleUrl: './input-otp.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: RAQM_INPUT_OTP, useExisting: RaqmInputOtpComponent }],\r\n host: {\r\n class: 'raqm-input-otp',\r\n '[attr.id]': 'null',\r\n '[attr.aria-label]': 'null',\r\n '[attr.aria-labelledby]': 'null',\r\n '[attr.aria-describedby]': 'null',\r\n '[attr.aria-invalid]': 'null',\r\n '[attr.data-raqm-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-raqm-invalid]': 'invalidState() ? \"\" : null',\r\n translate: 'no',\r\n },\r\n})\r\nexport class RaqmInputOtpComponent {\r\n readonly maxLength = input.required<number>();\r\n readonly value = input<string | undefined>(undefined);\r\n readonly defaultValue = input('');\r\n /** Optional value pattern; pass `^\\\\d+$` to allow digits only. */\r\n readonly pattern = input<string | RegExp | undefined>(undefined);\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly required = input(false, { transform: booleanAttribute });\r\n readonly readOnly = input(false, { transform: booleanAttribute });\r\n readonly invalid = input(false, { transform: booleanAttribute });\r\n readonly id = input<string | null>(null);\r\n readonly name = input<string | null>(null);\r\n readonly form = input<string | null>(null);\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\r\n readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\r\n readonly ariaInvalid = input<string | boolean | null>(null, { alias: 'aria-invalid' });\r\n readonly autoComplete = input('one-time-code');\r\n readonly inputMode = input('numeric');\r\n readonly pasteTransformer = input<((text: string) => string) | undefined>(undefined);\r\n readonly valueChange = output<string>();\r\n readonly complete = output<string>();\r\n\r\n private readonly localValue = signal<string | undefined>(undefined);\r\n private readonly control = viewChild.required<ElementRef<HTMLInputElement>>('control');\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private composing = false;\r\n private pointerStart: { x: number; y: number } | null = null;\r\n readonly focused = signal(false);\r\n readonly selectionStart = signal(0);\r\n readonly selectionEnd = signal(0);\r\n readonly length = computed(() => Math.max(1, Math.floor(this.maxLength()) || 1));\r\n readonly currentValue = computed(() =>\r\n this.clean(this.value() ?? this.localValue() ?? this.defaultValue()),\r\n );\r\n readonly patternSource = computed(() => {\r\n const pattern = this.pattern();\r\n return typeof pattern === 'string' ? pattern : (pattern?.source ?? null);\r\n });\r\n readonly invalidState = computed(\r\n () =>\r\n this.invalid() ||\r\n (this.ariaInvalid() !== null &&\r\n this.ariaInvalid() !== false &&\r\n this.ariaInvalid() !== 'false'),\r\n );\r\n\r\n constructor() {\r\n afterEveryRender(() => {\r\n const control = this.control().nativeElement;\r\n if (!this.composing && control.value !== this.currentValue()) {\r\n control.value = this.currentValue();\r\n this.syncSelection();\r\n }\r\n });\r\n afterRenderEffect((cleanup) => {\r\n const control = this.control().nativeElement;\r\n const document = control.ownerDocument;\r\n const selection = () => this.syncSelection();\r\n document.addEventListener('selectionchange', selection);\r\n const form = control.form;\r\n const reset = (event: Event) =>\r\n queueMicrotask(() => {\r\n if (!event.defaultPrevented && !this.destroyRef.destroyed) {\r\n if (this.value() === undefined) this.localValue.set(this.clean(this.defaultValue()));\r\n control.value = this.currentValue();\r\n this.syncSelection();\r\n }\r\n });\r\n form?.addEventListener('reset', reset);\r\n cleanup(() => {\r\n document.removeEventListener('selectionchange', selection);\r\n form?.removeEventListener('reset', reset);\r\n });\r\n });\r\n }\r\n\r\n private matches(value: string): boolean {\r\n // Cloned so a stateful /g or /y lastIndex cannot affect later edits.\r\n const pattern = this.pattern();\r\n if (pattern === undefined) return true;\r\n const regex =\r\n typeof pattern === 'string'\r\n ? new RegExp(pattern)\r\n : new RegExp(pattern.source, pattern.flags.replace(/[gy]/g, ''));\r\n return value === '' || regex.test(value);\r\n }\r\n\r\n private clean(value: string): string {\r\n const capped = value.slice(0, this.length());\r\n if (this.matches(capped)) return capped;\r\n const filtered = Array.from(value)\r\n .filter((char) => this.matches(char))\r\n .join('')\r\n .slice(0, this.length());\r\n return this.matches(filtered) ? filtered : '';\r\n }\r\n\r\n private commit(value: string, caret: number): void {\r\n const previous = this.currentValue();\r\n if (value !== previous) {\r\n if (this.value() === undefined) this.localValue.set(value);\r\n this.valueChange.emit(value);\r\n if (previous.length < this.length() && value.length === this.length())\r\n this.complete.emit(value);\r\n }\r\n const control = this.control().nativeElement;\r\n // Parent bindings settle on the next render; reconciliation never steals focus.\r\n control.value = value;\r\n const position = Math.min(caret, control.value.length);\r\n control.setSelectionRange(position, position);\r\n this.syncSelection();\r\n }\r\n\r\n protected onInput(event: Event): void {\r\n if (this.composing || (event as InputEvent).isComposing) return;\r\n const control = this.control().nativeElement;\r\n if (this.disabled() || this.readOnly()) {\r\n control.value = this.currentValue();\r\n return;\r\n }\r\n const raw = control.value;\r\n const caret = this.clean(raw.slice(0, control.selectionStart ?? raw.length)).length;\r\n const next = this.clean(raw);\r\n // Entirely invalid edits restore the old value rather than erasing a valid code.\r\n this.commit(raw !== '' && next === '' ? this.currentValue() : next, caret);\r\n }\r\n\r\n protected onPaste(event: ClipboardEvent): void {\r\n if (!event.clipboardData || this.disabled() || this.readOnly()) return;\r\n event.preventDefault();\r\n const control = this.control().nativeElement;\r\n const raw = event.clipboardData.getData('text/plain');\r\n const pasted = this.clean(this.pasteTransformer()?.(raw) ?? raw);\r\n // Invalid clipboard content never deletes the selected text.\r\n if (!pasted) return;\r\n const current = this.currentValue();\r\n const start = Math.min(control.selectionStart ?? current.length, current.length);\r\n const end = Math.min(control.selectionEnd ?? start, current.length);\r\n const available = this.length() - (current.length - (end - start));\r\n const inserted = pasted.slice(0, Math.max(0, available));\r\n const next = current.slice(0, start) + inserted + current.slice(end);\r\n if (this.matches(next)) this.commit(next, start + inserted.length);\r\n }\r\n\r\n protected onCompositionStart(): void {\r\n this.composing = true;\r\n }\r\n protected onCompositionEnd(event: Event): void {\r\n this.composing = false;\r\n this.onInput(event);\r\n }\r\n\r\n protected onFocus(): void {\r\n this.focused.set(true);\r\n const control = this.control().nativeElement;\r\n control.setSelectionRange(\r\n Math.min(control.value.length, this.length() - 1),\r\n control.value.length,\r\n );\r\n this.syncSelection();\r\n }\r\n\r\n protected onBlur(): void {\r\n this.focused.set(false);\r\n }\r\n\r\n protected onPointerDown(event: PointerEvent): void {\r\n this.pointerStart = { x: event.clientX, y: event.clientY };\r\n }\r\n\r\n protected onClick(event: MouseEvent): void {\r\n if (this.disabled() || event.detail === 0) return;\r\n const control = this.control().nativeElement;\r\n // Native drag and double/triple-click selections are left untouched.\r\n if (\r\n event.detail > 1 ||\r\n (this.pointerStart &&\r\n (Math.abs(event.clientX - this.pointerStart.x) > 4 ||\r\n Math.abs(event.clientY - this.pointerStart.y) > 4))\r\n )\r\n return;\r\n const slots = Array.from(\r\n this.host.nativeElement.querySelectorAll<HTMLElement>('[data-raqm-slot=\"input-otp-slot\"]'),\r\n );\r\n const target = slots.find((slot) => {\r\n const rect = slot.getBoundingClientRect();\r\n return (\r\n event.clientX >= rect.left &&\r\n event.clientX <= rect.right &&\r\n event.clientY >= rect.top &&\r\n event.clientY <= rect.bottom\r\n );\r\n });\r\n if (target) {\r\n const index = Math.min(Number(target.dataset['index']), control.value.length);\r\n control.setSelectionRange(index, Math.min(index + 1, control.value.length));\r\n this.syncSelection();\r\n }\r\n }\r\n\r\n protected syncSelection(): void {\r\n const control = this.control().nativeElement;\r\n if (control.ownerDocument.activeElement !== control || this.composing) return;\r\n let start = control.selectionStart ?? 0;\r\n let end = control.selectionEnd ?? start;\r\n // Existing characters are selected for replacement; the empty trailing slot stays in insert mode.\r\n if (\r\n start === end &&\r\n control.value.length > 0 &&\r\n !(start === control.value.length && start < this.length())\r\n ) {\r\n const backwards = start < this.selectionEnd();\r\n if (start === this.length() || (backwards && start > 0)) start -= 1;\r\n end = Math.min(start + 1, control.value.length);\r\n control.setSelectionRange(start, end, backwards ? 'backward' : 'forward');\r\n }\r\n this.selectionStart.set(start);\r\n this.selectionEnd.set(end);\r\n }\r\n\r\n isActive(index: number): boolean {\r\n return (\r\n !this.disabled() &&\r\n this.focused() &&\r\n (this.selectionStart() === this.selectionEnd()\r\n ? index === this.selectionStart()\r\n : index >= this.selectionStart() && index < this.selectionEnd())\r\n );\r\n }\r\n}\r\n","<ng-content />\r\n<input\r\n #control\r\n class=\"raqm-input-otp__input\"\r\n data-raqm-slot=\"input-otp\"\r\n type=\"text\"\r\n [id]=\"id()\"\r\n [value]=\"currentValue()\"\r\n [attr.maxlength]=\"length()\"\r\n [attr.pattern]=\"patternSource()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n [readOnly]=\"readOnly()\"\r\n [attr.name]=\"name()\"\r\n [attr.form]=\"form()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-labelledby]=\"ariaLabelledby()\"\r\n [attr.aria-describedby]=\"ariaDescribedby()\"\r\n [attr.aria-invalid]=\"invalidState() ? ariaInvalid() || 'true' : null\"\r\n [attr.autocomplete]=\"autoComplete()\"\r\n [attr.inputmode]=\"inputMode()\"\r\n [spellcheck]=\"false\"\r\n autocapitalize=\"off\"\r\n (input)=\"onInput($event)\"\r\n (change)=\"onInput($event)\"\r\n (paste)=\"onPaste($event)\"\r\n (compositionstart)=\"onCompositionStart()\"\r\n (compositionend)=\"onCompositionEnd($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n (click)=\"onClick($event)\"\r\n (pointerdown)=\"onPointerDown($event)\"\r\n (select)=\"syncSelection()\"\r\n (keyup)=\"syncSelection()\"\r\n/>\r\n","// Public API for `@raqm/ui/input-otp`; the root entry point re-exports these symbols.\r\nimport {\r\n RaqmInputOtpComponent,\r\n RaqmInputOtpGroupDirective,\r\n RaqmInputOtpSeparatorComponent,\r\n RaqmInputOtpSlotComponent,\r\n} from './input-otp';\r\n\r\nexport {\r\n RaqmInputOtpComponent,\r\n RaqmInputOtpGroupDirective,\r\n RaqmInputOtpSeparatorComponent,\r\n RaqmInputOtpSlotComponent,\r\n};\r\n\r\n// The family imports as `imports: [RaqmInputOtp]`.\r\nexport const RaqmInputOtp = [\r\n RaqmInputOtpComponent,\r\n RaqmInputOtpGroupDirective,\r\n RaqmInputOtpSlotComponent,\r\n RaqmInputOtpSeparatorComponent,\r\n] as const;\r\n"],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import * as i0 from "@angular/core";
2
+ import { Directive, ElementRef, computed, inject, input, isDevMode } from "@angular/core";
3
+ var RaqmInput = class RaqmInput {
4
+ host = inject(ElementRef);
5
+ authoredType = this.host.nativeElement.getAttribute("type");
6
+ inputType = input("", {
7
+ ...ngDevMode ? { debugName: "inputType" } : /* istanbul ignore next */ {},
8
+ alias: "raqm-input"
9
+ });
10
+ resolvedType = computed(() => {
11
+ const marker = this.inputType().trim();
12
+ const authored = this.authoredType;
13
+ if (authored !== null) {
14
+ if (isDevMode() && marker !== "" && marker !== authored) throw new Error(`RaqmInput: conflicting types. Native type="${authored}" and raqm-input="${marker}" were both authored.`);
15
+ return authored;
16
+ }
17
+ return marker === "" ? "text" : marker;
18
+ }, ...ngDevMode ? [{ debugName: "resolvedType" }] : /* istanbul ignore next */ []);
19
+ static ɵfac = i0.ɵɵngDeclareFactory({
20
+ minVersion: "12.0.0",
21
+ version: "22.2.2",
22
+ ngImport: i0,
23
+ type: RaqmInput,
24
+ deps: [],
25
+ target: i0.ɵɵFactoryTarget.Directive
26
+ });
27
+ static ɵdir = i0.ɵɵngDeclareDirective({
28
+ minVersion: "17.1.0",
29
+ version: "22.2.2",
30
+ type: RaqmInput,
31
+ isStandalone: true,
32
+ selector: "input[raqm-input]",
33
+ inputs: { inputType: {
34
+ classPropertyName: "inputType",
35
+ publicName: "raqm-input",
36
+ isSignal: true,
37
+ isRequired: false,
38
+ transformFunction: null
39
+ } },
40
+ host: {
41
+ properties: { "attr.type": "resolvedType()" },
42
+ classAttribute: "raqm-input"
43
+ },
44
+ ngImport: i0
45
+ });
46
+ };
47
+ i0.ɵɵngDeclareClassMetadata({
48
+ minVersion: "12.0.0",
49
+ version: "22.2.2",
50
+ ngImport: i0,
51
+ type: RaqmInput,
52
+ decorators: [{
53
+ type: Directive,
54
+ args: [{
55
+ selector: "input[raqm-input]",
56
+ host: {
57
+ class: "raqm-input",
58
+ "[attr.type]": "resolvedType()"
59
+ }
60
+ }]
61
+ }],
62
+ propDecorators: { inputType: [{
63
+ type: i0.Input,
64
+ args: [{
65
+ isSignal: true,
66
+ alias: "raqm-input",
67
+ required: false
68
+ }]
69
+ }] }
70
+ });
71
+ export { RaqmInput };
72
+
73
+ //# sourceMappingURL=raqm-ui-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raqm-ui-input.mjs","names":[],"sources":["../../../projects/ui/input/input.ts"],"sourcesContent":["import { Directive, ElementRef, computed, inject, input, isDevMode } from '@angular/core';\r\n\r\n/** Native `<input>` host; the marker value is the input type unless a static `type` wins. */\r\n@Directive({\r\n selector: 'input[raqm-input]',\r\n host: {\r\n class: 'raqm-input',\r\n '[attr.type]': 'resolvedType()',\r\n },\r\n})\r\nexport class RaqmInput {\r\n private readonly host = inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n\r\n // Authored first, so markup wins; numeric/range controls need it, and a conflict throws in dev.\r\n private readonly authoredType = this.host.nativeElement.getAttribute('type');\r\n\r\n readonly inputType = input('', { alias: 'raqm-input' });\r\n\r\n protected readonly resolvedType = computed(() => {\r\n const marker = this.inputType().trim();\r\n const authored = this.authoredType;\r\n\r\n if (authored !== null) {\r\n if (isDevMode() && marker !== '' && marker !== authored) {\r\n throw new Error(\r\n `RaqmInput: conflicting types. Native type=\"${authored}\" and raqm-input=\"${marker}\" were both authored.`,\r\n );\r\n }\r\n return authored;\r\n }\r\n\r\n return marker === '' ? 'text' : marker;\r\n });\r\n}\r\n"],"mappings":";;AAUA,IAAa,YAAb,MAAa,UAAS;CACH,OAAO,OAAqC,UAAU;CAGtD,eAAe,KAAK,KAAK,cAAc,aAAa,MAAM;CAElE,YAAY,MAAM,IAAE;EAAA,GAAA,YAAA,EAAA,WAAA,YAAA,+BAAA,CAAA;EAAI,OAAO;CAAY,CAAA;CAEjC,eAAe,eAAc;EAC9C,MAAM,SAAS,KAAK,UAAS,CAAE,CAAC,KAAI;EACpC,MAAM,WAAW,KAAK;EAEtB,IAAI,aAAa,MAAM;GACrB,IAAI,UAAS,KAAM,WAAW,MAAM,WAAW,UAC7C,MAAM,IAAI,MACR,8CAA8C,SAAQ,oBAAqB,OAAM,sBAAuB;GAG5G,OAAO;EACT;EAEA,OAAO,WAAW,KAAK,SAAS;CAClC,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;CAtBS,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAS,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAT,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAS,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,WAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,MAAA;GAAA,YAAA,EAAA,aAAA,iBAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;CAAA,CAAA;;AAAT,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAS,YAAA,CAAA;EAPrB,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,MAAM;IACJ,OAAO;IACP,eAAe;GAChB;EACF,CAAA"}
@@ -0,0 +1,495 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, Directive, booleanAttribute, computed, input } from "@angular/core";
3
+ var RaqmItemComponent = class RaqmItemComponent {
4
+ variant = input("default", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
5
+ small = input(false, {
6
+ ...ngDevMode ? { debugName: "small" } : /* istanbul ignore next */ {},
7
+ transform: booleanAttribute
8
+ });
9
+ extraSmall = input(false, {
10
+ ...ngDevMode ? { debugName: "extraSmall" } : /* istanbul ignore next */ {},
11
+ alias: "extra-small",
12
+ transform: booleanAttribute
13
+ });
14
+ media = input("default", ...ngDevMode ? [{ debugName: "media" }] : /* istanbul ignore next */ []);
15
+ activeSize = computed(() => {
16
+ const small = this.small();
17
+ const extraSmall = this.extraSmall();
18
+ if (small && extraSmall) throw new Error("raqm-item: use either small or extra-small, not both.");
19
+ return extraSmall ? "extra-small" : small ? "small" : "default";
20
+ }, ...ngDevMode ? [{ debugName: "activeSize" }] : /* istanbul ignore next */ []);
21
+ static ɵfac = i0.ɵɵngDeclareFactory({
22
+ minVersion: "12.0.0",
23
+ version: "22.2.2",
24
+ ngImport: i0,
25
+ type: RaqmItemComponent,
26
+ deps: [],
27
+ target: i0.ɵɵFactoryTarget.Component
28
+ });
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({
30
+ minVersion: "17.1.0",
31
+ version: "22.2.2",
32
+ type: RaqmItemComponent,
33
+ isStandalone: true,
34
+ selector: "raqm-item, a[raqm-item], li[raqm-item]",
35
+ inputs: {
36
+ variant: {
37
+ classPropertyName: "variant",
38
+ publicName: "variant",
39
+ isSignal: true,
40
+ isRequired: false,
41
+ transformFunction: null
42
+ },
43
+ small: {
44
+ classPropertyName: "small",
45
+ publicName: "small",
46
+ isSignal: true,
47
+ isRequired: false,
48
+ transformFunction: null
49
+ },
50
+ extraSmall: {
51
+ classPropertyName: "extraSmall",
52
+ publicName: "extra-small",
53
+ isSignal: true,
54
+ isRequired: false,
55
+ transformFunction: null
56
+ },
57
+ media: {
58
+ classPropertyName: "media",
59
+ publicName: "media",
60
+ isSignal: true,
61
+ isRequired: false,
62
+ transformFunction: null
63
+ }
64
+ },
65
+ host: {
66
+ properties: {
67
+ "attr.data-raqm-variant": "variant()",
68
+ "attr.data-raqm-small": "activeSize() === \"small\" ? \"\" : null",
69
+ "attr.data-raqm-extra-small": "activeSize() === \"extra-small\" ? \"\" : null",
70
+ "attr.data-raqm-media": "media()"
71
+ },
72
+ classAttribute: "raqm-item"
73
+ },
74
+ ngImport: i0,
75
+ template: "<ng-content />",
76
+ isInline: true,
77
+ styles: [":host{box-sizing:border-box;display:flex;flex-wrap:wrap;align-items:center;inline-size:100%;border:1px solid transparent;border-radius:var(--raqm-radius-lg);gap:calc(var(--raqm-spacing) * 2.5);padding-block:calc(var(--raqm-spacing) * 2.5);padding-inline:calc(var(--raqm-spacing) * 3);font-size:var(--raqm-font-size-sm);line-height:calc(var(--raqm-spacing) * 5);outline:none;transition-property:color,background-color,border-color;transition-duration:var(--raqm-duration-fast);transition-timing-function:var(--raqm-ease-standard)}:host(a){color:inherit;text-decoration:none}:host(a):hover{background-color:var(--raqm-muted)}:host([data-raqm-variant=default]){border-color:transparent}:host([data-raqm-variant=outline]){border-color:var(--raqm-border)}:host([data-raqm-variant=muted]){background-color:color-mix(in oklch,var(--raqm-muted) 50%,transparent);border-color:transparent}:host(:focus-visible){border-color:var(--raqm-ring);box-shadow:0 0 0 3px var(--raqm-focus-ring-color)}@media(forced-colors:active){:host(:focus-visible){outline:2px solid Highlight;outline-offset:2px}}:host([data-raqm-extra-small]){gap:calc(var(--raqm-spacing) * 2);padding-block:calc(var(--raqm-spacing) * 2);padding-inline:calc(var(--raqm-spacing) * 2.5)}\n"],
78
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
79
+ });
80
+ };
81
+ i0.ɵɵngDeclareClassMetadata({
82
+ minVersion: "12.0.0",
83
+ version: "22.2.2",
84
+ ngImport: i0,
85
+ type: RaqmItemComponent,
86
+ decorators: [{
87
+ type: Component,
88
+ args: [{
89
+ selector: "raqm-item, a[raqm-item], li[raqm-item]",
90
+ template: "<ng-content />",
91
+ changeDetection: ChangeDetectionStrategy.OnPush,
92
+ host: {
93
+ class: "raqm-item",
94
+ "[attr.data-raqm-variant]": "variant()",
95
+ "[attr.data-raqm-small]": "activeSize() === \"small\" ? \"\" : null",
96
+ "[attr.data-raqm-extra-small]": "activeSize() === \"extra-small\" ? \"\" : null",
97
+ "[attr.data-raqm-media]": "media()"
98
+ },
99
+ styles: [":host{box-sizing:border-box;display:flex;flex-wrap:wrap;align-items:center;inline-size:100%;border:1px solid transparent;border-radius:var(--raqm-radius-lg);gap:calc(var(--raqm-spacing) * 2.5);padding-block:calc(var(--raqm-spacing) * 2.5);padding-inline:calc(var(--raqm-spacing) * 3);font-size:var(--raqm-font-size-sm);line-height:calc(var(--raqm-spacing) * 5);outline:none;transition-property:color,background-color,border-color;transition-duration:var(--raqm-duration-fast);transition-timing-function:var(--raqm-ease-standard)}:host(a){color:inherit;text-decoration:none}:host(a):hover{background-color:var(--raqm-muted)}:host([data-raqm-variant=default]){border-color:transparent}:host([data-raqm-variant=outline]){border-color:var(--raqm-border)}:host([data-raqm-variant=muted]){background-color:color-mix(in oklch,var(--raqm-muted) 50%,transparent);border-color:transparent}:host(:focus-visible){border-color:var(--raqm-ring);box-shadow:0 0 0 3px var(--raqm-focus-ring-color)}@media(forced-colors:active){:host(:focus-visible){outline:2px solid Highlight;outline-offset:2px}}:host([data-raqm-extra-small]){gap:calc(var(--raqm-spacing) * 2);padding-block:calc(var(--raqm-spacing) * 2);padding-inline:calc(var(--raqm-spacing) * 2.5)}\n"]
100
+ }]
101
+ }],
102
+ propDecorators: {
103
+ variant: [{
104
+ type: i0.Input,
105
+ args: [{
106
+ isSignal: true,
107
+ alias: "variant",
108
+ required: false
109
+ }]
110
+ }],
111
+ small: [{
112
+ type: i0.Input,
113
+ args: [{
114
+ isSignal: true,
115
+ alias: "small",
116
+ required: false
117
+ }]
118
+ }],
119
+ extraSmall: [{
120
+ type: i0.Input,
121
+ args: [{
122
+ isSignal: true,
123
+ alias: "extra-small",
124
+ required: false
125
+ }]
126
+ }],
127
+ media: [{
128
+ type: i0.Input,
129
+ args: [{
130
+ isSignal: true,
131
+ alias: "media",
132
+ required: false
133
+ }]
134
+ }]
135
+ }
136
+ });
137
+ var RaqmItemGroupComponent = class RaqmItemGroupComponent {
138
+ static ɵfac = i0.ɵɵngDeclareFactory({
139
+ minVersion: "12.0.0",
140
+ version: "22.2.2",
141
+ ngImport: i0,
142
+ type: RaqmItemGroupComponent,
143
+ deps: [],
144
+ target: i0.ɵɵFactoryTarget.Component
145
+ });
146
+ static ɵcmp = i0.ɵɵngDeclareComponent({
147
+ minVersion: "14.0.0",
148
+ version: "22.2.2",
149
+ type: RaqmItemGroupComponent,
150
+ isStandalone: true,
151
+ selector: "ul[raqm-item-group], ol[raqm-item-group]",
152
+ host: { classAttribute: "raqm-item-group" },
153
+ ngImport: i0,
154
+ template: "<ng-content />",
155
+ isInline: true,
156
+ styles: [":host{display:flex;flex-direction:column;inline-size:100%;gap:calc(var(--raqm-spacing) * 4);margin:0;padding:0;list-style:none}\n"],
157
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
158
+ });
159
+ };
160
+ i0.ɵɵngDeclareClassMetadata({
161
+ minVersion: "12.0.0",
162
+ version: "22.2.2",
163
+ ngImport: i0,
164
+ type: RaqmItemGroupComponent,
165
+ decorators: [{
166
+ type: Component,
167
+ args: [{
168
+ selector: "ul[raqm-item-group], ol[raqm-item-group]",
169
+ template: "<ng-content />",
170
+ changeDetection: ChangeDetectionStrategy.OnPush,
171
+ host: { class: "raqm-item-group" },
172
+ styles: [":host{display:flex;flex-direction:column;inline-size:100%;gap:calc(var(--raqm-spacing) * 4);margin:0;padding:0;list-style:none}\n"]
173
+ }]
174
+ }]
175
+ });
176
+ var RaqmItemSeparatorDirective = class RaqmItemSeparatorDirective {
177
+ static ɵfac = i0.ɵɵngDeclareFactory({
178
+ minVersion: "12.0.0",
179
+ version: "22.2.2",
180
+ ngImport: i0,
181
+ type: RaqmItemSeparatorDirective,
182
+ deps: [],
183
+ target: i0.ɵɵFactoryTarget.Directive
184
+ });
185
+ static ɵdir = i0.ɵɵngDeclareDirective({
186
+ minVersion: "14.0.0",
187
+ version: "22.2.2",
188
+ type: RaqmItemSeparatorDirective,
189
+ isStandalone: true,
190
+ selector: "raqm-separator[raqm-item-separator]",
191
+ host: { classAttribute: "raqm-item-separator" },
192
+ ngImport: i0
193
+ });
194
+ };
195
+ i0.ɵɵngDeclareClassMetadata({
196
+ minVersion: "12.0.0",
197
+ version: "22.2.2",
198
+ ngImport: i0,
199
+ type: RaqmItemSeparatorDirective,
200
+ decorators: [{
201
+ type: Directive,
202
+ args: [{
203
+ selector: "raqm-separator[raqm-item-separator]",
204
+ host: { class: "raqm-item-separator" }
205
+ }]
206
+ }]
207
+ });
208
+ var RaqmItemMediaComponent = class RaqmItemMediaComponent {
209
+ static ɵfac = i0.ɵɵngDeclareFactory({
210
+ minVersion: "12.0.0",
211
+ version: "22.2.2",
212
+ ngImport: i0,
213
+ type: RaqmItemMediaComponent,
214
+ deps: [],
215
+ target: i0.ɵɵFactoryTarget.Component
216
+ });
217
+ static ɵcmp = i0.ɵɵngDeclareComponent({
218
+ minVersion: "14.0.0",
219
+ version: "22.2.2",
220
+ type: RaqmItemMediaComponent,
221
+ isStandalone: true,
222
+ selector: "raqm-item-media",
223
+ host: { classAttribute: "raqm-item-media" },
224
+ ngImport: i0,
225
+ template: "<ng-content />",
226
+ isInline: true,
227
+ styles: [":host{display:flex;flex-shrink:0;align-items:center;justify-content:center;gap:calc(var(--raqm-spacing) * 2)}\n"],
228
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
229
+ });
230
+ };
231
+ i0.ɵɵngDeclareClassMetadata({
232
+ minVersion: "12.0.0",
233
+ version: "22.2.2",
234
+ ngImport: i0,
235
+ type: RaqmItemMediaComponent,
236
+ decorators: [{
237
+ type: Component,
238
+ args: [{
239
+ selector: "raqm-item-media",
240
+ template: "<ng-content />",
241
+ changeDetection: ChangeDetectionStrategy.OnPush,
242
+ host: { class: "raqm-item-media" },
243
+ styles: [":host{display:flex;flex-shrink:0;align-items:center;justify-content:center;gap:calc(var(--raqm-spacing) * 2)}\n"]
244
+ }]
245
+ }]
246
+ });
247
+ var RaqmItemContentComponent = class RaqmItemContentComponent {
248
+ static ɵfac = i0.ɵɵngDeclareFactory({
249
+ minVersion: "12.0.0",
250
+ version: "22.2.2",
251
+ ngImport: i0,
252
+ type: RaqmItemContentComponent,
253
+ deps: [],
254
+ target: i0.ɵɵFactoryTarget.Component
255
+ });
256
+ static ɵcmp = i0.ɵɵngDeclareComponent({
257
+ minVersion: "14.0.0",
258
+ version: "22.2.2",
259
+ type: RaqmItemContentComponent,
260
+ isStandalone: true,
261
+ selector: "raqm-item-content",
262
+ host: { classAttribute: "raqm-item-content" },
263
+ ngImport: i0,
264
+ template: "<ng-content />",
265
+ isInline: true,
266
+ styles: [":host{display:flex;flex:1 1 0%;flex-direction:column;min-inline-size:0;gap:calc(var(--raqm-spacing) * 1)}\n"],
267
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
268
+ });
269
+ };
270
+ i0.ɵɵngDeclareClassMetadata({
271
+ minVersion: "12.0.0",
272
+ version: "22.2.2",
273
+ ngImport: i0,
274
+ type: RaqmItemContentComponent,
275
+ decorators: [{
276
+ type: Component,
277
+ args: [{
278
+ selector: "raqm-item-content",
279
+ template: "<ng-content />",
280
+ changeDetection: ChangeDetectionStrategy.OnPush,
281
+ host: { class: "raqm-item-content" },
282
+ styles: [":host{display:flex;flex:1 1 0%;flex-direction:column;min-inline-size:0;gap:calc(var(--raqm-spacing) * 1)}\n"]
283
+ }]
284
+ }]
285
+ });
286
+ var RaqmItemTitleComponent = class RaqmItemTitleComponent {
287
+ static ɵfac = i0.ɵɵngDeclareFactory({
288
+ minVersion: "12.0.0",
289
+ version: "22.2.2",
290
+ ngImport: i0,
291
+ type: RaqmItemTitleComponent,
292
+ deps: [],
293
+ target: i0.ɵɵFactoryTarget.Component
294
+ });
295
+ static ɵcmp = i0.ɵɵngDeclareComponent({
296
+ minVersion: "14.0.0",
297
+ version: "22.2.2",
298
+ type: RaqmItemTitleComponent,
299
+ isStandalone: true,
300
+ selector: "raqm-item-title, h1[raqm-item-title], h2[raqm-item-title], h3[raqm-item-title], h4[raqm-item-title], h5[raqm-item-title], h6[raqm-item-title]",
301
+ host: { classAttribute: "raqm-item-title" },
302
+ ngImport: i0,
303
+ template: "<ng-content />",
304
+ isInline: true,
305
+ styles: [":host{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden;inline-size:fit-content;max-inline-size:100%;font-size:var(--raqm-font-size-sm);font-weight:var(--raqm-font-weight-medium);line-height:var(--raqm-line-height-snug);text-underline-offset:4px}:host:is(h1,h2,h3,h4,h5,h6){margin:0}\n"],
306
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
307
+ });
308
+ };
309
+ i0.ɵɵngDeclareClassMetadata({
310
+ minVersion: "12.0.0",
311
+ version: "22.2.2",
312
+ ngImport: i0,
313
+ type: RaqmItemTitleComponent,
314
+ decorators: [{
315
+ type: Component,
316
+ args: [{
317
+ selector: "raqm-item-title, h1[raqm-item-title], h2[raqm-item-title], h3[raqm-item-title], h4[raqm-item-title], h5[raqm-item-title], h6[raqm-item-title]",
318
+ template: "<ng-content />",
319
+ changeDetection: ChangeDetectionStrategy.OnPush,
320
+ host: { class: "raqm-item-title" },
321
+ styles: [":host{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden;inline-size:fit-content;max-inline-size:100%;font-size:var(--raqm-font-size-sm);font-weight:var(--raqm-font-weight-medium);line-height:var(--raqm-line-height-snug);text-underline-offset:4px}:host:is(h1,h2,h3,h4,h5,h6){margin:0}\n"]
322
+ }]
323
+ }]
324
+ });
325
+ var RaqmItemDescriptionComponent = class RaqmItemDescriptionComponent {
326
+ static ɵfac = i0.ɵɵngDeclareFactory({
327
+ minVersion: "12.0.0",
328
+ version: "22.2.2",
329
+ ngImport: i0,
330
+ type: RaqmItemDescriptionComponent,
331
+ deps: [],
332
+ target: i0.ɵɵFactoryTarget.Component
333
+ });
334
+ static ɵcmp = i0.ɵɵngDeclareComponent({
335
+ minVersion: "14.0.0",
336
+ version: "22.2.2",
337
+ type: RaqmItemDescriptionComponent,
338
+ isStandalone: true,
339
+ selector: "raqm-item-description, p[raqm-item-description]",
340
+ host: { classAttribute: "raqm-item-description" },
341
+ ngImport: i0,
342
+ template: "<ng-content />",
343
+ isInline: true,
344
+ styles: [":host{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;margin:0;color:var(--raqm-muted-foreground);font-weight:400;font-size:var(--raqm-font-size-sm);line-height:var(--raqm-line-height-normal);text-align:start}\n"],
345
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
346
+ });
347
+ };
348
+ i0.ɵɵngDeclareClassMetadata({
349
+ minVersion: "12.0.0",
350
+ version: "22.2.2",
351
+ ngImport: i0,
352
+ type: RaqmItemDescriptionComponent,
353
+ decorators: [{
354
+ type: Component,
355
+ args: [{
356
+ selector: "raqm-item-description, p[raqm-item-description]",
357
+ template: "<ng-content />",
358
+ changeDetection: ChangeDetectionStrategy.OnPush,
359
+ host: { class: "raqm-item-description" },
360
+ styles: [":host{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;margin:0;color:var(--raqm-muted-foreground);font-weight:400;font-size:var(--raqm-font-size-sm);line-height:var(--raqm-line-height-normal);text-align:start}\n"]
361
+ }]
362
+ }]
363
+ });
364
+ var RaqmItemActionsComponent = class RaqmItemActionsComponent {
365
+ static ɵfac = i0.ɵɵngDeclareFactory({
366
+ minVersion: "12.0.0",
367
+ version: "22.2.2",
368
+ ngImport: i0,
369
+ type: RaqmItemActionsComponent,
370
+ deps: [],
371
+ target: i0.ɵɵFactoryTarget.Component
372
+ });
373
+ static ɵcmp = i0.ɵɵngDeclareComponent({
374
+ minVersion: "14.0.0",
375
+ version: "22.2.2",
376
+ type: RaqmItemActionsComponent,
377
+ isStandalone: true,
378
+ selector: "raqm-item-actions",
379
+ host: { classAttribute: "raqm-item-actions" },
380
+ ngImport: i0,
381
+ template: "<ng-content />",
382
+ isInline: true,
383
+ styles: [":host{display:flex;align-items:center;gap:calc(var(--raqm-spacing) * 2)}\n"],
384
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
385
+ });
386
+ };
387
+ i0.ɵɵngDeclareClassMetadata({
388
+ minVersion: "12.0.0",
389
+ version: "22.2.2",
390
+ ngImport: i0,
391
+ type: RaqmItemActionsComponent,
392
+ decorators: [{
393
+ type: Component,
394
+ args: [{
395
+ selector: "raqm-item-actions",
396
+ template: "<ng-content />",
397
+ changeDetection: ChangeDetectionStrategy.OnPush,
398
+ host: { class: "raqm-item-actions" },
399
+ styles: [":host{display:flex;align-items:center;gap:calc(var(--raqm-spacing) * 2)}\n"]
400
+ }]
401
+ }]
402
+ });
403
+ var RaqmItemHeaderComponent = class RaqmItemHeaderComponent {
404
+ static ɵfac = i0.ɵɵngDeclareFactory({
405
+ minVersion: "12.0.0",
406
+ version: "22.2.2",
407
+ ngImport: i0,
408
+ type: RaqmItemHeaderComponent,
409
+ deps: [],
410
+ target: i0.ɵɵFactoryTarget.Component
411
+ });
412
+ static ɵcmp = i0.ɵɵngDeclareComponent({
413
+ minVersion: "14.0.0",
414
+ version: "22.2.2",
415
+ type: RaqmItemHeaderComponent,
416
+ isStandalone: true,
417
+ selector: "raqm-item-header",
418
+ host: { classAttribute: "raqm-item-header" },
419
+ ngImport: i0,
420
+ template: "<ng-content />",
421
+ isInline: true,
422
+ styles: [":host{display:flex;flex-basis:100%;align-items:center;justify-content:space-between;gap:calc(var(--raqm-spacing) * 2)}\n"],
423
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
424
+ });
425
+ };
426
+ i0.ɵɵngDeclareClassMetadata({
427
+ minVersion: "12.0.0",
428
+ version: "22.2.2",
429
+ ngImport: i0,
430
+ type: RaqmItemHeaderComponent,
431
+ decorators: [{
432
+ type: Component,
433
+ args: [{
434
+ selector: "raqm-item-header",
435
+ template: "<ng-content />",
436
+ changeDetection: ChangeDetectionStrategy.OnPush,
437
+ host: { class: "raqm-item-header" },
438
+ styles: [":host{display:flex;flex-basis:100%;align-items:center;justify-content:space-between;gap:calc(var(--raqm-spacing) * 2)}\n"]
439
+ }]
440
+ }]
441
+ });
442
+ var RaqmItemFooterComponent = class RaqmItemFooterComponent {
443
+ static ɵfac = i0.ɵɵngDeclareFactory({
444
+ minVersion: "12.0.0",
445
+ version: "22.2.2",
446
+ ngImport: i0,
447
+ type: RaqmItemFooterComponent,
448
+ deps: [],
449
+ target: i0.ɵɵFactoryTarget.Component
450
+ });
451
+ static ɵcmp = i0.ɵɵngDeclareComponent({
452
+ minVersion: "14.0.0",
453
+ version: "22.2.2",
454
+ type: RaqmItemFooterComponent,
455
+ isStandalone: true,
456
+ selector: "raqm-item-footer",
457
+ host: { classAttribute: "raqm-item-footer" },
458
+ ngImport: i0,
459
+ template: "<ng-content />",
460
+ isInline: true,
461
+ styles: [":host{display:flex;flex-basis:100%;align-items:center;justify-content:space-between;gap:calc(var(--raqm-spacing) * 2)}\n"],
462
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
463
+ });
464
+ };
465
+ i0.ɵɵngDeclareClassMetadata({
466
+ minVersion: "12.0.0",
467
+ version: "22.2.2",
468
+ ngImport: i0,
469
+ type: RaqmItemFooterComponent,
470
+ decorators: [{
471
+ type: Component,
472
+ args: [{
473
+ selector: "raqm-item-footer",
474
+ template: "<ng-content />",
475
+ changeDetection: ChangeDetectionStrategy.OnPush,
476
+ host: { class: "raqm-item-footer" },
477
+ styles: [":host{display:flex;flex-basis:100%;align-items:center;justify-content:space-between;gap:calc(var(--raqm-spacing) * 2)}\n"]
478
+ }]
479
+ }]
480
+ });
481
+ const RaqmItem = [
482
+ RaqmItemComponent,
483
+ RaqmItemGroupComponent,
484
+ RaqmItemSeparatorDirective,
485
+ RaqmItemMediaComponent,
486
+ RaqmItemContentComponent,
487
+ RaqmItemTitleComponent,
488
+ RaqmItemDescriptionComponent,
489
+ RaqmItemActionsComponent,
490
+ RaqmItemHeaderComponent,
491
+ RaqmItemFooterComponent
492
+ ];
493
+ export { RaqmItem, RaqmItemActionsComponent, RaqmItemComponent, RaqmItemContentComponent, RaqmItemDescriptionComponent, RaqmItemFooterComponent, RaqmItemGroupComponent, RaqmItemHeaderComponent, RaqmItemMediaComponent, RaqmItemSeparatorDirective, RaqmItemTitleComponent };
494
+
495
+ //# sourceMappingURL=raqm-ui-item.mjs.map