@cocoar/ui-components 0.1.0-beta.100 → 0.1.0-beta.109

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.
@@ -3933,6 +3933,61 @@ function cryptoRandomId() {
3933
3933
  return `${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}`;
3934
3934
  }
3935
3935
 
3936
+ /**
3937
+ * CoarSidebar: A three-part layout component for navigation sidebars.
3938
+ *
3939
+ * Provides three distinct slots via content projection:
3940
+ * - **Header** (`[coar-sidebar-header]`): Fixed at top, for logo/title/branding
3941
+ * - **Content** (default slot): Scrollable area for navigation menu or other content
3942
+ * - **Footer** (`[coar-sidebar-footer]`): Fixed at bottom, for actions/settings/user info
3943
+ *
3944
+ * Responsibilities:
3945
+ * - Provide consistent sidebar layout structure
3946
+ * - Apply design tokens for width, spacing, colors
3947
+ * - Handle scrolling behavior (only content area scrolls)
3948
+ * - Support left/right positioning
3949
+ *
3950
+ * @example
3951
+ * ```html
3952
+ * <coar-sidebar>
3953
+ * <div coar-sidebar-header>
3954
+ * <h2>Navigation</h2>
3955
+ * </div>
3956
+ *
3957
+ * <coar-menu borderless>
3958
+ * <coar-menu-item routerLink="/home" routerLinkActive="active">Home</coar-menu-item>
3959
+ * <coar-menu-item routerLink="/about" routerLinkActive="active">About</coar-menu-item>
3960
+ * </coar-menu>
3961
+ *
3962
+ * <div coar-sidebar-footer>
3963
+ * <button>Settings</button>
3964
+ * </div>
3965
+ * </coar-sidebar>
3966
+ * ```
3967
+ */
3968
+ class CoarSidebarComponent {
3969
+ /**
3970
+ * Sidebar position: left or right side of screen.
3971
+ * Default is 'left'.
3972
+ */
3973
+ position = input('left', ...(ngDevMode ? [{ debugName: "position" }] : []));
3974
+ /**
3975
+ * Collapsed state for narrow/icon-only sidebar.
3976
+ * Use as boolean attribute: `<coar-sidebar collapsed>` or `[collapsed]="true"`
3977
+ */
3978
+ collapsed = input(false, { ...(ngDevMode ? { debugName: "collapsed" } : {}), transform: booleanAttribute });
3979
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CoarSidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3980
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: CoarSidebarComponent, isStandalone: true, selector: "coar-sidebar", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.coar-sidebar--collapsed": "collapsed()", "class.coar-sidebar--position-right": "position() === \"right\"" }, classAttribute: "coar-sidebar" }, ngImport: i0, template: "<div class=\"coar-sidebar__header\">\n <ng-content select=\"[coar-sidebar-header]\" />\n</div>\n\n<div class=\"coar-sidebar__content\" coarScrollbar [overflowX]=\"'hidden'\">\n <ng-content />\n</div>\n\n<div class=\"coar-sidebar__footer\">\n <ng-content select=\"[coar-sidebar-footer]\" />\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:var(--coar-sidebar-width, 16rem);min-width:var(--coar-sidebar-min-width, 12rem);max-width:var(--coar-sidebar-max-width, 20rem);background:var(--coar-sidebar-background, var(--coar-background-neutral-primary, #ffffff));border-right:var(--coar-sidebar-border, 1px solid var(--coar-border-neutral-tertiary, #d0d0d0))}:host(.coar-sidebar--position-right){border-right:none;border-left:var(--coar-sidebar-border, 1px solid var(--coar-border-neutral-tertiary, #d0d0d0))}:host(.coar-sidebar--collapsed){width:var(--coar-sidebar-collapsed-width, 4rem);min-width:var(--coar-sidebar-collapsed-width, 4rem)}:host(.coar-sidebar--collapsed) .coar-sidebar__header,:host(.coar-sidebar--collapsed) .coar-sidebar__content,:host(.coar-sidebar--collapsed) .coar-sidebar__footer{display:flex;align-items:center;justify-content:center;text-align:center}.coar-sidebar__header{flex-shrink:0}.coar-sidebar__header:empty{display:none}.coar-sidebar__content{flex:1;overflow-y:auto;overflow-x:hidden;padding:var(--coar-sidebar-content-padding, var(--coar-spacing-s, 8px))}.coar-sidebar__content ::ng-deep coar-menu{padding:0}.coar-sidebar__content ::ng-deep coar-menu-heading{margin-top:var(--coar-spacing-l, 16px);font-size:var(--coar-font-size-xs, 12px)}.coar-sidebar__content ::ng-deep coar-menu-item{border-radius:var(--coar-radius-xxs);margin:var(--coar-spacing-3xs, 2px) 0}.coar-sidebar__content ::ng-deep coar-menu-item:hover{background:var(--coar-background-neutral-tertiary)}.coar-sidebar__content ::ng-deep coar-menu-item.active{background:var(--coar-background-neutral-tertiary)}.coar-sidebar__footer{flex-shrink:0}.coar-sidebar__footer:empty{display:none}\n"], dependencies: [{ kind: "directive", type: CoarScrollbarDirective, selector: "[coarScrollbar]", inputs: ["theme", "autoHide", "autoHideDelay", "clickScroll", "overflowX", "overflowY", "defer", "overscrollBehavior"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3981
+ }
3982
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CoarSidebarComponent, decorators: [{
3983
+ type: Component,
3984
+ args: [{ selector: 'coar-sidebar', standalone: true, imports: [CoarScrollbarDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
3985
+ class: 'coar-sidebar',
3986
+ '[class.coar-sidebar--collapsed]': 'collapsed()',
3987
+ '[class.coar-sidebar--position-right]': 'position() === "right"',
3988
+ }, template: "<div class=\"coar-sidebar__header\">\n <ng-content select=\"[coar-sidebar-header]\" />\n</div>\n\n<div class=\"coar-sidebar__content\" coarScrollbar [overflowX]=\"'hidden'\">\n <ng-content />\n</div>\n\n<div class=\"coar-sidebar__footer\">\n <ng-content select=\"[coar-sidebar-footer]\" />\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:var(--coar-sidebar-width, 16rem);min-width:var(--coar-sidebar-min-width, 12rem);max-width:var(--coar-sidebar-max-width, 20rem);background:var(--coar-sidebar-background, var(--coar-background-neutral-primary, #ffffff));border-right:var(--coar-sidebar-border, 1px solid var(--coar-border-neutral-tertiary, #d0d0d0))}:host(.coar-sidebar--position-right){border-right:none;border-left:var(--coar-sidebar-border, 1px solid var(--coar-border-neutral-tertiary, #d0d0d0))}:host(.coar-sidebar--collapsed){width:var(--coar-sidebar-collapsed-width, 4rem);min-width:var(--coar-sidebar-collapsed-width, 4rem)}:host(.coar-sidebar--collapsed) .coar-sidebar__header,:host(.coar-sidebar--collapsed) .coar-sidebar__content,:host(.coar-sidebar--collapsed) .coar-sidebar__footer{display:flex;align-items:center;justify-content:center;text-align:center}.coar-sidebar__header{flex-shrink:0}.coar-sidebar__header:empty{display:none}.coar-sidebar__content{flex:1;overflow-y:auto;overflow-x:hidden;padding:var(--coar-sidebar-content-padding, var(--coar-spacing-s, 8px))}.coar-sidebar__content ::ng-deep coar-menu{padding:0}.coar-sidebar__content ::ng-deep coar-menu-heading{margin-top:var(--coar-spacing-l, 16px);font-size:var(--coar-font-size-xs, 12px)}.coar-sidebar__content ::ng-deep coar-menu-item{border-radius:var(--coar-radius-xxs);margin:var(--coar-spacing-3xs, 2px) 0}.coar-sidebar__content ::ng-deep coar-menu-item:hover{background:var(--coar-background-neutral-tertiary)}.coar-sidebar__content ::ng-deep coar-menu-item.active{background:var(--coar-background-neutral-tertiary)}.coar-sidebar__footer{flex-shrink:0}.coar-sidebar__footer:empty{display:none}\n"] }]
3989
+ }], propDecorators: { position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }] } });
3990
+
3936
3991
  /**
3937
3992
  * Standalone label component for consistent form labeling across the design system.
3938
3993
  *
@@ -4852,5 +4907,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
4852
4907
  * Generated bundle index. Do not edit.
4853
4908
  */
4854
4909
 
4855
- export { COAR_BUILTIN_ICON_SOURCE_KEY, COAR_DEFAULT_ICON_SOURCE_KEY, COAR_ICON_SOURCE_ENTRY, COAR_LOCALE_SERVICE, CoarBadgeComponent, CoarButtonComponent, CoarCardComponent, CoarCheckboxComponent, CoarCodeBlockComponent, CoarControlValueAccessor, CoarDatePickerComponent, CoarDividerComponent, CoarIconComponent, CoarIconService, CoarLabelComponent, CoarLocaleService, CoarMultiSelectComponent, CoarNoteComponent, CoarNumberInputComponent, CoarPasswordInputComponent, CoarPopoverComponent, CoarPopoverGroupService, CoarScrollbarDirective, CoarSingleSelectComponent, CoarTabComponent, CoarTabGroupComponent, CoarTableComponent, CoarTagComponent, CoarTagSelectComponent, CoarTextInputComponent, CoarTooltipDirective, coarProvideValueAccessor, provideCoarDefaultIconSource, provideCoarHttpIconSource, provideCoarIconBuiltInOverrides, provideCoarIconMapSource, provideCoarIconSource };
4910
+ export { COAR_BUILTIN_ICON_SOURCE_KEY, COAR_DEFAULT_ICON_SOURCE_KEY, COAR_ICON_SOURCE_ENTRY, COAR_LOCALE_SERVICE, CoarBadgeComponent, CoarButtonComponent, CoarCardComponent, CoarCheckboxComponent, CoarCodeBlockComponent, CoarControlValueAccessor, CoarDatePickerComponent, CoarDividerComponent, CoarIconComponent, CoarIconService, CoarLabelComponent, CoarLocaleService, CoarMultiSelectComponent, CoarNoteComponent, CoarNumberInputComponent, CoarPasswordInputComponent, CoarPopoverComponent, CoarPopoverGroupService, CoarScrollbarDirective, CoarSidebarComponent, CoarSingleSelectComponent, CoarTabComponent, CoarTabGroupComponent, CoarTableComponent, CoarTagComponent, CoarTagSelectComponent, CoarTextInputComponent, CoarTooltipDirective, coarProvideValueAccessor, provideCoarDefaultIconSource, provideCoarHttpIconSource, provideCoarIconBuiltInOverrides, provideCoarIconMapSource, provideCoarIconSource };
4856
4911
  //# sourceMappingURL=cocoar-ui-components.mjs.map