ngx-com 0.0.1 → 0.0.4

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 (82) hide show
  1. package/fesm2022/ngx-com-components-avatar.mjs +772 -0
  2. package/fesm2022/ngx-com-components-avatar.mjs.map +1 -0
  3. package/fesm2022/ngx-com-components-badge.mjs +138 -0
  4. package/fesm2022/ngx-com-components-badge.mjs.map +1 -0
  5. package/fesm2022/ngx-com-components-button.mjs +146 -0
  6. package/fesm2022/ngx-com-components-button.mjs.map +1 -0
  7. package/fesm2022/ngx-com-components-calendar.mjs +5046 -0
  8. package/fesm2022/ngx-com-components-calendar.mjs.map +1 -0
  9. package/fesm2022/ngx-com-components-card.mjs +590 -0
  10. package/fesm2022/ngx-com-components-card.mjs.map +1 -0
  11. package/fesm2022/ngx-com-components-checkbox.mjs +344 -0
  12. package/fesm2022/ngx-com-components-checkbox.mjs.map +1 -0
  13. package/fesm2022/ngx-com-components-collapsible.mjs +612 -0
  14. package/fesm2022/ngx-com-components-collapsible.mjs.map +1 -0
  15. package/fesm2022/ngx-com-components-confirm.mjs +562 -0
  16. package/fesm2022/ngx-com-components-confirm.mjs.map +1 -0
  17. package/fesm2022/ngx-com-components-dropdown-testing.mjs +255 -0
  18. package/fesm2022/ngx-com-components-dropdown-testing.mjs.map +1 -0
  19. package/fesm2022/ngx-com-components-dropdown.mjs +2692 -0
  20. package/fesm2022/ngx-com-components-dropdown.mjs.map +1 -0
  21. package/fesm2022/ngx-com-components-empty-state.mjs +382 -0
  22. package/fesm2022/ngx-com-components-empty-state.mjs.map +1 -0
  23. package/fesm2022/ngx-com-components-form-field.mjs +924 -0
  24. package/fesm2022/ngx-com-components-form-field.mjs.map +1 -0
  25. package/fesm2022/ngx-com-components-icon.mjs +183 -0
  26. package/fesm2022/ngx-com-components-icon.mjs.map +1 -0
  27. package/fesm2022/ngx-com-components-item.mjs +578 -0
  28. package/fesm2022/ngx-com-components-item.mjs.map +1 -0
  29. package/fesm2022/ngx-com-components-menu.mjs +1200 -0
  30. package/fesm2022/ngx-com-components-menu.mjs.map +1 -0
  31. package/fesm2022/ngx-com-components-paginator.mjs +823 -0
  32. package/fesm2022/ngx-com-components-paginator.mjs.map +1 -0
  33. package/fesm2022/ngx-com-components-popover.mjs +901 -0
  34. package/fesm2022/ngx-com-components-popover.mjs.map +1 -0
  35. package/fesm2022/ngx-com-components-radio.mjs +621 -0
  36. package/fesm2022/ngx-com-components-radio.mjs.map +1 -0
  37. package/fesm2022/ngx-com-components-segmented-control.mjs +538 -0
  38. package/fesm2022/ngx-com-components-segmented-control.mjs.map +1 -0
  39. package/fesm2022/ngx-com-components-sort.mjs +368 -0
  40. package/fesm2022/ngx-com-components-sort.mjs.map +1 -0
  41. package/fesm2022/ngx-com-components-spinner.mjs +189 -0
  42. package/fesm2022/ngx-com-components-spinner.mjs.map +1 -0
  43. package/fesm2022/ngx-com-components-tabs.mjs +1522 -0
  44. package/fesm2022/ngx-com-components-tabs.mjs.map +1 -0
  45. package/fesm2022/ngx-com-components-tooltip.mjs +625 -0
  46. package/fesm2022/ngx-com-components-tooltip.mjs.map +1 -0
  47. package/fesm2022/ngx-com-components.mjs +17 -0
  48. package/fesm2022/ngx-com-components.mjs.map +1 -0
  49. package/fesm2022/ngx-com-tokens.mjs +12 -0
  50. package/fesm2022/ngx-com-tokens.mjs.map +1 -0
  51. package/fesm2022/ngx-com-utils.mjs +601 -0
  52. package/fesm2022/ngx-com-utils.mjs.map +1 -0
  53. package/fesm2022/ngx-com.mjs +9 -23
  54. package/fesm2022/ngx-com.mjs.map +1 -1
  55. package/package.json +105 -1
  56. package/types/ngx-com-components-avatar.d.ts +409 -0
  57. package/types/ngx-com-components-badge.d.ts +97 -0
  58. package/types/ngx-com-components-button.d.ts +69 -0
  59. package/types/ngx-com-components-calendar.d.ts +1665 -0
  60. package/types/ngx-com-components-card.d.ts +373 -0
  61. package/types/ngx-com-components-checkbox.d.ts +116 -0
  62. package/types/ngx-com-components-collapsible.d.ts +379 -0
  63. package/types/ngx-com-components-confirm.d.ts +160 -0
  64. package/types/ngx-com-components-dropdown-testing.d.ts +116 -0
  65. package/types/ngx-com-components-dropdown.d.ts +938 -0
  66. package/types/ngx-com-components-empty-state.d.ts +269 -0
  67. package/types/ngx-com-components-form-field.d.ts +531 -0
  68. package/types/ngx-com-components-icon.d.ts +94 -0
  69. package/types/ngx-com-components-item.d.ts +336 -0
  70. package/types/ngx-com-components-menu.d.ts +479 -0
  71. package/types/ngx-com-components-paginator.d.ts +265 -0
  72. package/types/ngx-com-components-popover.d.ts +309 -0
  73. package/types/ngx-com-components-radio.d.ts +258 -0
  74. package/types/ngx-com-components-segmented-control.d.ts +274 -0
  75. package/types/ngx-com-components-sort.d.ts +133 -0
  76. package/types/ngx-com-components-spinner.d.ts +120 -0
  77. package/types/ngx-com-components-tabs.d.ts +396 -0
  78. package/types/ngx-com-components-tooltip.d.ts +200 -0
  79. package/types/ngx-com-components.d.ts +12 -0
  80. package/types/ngx-com-tokens.d.ts +7 -0
  81. package/types/ngx-com-utils.d.ts +424 -0
  82. package/types/ngx-com.d.ts +10 -7
@@ -0,0 +1,189 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { cva } from 'class-variance-authority';
4
+
5
+ /**
6
+ * CVA variants for the spinning circle element.
7
+ *
8
+ * Creates a circular track with a faded ring and a colored arc that rotates.
9
+ * Uses `border` for the track and `border-t-*` for the spinning arc.
10
+ *
11
+ * @tokens `--color-primary`, `--color-accent`, `--color-warn`, `--color-success`, `--color-muted-foreground`
12
+ */
13
+ const spinnerVariants = cva([
14
+ 'com-spinner__circle',
15
+ 'inline-block shrink-0 rounded-full border-solid',
16
+ 'animate-[com-spin_0.6s_linear_infinite]',
17
+ ], {
18
+ variants: {
19
+ size: {
20
+ xs: 'size-3 border-[1.5px]',
21
+ sm: 'size-4 border-2',
22
+ md: 'size-5 border-2',
23
+ lg: 'size-8 border-[2.5px]',
24
+ xl: 'size-10 border-3',
25
+ },
26
+ color: {
27
+ current: 'border-current/20 border-t-current',
28
+ primary: 'border-primary/20 border-t-primary',
29
+ accent: 'border-accent/20 border-t-accent',
30
+ warn: 'border-warn/20 border-t-warn',
31
+ success: 'border-success/20 border-t-success',
32
+ muted: 'border-muted-foreground/20 border-t-muted-foreground',
33
+ },
34
+ },
35
+ defaultVariants: {
36
+ size: 'md',
37
+ color: 'current',
38
+ },
39
+ });
40
+ /**
41
+ * CVA variants for the spinner container layout.
42
+ *
43
+ * Controls flex direction and gap based on label position.
44
+ * Only applies when a visible label is present.
45
+ *
46
+ * @tokens none (layout only)
47
+ */
48
+ const spinnerContainerVariants = cva(['inline-flex items-center justify-center'], {
49
+ variants: {
50
+ labelPosition: {
51
+ right: 'flex-row gap-2',
52
+ bottom: 'flex-col gap-1.5',
53
+ },
54
+ },
55
+ defaultVariants: {
56
+ labelPosition: 'right',
57
+ },
58
+ });
59
+ /** Label font size classes mapped to spinner size. */
60
+ const SPINNER_LABEL_SIZES = {
61
+ xs: 'text-xs',
62
+ sm: 'text-xs',
63
+ md: 'text-sm',
64
+ lg: 'text-sm',
65
+ xl: 'text-base',
66
+ };
67
+
68
+ /**
69
+ * A minimal, CSS-only loading indicator.
70
+ *
71
+ * Drop-in anywhere: inside buttons, next to inline text, centered in cards,
72
+ * or as a page-level overlay. The animation is fast (0.6s) for a snappy feel.
73
+ *
74
+ * @tokens `--color-primary`, `--color-accent`, `--color-warn`, `--color-success`, `--color-muted-foreground`
75
+ *
76
+ * @example Simplest usage (inherits parent text color)
77
+ * ```html
78
+ * <com-spinner />
79
+ * ```
80
+ *
81
+ * @example Inside a button (inline, inherits button text color)
82
+ * ```html
83
+ * <button class="btn-primary" [disabled]="saving">
84
+ * @if (saving) {
85
+ * <com-spinner size="xs" />
86
+ * }
87
+ * Save
88
+ * </button>
89
+ * ```
90
+ *
91
+ * @example With visible label
92
+ * ```html
93
+ * <com-spinner label="Loading results..." />
94
+ * ```
95
+ *
96
+ * @example Centered in a card
97
+ * ```html
98
+ * <div class="flex items-center justify-center p-8">
99
+ * <com-spinner size="lg" color="primary" label="Loading..." labelPosition="bottom" />
100
+ * </div>
101
+ * ```
102
+ *
103
+ * @example Inline with text
104
+ * ```html
105
+ * <p class="text-muted-foreground">
106
+ * <com-spinner size="xs" /> Checking availability...
107
+ * </p>
108
+ * ```
109
+ *
110
+ * @example Color variants
111
+ * ```html
112
+ * <com-spinner color="primary" />
113
+ * <com-spinner color="accent" />
114
+ * <com-spinner color="warn" />
115
+ * ```
116
+ *
117
+ * @example Large page-level
118
+ * ```html
119
+ * <com-spinner size="xl" color="primary" label="Preparing your dashboard..." labelPosition="bottom" />
120
+ * ```
121
+ */
122
+ class ComSpinner {
123
+ /**
124
+ * Optional loading text (e.g., "Loading...", "Saving...").
125
+ * When omitted, "Loading" is rendered for screen readers only (sr-only).
126
+ * When provided, the label is visible next to or below the spinner.
127
+ */
128
+ label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
129
+ /**
130
+ * Position of the label relative to the spinner.
131
+ * Only relevant when a visible `label` is provided.
132
+ */
133
+ labelPosition = input('right', ...(ngDevMode ? [{ debugName: "labelPosition" }] : []));
134
+ /** Size of the spinner. */
135
+ size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
136
+ /**
137
+ * Color of the spinner.
138
+ * `current` inherits from `currentColor` to match surrounding text.
139
+ */
140
+ color = input('current', ...(ngDevMode ? [{ debugName: "color" }] : []));
141
+ /** @internal Computed classes for the spinning circle. */
142
+ spinnerClasses = computed(() => spinnerVariants({
143
+ size: this.size(),
144
+ color: this.color(),
145
+ }), ...(ngDevMode ? [{ debugName: "spinnerClasses" }] : []));
146
+ /** @internal Computed classes for the container/host. */
147
+ containerClasses = computed(() => this.label()
148
+ ? spinnerContainerVariants({ labelPosition: this.labelPosition() })
149
+ : spinnerContainerVariants(), ...(ngDevMode ? [{ debugName: "containerClasses" }] : []));
150
+ /** @internal Computed label font size class. */
151
+ labelSizeClass = computed(() => SPINNER_LABEL_SIZES[this.size()], ...(ngDevMode ? [{ debugName: "labelSizeClass" }] : []));
152
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ComSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
153
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: ComSpinner, isStandalone: true, selector: "com-spinner", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "status" }, properties: { "class": "containerClasses()" } }, exportAs: ["comSpinner"], ngImport: i0, template: `
154
+ <span [class]="spinnerClasses()" aria-hidden="true"></span>
155
+ @if (label()) {
156
+ <span class="select-none text-muted-foreground" [class]="labelSizeClass()">
157
+ {{ label() }}
158
+ </span>
159
+ } @else {
160
+ <span class="sr-only">Loading</span>
161
+ }
162
+ `, isInline: true, styles: ["@keyframes com-spin{to{transform:rotate(360deg)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
163
+ }
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ComSpinner, decorators: [{
165
+ type: Component,
166
+ args: [{ selector: 'com-spinner', exportAs: 'comSpinner', template: `
167
+ <span [class]="spinnerClasses()" aria-hidden="true"></span>
168
+ @if (label()) {
169
+ <span class="select-none text-muted-foreground" [class]="labelSizeClass()">
170
+ {{ label() }}
171
+ </span>
172
+ } @else {
173
+ <span class="sr-only">Loading</span>
174
+ }
175
+ `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
176
+ role: 'status',
177
+ '[class]': 'containerClasses()',
178
+ }, styles: ["@keyframes com-spin{to{transform:rotate(360deg)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"] }]
179
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
180
+
181
+ // Public API for the spinner component
182
+ // Main component
183
+
184
+ /**
185
+ * Generated bundle index. Do not edit.
186
+ */
187
+
188
+ export { ComSpinner, SPINNER_LABEL_SIZES, spinnerContainerVariants, spinnerVariants };
189
+ //# sourceMappingURL=ngx-com-components-spinner.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-com-components-spinner.mjs","sources":["../../../projects/com/components/spinner/spinner.variants.ts","../../../projects/com/components/spinner/spinner.component.ts","../../../projects/com/components/spinner/index.ts","../../../projects/com/components/spinner/ngx-com-components-spinner.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\n/** Spinner size variants. */\nexport type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Spinner color variants. */\nexport type SpinnerColor = 'current' | 'primary' | 'accent' | 'warn' | 'success' | 'muted';\n\n/** Label position relative to spinner. */\nexport type SpinnerLabelPosition = 'right' | 'bottom';\n\n/**\n * CVA variants for the spinning circle element.\n *\n * Creates a circular track with a faded ring and a colored arc that rotates.\n * Uses `border` for the track and `border-t-*` for the spinning arc.\n *\n * @tokens `--color-primary`, `--color-accent`, `--color-warn`, `--color-success`, `--color-muted-foreground`\n */\nexport const spinnerVariants: (props?: {\n size?: SpinnerSize;\n color?: SpinnerColor;\n}) => string = cva(\n [\n 'com-spinner__circle',\n 'inline-block shrink-0 rounded-full border-solid',\n 'animate-[com-spin_0.6s_linear_infinite]',\n ],\n {\n variants: {\n size: {\n xs: 'size-3 border-[1.5px]',\n sm: 'size-4 border-2',\n md: 'size-5 border-2',\n lg: 'size-8 border-[2.5px]',\n xl: 'size-10 border-3',\n },\n color: {\n current: 'border-current/20 border-t-current',\n primary: 'border-primary/20 border-t-primary',\n accent: 'border-accent/20 border-t-accent',\n warn: 'border-warn/20 border-t-warn',\n success: 'border-success/20 border-t-success',\n muted: 'border-muted-foreground/20 border-t-muted-foreground',\n },\n },\n defaultVariants: {\n size: 'md',\n color: 'current',\n },\n }\n);\n\n/**\n * CVA variants for the spinner container layout.\n *\n * Controls flex direction and gap based on label position.\n * Only applies when a visible label is present.\n *\n * @tokens none (layout only)\n */\nexport const spinnerContainerVariants: (props?: {\n labelPosition?: SpinnerLabelPosition;\n}) => string = cva(\n ['inline-flex items-center justify-center'],\n {\n variants: {\n labelPosition: {\n right: 'flex-row gap-2',\n bottom: 'flex-col gap-1.5',\n },\n },\n defaultVariants: {\n labelPosition: 'right',\n },\n }\n);\n\n/** Label font size classes mapped to spinner size. */\nexport const SPINNER_LABEL_SIZES: Record<SpinnerSize, string> = {\n xs: 'text-xs',\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-sm',\n xl: 'text-base',\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { InputSignal, Signal } from '@angular/core';\nimport {\n spinnerVariants,\n spinnerContainerVariants,\n SPINNER_LABEL_SIZES,\n} from './spinner.variants';\nimport type {\n SpinnerSize,\n SpinnerColor,\n SpinnerLabelPosition,\n} from './spinner.variants';\n\n/**\n * A minimal, CSS-only loading indicator.\n *\n * Drop-in anywhere: inside buttons, next to inline text, centered in cards,\n * or as a page-level overlay. The animation is fast (0.6s) for a snappy feel.\n *\n * @tokens `--color-primary`, `--color-accent`, `--color-warn`, `--color-success`, `--color-muted-foreground`\n *\n * @example Simplest usage (inherits parent text color)\n * ```html\n * <com-spinner />\n * ```\n *\n * @example Inside a button (inline, inherits button text color)\n * ```html\n * <button class=\"btn-primary\" [disabled]=\"saving\">\n * @if (saving) {\n * <com-spinner size=\"xs\" />\n * }\n * Save\n * </button>\n * ```\n *\n * @example With visible label\n * ```html\n * <com-spinner label=\"Loading results...\" />\n * ```\n *\n * @example Centered in a card\n * ```html\n * <div class=\"flex items-center justify-center p-8\">\n * <com-spinner size=\"lg\" color=\"primary\" label=\"Loading...\" labelPosition=\"bottom\" />\n * </div>\n * ```\n *\n * @example Inline with text\n * ```html\n * <p class=\"text-muted-foreground\">\n * <com-spinner size=\"xs\" /> Checking availability...\n * </p>\n * ```\n *\n * @example Color variants\n * ```html\n * <com-spinner color=\"primary\" />\n * <com-spinner color=\"accent\" />\n * <com-spinner color=\"warn\" />\n * ```\n *\n * @example Large page-level\n * ```html\n * <com-spinner size=\"xl\" color=\"primary\" label=\"Preparing your dashboard...\" labelPosition=\"bottom\" />\n * ```\n */\n@Component({\n selector: 'com-spinner',\n exportAs: 'comSpinner',\n template: `\n <span [class]=\"spinnerClasses()\" aria-hidden=\"true\"></span>\n @if (label()) {\n <span class=\"select-none text-muted-foreground\" [class]=\"labelSizeClass()\">\n {{ label() }}\n </span>\n } @else {\n <span class=\"sr-only\">Loading</span>\n }\n `,\n styles: `\n @keyframes com-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n role: 'status',\n '[class]': 'containerClasses()',\n },\n})\nexport class ComSpinner {\n /**\n * Optional loading text (e.g., \"Loading...\", \"Saving...\").\n * When omitted, \"Loading\" is rendered for screen readers only (sr-only).\n * When provided, the label is visible next to or below the spinner.\n */\n readonly label: InputSignal<string | undefined> = input<string>();\n\n /**\n * Position of the label relative to the spinner.\n * Only relevant when a visible `label` is provided.\n */\n readonly labelPosition: InputSignal<SpinnerLabelPosition> = input<SpinnerLabelPosition>('right');\n\n /** Size of the spinner. */\n readonly size: InputSignal<SpinnerSize> = input<SpinnerSize>('md');\n\n /**\n * Color of the spinner.\n * `current` inherits from `currentColor` to match surrounding text.\n */\n readonly color: InputSignal<SpinnerColor> = input<SpinnerColor>('current');\n\n /** @internal Computed classes for the spinning circle. */\n protected readonly spinnerClasses: Signal<string> = computed(() =>\n spinnerVariants({\n size: this.size(),\n color: this.color(),\n })\n );\n\n /** @internal Computed classes for the container/host. */\n protected readonly containerClasses: Signal<string> = computed(() =>\n this.label()\n ? spinnerContainerVariants({ labelPosition: this.labelPosition() })\n : spinnerContainerVariants()\n );\n\n /** @internal Computed label font size class. */\n protected readonly labelSizeClass: Signal<string> = computed(\n () => SPINNER_LABEL_SIZES[this.size()]\n );\n}\n","// Public API for the spinner component\n\n// Main component\nexport { ComSpinner } from './spinner.component';\n\n// Variants (for advanced customization)\nexport {\n spinnerVariants,\n spinnerContainerVariants,\n SPINNER_LABEL_SIZES,\n} from './spinner.variants';\n\nexport type {\n SpinnerSize,\n SpinnerColor,\n SpinnerLabelPosition,\n} from './spinner.variants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}