@ojiepermana/angular-component 22.0.27 → 22.0.29

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 (124) hide show
  1. package/README.md +9 -0
  2. package/fesm2022/ojiepermana-angular-component-accordion.mjs +1 -2
  3. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +1 -2
  4. package/fesm2022/ojiepermana-angular-component-alert.mjs +1 -2
  5. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +1 -2
  6. package/fesm2022/ojiepermana-angular-component-avatar.mjs +1 -2
  7. package/fesm2022/ojiepermana-angular-component-badge.mjs +1 -2
  8. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +1 -2
  9. package/fesm2022/ojiepermana-angular-component-button-group.mjs +1 -2
  10. package/fesm2022/ojiepermana-angular-component-button.mjs +1 -2
  11. package/fesm2022/ojiepermana-angular-component-calendar.mjs +1 -2
  12. package/fesm2022/ojiepermana-angular-component-card.mjs +1 -2
  13. package/fesm2022/ojiepermana-angular-component-carousel.mjs +1 -2
  14. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +1 -2
  15. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +1 -2
  16. package/fesm2022/ojiepermana-angular-component-combobox.mjs +1 -2
  17. package/fesm2022/ojiepermana-angular-component-command.mjs +1 -2
  18. package/fesm2022/ojiepermana-angular-component-composer.mjs +1 -2
  19. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +1 -2
  20. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +1 -2
  21. package/fesm2022/ojiepermana-angular-component-dialog.mjs +1 -2
  22. package/fesm2022/ojiepermana-angular-component-drawer.mjs +1 -2
  23. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +1 -2
  24. package/fesm2022/ojiepermana-angular-component-editor.mjs +1 -2
  25. package/fesm2022/ojiepermana-angular-component-empty.mjs +1 -2
  26. package/fesm2022/ojiepermana-angular-component-form.mjs +1 -2
  27. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +1 -2
  28. package/fesm2022/ojiepermana-angular-component-icon.mjs +1 -2
  29. package/fesm2022/ojiepermana-angular-component-input-group.mjs +1 -2
  30. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +1 -2
  31. package/fesm2022/ojiepermana-angular-component-input.mjs +1 -2
  32. package/fesm2022/ojiepermana-angular-component-item.mjs +1 -2
  33. package/fesm2022/ojiepermana-angular-component-kanban.mjs +1 -2
  34. package/fesm2022/ojiepermana-angular-component-kbd.mjs +1 -2
  35. package/fesm2022/ojiepermana-angular-component-label.mjs +1 -2
  36. package/fesm2022/ojiepermana-angular-component-menubar.mjs +1 -2
  37. package/fesm2022/ojiepermana-angular-component-native-select.mjs +1 -2
  38. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +1 -2
  39. package/fesm2022/ojiepermana-angular-component-pagination.mjs +1 -2
  40. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +1 -2
  41. package/fesm2022/ojiepermana-angular-component-popover.mjs +1 -2
  42. package/fesm2022/ojiepermana-angular-component-progress.mjs +1 -2
  43. package/fesm2022/ojiepermana-angular-component-radio.mjs +1 -2
  44. package/fesm2022/ojiepermana-angular-component-resizable.mjs +1 -2
  45. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +1 -2
  46. package/fesm2022/ojiepermana-angular-component-select.mjs +1 -2
  47. package/fesm2022/ojiepermana-angular-component-separator.mjs +1 -2
  48. package/fesm2022/ojiepermana-angular-component-sheet.mjs +1 -2
  49. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +1 -2
  50. package/fesm2022/ojiepermana-angular-component-slider.mjs +1 -2
  51. package/fesm2022/ojiepermana-angular-component-spinner.mjs +1 -2
  52. package/fesm2022/ojiepermana-angular-component-switch.mjs +1 -2
  53. package/fesm2022/ojiepermana-angular-component-table.mjs +1 -2
  54. package/fesm2022/ojiepermana-angular-component-tabs.mjs +1 -2
  55. package/fesm2022/ojiepermana-angular-component-textarea.mjs +1 -2
  56. package/fesm2022/ojiepermana-angular-component-timeline.mjs +1 -2
  57. package/fesm2022/ojiepermana-angular-component-toast.mjs +1 -2
  58. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +1 -2
  59. package/fesm2022/ojiepermana-angular-component-toggle.mjs +1 -2
  60. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +1 -2
  61. package/fesm2022/ojiepermana-angular-component-utils.mjs +1 -2
  62. package/fesm2022/ojiepermana-angular-component.mjs +1 -2
  63. package/package.json +2 -2
  64. package/fesm2022/ojiepermana-angular-component-accordion.mjs.map +0 -1
  65. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs.map +0 -1
  66. package/fesm2022/ojiepermana-angular-component-alert.mjs.map +0 -1
  67. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs.map +0 -1
  68. package/fesm2022/ojiepermana-angular-component-avatar.mjs.map +0 -1
  69. package/fesm2022/ojiepermana-angular-component-badge.mjs.map +0 -1
  70. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs.map +0 -1
  71. package/fesm2022/ojiepermana-angular-component-button-group.mjs.map +0 -1
  72. package/fesm2022/ojiepermana-angular-component-button.mjs.map +0 -1
  73. package/fesm2022/ojiepermana-angular-component-calendar.mjs.map +0 -1
  74. package/fesm2022/ojiepermana-angular-component-card.mjs.map +0 -1
  75. package/fesm2022/ojiepermana-angular-component-carousel.mjs.map +0 -1
  76. package/fesm2022/ojiepermana-angular-component-checkbox.mjs.map +0 -1
  77. package/fesm2022/ojiepermana-angular-component-collapsible.mjs.map +0 -1
  78. package/fesm2022/ojiepermana-angular-component-combobox.mjs.map +0 -1
  79. package/fesm2022/ojiepermana-angular-component-command.mjs.map +0 -1
  80. package/fesm2022/ojiepermana-angular-component-composer.mjs.map +0 -1
  81. package/fesm2022/ojiepermana-angular-component-context-menu.mjs.map +0 -1
  82. package/fesm2022/ojiepermana-angular-component-date-picker.mjs.map +0 -1
  83. package/fesm2022/ojiepermana-angular-component-dialog.mjs.map +0 -1
  84. package/fesm2022/ojiepermana-angular-component-drawer.mjs.map +0 -1
  85. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs.map +0 -1
  86. package/fesm2022/ojiepermana-angular-component-editor.mjs.map +0 -1
  87. package/fesm2022/ojiepermana-angular-component-empty.mjs.map +0 -1
  88. package/fesm2022/ojiepermana-angular-component-form.mjs.map +0 -1
  89. package/fesm2022/ojiepermana-angular-component-hover-card.mjs.map +0 -1
  90. package/fesm2022/ojiepermana-angular-component-icon.mjs.map +0 -1
  91. package/fesm2022/ojiepermana-angular-component-input-group.mjs.map +0 -1
  92. package/fesm2022/ojiepermana-angular-component-input-otp.mjs.map +0 -1
  93. package/fesm2022/ojiepermana-angular-component-input.mjs.map +0 -1
  94. package/fesm2022/ojiepermana-angular-component-item.mjs.map +0 -1
  95. package/fesm2022/ojiepermana-angular-component-kanban.mjs.map +0 -1
  96. package/fesm2022/ojiepermana-angular-component-kbd.mjs.map +0 -1
  97. package/fesm2022/ojiepermana-angular-component-label.mjs.map +0 -1
  98. package/fesm2022/ojiepermana-angular-component-menubar.mjs.map +0 -1
  99. package/fesm2022/ojiepermana-angular-component-native-select.mjs.map +0 -1
  100. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs.map +0 -1
  101. package/fesm2022/ojiepermana-angular-component-pagination.mjs.map +0 -1
  102. package/fesm2022/ojiepermana-angular-component-pillbox.mjs.map +0 -1
  103. package/fesm2022/ojiepermana-angular-component-popover.mjs.map +0 -1
  104. package/fesm2022/ojiepermana-angular-component-progress.mjs.map +0 -1
  105. package/fesm2022/ojiepermana-angular-component-radio.mjs.map +0 -1
  106. package/fesm2022/ojiepermana-angular-component-resizable.mjs.map +0 -1
  107. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs.map +0 -1
  108. package/fesm2022/ojiepermana-angular-component-select.mjs.map +0 -1
  109. package/fesm2022/ojiepermana-angular-component-separator.mjs.map +0 -1
  110. package/fesm2022/ojiepermana-angular-component-sheet.mjs.map +0 -1
  111. package/fesm2022/ojiepermana-angular-component-skeleton.mjs.map +0 -1
  112. package/fesm2022/ojiepermana-angular-component-slider.mjs.map +0 -1
  113. package/fesm2022/ojiepermana-angular-component-spinner.mjs.map +0 -1
  114. package/fesm2022/ojiepermana-angular-component-switch.mjs.map +0 -1
  115. package/fesm2022/ojiepermana-angular-component-table.mjs.map +0 -1
  116. package/fesm2022/ojiepermana-angular-component-tabs.mjs.map +0 -1
  117. package/fesm2022/ojiepermana-angular-component-textarea.mjs.map +0 -1
  118. package/fesm2022/ojiepermana-angular-component-timeline.mjs.map +0 -1
  119. package/fesm2022/ojiepermana-angular-component-toast.mjs.map +0 -1
  120. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs.map +0 -1
  121. package/fesm2022/ojiepermana-angular-component-toggle.mjs.map +0 -1
  122. package/fesm2022/ojiepermana-angular-component-tooltip.mjs.map +0 -1
  123. package/fesm2022/ojiepermana-angular-component-utils.mjs.map +0 -1
  124. package/fesm2022/ojiepermana-angular-component.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-separator.mjs","sources":["../../../library/component/separator/separator.component.ts","../../../library/component/separator/ojiepermana-angular-component-separator.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\nexport type SeparatorOrientation = 'horizontal' | 'vertical';\n\n@Component({\n selector: 'Separator',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.role]': 'decorative() ? \"none\" : \"separator\"',\n '[attr.aria-orientation]': 'decorative() ? null : orientation()',\n '[attr.data-orientation]': 'orientation()',\n },\n template: '',\n})\nexport class SeparatorComponent {\n readonly orientation = input<SeparatorOrientation>('horizontal');\n readonly decorative = input<boolean>(true);\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn('block shrink-0 bg-border', this.orientation() === 'horizontal' ? 'h-px w-full' : 'h-full w-px', this.class()),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAgBa,kBAAkB,CAAA;IACpB,WAAW,GAAG,KAAK,CAAuB,YAAY;oFAAC;IACvD,UAAU,GAAG,KAAK,CAAU,IAAI;mFAAC;IACjC,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CAAC,0BAA0B,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,GAAG,aAAa,GAAG,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAClH;uGAPU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,4qBAFnB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAED,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;oBACrB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,aAAa,EAAE,qCAAqC;AACpD,wBAAA,yBAAyB,EAAE,qCAAqC;AAChE,wBAAA,yBAAyB,EAAE,eAAe;AAC3C,qBAAA;AACD,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA;;;ACfD;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-sheet.mjs","sources":["../../../library/component/sheet/sheet.component.ts","../../../library/component/sheet/sheet-close.directive.ts","../../../library/component/sheet/sheet-parts.component.ts","../../../library/component/sheet/ojiepermana-angular-component-sheet.ts"],"sourcesContent":["import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter } from 'rxjs/operators';\nimport { ButtonComponent } from '@ojiepermana/angular-component/button';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\nexport type SheetSide = 'top' | 'right' | 'bottom' | 'left';\n\nconst SIDE_BASE: Record<SheetSide, string> = {\n top: 'inset-x-0 top-0 border-b border-border',\n bottom: 'inset-x-0 bottom-0 border-t border-border',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r border-border sm:max-w-sm',\n right: 'inset-y-0 right-0 h-full w-3/4 border-l border-border sm:max-w-sm',\n};\n\nconst DRAWER_SIDE_CLASSES: Record<SheetSide, string> = {\n top: 'max-h-[85vh] rounded-b-lg',\n bottom: 'max-h-[85vh] rounded-t-lg',\n left: 'rounded-r-lg',\n right: 'rounded-l-lg',\n};\n\nconst SIDE_ENTER_FROM: Record<SheetSide, string> = {\n top: 'translateY(-100%)',\n bottom: 'translateY(100%)',\n left: 'translateX(-100%)',\n right: 'translateX(100%)',\n};\n\n@Component({\n selector: 'Sheet, Drawer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent],\n template: `\n <ng-template #tpl>\n <div\n class=\"sheet-surface fixed z-50 bg-background shadow-lg transition ease-in-out\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"labelledBy()\"\n [attr.aria-describedby]=\"describedBy()\"\n [class]=\"surfaceClasses()\"\n [style.--sheet-from]=\"enterFrom()\">\n @if (showCloseButton()) {\n <button\n type=\"button\"\n Button\n variant=\"ghost\"\n size=\"icon-sm\"\n class=\"sheet-close-button absolute right-4 top-4 h-8 w-8 rounded-md p-0 text-muted-foreground opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-2 focus-visible:ring-ring\"\n [attr.aria-label]=\"closeButtonLabel()\"\n (click)=\"close()\">\n <span aria-hidden=\"true\">X</span>\n <span class=\"sr-only\">{{ closeButtonLabel() }}</span>\n </button>\n }\n <ng-content />\n </div>\n </ng-template>\n `,\n styles: [\n `\n .sheet-surface {\n animation: sheet-in 300ms cubic-bezier(0.2, 0, 0, 1);\n }\n @keyframes sheet-in {\n from {\n transform: var(--sheet-from);\n }\n to {\n transform: translate(0, 0);\n }\n }\n @media (prefers-reduced-motion: reduce) {\n .sheet-surface {\n animation-duration: 0ms;\n }\n }\n `,\n ],\n})\nexport class SheetComponent {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly trapFactory = inject(FocusTrapFactory);\n private readonly doc = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly host = inject(ElementRef<HTMLElement>);\n\n readonly open = model<boolean>(false);\n readonly side = input<SheetSide | undefined>(undefined);\n /** Paksa perilaku 'sheet' atau 'drawer' tanpa bergantung pada nama tag host. */\n readonly variant = input<'sheet' | 'drawer' | null>(null);\n readonly closeOnEscape = input<boolean>(true);\n readonly closeOnBackdropClick = input<boolean>(true);\n readonly showCloseButton = input<boolean>(true);\n readonly closeButtonLabel = input<string>('Close');\n readonly labelledBy = input<string | null>(null, { alias: 'aria-labelledby' });\n readonly describedBy = input<string | null>(null, { alias: 'aria-describedby' });\n readonly class = input<string>('');\n\n readonly openedChange = output<boolean>();\n\n private readonly tpl = viewChild.required<TemplateRef<unknown>>('tpl');\n private overlayRef: OverlayRef | null = null;\n private focusTrap: FocusTrap | null = null;\n private previousFocus: HTMLElement | null = null;\n\n private readonly resolvedSide = computed<SheetSide>(() => this.side() ?? (this.isDrawerHost() ? 'bottom' : 'right'));\n\n protected readonly surfaceClasses = computed(() =>\n cn(\n 'gap-4 p-6 flex flex-col',\n SIDE_BASE[this.resolvedSide()],\n this.isDrawerHost() ? DRAWER_SIDE_CLASSES[this.resolvedSide()] : '',\n this.class(),\n ),\n );\n\n protected readonly enterFrom = computed(() => SIDE_ENTER_FROM[this.resolvedSide()]);\n\n constructor() {\n this.destroyRef.onDestroy(() => this.detach(false));\n\n effect(() => {\n this.open() ? this.attach() : this.detach();\n });\n }\n\n private attach(): void {\n if (this.overlayRef) return;\n this.previousFocus = this.doc.activeElement as HTMLElement | null;\n\n this.overlayRef = this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'dialog-backdrop',\n panelClass: 'sheet-panel',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global(),\n });\n\n const portal = new TemplatePortal(this.tpl(), this.vcr);\n this.overlayRef.attach(portal);\n\n this.focusTrap = this.trapFactory.create(this.overlayRef.hostElement);\n this.focusTrap.focusInitialElementWhenReady();\n\n if (this.closeOnBackdropClick()) {\n this.overlayRef\n .backdropClick()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.open.set(false));\n }\n\n this.overlayRef\n .keydownEvents()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((e) => e.key === 'Escape' && this.closeOnEscape()),\n )\n .subscribe((e) => {\n e.preventDefault();\n this.open.set(false);\n });\n\n this.openedChange.emit(true);\n }\n\n private detach(emitOpenedChange = true): void {\n if (!this.overlayRef) return;\n this.focusTrap?.destroy();\n this.focusTrap = null;\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.previousFocus?.focus?.();\n this.previousFocus = null;\n if (emitOpenedChange) {\n this.openedChange.emit(false);\n }\n }\n\n close(): void {\n this.open.set(false);\n }\n\n private isDrawerHost(): boolean {\n const variant = this.variant();\n\n if (variant) {\n return variant === 'drawer';\n }\n\n // Fallback: infer dari tag host (selector komponen ini: 'Sheet, Drawer').\n // localName DOM selalu lowercase, meski tag template ditulis '<Drawer>'.\n return this.host.nativeElement.localName === 'drawer';\n }\n}\n","import { Directive, inject } from '@angular/core';\n\nimport { SheetComponent } from './sheet.component';\n\n@Directive({\n selector: 'button[SheetClose], a[SheetClose], button[DrawerClose], a[DrawerClose]',\n host: {\n '(click)': 'closeSheet()',\n },\n})\nexport class SheetCloseDirective {\n private readonly sheet = inject(SheetComponent);\n\n closeSheet(): void {\n this.sheet.close();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\n@Component({\n selector: 'SheetHeader, DrawerHeader',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: `<ng-content />`,\n})\nexport class SheetHeaderComponent {\n readonly class = input<string>('');\n protected readonly classes = computed(() => cn('flex flex-col gap-2 text-center sm:text-left', this.class()));\n}\n\n@Component({\n selector: 'SheetTitle, DrawerTitle, h2[SheetTitle], h2[DrawerTitle]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: `<ng-content />`,\n})\nexport class SheetTitleComponent {\n readonly class = input<string>('');\n protected readonly classes = computed(() => cn('text-lg font-semibold text-foreground', this.class()));\n}\n\n@Component({\n selector: 'SheetDescription, DrawerDescription, p[SheetDescription], p[DrawerDescription]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: `<ng-content />`,\n})\nexport class SheetDescriptionComponent {\n readonly class = input<string>('');\n protected readonly classes = computed(() => cn('text-sm text-muted-foreground', this.class()));\n}\n\n@Component({\n selector: 'SheetContent, DrawerContent',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: `<ng-content />`,\n})\nexport class SheetContentComponent {\n readonly class = input<string>('');\n protected readonly classes = computed(() => cn('flex-1 overflow-auto', this.class()));\n}\n\n@Component({\n selector: 'SheetFooter, DrawerFooter',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: `<ng-content />`,\n})\nexport class SheetFooterComponent {\n readonly class = input<string>('');\n protected readonly classes = computed(() =>\n cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', this.class()),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-skeleton.mjs","sources":["../../../library/component/skeleton/skeleton.component.ts","../../../library/component/skeleton/ojiepermana-angular-component-skeleton.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\n@Component({\n selector: 'Skeleton',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.aria-hidden]': '\"true\"',\n },\n template: '',\n})\nexport class SkeletonComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('block animate-pulse rounded-md bg-muted', this.class()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAYa,iBAAiB,CAAA;IACnB,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,yCAAyC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;uGAH7F,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,wRAFlB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAED,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;oBACpB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,oBAAoB,EAAE,QAAQ;AAC/B,qBAAA;AACD,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA;;;ACXD;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-slider.mjs","sources":["../../../library/component/slider/slider.component.ts","../../../library/component/slider/slider-root.component.ts","../../../library/component/slider/ojiepermana-angular-component-slider.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, computed, inject, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\n/**\n * Styled native range input. Works with `ngModel` / `FormControl` via\n * Angular's built-in `RangeValueAccessor`. Keyboard + ARIA handled by the browser.\n */\n@Component({\n selector: 'input[type=range][Slider]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: '',\n styleUrl: './slider.component.css',\n})\nexport class SliderComponent {\n private readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'Slider relative w-full appearance-none bg-transparent',\n 'focus-visible:outline-none',\n 'disabled:pointer-events-none disabled:opacity-50',\n this.class(),\n ),\n );\n\n focus(): void {\n this.el.nativeElement.focus();\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\nexport type SliderOrientation = 'horizontal' | 'vertical';\n\ninterface SliderConfig {\n readonly min: number;\n readonly max: number;\n readonly step: number;\n readonly minStepsBetweenThumbs: number;\n}\n\ninterface SliderThumbState {\n readonly index: number;\n readonly value: number;\n readonly position: number;\n readonly min: number;\n readonly max: number;\n readonly label: string | null;\n}\n\n@Component({\n selector: 'Slider',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.data-orientation]': 'orientation()',\n '(window:pointermove)': 'onWindowPointerMove($event)',\n '(window:pointerup)': 'onWindowPointerUp($event)',\n '(window:pointercancel)': 'onWindowPointerUp($event)',\n },\n template: `\n <div #track class=\"slider__track\" (pointerdown)=\"onTrackPointerDown($event)\">\n <div\n class=\"slider__range\"\n [style.left.%]=\"orientation() === 'horizontal' ? rangeOffset() : null\"\n [style.width.%]=\"orientation() === 'horizontal' ? rangeSize() : null\"\n [style.bottom.%]=\"orientation() === 'vertical' ? rangeOffset() : null\"\n [style.height.%]=\"orientation() === 'vertical' ? rangeSize() : null\"></div>\n\n @for (thumb of thumbs(); track thumb.index) {\n <button\n type=\"button\"\n class=\"slider__thumb\"\n [style.left.%]=\"orientation() === 'horizontal' ? thumb.position : 50\"\n [style.top.%]=\"orientation() === 'horizontal' ? 50 : null\"\n [style.bottom.%]=\"orientation() === 'vertical' ? thumb.position : null\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : null\"\n [attr.aria-label]=\"thumb.label\"\n [attr.aria-labelledby]=\"thumb.label ? null : ariaLabelledby()\"\n [attr.aria-orientation]=\"orientation()\"\n [attr.aria-valuemax]=\"thumb.max\"\n [attr.aria-valuemin]=\"thumb.min\"\n [attr.aria-valuenow]=\"thumb.value\"\n [attr.data-index]=\"thumb.index\"\n [attr.data-state]=\"isDisabled() ? 'disabled' : 'active'\"\n [tabIndex]=\"isDisabled() ? -1 : activeThumbIndex() === thumb.index ? 0 : -1\"\n role=\"slider\"\n (focus)=\"onThumbFocus(thumb.index)\"\n (keydown)=\"onThumbKeydown($event, thumb.index)\"\n (pointerdown)=\"onThumbPointerDown($event, thumb.index)\"></button>\n }\n </div>\n `,\n styleUrl: './slider-root.component.css',\n})\nexport class SliderRootComponent {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = inject(DOCUMENT);\n private readonly track = viewChild.required<ElementRef<HTMLElement>>('track');\n\n readonly value = input<readonly number[]>([0]);\n readonly min = input(0, { transform: numberAttribute });\n readonly max = input(100, { transform: numberAttribute });\n readonly step = input(1, { transform: numberAttribute });\n readonly minStepsBetweenThumbs = input(0, { transform: numberAttribute });\n readonly orientation = input<SliderOrientation>('horizontal');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly thumbLabels = input<readonly string[] | null>(null);\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n readonly class = input<string>('');\n\n readonly valueChange = output<readonly number[]>();\n\n private readonly disabledState = signal(false);\n private readonly valueState = signal<number[]>([0]);\n protected readonly activeThumbIndex = signal(0);\n private readonly draggedThumbIndex = signal<number | null>(null);\n private readonly pointerId = signal<number | null>(null);\n\n private readonly config = computed<SliderConfig>(() => ({\n min: Math.min(this.min(), this.max()),\n max: Math.max(this.min(), this.max()),\n step: this.step() > 0 ? this.step() : 1,\n minStepsBetweenThumbs: Math.max(0, Math.floor(this.minStepsBetweenThumbs())),\n }));\n\n protected readonly isDisabled = computed(() => this.disabled() || this.disabledState());\n protected readonly hostClasses = computed(() =>\n cn(\n 'slider-root relative flex touch-none select-none',\n this.orientation() === 'horizontal' ? 'h-5 w-full items-center' : 'h-32 w-5 justify-center',\n this.isDisabled() ? 'opacity-50' : '',\n this.class(),\n ),\n );\n\n protected readonly thumbs = computed<readonly SliderThumbState[]>(() => {\n const values = this.valueState();\n const config = this.config();\n\n return values.map((value, index) => {\n const bounds = thumbBounds(values, index, config);\n\n return {\n index,\n value,\n position: this.positionPercent(value),\n min: bounds.min,\n max: bounds.max,\n label: this.thumbLabel(index, values.length),\n };\n });\n });\n\n protected readonly rangeOffset = computed(() => {\n const span = this.rangeSpan();\n return span.start;\n });\n\n protected readonly rangeSize = computed(() => {\n const span = this.rangeSpan();\n return span.end - span.start;\n });\n\n private readonly syncExternalValue = effect(() => {\n const normalized = normalizeSliderValues(this.value(), this.config());\n\n untracked(() => {\n if (!sameValues(normalized, this.valueState())) {\n this.valueState.set(normalized);\n }\n\n this.activeThumbIndex.set(clampIndex(this.activeThumbIndex(), normalized.length));\n });\n });\n\n onTrackPointerDown(event: PointerEvent): void {\n if (this.isDisabled() || event.button !== 0) {\n return;\n }\n\n event.preventDefault();\n\n const nextValue = this.valueFromPointer(event);\n if (nextValue == null) {\n return;\n }\n\n const thumbIndex = this.closestThumbIndex(nextValue);\n this.activeThumbIndex.set(thumbIndex);\n this.updateThumbValue(thumbIndex, nextValue);\n this.beginDrag(event, thumbIndex);\n }\n\n onThumbPointerDown(event: PointerEvent, index: number): void {\n if (this.isDisabled() || event.button !== 0) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n this.activeThumbIndex.set(index);\n this.beginDrag(event, index);\n }\n\n onWindowPointerMove(event: PointerEvent): void {\n if (this.pointerId() !== event.pointerId) {\n return;\n }\n\n const thumbIndex = this.draggedThumbIndex();\n if (thumbIndex == null) {\n return;\n }\n\n const nextValue = this.valueFromPointer(event);\n if (nextValue == null) {\n return;\n }\n\n event.preventDefault();\n this.updateThumbValue(thumbIndex, nextValue);\n }\n\n onWindowPointerUp(event: PointerEvent): void {\n if (this.pointerId() !== event.pointerId) {\n return;\n }\n\n this.draggedThumbIndex.set(null);\n this.pointerId.set(null);\n }\n\n onThumbFocus(index: number): void {\n this.activeThumbIndex.set(index);\n }\n\n onThumbKeydown(event: KeyboardEvent, index: number): void {\n if (this.isDisabled()) {\n return;\n }\n\n const current = this.valueState()[index];\n const config = this.config();\n const pageStep = config.step * 10;\n const direction = this.resolvedDirection();\n let nextValue: number | null = null;\n\n switch (event.key) {\n case 'ArrowRight':\n nextValue = current + (direction === 'rtl' && this.orientation() === 'horizontal' ? -config.step : config.step);\n break;\n case 'ArrowLeft':\n nextValue = current + (direction === 'rtl' && this.orientation() === 'horizontal' ? config.step : -config.step);\n break;\n case 'ArrowUp':\n nextValue = current + config.step;\n break;\n case 'ArrowDown':\n nextValue = current - config.step;\n break;\n case 'PageUp':\n nextValue = current + pageStep;\n break;\n case 'PageDown':\n nextValue = current - pageStep;\n break;\n case 'Home':\n nextValue = thumbBounds(this.valueState(), index, config).min;\n break;\n case 'End':\n nextValue = thumbBounds(this.valueState(), index, config).max;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n this.activeThumbIndex.set(index);\n this.updateThumbValue(index, nextValue);\n }\n\n private beginDrag(event: PointerEvent, index: number): void {\n this.pointerId.set(event.pointerId);\n this.draggedThumbIndex.set(index);\n this.focusThumb(index);\n }\n\n private updateThumbValue(index: number, rawValue: number): void {\n const current = this.valueState();\n const bounds = thumbBounds(current, index, this.config());\n const nextValues = current.slice();\n\n nextValues[index] = snapWithinBounds(rawValue, bounds.min, bounds.max, this.config());\n\n if (sameValues(nextValues, current)) {\n return;\n }\n\n this.valueState.set(nextValues);\n this.valueChange.emit(nextValues);\n }\n\n private valueFromPointer(event: PointerEvent): number | null {\n const track = this.track().nativeElement;\n const rect = track.getBoundingClientRect();\n const config = this.config();\n\n if (rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n\n let ratio = 0;\n\n if (this.orientation() === 'horizontal') {\n const physicalRatio = clamp((event.clientX - rect.left) / rect.width, 0, 1);\n ratio = this.resolvedDirection() === 'rtl' ? 1 - physicalRatio : physicalRatio;\n } else {\n ratio = clamp((rect.bottom - event.clientY) / rect.height, 0, 1);\n }\n\n return config.min + ratio * (config.max - config.min);\n }\n\n private closestThumbIndex(nextValue: number): number {\n const values = this.valueState();\n let bestIndex = 0;\n let bestDistance = Number.POSITIVE_INFINITY;\n\n values.forEach((value, index) => {\n const distance = Math.abs(value - nextValue);\n if (distance < bestDistance) {\n bestDistance = distance;\n bestIndex = index;\n }\n });\n\n return bestIndex;\n }\n\n private rangeSpan(): { start: number; end: number } {\n const positions = this.valueState().map((value) => this.positionPercent(value));\n\n if (!positions.length) {\n return { start: 0, end: 0 };\n }\n\n if (positions.length === 1) {\n const minBoundary = this.positionPercent(this.config().min);\n return {\n start: Math.min(minBoundary, positions[0]),\n end: Math.max(minBoundary, positions[0]),\n };\n }\n\n return {\n start: Math.min(...positions),\n end: Math.max(...positions),\n };\n }\n\n private positionPercent(value: number): number {\n const config = this.config();\n const range = config.max - config.min;\n\n if (range <= 0) {\n return this.orientation() === 'horizontal' && this.resolvedDirection() === 'rtl' ? 100 : 0;\n }\n\n const logicalRatio = (value - config.min) / range;\n const physicalRatio =\n this.orientation() === 'horizontal' && this.resolvedDirection() === 'rtl' ? 1 - logicalRatio : logicalRatio;\n\n return clamp(physicalRatio * 100, 0, 100);\n }\n\n private thumbLabel(index: number, count: number): string | null {\n const labels = this.thumbLabels();\n\n if (labels?.[index]) {\n return labels[index] ?? null;\n }\n\n if (count === 1) {\n return this.ariaLabel();\n }\n\n return this.ariaLabel() ? `${this.ariaLabel()} ${index + 1}` : `Slider thumb ${index + 1}`;\n }\n\n private focusThumb(index: number): void {\n const thumb = this.host.nativeElement.querySelector<HTMLButtonElement>(`.slider__thumb[data-index=\"${index}\"]`);\n thumb?.focus();\n }\n\n private resolvedDirection(): 'ltr' | 'rtl' {\n const host = this.host.nativeElement;\n\n if (host.dir === 'ltr' || host.dir === 'rtl') {\n return host.dir;\n }\n\n const view = this.document.defaultView;\n if (!view) {\n return 'ltr';\n }\n\n return view.getComputedStyle(host).direction === 'rtl' ? 'rtl' : 'ltr';\n }\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction clampIndex(index: number, length: number): number {\n return clamp(index, 0, Math.max(length - 1, 0));\n}\n\nfunction decimalPlaces(value: number): number {\n const text = `${value}`;\n const fraction = text.split('.')[1];\n return fraction?.length ?? 0;\n}\n\nfunction normalizeSliderValues(values: readonly number[], config: SliderConfig): number[] {\n const incoming = values.length ? [...values] : [config.min];\n const sorted = incoming.map((value) => snapToStep(value, config)).sort((left, right) => left - right);\n const gap = config.step * config.minStepsBetweenThumbs;\n const normalized: number[] = [];\n\n sorted.forEach((value, index) => {\n const remaining = sorted.length - index - 1;\n const min = index === 0 ? config.min : normalized[index - 1] + gap;\n const max = Math.max(min, config.max - remaining * gap);\n normalized.push(snapWithinBounds(value, min, max, config));\n });\n\n return normalized;\n}\n\nfunction sameValues(left: readonly number[], right: readonly number[]): boolean {\n return left.length === right.length && left.every((value, index) => value === right[index]);\n}\n\nfunction snapToStep(value: number, config: SliderConfig): number {\n const ratio = (value - config.min) / config.step;\n const snapped = config.min + Math.round(ratio) * config.step;\n const precision = Math.max(decimalPlaces(config.step), decimalPlaces(config.min));\n return Number(snapped.toFixed(precision));\n}\n\nfunction snapWithinBounds(value: number, min: number, max: number, config: SliderConfig): number {\n const boundedMin = Math.min(min, max);\n const boundedMax = Math.max(min, max);\n const snapped = snapToStep(value, config);\n return clamp(snapped, boundedMin, boundedMax);\n}\n\nfunction thumbBounds(values: readonly number[], index: number, config: SliderConfig): { min: number; max: number } {\n const gap = config.step * config.minStepsBetweenThumbs;\n const min = index === 0 ? config.min : values[index - 1] + gap;\n const max = index === values.length - 1 ? config.max : values[index + 1] - gap;\n return { min: Math.min(min, max), max: Math.max(min, max) };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-spinner.mjs","sources":["../../../library/component/spinner/spinner.component.ts","../../../library/component/spinner/ojiepermana-angular-component-spinner.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\n@Component({\n selector: 'Spinner',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.role]': 'decorative() ? null : \"status\"',\n '[attr.aria-hidden]': 'decorative() ? \"true\" : null',\n '[attr.aria-label]': 'decorative() || ariaLabelledby() ? null : ariaLabel()',\n '[attr.aria-labelledby]': 'decorative() ? null : ariaLabelledby()',\n 'data-slot': 'spinner',\n },\n template: `\n <svg\n aria-hidden=\"true\"\n class=\"size-full animate-spin motion-reduce:animate-none\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" class=\"opacity-20\" />\n <path d=\"M21 12a9 9 0 0 0-9-9\" stroke-linecap=\"round\" />\n </svg>\n `,\n})\nexport class SpinnerComponent {\n readonly class = input<string>('');\n readonly decorative = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string>('Loading', { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n\n protected readonly classes = computed(() =>\n cn('inline-flex size-4 shrink-0 items-center justify-center align-middle text-current', this.class()),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MA2Ba,gBAAgB,CAAA;IAClB,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,UAAU,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC1D,SAAS,GAAG,KAAK,CAAS,SAAS,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;IAC7D,cAAc,GAAG,KAAK,CAAgB,IAAI,sFAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;AAE/D,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CAAC,mFAAmF,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFACtG;uGARU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,kCAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,iBAAA,EAAA,uDAAA,EAAA,sBAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbjB;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAxB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;oBACnB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,aAAa,EAAE,gCAAgC;AAC/C,wBAAA,oBAAoB,EAAE,8BAA8B;AACpD,wBAAA,mBAAmB,EAAE,uDAAuD;AAC5E,wBAAA,wBAAwB,EAAE,wCAAwC;AAClE,wBAAA,WAAW,EAAE,SAAS;AACvB,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;AAWT,EAAA,CAAA;AACF,iBAAA;;;AC1BD;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-switch.mjs","sources":["../../../library/component/switch/switch.component.ts","../../../library/component/switch/ojiepermana-angular-component-switch.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n output,\n signal,\n viewChild,\n type ElementRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cn, uniqueId } from '@ojiepermana/angular-component/utils';\n\nexport type SwitchSize = 'default' | 'sm';\n\n/**\n * Switch built on a native `<input type=\"checkbox\" role=\"switch\">` (shadcn\n * pattern) — no Material dependency.\n */\n@Component({\n selector: 'Switch',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SwitchComponent), multi: true }],\n host: { '[class]': 'hostClasses()' },\n template: `\n <label [class]=\"labelClasses()\" [attr.for]=\"id()\">\n <input\n #ref\n type=\"checkbox\"\n role=\"switch\"\n class=\"peer sr-only\"\n [id]=\"id()\"\n [attr.name]=\"name()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-invalid]=\"ariaInvalidAttr()\"\n (change)=\"handleChange($event)\"\n (blur)=\"handleBlur()\" />\n <span aria-hidden=\"true\" [class]=\"trackClasses()\">\n <span [class]=\"thumbClasses()\"></span>\n </span>\n <ng-content />\n </label>\n `,\n})\nexport class SwitchComponent implements ControlValueAccessor {\n readonly id = input<string>(uniqueId('Switch'));\n readonly name = input<string | null>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n readonly ariaInvalid = input<boolean | string | null>(null, { alias: 'aria-invalid' });\n readonly size = input<SwitchSize>('default');\n readonly class = input<string>('');\n\n readonly checkedChange = output<boolean>();\n\n private readonly ref = viewChild.required<ElementRef<HTMLInputElement>>('ref');\n\n protected readonly checked = signal<boolean>(false);\n protected readonly disabledState = signal(false);\n protected readonly ariaInvalidAttr = computed(() => {\n const value = this.ariaInvalid();\n\n if (value === false || value === 'false' || value == null) {\n return null;\n }\n\n return value === true || value === '' ? 'true' : `${value}`;\n });\n protected readonly isDisabled = computed(() => this.disabled() || this.disabledState());\n protected readonly hostClasses = computed(() =>\n cn('Switch inline-flex', this.size() === 'sm' ? 'switch-sm' : 'switch-default', this.class()),\n );\n protected readonly labelClasses = computed(() =>\n cn(\n 'inline-flex select-none items-center gap-2 text-sm font-medium leading-none',\n this.isDisabled() ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n ),\n );\n protected readonly trackClasses = computed(() =>\n cn(\n 'inline-flex shrink-0 items-center rounded-full border-2 border-transparent shadow-sm transition-colors',\n 'peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2 peer-focus-visible:ring-offset-background',\n this.size() === 'sm' ? 'h-4 w-7' : 'h-5 w-9',\n this.ariaInvalidAttr() === 'true' ? 'bg-destructive' : this.checked() ? 'bg-primary' : 'bg-input',\n ),\n );\n protected readonly thumbClasses = computed(() =>\n cn(\n 'pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform',\n this.size() === 'sm' ? 'size-3' : 'size-4',\n this.checked() ? (this.size() === 'sm' ? 'translate-x-3' : 'translate-x-4') : 'translate-x-0',\n ),\n );\n\n private onChange: (v: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n protected handleChange(event: Event): void {\n const next = (event.target as HTMLInputElement).checked;\n this.checked.set(next);\n this.onChange(next);\n this.checkedChange.emit(next);\n }\n\n protected handleBlur(): void {\n this.onTouched();\n }\n\n focus(): void {\n this.ref().nativeElement.focus();\n }\n\n writeValue(v: boolean): void {\n this.checked.set(!!v);\n }\n registerOnChange(fn: (v: boolean) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(d: boolean): void {\n this.disabledState.set(d);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-table.mjs","sources":["../../../library/component/table/table.component.ts","../../../library/component/table/ojiepermana-angular-component-table.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\n@Component({\n selector: 'Table',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'relative block w-full overflow-x-auto' },\n template: `\n <table [class]=\"classes()\">\n <ng-content />\n </table>\n `,\n})\nexport class TableComponent {\n readonly class = input<string>('');\n protected readonly classes = computed(() => cn('w-full caption-bottom text-sm', this.class()));\n}\n\n@Component({\n selector: 'thead[TableHeader]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: `<ng-content />`,\n})\nexport class TableHeaderComponent {\n readonly class = input<string>('');\n protected readonly classes = computed(() => cn('[&_tr]:border-b [&_tr]:border-border', this.class()));\n}\n\n@Component({\n selector: 'tbody[TableBody]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: `<ng-content />`,\n})\nexport class TableBodyComponent {\n readonly class = input<string>('');\n protected readonly classes = computed(() => cn('[&_tr:last-child]:border-0', this.class()));\n}\n\n@Component({\n selector: 'tfoot[TableFooter]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: `<ng-content />`,\n})\nexport class TableFooterComponent {\n readonly class = input<string>('');\n protected readonly classes = computed(() =>\n cn('border-t border-border bg-muted/50 font-medium [&>tr]:last:border-b-0', this.class()),\n );\n}\n\n@Component({\n selector: 'tr[TableRow]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: `<ng-content />`,\n})\nexport class TableRowComponent {\n readonly class = input<string>('');\n protected readonly classes = computed(() =>\n cn('border-b border-border transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted', this.class()),\n );\n}\n\n@Component({\n selector: 'th[TableHead]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: `<ng-content />`,\n})\nexport class TableHeadComponent {\n readonly class = input<string>('');\n protected readonly classes = computed(() =>\n cn(\n 'h-10 whitespace-nowrap px-2 text-left align-middle font-medium text-muted-foreground',\n '[&:has([role=checkbox])]:pr-0',\n '[&>[role=checkbox]]:translate-y-[2px]',\n this.class(),\n ),\n );\n}\n\n@Component({\n selector: 'td[TableCell]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: `<ng-content />`,\n})\nexport class TableCellComponent {\n readonly class = input<string>('');\n protected readonly classes = computed(() =>\n cn(\n 'whitespace-nowrap p-2 align-middle',\n '[&:has([role=checkbox])]:pr-0',\n '[&>[role=checkbox]]:translate-y-[2px]',\n this.class(),\n ),\n );\n}\n\n@Component({\n selector: 'caption[TableCaption]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: `<ng-content />`,\n})\nexport class TableCaptionComponent {\n readonly class = input<string>('');\n protected readonly classes = computed(() => cn('mt-4 text-sm text-muted-foreground', this.class()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-tabs.mjs","sources":["../../../library/component/tabs/tabs.component.ts","../../../library/component/tabs/ojiepermana-angular-component-tabs.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n computed,\n forwardRef,\n inject,\n input,\n model,\n} from '@angular/core';\nimport { cn, uniqueId } from '@ojiepermana/angular-component/utils';\n\nexport type TabsListVariant = 'default' | 'line';\n\ninterface TabsTriggerRegistration {\n readonly element: HTMLElement;\n readonly value: () => string;\n readonly disabled: () => boolean;\n}\n\n/**\n * Shared state for a tabs group. Children read the active value and register\n * themselves so the group can drive roving-tabindex keyboard navigation.\n */\n@Directive()\nexport abstract class TabsContextBase {\n abstract value: ReturnType<typeof model<string | null>>;\n abstract register(element: HTMLElement, value: () => string, disabled: () => boolean): void;\n abstract unregister(element: HTMLElement): void;\n abstract activate(value: string, focus?: boolean): void;\n abstract focusNext(from: HTMLElement, offset: number): void;\n abstract focusFirst(): void;\n abstract focusLast(): void;\n abstract triggerId(value: string): string;\n abstract contentId(value: string): string;\n}\n\n@Directive()\nexport abstract class TabsListContextBase {\n abstract listVariant(): TabsListVariant;\n}\n\n@Component({\n selector: 'Tabs',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: TabsContextBase, useExisting: forwardRef(() => TabsComponent) }],\n host: {\n '[class]': 'classes()',\n '[attr.data-orientation]': 'orientation()',\n },\n template: `<ng-content />`,\n})\nexport class TabsComponent extends TabsContextBase {\n readonly value = model<string | null>(null);\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n readonly class = input<string>('');\n\n private readonly idPrefix = uniqueId('Tabs');\n private readonly triggers = new Map<HTMLElement, TabsTriggerRegistration>();\n\n protected readonly classes = computed(() =>\n cn(this.orientation() === 'vertical' ? 'flex items-start gap-4' : 'block', this.class()),\n );\n\n override register(element: HTMLElement, value: () => string, disabled: () => boolean): void {\n this.triggers.set(element, { element, value, disabled });\n\n if (this.value() == null && !disabled()) {\n this.value.set(value());\n }\n }\n\n override unregister(element: HTMLElement): void {\n this.triggers.delete(element);\n }\n\n override activate(value: string, focus = false): void {\n const trigger = this.triggerForValue(value);\n if (!trigger || trigger.disabled()) return;\n\n this.value.set(value);\n if (focus) {\n trigger.element.focus();\n }\n }\n\n override focusNext(from: HTMLElement, offset: number): void {\n const enabledTriggers = this.enabledTriggers();\n const currentIndex = enabledTriggers.findIndex((trigger) => trigger.element === from);\n if (currentIndex < 0 || enabledTriggers.length === 0) return;\n\n const nextTrigger = enabledTriggers[(currentIndex + offset + enabledTriggers.length) % enabledTriggers.length];\n this.activate(nextTrigger.value(), true);\n }\n\n override focusFirst(): void {\n const firstTrigger = this.enabledTriggers()[0];\n if (firstTrigger) this.activate(firstTrigger.value(), true);\n }\n\n override focusLast(): void {\n const enabledTriggers = this.enabledTriggers();\n const lastTrigger = enabledTriggers[enabledTriggers.length - 1];\n if (lastTrigger) this.activate(lastTrigger.value(), true);\n }\n\n override triggerId(value: string): string {\n return `${this.idPrefix}-trigger-${this.normalizeValue(value)}`;\n }\n\n override contentId(value: string): string {\n return `${this.idPrefix}-content-${this.normalizeValue(value)}`;\n }\n\n private enabledTriggers(): TabsTriggerRegistration[] {\n return [...this.triggers.values()].filter((trigger) => !trigger.disabled());\n }\n\n private triggerForValue(value: string): TabsTriggerRegistration | undefined {\n return [...this.triggers.values()].find((trigger) => trigger.value() === value);\n }\n\n private normalizeValue(value: string): string {\n const normalized = value\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, '-')\n .replace(/^-+|-+$/g, '');\n\n return normalized || 'tab';\n }\n}\n\n@Component({\n selector: 'TabsList',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: TabsListContextBase, useExisting: forwardRef(() => TabsListComponent) }],\n host: {\n '[class]': 'classes()',\n '[attr.role]': '\"tablist\"',\n '[attr.aria-orientation]': 'ctx.orientation()',\n '[attr.data-variant]': 'variant()',\n },\n template: `<ng-content />`,\n})\nexport class TabsListComponent extends TabsListContextBase {\n protected readonly ctx = inject(TabsComponent);\n readonly variant = input<TabsListVariant>('default');\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn(this.variantClasses(), this.class()));\n\n override listVariant(): TabsListVariant {\n return this.variant();\n }\n\n private variantClasses(): string {\n if (this.variant() === 'line') {\n return this.ctx.orientation() === 'vertical'\n ? 'inline-flex flex-col items-stretch justify-start gap-1 border-e border-border bg-transparent p-0 pe-3 text-muted-foreground'\n : 'inline-flex h-9 items-center justify-start gap-4 border-b border-border bg-transparent p-0 text-muted-foreground';\n }\n\n return this.ctx.orientation() === 'vertical'\n ? 'inline-flex flex-col items-stretch justify-start rounded-md bg-muted p-1 text-muted-foreground'\n : 'inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground';\n }\n}\n\n@Component({\n selector: 'button[TabsTrigger]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[id]': 'triggerId()',\n type: 'button',\n '[attr.role]': '\"tab\"',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-controls]': 'contentId()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.tabindex]': 'selected() ? 0 : -1',\n '[attr.data-state]': 'selected() ? \"active\" : \"inactive\"',\n '[disabled]': 'disabled() || null',\n '(click)': 'onClick()',\n '(keydown.arrowRight)': 'onArrow($any($event), 1, \"horizontal\")',\n '(keydown.arrowLeft)': 'onArrow($any($event), -1, \"horizontal\")',\n '(keydown.arrowDown)': 'onArrow($any($event), 1, \"vertical\")',\n '(keydown.arrowUp)': 'onArrow($any($event), -1, \"vertical\")',\n '(keydown.home)': 'onHome($any($event))',\n '(keydown.end)': 'onEnd($any($event))',\n },\n template: `<ng-content />`,\n})\nexport class TabsTriggerComponent {\n protected readonly ctx = inject(TabsComponent);\n private readonly list = inject(TabsListContextBase, { optional: true });\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly value = input.required<string>();\n readonly disabled = input<boolean>(false);\n readonly class = input<string>('');\n\n protected readonly selected = computed(() => this.ctx.value() === this.value());\n protected readonly triggerId = computed(() => this.ctx.triggerId(this.value()));\n protected readonly contentId = computed(() => this.ctx.contentId(this.value()));\n\n protected readonly classes = computed(() =>\n cn(\n 'inline-flex items-center justify-center gap-1.5 whitespace-nowrap text-sm font-medium',\n 'ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n this.variantClasses(),\n this.class(),\n ),\n );\n\n ngOnInit(): void {\n this.ctx.register(this.el.nativeElement, this.value, this.disabled);\n }\n\n ngOnDestroy(): void {\n this.ctx.unregister(this.el.nativeElement);\n }\n\n protected onClick(): void {\n if (this.disabled()) return;\n this.ctx.activate(this.value());\n }\n\n protected onArrow(e: KeyboardEvent, delta: number, axis: 'horizontal' | 'vertical'): void {\n if (this.ctx.orientation() !== axis) return;\n e.preventDefault();\n this.ctx.focusNext(this.el.nativeElement, delta);\n }\n\n protected onHome(e: KeyboardEvent): void {\n e.preventDefault();\n this.ctx.focusFirst();\n }\n\n protected onEnd(e: KeyboardEvent): void {\n e.preventDefault();\n this.ctx.focusLast();\n }\n\n private variantClasses(): string {\n const variant = this.list?.listVariant() ?? 'default';\n\n if (variant === 'line') {\n return this.ctx.orientation() === 'vertical'\n ? 'w-full justify-start rounded-none border-e-2 border-transparent px-3 py-2 data-[state=active]:border-foreground data-[state=active]:bg-transparent data-[state=active]:text-foreground data-[state=active]:shadow-none'\n : 'rounded-none border-b-2 border-transparent px-2 py-2 data-[state=active]:border-foreground data-[state=active]:bg-transparent data-[state=active]:text-foreground data-[state=active]:shadow-none';\n }\n\n return cn(\n 'rounded-sm px-3 py-1.5 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n this.ctx.orientation() === 'vertical' && 'w-full justify-start',\n );\n }\n}\n\n@Component({\n selector: 'TabsContent',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[id]': 'contentId()',\n '[attr.role]': '\"tabpanel\"',\n '[attr.aria-labelledby]': 'triggerId()',\n '[attr.data-state]': 'active() ? \"active\" : \"inactive\"',\n '[hidden]': '!active()',\n tabindex: '0',\n },\n template: `@if (active()) {\n <ng-content />\n }`,\n})\nexport class TabsContentComponent {\n private readonly ctx = inject(TabsComponent);\n readonly value = input.required<string>();\n readonly class = input<string>('');\n protected readonly active = computed(() => this.ctx.value() === this.value());\n protected readonly triggerId = computed(() => this.ctx.triggerId(this.value()));\n protected readonly contentId = computed(() => this.ctx.contentId(this.value()));\n protected readonly classes = computed(() =>\n cn(\n 'mt-2 block ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n this.class(),\n ),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAqBA;;;AAGG;MAEmB,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBADpC;;MAcqB,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBADxC;;AAeK,MAAO,aAAc,SAAQ,eAAe,CAAA;IACvC,KAAK,GAAG,KAAK,CAAgB,IAAI;8EAAC;IAClC,WAAW,GAAG,KAAK,CAA4B,YAAY;oFAAC;IAC5D,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEjB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC3B,IAAA,QAAQ,GAAG,IAAI,GAAG,EAAwC;IAExD,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,GAAG,wBAAwB,GAAG,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFACzF;AAEQ,IAAA,QAAQ,CAAC,OAAoB,EAAE,KAAmB,EAAE,QAAuB,EAAA;AAClF,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAExD,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACzB;IACF;AAES,IAAA,UAAU,CAAC,OAAoB,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IAC/B;AAES,IAAA,QAAQ,CAAC,KAAa,EAAE,KAAK,GAAG,KAAK,EAAA;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;YAAE;AAEpC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACrB,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;QACzB;IACF;IAES,SAAS,CAAC,IAAiB,EAAE,MAAc,EAAA;AAClD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC9C,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;QACrF,IAAI,YAAY,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;YAAE;AAEtD,QAAA,MAAM,WAAW,GAAG,eAAe,CAAC,CAAC,YAAY,GAAG,MAAM,GAAG,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC;QAC9G,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC;IAC1C;IAES,UAAU,GAAA;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAC9C,QAAA,IAAI,YAAY;YAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC;IAC7D;IAES,SAAS,GAAA;AAChB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;QAC9C,MAAM,WAAW,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/D,QAAA,IAAI,WAAW;YAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC;IAC3D;AAES,IAAA,SAAS,CAAC,KAAa,EAAA;AAC9B,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,SAAA,EAAY,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA,CAAE;IACjE;AAES,IAAA,SAAS,CAAC,KAAa,EAAA;AAC9B,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,SAAA,EAAY,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA,CAAE;IACjE;IAEQ,eAAe,GAAA;QACrB,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC7E;AAEQ,IAAA,eAAe,CAAC,KAAa,EAAA;QACnC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC;IACjF;AAEQ,IAAA,cAAc,CAAC,KAAa,EAAA;QAClC,MAAM,UAAU,GAAG;AAChB,aAAA,WAAW;AACX,aAAA,OAAO,CAAC,eAAe,EAAE,GAAG;AAC5B,aAAA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QAE1B,OAAO,UAAU,IAAI,KAAK;IAC5B;uGA7EW,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,sjBAPb,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC,iDAK7E,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,aAAa,EAAA,UAAA,EAAA,CAAA;kBAVzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,MAAM;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,aAAc,CAAC,EAAE,CAAC;AACvF,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,yBAAyB,EAAE,eAAe;AAC3C,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;AA6FK,MAAO,iBAAkB,SAAQ,mBAAmB,CAAA;AACrC,IAAA,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC;IACrC,OAAO,GAAG,KAAK,CAAkB,SAAS;gFAAC;IAC3C,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;IAE3E,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;IACvB;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK;AAChC,kBAAE;kBACA,kHAAkH;QACxH;AAEA,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK;AAChC,cAAE;cACA,4FAA4F;IAClG;uGArBW,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,qdATjB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC,EAAE,CAAC,iDAOrF,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;oBACpB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,iBAAkB,CAAC,EAAE,CAAC;AAC/F,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,aAAa,EAAE,WAAW;AAC1B,wBAAA,yBAAyB,EAAE,mBAAmB;AAC9C,wBAAA,qBAAqB,EAAE,WAAW;AACnC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MAiDY,oBAAoB,CAAA;AACZ,IAAA,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC;IAC7B,IAAI,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACtD,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;IAExD,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;IAChC,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;IAChC,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;iFAAC;AAC5D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;kFAAC;AAC5D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;kFAAC;IAE5D,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA,uFAAuF,EACvF,2IAA2I,EAC3I,kDAAkD,EAClD,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,KAAK,EAAE,CACb;gFACF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;IACrE;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;IAC5C;IAEU,OAAO,GAAA;QACf,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;QACrB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACjC;AAEU,IAAA,OAAO,CAAC,CAAgB,EAAE,KAAa,EAAE,IAA+B,EAAA;AAChF,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI;YAAE;QACrC,CAAC,CAAC,cAAc,EAAE;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC;IAClD;AAEU,IAAA,MAAM,CAAC,CAAgB,EAAA;QAC/B,CAAC,CAAC,cAAc,EAAE;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;IACvB;AAEU,IAAA,KAAK,CAAC,CAAgB,EAAA;QAC9B,CAAC,CAAC,cAAc,EAAE;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;IACtB;IAEQ,cAAc,GAAA;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,SAAS;AAErD,QAAA,IAAI,OAAO,KAAK,MAAM,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK;AAChC,kBAAE;kBACA,mMAAmM;QACzM;AAEA,QAAA,OAAO,EAAE,CACP,4HAA4H,EAC5H,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,UAAU,IAAI,sBAAsB,CAChE;IACH;uGAjEW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,osCAFrB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAxBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;oBAC/B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,MAAM,EAAE,aAAa;AACrB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,aAAa,EAAE,OAAO;AACtB,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,sBAAsB,EAAE,aAAa;AACrC,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,iBAAiB,EAAE,qBAAqB;AACxC,wBAAA,mBAAmB,EAAE,oCAAoC;AACzD,wBAAA,YAAY,EAAE,oBAAoB;AAClC,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,sBAAsB,EAAE,wCAAwC;AAChE,wBAAA,qBAAqB,EAAE,yCAAyC;AAChE,wBAAA,qBAAqB,EAAE,sCAAsC;AAC7D,wBAAA,mBAAmB,EAAE,uCAAuC;AAC5D,wBAAA,gBAAgB,EAAE,sBAAsB;AACxC,wBAAA,eAAe,EAAE,qBAAqB;AACvC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MAqFY,oBAAoB,CAAA;AACd,IAAA,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC;IACnC,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;IAChC,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AACf,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;+EAAC;AAC1D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;kFAAC;AAC5D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;kFAAC;AAC5D,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA,2GAA2G,EAC3G,IAAI,CAAC,KAAK,EAAE,CACb;gFACF;uGAZU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,GAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAA,EAAA,WAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,sCAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJrB,CAAA;;AAER,GAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAES,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;oBACvB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,MAAM,EAAE,aAAa;AACrB,wBAAA,aAAa,EAAE,YAAY;AAC3B,wBAAA,wBAAwB,EAAE,aAAa;AACvC,wBAAA,mBAAmB,EAAE,kCAAkC;AACvD,wBAAA,UAAU,EAAE,WAAW;AACvB,wBAAA,QAAQ,EAAE,GAAG;AACd,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;AAER,GAAA,CAAA;AACH,iBAAA;;;ACpRD;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-textarea.mjs","sources":["../../../library/component/textarea/textarea.component.ts","../../../library/component/textarea/ojiepermana-angular-component-textarea.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, computed, inject, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\n@Component({\n selector: 'textarea[Textarea]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'classes()' },\n template: '',\n})\nexport class TextareaComponent {\n private readonly el = inject<ElementRef<HTMLTextAreaElement>>(ElementRef);\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n [\n 'flex min-h-[60px] w-full resize-y rounded-md border border-input bg-transparent px-3 py-2',\n 'text-sm shadow-sm transition-colors',\n 'placeholder:text-muted-foreground',\n 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'aria-[invalid=true]:border-destructive aria-[invalid=true]:focus-visible:ring-destructive',\n ].join(' '),\n this.class(),\n ),\n );\n\n focus(): void {\n this.el.nativeElement.focus();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MASa,iBAAiB,CAAA;AACX,IAAA,EAAE,GAAG,MAAM,CAAkC,UAAU,CAAC;IAChE,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA;QACE,2FAA2F;QAC3F,qCAAqC;QACrC,mCAAmC;QACnC,yEAAyE;QACzE,iDAAiD;QACjD,2FAA2F;KAC5F,CAAC,IAAI,CAAC,GAAG,CAAC,EACX,IAAI,CAAC,KAAK,EAAE,CACb;gFACF;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;IAC/B;uGApBW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,kQAFlB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAED,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;AAChC,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA;;;ACRD;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-timeline.mjs","sources":["../../../library/component/timeline/timeline.component.ts","../../../library/component/timeline/ojiepermana-angular-component-timeline.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, booleanAttribute, computed, inject, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\nexport type TimelineAlign = 'start' | 'baseline' | 'center' | 'end';\nexport type TimelineSize = 'default' | 'lg';\nexport type TimelineStatus = 'complete' | 'current' | 'incomplete';\nexport type TimelineIndicatorVariant = 'default' | 'bare';\nexport type TimelineIndicatorColor =\n | 'red'\n | 'orange'\n | 'amber'\n | 'yellow'\n | 'lime'\n | 'green'\n | 'emerald'\n | 'teal'\n | 'cyan'\n | 'sky'\n | 'blue'\n | 'indigo'\n | 'violet'\n | 'purple'\n | 'fuchsia'\n | 'pink'\n | 'rose';\n\nconst TIMELINE_BASE = [\n 'w-full min-w-0 text-sm text-foreground',\n '[--timeline-content-gap:0.75rem] [--timeline-indicator-size:1.5rem] [--timeline-item-gap:1.5rem]',\n].join(' ');\n\nconst timelineSizeClasses: Record<TimelineSize, string> = {\n default: '[--timeline-indicator-size:1.5rem]',\n lg: '[--timeline-indicator-size:2.5rem] [--timeline-content-gap:1rem]',\n};\n\nconst timelineAlignClasses: Record<TimelineAlign, string> = {\n start: 'items-start',\n baseline: 'items-baseline',\n center: 'items-center',\n end: 'items-end',\n};\n\nconst timelineItemStatusClasses: Record<TimelineStatus, string> = {\n complete: 'before:bg-primary after:bg-primary',\n current: 'before:bg-border after:bg-border',\n incomplete: 'before:bg-border/70 after:bg-border/70',\n};\n\nconst timelineIndicatorStatusClasses: Record<TimelineStatus, string> = {\n complete: 'border-primary bg-primary text-primary-foreground',\n current: 'border-ring bg-background text-foreground ring-2 ring-ring ring-offset-2 ring-offset-background',\n incomplete: 'border-border bg-background text-muted-foreground',\n};\n\nconst timelineIndicatorColorClasses: Record<TimelineIndicatorColor, string> = {\n red: 'border-[hsl(var(--timeline-indicator-red))] bg-[hsl(var(--timeline-indicator-red))] text-[hsl(var(--timeline-indicator-red-foreground))]',\n orange:\n 'border-[hsl(var(--timeline-indicator-orange))] bg-[hsl(var(--timeline-indicator-orange))] text-[hsl(var(--timeline-indicator-orange-foreground))]',\n amber:\n 'border-[hsl(var(--timeline-indicator-amber))] bg-[hsl(var(--timeline-indicator-amber))] text-[hsl(var(--timeline-indicator-amber-foreground))]',\n yellow:\n 'border-[hsl(var(--timeline-indicator-yellow))] bg-[hsl(var(--timeline-indicator-yellow))] text-[hsl(var(--timeline-indicator-yellow-foreground))]',\n lime: 'border-[hsl(var(--timeline-indicator-lime))] bg-[hsl(var(--timeline-indicator-lime))] text-[hsl(var(--timeline-indicator-lime-foreground))]',\n green:\n 'border-[hsl(var(--timeline-indicator-green))] bg-[hsl(var(--timeline-indicator-green))] text-[hsl(var(--timeline-indicator-green-foreground))]',\n emerald:\n 'border-[hsl(var(--timeline-indicator-emerald))] bg-[hsl(var(--timeline-indicator-emerald))] text-[hsl(var(--timeline-indicator-emerald-foreground))]',\n teal: 'border-[hsl(var(--timeline-indicator-teal))] bg-[hsl(var(--timeline-indicator-teal))] text-[hsl(var(--timeline-indicator-teal-foreground))]',\n cyan: 'border-[hsl(var(--timeline-indicator-cyan))] bg-[hsl(var(--timeline-indicator-cyan))] text-[hsl(var(--timeline-indicator-cyan-foreground))]',\n sky: 'border-[hsl(var(--timeline-indicator-sky))] bg-[hsl(var(--timeline-indicator-sky))] text-[hsl(var(--timeline-indicator-sky-foreground))]',\n blue: 'border-[hsl(var(--timeline-indicator-blue))] bg-[hsl(var(--timeline-indicator-blue))] text-[hsl(var(--timeline-indicator-blue-foreground))]',\n indigo:\n 'border-[hsl(var(--timeline-indicator-indigo))] bg-[hsl(var(--timeline-indicator-indigo))] text-[hsl(var(--timeline-indicator-indigo-foreground))]',\n violet:\n 'border-[hsl(var(--timeline-indicator-violet))] bg-[hsl(var(--timeline-indicator-violet))] text-[hsl(var(--timeline-indicator-violet-foreground))]',\n purple:\n 'border-[hsl(var(--timeline-indicator-purple))] bg-[hsl(var(--timeline-indicator-purple))] text-[hsl(var(--timeline-indicator-purple-foreground))]',\n fuchsia:\n 'border-[hsl(var(--timeline-indicator-fuchsia))] bg-[hsl(var(--timeline-indicator-fuchsia))] text-[hsl(var(--timeline-indicator-fuchsia-foreground))]',\n pink: 'border-[hsl(var(--timeline-indicator-pink))] bg-[hsl(var(--timeline-indicator-pink))] text-[hsl(var(--timeline-indicator-pink-foreground))]',\n rose: 'border-[hsl(var(--timeline-indicator-rose))] bg-[hsl(var(--timeline-indicator-rose))] text-[hsl(var(--timeline-indicator-rose-foreground))]',\n};\n\n@Component({\n selector: 'Timeline',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"timeline\"',\n '[attr.data-orientation]': 'horizontal() ? \"horizontal\" : \"vertical\"',\n '[attr.data-align]': 'align()',\n '[attr.data-size]': 'size()',\n },\n template: `<ng-content />`,\n})\nexport class TimelineComponent {\n readonly horizontal = input(false, { transform: booleanAttribute });\n readonly align = input<TimelineAlign>('center');\n readonly size = input<TimelineSize>('default');\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n TIMELINE_BASE,\n timelineSizeClasses[this.size()],\n this.horizontal() ? 'flex min-w-0 items-start gap-[var(--timeline-item-gap)] overflow-x-auto pb-1' : 'grid',\n this.class(),\n ),\n );\n}\n\n@Component({\n selector: 'TimelineItem',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"timeline-item\"',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-align]': 'resolvedAlign()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-status]': 'status() ?? null',\n },\n template: `<ng-content />`,\n})\nexport class TimelineItemComponent {\n private readonly timeline = inject(TimelineComponent, { optional: true });\n\n readonly status = input<TimelineStatus | null>(null);\n readonly align = input<TimelineAlign | null>(null);\n readonly size = input<TimelineSize | null>(null);\n readonly class = input<string>('');\n\n readonly orientation = computed(() => (this.timeline?.horizontal() ? 'horizontal' : 'vertical'));\n readonly resolvedAlign = computed(() => this.align() ?? this.timeline?.align() ?? 'center');\n readonly resolvedSize = computed(() => this.size() ?? this.timeline?.size() ?? 'default');\n\n protected readonly classes = computed(() => {\n const status = this.status();\n const orientation = this.orientation();\n\n return cn(\n 'relative min-w-0',\n timelineSizeClasses[this.resolvedSize()],\n orientation === 'horizontal'\n ? [\n \"before:content-['']\",\n 'grid min-w-32 flex-1 justify-items-center gap-y-2 text-center',\n 'before:absolute before:left-0 before:right-0 before:top-[calc(var(--timeline-indicator-size)/2)] before:h-px before:bg-border',\n 'first:before:left-1/2 last:before:right-1/2',\n ].join(' ')\n : [\n \"after:content-['']\",\n 'grid grid-cols-[var(--timeline-indicator-size)_minmax(0,1fr)] gap-x-[var(--timeline-content-gap)] pb-[var(--timeline-item-gap)] last:pb-0',\n 'after:absolute after:bottom-0 after:left-[calc(var(--timeline-indicator-size)/2)] after:top-[calc(var(--timeline-indicator-size)+0.25rem)] after:w-px after:-translate-x-1/2 after:bg-border last:after:hidden',\n timelineAlignClasses[this.resolvedAlign()],\n ].join(' '),\n status ? timelineItemStatusClasses[status] : 'before:bg-border after:bg-border',\n this.class(),\n );\n });\n}\n\n@Component({\n selector: 'TimelineIndicator',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"timeline-indicator\"',\n '[attr.data-variant]': 'variant()',\n '[attr.data-status]': 'resolvedStatus()',\n '[attr.data-color]': 'color() ?? null',\n },\n template: `<ng-content />`,\n})\nexport class TimelineIndicatorComponent {\n private readonly item = inject(TimelineItemComponent, { optional: true });\n\n readonly variant = input<TimelineIndicatorVariant>('default');\n readonly status = input<TimelineStatus | null>(null);\n readonly color = input<TimelineIndicatorColor | null>(null);\n readonly class = input<string>('');\n\n protected readonly resolvedStatus = computed(() => this.status() ?? this.item?.status() ?? 'incomplete');\n protected readonly classes = computed(() => {\n const color = this.color();\n\n return cn(\n 'relative z-10 col-start-1 row-start-1 inline-flex shrink-0 items-center justify-center justify-self-center',\n this.item?.orientation() === 'horizontal' ? 'row-start-1' : '',\n this.variant() === 'bare'\n ? 'bg-background text-muted-foreground'\n : [\n 'size-[var(--timeline-indicator-size)] rounded-full border text-xs font-medium shadow-sm',\n color ? timelineIndicatorColorClasses[color] : timelineIndicatorStatusClasses[this.resolvedStatus()],\n ].join(' '),\n this.class(),\n );\n });\n}\n\n@Component({\n selector: 'TimelineContent',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"timeline-content\"',\n },\n template: `<ng-content />`,\n})\nexport class TimelineContentComponent {\n private readonly item = inject(TimelineItemComponent, { optional: true });\n\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'min-w-0 text-sm leading-6 text-foreground',\n this.item?.orientation() === 'horizontal' ? 'row-start-2 max-w-40 text-center' : 'col-start-2 row-start-1',\n this.class(),\n ),\n );\n}\n\n@Component({\n selector: 'TimelineBlock',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"timeline-block\"',\n },\n template: `<ng-content />`,\n})\nexport class TimelineBlockComponent {\n private readonly item = inject(TimelineItemComponent, { optional: true });\n\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn('min-w-0', this.item?.orientation() === 'horizontal' ? 'row-start-2 w-full' : 'col-span-full', this.class()),\n );\n}\n\n@Component({\n selector: 'TimelineSubgrid',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"timeline-subgrid\"',\n },\n template: `<ng-content />`,\n})\nexport class TimelineSubgridComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'grid min-w-0 grid-cols-[var(--timeline-indicator-size)_minmax(0,1fr)] gap-x-[var(--timeline-content-gap)]',\n this.class(),\n ),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-toast.mjs","sources":["../../../library/component/toast/toast.service.ts","../../../library/component/toast/ojiepermana-angular-component-toast.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Service, inject } from '@angular/core';\n\nexport type ToastVariant = 'default' | 'destructive' | 'success' | 'info' | 'warning';\n\nexport type ToastMessage<T> = string | ((value: T) => string);\n\nexport interface ToastPromiseMessages<T> {\n readonly loading: string;\n readonly success: ToastMessage<T>;\n readonly error: ToastMessage<unknown>;\n}\n\nexport type ToastHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\nexport type ToastVerticalPosition = 'top' | 'bottom';\n\nexport interface ToastOptions {\n readonly title?: string;\n readonly description?: string;\n readonly action?: string;\n readonly variant?: ToastVariant;\n readonly durationMs?: number | null;\n readonly horizontalPosition?: ToastHorizontalPosition;\n readonly verticalPosition?: ToastVerticalPosition;\n}\n\n/** Handle for a shown toast. */\nexport interface ToastRef {\n dismiss(): void;\n /** Resolves with `true` when the action button dismissed the toast. */\n readonly afterDismissed: Promise<{ dismissedByAction: boolean }>;\n}\n\nconst DEFAULT_TOAST_DURATION_MS = 5000;\n\nconst VARIANT_CLASSES: Record<ToastVariant, string> = {\n default: 'border-border bg-background text-foreground',\n destructive: 'border-destructive/50 bg-destructive text-destructive-foreground',\n success: 'border-emerald-500/40 bg-emerald-600 text-white',\n info: 'border-sky-500/40 bg-sky-600 text-white',\n warning: 'border-amber-500/40 bg-amber-500 text-black',\n};\n\nconst resolveToastMessage = <T>(message: ToastMessage<T>, value: T): string =>\n typeof message === 'function' ? message(value) : message;\n\n/**\n * Signal-era toast tanpa dependensi Material: stack dirender ke sebuah live\n * region (`role=\"status\"`, `aria-live=\"polite\"`) sehingga screen reader\n * mengumumkan setiap toast.\n */\n@Service()\nexport class ToastService {\n private readonly documentRef = inject(DOCUMENT, { optional: true });\n private container: HTMLElement | null = null;\n private readonly active = new Set<HTMLElement>();\n\n show(options: ToastOptions): ToastRef {\n const doc = this.documentRef;\n\n if (!doc) {\n return { dismiss: () => {}, afterDismissed: Promise.resolve({ dismissedByAction: false }) };\n }\n\n const variant = options.variant ?? 'default';\n const container = this.ensureContainer(doc, options);\n\n const toast = doc.createElement('div');\n toast.className = [\n 'toast-panel pointer-events-auto flex w-80 items-start gap-3 rounded-md border p-4 shadow-lg',\n `toast-${variant}`,\n VARIANT_CLASSES[variant],\n ].join(' ');\n toast.setAttribute('data-variant', variant);\n\n const body = doc.createElement('div');\n body.className = 'flex min-w-0 flex-1 flex-col gap-1';\n\n if (options.title) {\n const title = doc.createElement('p');\n title.className = 'text-sm font-semibold leading-tight';\n title.textContent = options.title;\n body.appendChild(title);\n }\n\n if (options.description) {\n const description = doc.createElement('p');\n description.className = 'text-sm leading-snug opacity-90';\n description.textContent = options.description;\n body.appendChild(description);\n }\n\n toast.appendChild(body);\n\n let resolveDismiss: (result: { dismissedByAction: boolean }) => void = () => {};\n const afterDismissed = new Promise<{ dismissedByAction: boolean }>((resolve) => {\n resolveDismiss = resolve;\n });\n\n let timeoutId: number | null = null;\n\n const dismiss = (dismissedByAction = false): void => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n if (!this.active.delete(toast)) {\n return;\n }\n toast.remove();\n if (this.active.size === 0) {\n this.container?.remove();\n this.container = null;\n }\n resolveDismiss({ dismissedByAction });\n };\n\n if (options.action) {\n const action = doc.createElement('button');\n action.type = 'button';\n action.className =\n 'shrink-0 rounded-md border border-current/30 px-2 py-1 text-xs font-medium transition-opacity hover:opacity-80';\n action.textContent = options.action;\n action.addEventListener('click', () => dismiss(true), { once: true });\n toast.appendChild(action);\n }\n\n container.appendChild(toast);\n this.active.add(toast);\n\n const duration = options.durationMs === null ? null : (options.durationMs ?? DEFAULT_TOAST_DURATION_MS);\n if (duration !== null) {\n timeoutId = (doc.defaultView ?? globalThis).setTimeout(() => dismiss(false), duration) as unknown as number;\n }\n\n return { dismiss: () => dismiss(false), afterDismissed };\n }\n\n success(opts: Omit<ToastOptions, 'variant'>): ToastRef {\n return this.show({ ...opts, variant: 'success' });\n }\n\n info(opts: Omit<ToastOptions, 'variant'>): ToastRef {\n return this.show({ ...opts, variant: 'info' });\n }\n\n warning(opts: Omit<ToastOptions, 'variant'>): ToastRef {\n return this.show({ ...opts, variant: 'warning' });\n }\n\n error(opts: Omit<ToastOptions, 'variant'>): ToastRef {\n return this.show({ ...opts, variant: 'destructive' });\n }\n\n async promise<T>(taskOrFactory: Promise<T> | (() => Promise<T>), messages: ToastPromiseMessages<T>): Promise<T> {\n const loading = this.show({ title: messages.loading, durationMs: null });\n\n try {\n const task = typeof taskOrFactory === 'function' ? taskOrFactory() : taskOrFactory;\n const value = await task;\n loading.dismiss();\n this.success({ title: resolveToastMessage(messages.success, value) });\n return value;\n } catch (error: unknown) {\n loading.dismiss();\n this.error({ title: resolveToastMessage(messages.error, error) });\n throw error;\n }\n }\n\n dismiss(): void {\n for (const toast of [...this.active]) {\n this.active.delete(toast);\n toast.remove();\n }\n this.container?.remove();\n this.container = null;\n }\n\n private ensureContainer(doc: Document, options: ToastOptions): HTMLElement {\n if (this.container?.isConnected) {\n return this.container;\n }\n\n const container = doc.createElement('div');\n container.className = 'toast-container pointer-events-none fixed z-50 flex flex-col gap-2 p-4';\n container.setAttribute('role', 'status');\n container.setAttribute('aria-live', 'polite');\n\n const vertical = options.verticalPosition ?? 'bottom';\n const horizontal = options.horizontalPosition ?? 'end';\n\n container.style.setProperty(vertical === 'top' ? 'top' : 'bottom', '0');\n if (horizontal === 'center') {\n container.style.setProperty('left', '50%');\n container.style.setProperty('transform', 'translateX(-50%)');\n } else if (horizontal === 'start' || horizontal === 'left') {\n container.style.setProperty('left', '0');\n } else {\n container.style.setProperty('right', '0');\n }\n\n doc.body.appendChild(container);\n this.container = container;\n return container;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-toggle-group.mjs","sources":["../../../library/component/toggle-group/toggle-group.component.ts","../../../library/component/toggle-group/ojiepermana-angular-component-toggle-group.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n computed,\n forwardRef,\n inject,\n input,\n model,\n numberAttribute,\n signal,\n} from '@angular/core';\nimport { type ToggleSize, toggleVariants, type ToggleVariant } from '@ojiepermana/angular-component/toggle';\nimport { cn } from '@ojiepermana/angular-component/utils';\n\nexport type ToggleGroupType = 'single' | 'multiple';\nexport type ToggleGroupOrientation = 'horizontal' | 'vertical';\nexport type ToggleGroupVariant = ToggleVariant;\nexport type ToggleGroupSize = ToggleSize;\n\ninterface ToggleGroupItemRegistration {\n readonly element: HTMLElement;\n readonly value: () => string;\n readonly disabled: () => boolean;\n}\n\nconst spacingClasses = {\n 0: '',\n 1: 'gap-1',\n 2: 'gap-2',\n 3: 'gap-3',\n 4: 'gap-4',\n} as const;\n\nconst connectedItemClasses: Record<ToggleGroupOrientation, string> = {\n horizontal: [\n '[&>[data-slot=toggle-group-item]:not(:first-child)]:rounded-s-none',\n '[&>[data-slot=toggle-group-item]:not(:first-child)]:[border-inline-start-width:0]',\n '[&>[data-slot=toggle-group-item]:not(:last-child)]:rounded-e-none',\n ].join(' '),\n vertical: [\n '[&>[data-slot=toggle-group-item]:not(:first-child)]:rounded-t-none',\n '[&>[data-slot=toggle-group-item]:not(:first-child)]:border-t-0',\n '[&>[data-slot=toggle-group-item]:not(:last-child)]:rounded-b-none',\n ].join(' '),\n};\n\n@Directive()\nexport abstract class ToggleGroupContextBase {\n abstract groupType(): ToggleGroupType;\n abstract groupOrientation(): ToggleGroupOrientation;\n abstract groupVariant(): ToggleGroupVariant;\n abstract groupSize(): ToggleGroupSize;\n abstract groupDisabled(): boolean;\n abstract isRtl(): boolean;\n\n abstract register(element: HTMLElement, value: () => string, disabled: () => boolean): void;\n abstract unregister(element: HTMLElement): void;\n abstract isSelected(value: string): boolean;\n abstract toggle(value: string): void;\n abstract tabindexFor(value: string, disabled: boolean): number;\n abstract markFocused(value: string): void;\n abstract focusNext(from: HTMLElement, offset: number): void;\n abstract focusFirst(): void;\n abstract focusLast(): void;\n}\n\n@Component({\n selector: 'ToggleGroup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: ToggleGroupContextBase, useExisting: forwardRef(() => ToggleGroupComponent) }],\n host: {\n '[class]': 'classes()',\n '[attr.role]': '\"group\"',\n '[attr.dir]': 'dir() ?? null',\n '[attr.aria-orientation]': 'orientation()',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-slot]': '\"toggle-group\"',\n '[attr.data-type]': 'type()',\n },\n template: `<ng-content />`,\n})\nexport class ToggleGroupComponent extends ToggleGroupContextBase {\n readonly type = input.required<ToggleGroupType>();\n readonly value = model<string | null>(null);\n readonly values = model<string[]>([]);\n readonly orientation = input<ToggleGroupOrientation>('horizontal');\n readonly variant = input<ToggleGroupVariant>('default');\n readonly size = input<ToggleGroupSize>('default');\n readonly spacing = input(2, { transform: numberAttribute });\n readonly loop = input<boolean>(true);\n readonly disabled = input<boolean>(false);\n readonly dir = input<'ltr' | 'rtl' | null>(null);\n readonly class = input<string>('');\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly focusedValue = signal<string | null>(null);\n private readonly registrationVersion = signal(0);\n private readonly items = new Map<HTMLElement, ToggleGroupItemRegistration>();\n\n private readonly resolvedSpacing = computed(() => normalizeSpacing(this.spacing()));\n private readonly tabStopValue = computed(() => {\n this.registrationVersion();\n\n const enabledItems = this.enabledItems();\n if (enabledItems.length === 0) return null;\n\n const current = this.focusedValue();\n if (current && enabledItems.some((item) => item.value() === current)) {\n return current;\n }\n\n const selected = enabledItems.find((item) => this.isSelected(item.value()));\n return selected?.value() ?? enabledItems[0].value();\n });\n\n protected readonly classes = computed(() =>\n cn(\n 'inline-flex w-fit',\n this.orientation() === 'vertical' ? 'flex-col items-stretch' : 'items-center',\n spacingClasses[this.resolvedSpacing()],\n this.resolvedSpacing() === 0 && connectedItemClasses[this.orientation()],\n this.class(),\n ),\n );\n\n override groupType(): ToggleGroupType {\n return this.type();\n }\n\n override groupOrientation(): ToggleGroupOrientation {\n return this.orientation();\n }\n\n override groupVariant(): ToggleGroupVariant {\n return this.variant();\n }\n\n override groupSize(): ToggleGroupSize {\n return this.size();\n }\n\n override groupDisabled(): boolean {\n return this.disabled();\n }\n\n override isRtl(): boolean {\n const explicitDir = this.dir();\n if (explicitDir) return explicitDir === 'rtl';\n\n const host = this.host.nativeElement;\n const nearestDir = host.closest('[dir]')?.getAttribute('dir');\n if (nearestDir === 'rtl' || nearestDir === 'ltr') {\n return nearestDir === 'rtl';\n }\n\n return getComputedStyle(host).direction === 'rtl';\n }\n\n override register(element: HTMLElement, value: () => string, disabled: () => boolean): void {\n this.items.set(element, { element, value, disabled });\n this.bumpRegistrationVersion();\n }\n\n override unregister(element: HTMLElement): void {\n this.items.delete(element);\n this.bumpRegistrationVersion();\n }\n\n override isSelected(value: string): boolean {\n return this.type() === 'multiple' ? this.values().includes(value) : this.value() === value;\n }\n\n override toggle(value: string): void {\n const item = this.itemForValue(value);\n if (!item || this.disabled() || item.disabled()) return;\n\n this.focusedValue.set(value);\n\n if (this.type() === 'multiple') {\n this.values.update((current) =>\n current.includes(value) ? current.filter((itemValue) => itemValue !== value) : [...current, value],\n );\n return;\n }\n\n this.value.set(this.value() === value ? null : value);\n }\n\n override tabindexFor(value: string, disabled: boolean): number {\n if (this.disabled() || disabled) return -1;\n return this.tabStopValue() === value ? 0 : -1;\n }\n\n override markFocused(value: string): void {\n const item = this.itemForValue(value);\n if (!item || this.disabled() || item.disabled()) return;\n this.focusedValue.set(value);\n }\n\n override focusNext(from: HTMLElement, offset: number): void {\n const enabledItems = this.enabledItems();\n const currentIndex = enabledItems.findIndex((item) => item.element === from);\n if (currentIndex < 0 || enabledItems.length === 0) return;\n\n let nextIndex = currentIndex + offset;\n\n if (this.loop()) {\n nextIndex = (nextIndex + enabledItems.length) % enabledItems.length;\n } else if (nextIndex < 0 || nextIndex >= enabledItems.length) {\n return;\n }\n\n const next = enabledItems[nextIndex];\n this.focusedValue.set(next.value());\n next.element.focus();\n }\n\n override focusFirst(): void {\n const first = this.enabledItems()[0];\n if (!first) return;\n this.focusedValue.set(first.value());\n first.element.focus();\n }\n\n override focusLast(): void {\n const enabledItems = this.enabledItems();\n const last = enabledItems[enabledItems.length - 1];\n if (!last) return;\n this.focusedValue.set(last.value());\n last.element.focus();\n }\n\n private enabledItems(): ToggleGroupItemRegistration[] {\n return [...this.items.values()].filter((item) => !item.disabled());\n }\n\n private itemForValue(value: string): ToggleGroupItemRegistration | undefined {\n return [...this.items.values()].find((item) => item.value() === value);\n }\n\n private bumpRegistrationVersion(): void {\n this.registrationVersion.update((version) => version + 1);\n }\n}\n\n@Directive({\n selector: 'button[ToggleGroupItem]',\n host: {\n '[class]': 'classes()',\n type: 'button',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\n '[attr.aria-pressed]': 'selected()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.data-orientation]': 'ctx.groupOrientation()',\n '[attr.data-size]': 'ctx.groupSize()',\n '[attr.data-slot]': '\"toggle-group-item\"',\n '[attr.data-state]': 'selected() ? \"on\" : \"off\"',\n '[attr.data-variant]': 'ctx.groupVariant()',\n '[attr.tabindex]': 'ctx.tabindexFor(value(), isDisabled())',\n '[disabled]': 'isDisabled() || null',\n '(click)': 'onClick()',\n '(focus)': 'onFocus()',\n '(keydown.arrowDown)': 'onArrow($any($event), 1)',\n '(keydown.arrowLeft)': 'onHorizontalArrow($any($event), -1)',\n '(keydown.arrowRight)': 'onHorizontalArrow($any($event), 1)',\n '(keydown.arrowUp)': 'onArrow($any($event), -1)',\n '(keydown.end)': 'onEnd($any($event))',\n '(keydown.home)': 'onHome($any($event))',\n },\n})\nexport class ToggleGroupItemDirective {\n protected readonly ctx = inject(ToggleGroupContextBase);\n private readonly element = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n\n readonly value = input.required<string>();\n readonly disabled = input<boolean>(false);\n readonly class = input<string>('');\n\n protected readonly selected = computed(() => this.ctx.isSelected(this.value()));\n protected readonly classes = computed(() =>\n cn(toggleVariants({ variant: this.ctx.groupVariant(), size: this.ctx.groupSize() }), this.class()),\n );\n\n ngOnInit(): void {\n this.ctx.register(this.element.nativeElement, this.value, this.disabled);\n }\n\n ngOnDestroy(): void {\n this.ctx.unregister(this.element.nativeElement);\n }\n\n protected isDisabled(): boolean {\n return this.ctx.groupDisabled() || this.disabled();\n }\n\n protected onClick(): void {\n if (this.isDisabled()) return;\n this.ctx.toggle(this.value());\n }\n\n protected onFocus(): void {\n if (this.isDisabled()) return;\n this.ctx.markFocused(this.value());\n }\n\n protected onArrow(event: KeyboardEvent, offset: number): void {\n event.preventDefault();\n this.ctx.focusNext(this.element.nativeElement, offset);\n }\n\n protected onHorizontalArrow(event: KeyboardEvent, offset: number): void {\n event.preventDefault();\n this.ctx.focusNext(this.element.nativeElement, this.ctx.isRtl() ? offset * -1 : offset);\n }\n\n protected onHome(event: KeyboardEvent): void {\n event.preventDefault();\n this.ctx.focusFirst();\n }\n\n protected onEnd(event: KeyboardEvent): void {\n event.preventDefault();\n this.ctx.focusLast();\n }\n}\n\nfunction normalizeSpacing(value: number): keyof typeof spacingClasses {\n if (value in spacingClasses) {\n return value as keyof typeof spacingClasses;\n }\n\n return 2;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-toggle.mjs","sources":["../../../library/component/toggle/toggle.variants.ts","../../../library/component/toggle/toggle.component.ts","../../../library/component/toggle/ojiepermana-angular-component-toggle.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const toggleVariants = cva(\n [\n 'group/toggle inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md',\n 'text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n 'disabled:pointer-events-none disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n ].join(' '),\n {\n variants: {\n variant: {\n default: [\n 'bg-transparent text-foreground',\n 'hover:bg-muted hover:text-muted-foreground',\n 'data-[state=on]:bg-accent data-[state=on]:text-accent-foreground',\n ].join(' '),\n outline: [\n 'border border-input bg-transparent text-foreground shadow-sm',\n 'hover:bg-accent hover:text-accent-foreground',\n 'data-[state=on]:bg-accent data-[state=on]:text-accent-foreground',\n ].join(' '),\n },\n size: {\n sm: 'h-8 min-w-8 px-2.5 text-xs',\n default: 'h-9 min-w-9 px-3',\n lg: 'h-10 min-w-10 px-3.5',\n },\n },\n defaultVariants: { variant: 'default', size: 'default' },\n },\n);\n\nexport type ToggleVariant = NonNullable<VariantProps<typeof toggleVariants>['variant']>;\nexport type ToggleSize = NonNullable<VariantProps<typeof toggleVariants>['size']>;\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { type ToggleSize, toggleVariants, type ToggleVariant } from './toggle.variants';\n\n@Component({\n selector: 'button[Toggle]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n type: 'button',\n '[attr.aria-pressed]': 'pressed()',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-size]': 'size()',\n '[attr.data-state]': 'pressed() ? \"on\" : \"off\"',\n '[attr.data-variant]': 'variant()',\n '[disabled]': 'disabled() || null',\n '(click)': 'toggle()',\n },\n template: `<ng-content />`,\n})\nexport class ToggleComponent {\n readonly pressed = model(false);\n readonly disabled = input(false);\n readonly variant = input<ToggleVariant>('default');\n readonly size = input<ToggleSize>('default');\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(toggleVariants({ variant: this.variant(), size: this.size() }), this.class()),\n );\n\n toggle(): void {\n if (this.disabled()) {\n return;\n }\n\n this.pressed.update((pressed) => !pressed);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAEO,MAAM,cAAc,GAAG,GAAG,CAC/B;IACE,wGAAwG;IACxG,uCAAuC;IACvC,yEAAyE;IACzE,kDAAkD;IAClD,6DAA6D;AAC9D,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC,EACX;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE;gBACP,gCAAgC;gBAChC,4CAA4C;gBAC5C,kEAAkE;aACnE,CAAC,IAAI,CAAC,GAAG,CAAC;AACX,YAAA,OAAO,EAAE;gBACP,8DAA8D;gBAC9D,8CAA8C;gBAC9C,kEAAkE;aACnE,CAAC,IAAI,CAAC,GAAG,CAAC;AACZ,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,4BAA4B;AAChC,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,EAAE,EAAE,sBAAsB;AAC3B,SAAA;AACF,KAAA;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AACzD,CAAA;;MCXU,eAAe,CAAA;IACjB,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;IACtB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;IACvB,OAAO,GAAG,KAAK,CAAgB,SAAS;gFAAC;IACzC,IAAI,GAAG,KAAK,CAAa,SAAS;6EAAC;IACnC,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFACjF;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC;IAC5C;uGAjBW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,okCAFhB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAhB3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,mBAAmB,EAAE,0BAA0B;AAC/C,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,YAAY,EAAE,oBAAoB;AAClC,wBAAA,SAAS,EAAE,UAAU;AACtB,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;ACnBD;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-tooltip.mjs","sources":["../../../library/component/tooltip/tooltip.component.ts","../../../library/component/tooltip/tooltip-content.directive.ts","../../../library/component/tooltip/tooltip-trigger.directive.ts","../../../library/component/tooltip/tooltip.directive.ts","../../../library/component/tooltip/ojiepermana-angular-component-tooltip.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, InjectionToken, Signal, forwardRef, input } from '@angular/core';\n\nexport type TooltipSide = 'top' | 'right' | 'bottom' | 'left';\nexport type TooltipAlign = 'start' | 'center' | 'end';\n\nexport interface TooltipDefaults {\n readonly side: Signal<TooltipSide>;\n readonly align: Signal<TooltipAlign>;\n readonly sideOffset: Signal<number>;\n readonly openDelay: Signal<number>;\n readonly closeDelay: Signal<number>;\n}\n\nexport const TOOLTIP_DEFAULTS = new InjectionToken<TooltipDefaults>('TOOLTIP_DEFAULTS');\n\n@Component({\n selector: 'Tooltip',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: TOOLTIP_DEFAULTS, useExisting: forwardRef(() => TooltipComponent) }],\n host: {\n class: 'contents',\n },\n template: '<ng-content />',\n})\nexport class TooltipComponent implements TooltipDefaults {\n readonly side = input<TooltipSide>('top');\n readonly align = input<TooltipAlign>('center');\n readonly sideOffset = input(4);\n readonly openDelay = input(150);\n readonly closeDelay = input(0);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[TooltipContent]',\n exportAs: 'TooltipContent',\n})\nexport class TooltipContentDirective {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { DestroyRef, Directive, ElementRef, ViewContainerRef, inject, input, output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { connectedPositionFor, oppositeSide, overlayDismissals, uniqueId } from '@ojiepermana/angular-component/utils';\n\nimport { TOOLTIP_DEFAULTS, type TooltipAlign, type TooltipSide } from './tooltip.component';\nimport type { TooltipContentDirective } from './tooltip-content.directive';\n\nconst TOOLTIP_PANEL_CLASSES = [\n 'tooltip-panel',\n 'pointer-events-none',\n 'z-50',\n 'max-w-xs',\n 'overflow-hidden',\n 'rounded-md',\n 'border',\n 'border-border',\n 'bg-primary',\n 'px-3',\n 'py-1.5',\n 'text-xs',\n 'font-medium',\n 'leading-none',\n 'text-primary-foreground',\n 'shadow-md',\n 'select-none',\n] as const;\n\n@Directive({\n selector: '[TooltipTrigger]',\n exportAs: 'TooltipTrigger',\n host: {\n '[attr.aria-describedby]': 'contentId()',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '(pointerenter)': 'handlePointerEnter()',\n '(pointerleave)': 'handlePointerLeave($event)',\n '(focusin)': 'handleFocusIn()',\n '(focusout)': 'handleFocusOut($event)',\n '(keydown.escape)': 'close()',\n },\n})\nexport class TooltipTriggerDirective {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly defaults = inject(TOOLTIP_DEFAULTS, { optional: true });\n\n readonly TooltipTrigger = input.required<TooltipContentDirective>();\n readonly side = input<TooltipSide | undefined>(undefined);\n readonly align = input<TooltipAlign | undefined>(undefined);\n readonly sideOffset = input<number | undefined>(undefined);\n readonly openDelay = input<number | undefined>(undefined);\n readonly closeDelay = input<number | undefined>(undefined);\n readonly disabled = input(false);\n\n readonly openedChange = output<boolean>();\n\n readonly isOpen = signal(false);\n protected readonly contentId = signal<string | null>(null);\n\n private overlayRef: OverlayRef | null = null;\n private openTimeoutId: number | null = null;\n private closeTimeoutId: number | null = null;\n private isPointerInsideTrigger = false;\n private isTriggerFocused = false;\n private isDestroying = false;\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n this.isDestroying = true;\n this.clearOpenTimeout();\n this.clearCloseTimeout();\n this.contentId.set(null);\n this.isOpen.set(false);\n this.overlayRef?.dispose();\n this.overlayRef = null;\n });\n }\n\n handlePointerEnter(): void {\n if (this.disabled()) {\n return;\n }\n\n this.isPointerInsideTrigger = true;\n this.clearCloseTimeout();\n this.scheduleOpen();\n }\n\n handlePointerLeave(event: PointerEvent): void {\n if (this.el.nativeElement.contains(event.relatedTarget as Node | null)) {\n return;\n }\n\n this.isPointerInsideTrigger = false;\n this.scheduleClose();\n }\n\n handleFocusIn(): void {\n if (this.disabled()) {\n return;\n }\n\n this.isTriggerFocused = true;\n this.clearCloseTimeout();\n this.scheduleOpen();\n }\n\n handleFocusOut(event: FocusEvent): void {\n if (this.el.nativeElement.contains(event.relatedTarget as Node | null)) {\n return;\n }\n\n this.isTriggerFocused = false;\n this.scheduleClose();\n }\n\n open(): void {\n if (this.isOpen() || this.disabled()) {\n return;\n }\n\n const side = this.side() ?? this.defaults?.side() ?? 'top';\n const align = this.align() ?? this.defaults?.align() ?? 'center';\n const sideOffset = this.sideOffset() ?? this.defaults?.sideOffset() ?? 4;\n\n const primary = connectedPositionFor(side, align, sideOffset);\n const fallback = connectedPositionFor(oppositeSide(side), align, sideOffset);\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.el)\n .withPositions([primary, fallback])\n .withPush(false)\n .withFlexibleDimensions(false);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false,\n panelClass: [...TOOLTIP_PANEL_CLASSES],\n });\n\n const tooltipId = uniqueId('Tooltip');\n this.overlayRef.overlayElement.id = tooltipId;\n this.overlayRef.overlayElement.setAttribute('role', 'tooltip');\n\n const portal = new TemplatePortal(this.TooltipTrigger().template, this.vcr);\n this.overlayRef.attach(portal);\n this.bindOverlayLifecycle();\n\n this.contentId.set(tooltipId);\n this.isOpen.set(true);\n\n if (!this.isDestroying) {\n this.openedChange.emit(true);\n }\n }\n\n close(): void {\n this.clearOpenTimeout();\n this.clearCloseTimeout();\n\n if (!this.isOpen()) {\n return;\n }\n\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.contentId.set(null);\n this.isOpen.set(false);\n\n if (!this.isDestroying) {\n this.openedChange.emit(false);\n }\n }\n\n private bindOverlayLifecycle(): void {\n if (!this.overlayRef) {\n return;\n }\n\n overlayDismissals(this.overlayRef, this.el.nativeElement)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.close());\n }\n\n private scheduleOpen(): void {\n this.clearCloseTimeout();\n\n if (this.isOpen()) {\n return;\n }\n\n this.clearOpenTimeout();\n this.openTimeoutId = window.setTimeout(\n () => {\n this.openTimeoutId = null;\n\n if (this.disabled() || (!this.isPointerInsideTrigger && !this.isTriggerFocused)) {\n return;\n }\n\n this.open();\n },\n this.openDelay() ?? this.defaults?.openDelay() ?? 150,\n );\n }\n\n private scheduleClose(): void {\n this.clearOpenTimeout();\n\n if (!this.isOpen()) {\n return;\n }\n\n this.clearCloseTimeout();\n this.closeTimeoutId = window.setTimeout(\n () => {\n this.closeTimeoutId = null;\n\n if (this.isPointerInsideTrigger || this.isTriggerFocused) {\n return;\n }\n\n this.close();\n },\n this.closeDelay() ?? this.defaults?.closeDelay() ?? 0,\n );\n }\n\n private clearOpenTimeout(): void {\n if (this.openTimeoutId !== null) {\n window.clearTimeout(this.openTimeoutId);\n this.openTimeoutId = null;\n }\n }\n\n private clearCloseTimeout(): void {\n if (this.closeTimeoutId !== null) {\n window.clearTimeout(this.closeTimeoutId);\n this.closeTimeoutId = null;\n }\n }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { connectedPositionFor, oppositeSide, uniqueId, type OverlaySide } from '@ojiepermana/angular-component/utils';\n\n/** Posisi tooltip; kompatibel dengan nilai `matTooltipPosition` lama. */\nexport type TooltipPosition = 'left' | 'right' | 'above' | 'below' | 'before' | 'after';\n\nconst POSITION_TO_SIDE: Record<TooltipPosition, OverlaySide> = {\n above: 'top',\n below: 'bottom',\n left: 'left',\n right: 'right',\n before: 'left',\n after: 'right',\n};\n\nconst PANEL_CLASSES = [\n 'tooltip-panel',\n 'pointer-events-none',\n 'z-50',\n 'max-w-xs',\n 'overflow-hidden',\n 'rounded-md',\n 'border',\n 'border-border',\n 'bg-primary',\n 'px-3',\n 'py-1.5',\n 'text-xs',\n 'font-medium',\n 'leading-none',\n 'text-primary-foreground',\n 'shadow-md',\n 'select-none',\n] as const;\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `{{ text() }}`,\n})\nclass TooltipTextComponent {\n readonly text = signal('');\n}\n\n/**\n * Shadcn-styled text tooltip — CDK overlay, tanpa dependensi Material.\n *\n * @example\n * <button Button [Tooltip]=\"'Save changes'\" TooltipPosition=\"above\">Save</button>\n */\n@Directive({\n selector: '[Tooltip]',\n exportAs: 'Tooltip',\n host: {\n '(pointerenter)': 'scheduleShow()',\n '(pointerleave)': 'scheduleHide()',\n '(focusin)': 'scheduleShow()',\n '(focusout)': 'scheduleHide()',\n '(keydown.escape)': 'hide()',\n },\n})\nexport class TooltipDirective {\n private readonly overlay = inject(Overlay);\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly Tooltip = input<string>('');\n readonly TooltipPosition = input<TooltipPosition>('above');\n readonly TooltipDisabled = input<boolean>(false);\n readonly TooltipShowDelay = input<number>(150);\n readonly TooltipHideDelay = input<number>(0);\n\n private overlayRef: OverlayRef | null = null;\n private contentRef: ComponentRef<TooltipTextComponent> | null = null;\n private showTimeoutId: number | null = null;\n private hideTimeoutId: number | null = null;\n\n private readonly side = computed(() => POSITION_TO_SIDE[this.TooltipPosition()]);\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n this.clearTimers();\n this.hide();\n });\n\n // Update teks saat pesan berubah ketika tooltip sedang tampil.\n effect(() => {\n const message = this.Tooltip();\n this.contentRef?.instance.text.set(message);\n });\n }\n\n show(): void {\n if (this.overlayRef || this.TooltipDisabled() || !this.Tooltip()) {\n return;\n }\n\n const side = this.side();\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.el)\n .withPositions([connectedPositionFor(side, 'center', 4), connectedPositionFor(oppositeSide(side), 'center', 4)])\n .withPush(false)\n .withFlexibleDimensions(false);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false,\n panelClass: [...PANEL_CLASSES],\n });\n\n this.contentRef = this.overlayRef.attach(new ComponentPortal(TooltipTextComponent));\n this.contentRef.instance.text.set(this.Tooltip());\n\n const pane = this.overlayRef.overlayElement;\n pane.id = uniqueId('Tooltip');\n pane.setAttribute('role', 'tooltip');\n this.el.nativeElement.setAttribute('aria-describedby', pane.id);\n }\n\n hide(): void {\n this.clearTimers();\n this.el.nativeElement.removeAttribute('aria-describedby');\n this.contentRef = null;\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n protected scheduleShow(): void {\n this.clearTimers();\n this.showTimeoutId = window.setTimeout(() => {\n this.showTimeoutId = null;\n this.show();\n }, this.TooltipShowDelay());\n }\n\n protected scheduleHide(): void {\n this.clearTimers();\n this.hideTimeoutId = window.setTimeout(() => {\n this.hideTimeoutId = null;\n this.hide();\n }, this.TooltipHideDelay());\n }\n\n private clearTimers(): void {\n if (this.showTimeoutId !== null) {\n window.clearTimeout(this.showTimeoutId);\n this.showTimeoutId = null;\n }\n if (this.hideTimeoutId !== null) {\n window.clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = null;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component-utils.mjs","sources":["../../../library/component/utils/cn.util.ts","../../../library/component/utils/overlay.util.ts","../../../library/component/utils/unique-id.util.ts","../../../library/component/utils/ojiepermana-angular-component-utils.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import type { ConnectedPosition, OverlayRef } from '@angular/cdk/overlay';\nimport { merge, type Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport type OverlaySide = 'top' | 'right' | 'bottom' | 'left';\nexport type OverlayAlign = 'start' | 'center' | 'end';\n\nconst POSITION_ANCHORS: Record<OverlaySide, (align: OverlayAlign) => ConnectedPosition> = {\n top: (align) => ({\n originX: align === 'start' ? 'start' : align === 'end' ? 'end' : 'center',\n originY: 'top',\n overlayX: align === 'start' ? 'start' : align === 'end' ? 'end' : 'center',\n overlayY: 'bottom',\n }),\n bottom: (align) => ({\n originX: align === 'start' ? 'start' : align === 'end' ? 'end' : 'center',\n originY: 'bottom',\n overlayX: align === 'start' ? 'start' : align === 'end' ? 'end' : 'center',\n overlayY: 'top',\n }),\n left: (align) => ({\n originX: 'start',\n originY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n overlayX: 'end',\n overlayY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n }),\n right: (align) => ({\n originX: 'end',\n originY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n overlayX: 'start',\n overlayY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n }),\n};\n\n/**\n * Builds the CDK `ConnectedPosition` for a shadcn-style `side`/`align`/`sideOffset`\n * triple. Shared by every anchored overlay in the library (popover, tooltip,\n * hover-card, menus, combobox).\n */\nexport function connectedPositionFor(side: OverlaySide, align: OverlayAlign, sideOffset: number): ConnectedPosition {\n const anchor = POSITION_ANCHORS[side](align);\n\n if (side === 'top') {\n return { ...anchor, offsetY: -sideOffset };\n }\n\n if (side === 'bottom') {\n return { ...anchor, offsetY: sideOffset };\n }\n\n if (side === 'left') {\n return { ...anchor, offsetX: -sideOffset };\n }\n\n return { ...anchor, offsetX: sideOffset };\n}\n\nexport function oppositeSide(side: OverlaySide): OverlaySide {\n return side === 'top' ? 'bottom' : side === 'bottom' ? 'top' : side === 'left' ? 'right' : 'left';\n}\n\n/**\n * Emits whenever the user dismisses the overlay: pointer down outside (ignoring\n * the origin element so trigger clicks keep toggling), Escape, or detachment.\n * Subscribers decide how to close.\n */\nexport function overlayDismissals(overlayRef: OverlayRef, origin?: HTMLElement): Observable<unknown> {\n return merge(\n overlayRef.outsidePointerEvents().pipe(filter((event) => !origin || !origin.contains(event.target as Node))),\n overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape')),\n overlayRef.detachments(),\n );\n}\n","let counter = 0;\n\n/**\n * Returns a document-unique id with the given prefix, e.g. `uniqueId('Checkbox')`\n * → `\"checkbox-1\"`. Single shared counter for every component in the library.\n */\nexport function uniqueId(prefix: string): string {\n counter += 1;\n return `${prefix}-${counter}`;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-component.mjs","sources":["../../../library/component/public-api.ts","../../../library/component/ojiepermana-angular-component.ts"],"sourcesContent":["/*\n * Public API Surface of @ojiepermana/angular-component\n *\n * Komponen dan utilitas diekspos lewat secondary entry point pada setiap folder\n * di dalam library/component.\n */\n\nexport {};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;;;;AAKG;;ACLH;;AAEG"}