@origostudio/origo-design 0.0.48 → 0.0.49

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 (151) hide show
  1. package/CHANGELOG.md +4 -5
  2. package/apply-fixes.js +18 -0
  3. package/dist/packages/angular-renderer/CHANGELOG.md +11 -0
  4. package/dist/packages/angular-renderer/package.json +3 -3
  5. package/dist/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.d.ts +6 -0
  6. package/dist/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.js +3 -0
  7. package/dist/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.js.map +1 -1
  8. package/dist/packages/angular-renderer/src/components/primitives/button/button.component.d.ts +6 -6
  9. package/dist/packages/angular-renderer/src/components/primitives/button/button.component.js +4 -4
  10. package/dist/packages/angular-renderer/src/components/primitives/button/button.component.js.map +1 -1
  11. package/dist/packages/angular-renderer/src/components/primitives/button-group/button-group.component.d.ts +6 -0
  12. package/dist/packages/angular-renderer/src/components/primitives/button-group/button-group.component.js +3 -0
  13. package/dist/packages/angular-renderer/src/components/primitives/button-group/button-group.component.js.map +1 -1
  14. package/dist/packages/angular-renderer/src/components/primitives/card/card.component.d.ts +6 -0
  15. package/dist/packages/angular-renderer/src/components/primitives/card/card.component.js +3 -0
  16. package/dist/packages/angular-renderer/src/components/primitives/card/card.component.js.map +1 -1
  17. package/dist/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.d.ts +15 -0
  18. package/dist/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.js +9 -0
  19. package/dist/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.js.map +1 -1
  20. package/dist/packages/angular-renderer/src/components/primitives/chip/chip.component.d.ts +3 -0
  21. package/dist/packages/angular-renderer/src/components/primitives/chip/chip.component.js.map +1 -1
  22. package/dist/packages/angular-renderer/src/components/primitives/data-grid/data-grid.component.d.ts +6 -0
  23. package/dist/packages/angular-renderer/src/components/primitives/data-grid/data-grid.component.js +3 -0
  24. package/dist/packages/angular-renderer/src/components/primitives/data-grid/data-grid.component.js.map +1 -1
  25. package/dist/packages/angular-renderer/src/components/primitives/floating-action-button/floating-action-button.component.d.ts +6 -6
  26. package/dist/packages/angular-renderer/src/components/primitives/floating-action-button/floating-action-button.component.js +4 -4
  27. package/dist/packages/angular-renderer/src/components/primitives/floating-action-button/floating-action-button.component.js.map +1 -1
  28. package/dist/packages/angular-renderer/src/components/primitives/form-field/form-field.component.d.ts +6 -0
  29. package/dist/packages/angular-renderer/src/components/primitives/form-field/form-field.component.js +3 -0
  30. package/dist/packages/angular-renderer/src/components/primitives/form-field/form-field.component.js.map +1 -1
  31. package/dist/packages/angular-renderer/src/components/primitives/hbox/hbox.component.d.ts +6 -0
  32. package/dist/packages/angular-renderer/src/components/primitives/hbox/hbox.component.js +3 -0
  33. package/dist/packages/angular-renderer/src/components/primitives/hbox/hbox.component.js.map +1 -1
  34. package/dist/packages/angular-renderer/src/components/primitives/icon-button/icon-button.component.d.ts +6 -6
  35. package/dist/packages/angular-renderer/src/components/primitives/icon-button/icon-button.component.js +4 -4
  36. package/dist/packages/angular-renderer/src/components/primitives/icon-button/icon-button.component.js.map +1 -1
  37. package/dist/packages/angular-renderer/src/components/primitives/input-number/input-number.component.d.ts +46 -0
  38. package/dist/packages/angular-renderer/src/components/primitives/input-number/input-number.component.js +120 -0
  39. package/dist/packages/angular-renderer/src/components/primitives/input-number/input-number.component.js.map +1 -0
  40. package/dist/packages/angular-renderer/src/components/primitives/label/label.component.d.ts +6 -0
  41. package/dist/packages/angular-renderer/src/components/primitives/label/label.component.js +3 -0
  42. package/dist/packages/angular-renderer/src/components/primitives/label/label.component.js.map +1 -1
  43. package/dist/packages/angular-renderer/src/components/primitives/list/list.component.d.ts +6 -0
  44. package/dist/packages/angular-renderer/src/components/primitives/list/list.component.js +3 -0
  45. package/dist/packages/angular-renderer/src/components/primitives/list/list.component.js.map +1 -1
  46. package/dist/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.d.ts +15 -0
  47. package/dist/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.js +9 -0
  48. package/dist/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.js.map +1 -1
  49. package/dist/packages/angular-renderer/src/components/primitives/select/select.component.d.ts +6 -0
  50. package/dist/packages/angular-renderer/src/components/primitives/select/select.component.js +3 -0
  51. package/dist/packages/angular-renderer/src/components/primitives/select/select.component.js.map +1 -1
  52. package/dist/packages/angular-renderer/src/components/primitives/sidebar/sidebar.component.d.ts +6 -0
  53. package/dist/packages/angular-renderer/src/components/primitives/sidebar/sidebar.component.js +3 -0
  54. package/dist/packages/angular-renderer/src/components/primitives/sidebar/sidebar.component.js.map +1 -1
  55. package/dist/packages/angular-renderer/src/components/primitives/switch/switch.component.d.ts +9 -0
  56. package/dist/packages/angular-renderer/src/components/primitives/switch/switch.component.js +6 -0
  57. package/dist/packages/angular-renderer/src/components/primitives/switch/switch.component.js.map +1 -1
  58. package/dist/packages/angular-renderer/src/components/primitives/tabs/tabs.component.d.ts +6 -0
  59. package/dist/packages/angular-renderer/src/components/primitives/tabs/tabs.component.js +3 -0
  60. package/dist/packages/angular-renderer/src/components/primitives/tabs/tabs.component.js.map +1 -1
  61. package/dist/packages/angular-renderer/src/components/primitives/text-input/text-input.component.d.ts +28 -0
  62. package/dist/packages/angular-renderer/src/components/primitives/text-input/text-input.component.js +38 -2
  63. package/dist/packages/angular-renderer/src/components/primitives/text-input/text-input.component.js.map +1 -1
  64. package/dist/packages/angular-renderer/src/components/primitives/textarea/textarea.component.d.ts +26 -0
  65. package/dist/packages/angular-renderer/src/components/primitives/textarea/textarea.component.js +44 -0
  66. package/dist/packages/angular-renderer/src/components/primitives/textarea/textarea.component.js.map +1 -1
  67. package/dist/packages/angular-renderer/src/components/primitives/vbox/vbox.component.d.ts +6 -0
  68. package/dist/packages/angular-renderer/src/components/primitives/vbox/vbox.component.js +3 -0
  69. package/dist/packages/angular-renderer/src/components/primitives/vbox/vbox.component.js.map +1 -1
  70. package/dist/packages/angular-renderer/src/index.d.ts +1 -0
  71. package/dist/packages/angular-renderer/src/index.js +1 -0
  72. package/dist/packages/angular-renderer/src/index.js.map +1 -1
  73. package/dist/packages/angular-renderer/src/lib/primitives.provider.js +2 -0
  74. package/dist/packages/angular-renderer/src/lib/primitives.provider.js.map +1 -1
  75. package/dist/packages/cli/CHANGELOG.md +4 -0
  76. package/dist/packages/cli/package.json +2 -2
  77. package/dist/packages/cli/package.json.bak +2 -2
  78. package/dist/packages/core/CHANGELOG.md +4 -0
  79. package/dist/packages/core/package.json +1 -1
  80. package/dist/packages/core/package.json.bak +1 -1
  81. package/dist/packages/design-tokens/CHANGELOG.md +4 -0
  82. package/dist/packages/design-tokens/package.json +1 -1
  83. package/dist/packages/playground/browser/{chunk-CtaS4wCa.js → chunk-B8mwHWgW.js} +1 -1
  84. package/dist/packages/playground/browser/{chunk-CdNbNqNV.js → chunk-B_swdRuc.js} +1 -1
  85. package/dist/packages/playground/browser/{chunk-BQfPUVzZ.js → chunk-BbeNQQ9Z.js} +1 -1
  86. package/dist/packages/playground/browser/{chunk-ClmlG9ZJ.js → chunk-BlCRDoSd.js} +1 -1
  87. package/dist/packages/playground/browser/{chunk-DRRJiw3L.js → chunk-C8l8Pst_.js} +1 -1
  88. package/dist/packages/playground/browser/{chunk-CQQHYSEg.js → chunk-CCE_vAje.js} +1 -1
  89. package/dist/packages/playground/browser/{chunk-zkDXJCJr.js → chunk-Cb2ALrKC.js} +1 -1
  90. package/dist/packages/playground/browser/{chunk-4MD_GCgA.js → chunk-CpaI4VGh.js} +1 -1
  91. package/dist/packages/playground/browser/{chunk-ChP61sze.js → chunk-DgLZ-dIi.js} +1 -1
  92. package/dist/packages/playground/browser/{chunk-DvVvDpcg.js → chunk-DkxgAarv.js} +1 -1
  93. package/dist/packages/playground/browser/{chunk-COjGAm8R.js → chunk-DoYDPF2-.js} +1 -1
  94. package/dist/packages/playground/browser/{chunk-PT1eAqp3.js → chunk-G1sQXMvG.js} +1 -1
  95. package/dist/packages/playground/browser/{chunk-B8F7hD0p.js → chunk-XTbjIUbx.js} +1 -1
  96. package/dist/packages/playground/browser/{chunk-DyfobgsU.js → chunk-lFsGUZ3A.js} +1 -1
  97. package/dist/packages/playground/browser/{chunk-cI3o8oNy.js → chunk-r4-UbXQJ.js} +1 -1
  98. package/dist/packages/playground/browser/index.html +1 -1
  99. package/dist/packages/playground/browser/main-D2PNGI4C.js +734 -0
  100. package/package.json +1 -1
  101. package/packages/angular-renderer/CHANGELOG.md +11 -0
  102. package/packages/angular-renderer/package.json +3 -3
  103. package/packages/angular-renderer/src/components/primitives/breadcrumbs/breadcrumbs.component.ts +6 -0
  104. package/packages/angular-renderer/src/components/primitives/button/button.component.ts +8 -7
  105. package/packages/angular-renderer/src/components/primitives/button-group/button-group.component.ts +6 -0
  106. package/packages/angular-renderer/src/components/primitives/card/card.component.ts +6 -0
  107. package/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.html +24 -15
  108. package/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.scss +25 -9
  109. package/packages/angular-renderer/src/components/primitives/checkbox/checkbox.component.ts +16 -0
  110. package/packages/angular-renderer/src/components/primitives/chip/chip.component.ts +3 -0
  111. package/packages/angular-renderer/src/components/primitives/data-grid/data-grid.component.ts +6 -0
  112. package/packages/angular-renderer/src/components/primitives/floating-action-button/floating-action-button.component.ts +8 -7
  113. package/packages/angular-renderer/src/components/primitives/form-field/form-field.component.ts +6 -0
  114. package/packages/angular-renderer/src/components/primitives/hbox/hbox.component.ts +6 -0
  115. package/packages/angular-renderer/src/components/primitives/icon-button/icon-button.component.ts +8 -7
  116. package/packages/angular-renderer/src/components/primitives/input-number/input-number.component.html +24 -0
  117. package/packages/angular-renderer/src/components/primitives/input-number/input-number.component.scss +80 -0
  118. package/packages/angular-renderer/src/components/primitives/input-number/input-number.component.ts +146 -0
  119. package/packages/angular-renderer/src/components/primitives/label/label.component.ts +6 -0
  120. package/packages/angular-renderer/src/components/primitives/list/list.component.ts +6 -0
  121. package/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.html +11 -1
  122. package/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.scss +20 -9
  123. package/packages/angular-renderer/src/components/primitives/radio-group/radio-group.component.ts +16 -0
  124. package/packages/angular-renderer/src/components/primitives/select/select.component.ts +6 -0
  125. package/packages/angular-renderer/src/components/primitives/sidebar/sidebar.component.ts +6 -0
  126. package/packages/angular-renderer/src/components/primitives/switch/switch.component.html +24 -15
  127. package/packages/angular-renderer/src/components/primitives/switch/switch.component.scss +40 -22
  128. package/packages/angular-renderer/src/components/primitives/switch/switch.component.ts +13 -0
  129. package/packages/angular-renderer/src/components/primitives/tabs/tabs.component.ts +6 -0
  130. package/packages/angular-renderer/src/components/primitives/text-input/text-input.component.html +21 -10
  131. package/packages/angular-renderer/src/components/primitives/text-input/text-input.component.scss +44 -18
  132. package/packages/angular-renderer/src/components/primitives/text-input/text-input.component.ts +48 -2
  133. package/packages/angular-renderer/src/components/primitives/textarea/textarea.component.html +22 -12
  134. package/packages/angular-renderer/src/components/primitives/textarea/textarea.component.scss +61 -23
  135. package/packages/angular-renderer/src/components/primitives/textarea/textarea.component.ts +58 -0
  136. package/packages/angular-renderer/src/components/primitives/vbox/vbox.component.ts +6 -0
  137. package/packages/angular-renderer/src/index.ts +1 -0
  138. package/packages/angular-renderer/src/lib/primitives.provider.ts +2 -0
  139. package/packages/cli/CHANGELOG.md +4 -0
  140. package/packages/cli/package.json +2 -2
  141. package/packages/core/CHANGELOG.md +4 -0
  142. package/packages/core/package.json +1 -1
  143. package/packages/design-tokens/CHANGELOG.md +4 -0
  144. package/packages/design-tokens/package.json +1 -1
  145. package/packages/devtools/CHANGELOG.md +4 -0
  146. package/packages/devtools/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  147. package/packages/devtools/package.json +3 -3
  148. package/packages/playground/CHANGELOG.md +4 -0
  149. package/packages/playground/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  150. package/packages/playground/package.json +3 -3
  151. package/dist/packages/playground/browser/main-DTJJSNK4.js +0 -733
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@origostudio/origo-design",
3
- "version": "0.0.48",
3
+ "version": "0.0.49",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,3 +1,14 @@
1
+ ## 0.0.49 (2026-10-08)
2
+
3
+ ### 🚀 Features
4
+
5
+ - add angular renderer primitives and component implementations ([e751643](https://github.com/OrigoStudio/origo-design/commit/e751643))
6
+ - add primitive components and corresponding test suites for angular-renderer package ([d02c3d1](https://github.com/OrigoStudio/origo-design/commit/d02c3d1))
7
+
8
+ ### ❤️ Thank You
9
+
10
+ - Hardik Patel @hardikpatelse
11
+
1
12
  ## 0.0.48 (2026-10-07)
2
13
 
3
14
  ### 🚀 Features
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@origostudio/angular-renderer",
3
- "version": "0.0.48",
3
+ "version": "0.0.49",
4
4
  "private": false,
5
5
  "type": "commonjs",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
8
  "dependencies": {
9
- "@origostudio/core": "0.0.48",
10
- "@origostudio/design-tokens": "0.0.48",
9
+ "@origostudio/core": "0.0.49",
10
+ "@origostudio/design-tokens": "0.0.49",
11
11
  "tslib": "^2.3.0",
12
12
  "@analogjs/vite-plugin-angular": "^2.7.1",
13
13
  "zone.js": "^0.16.3",
@@ -17,6 +17,9 @@ export interface BreadcrumbItem {
17
17
  }
18
18
 
19
19
  export interface BreadcrumbsProps {
20
+ permissions?: Record<string, string>;
21
+ rules?: Record<string, unknown>;
22
+ metadata?: Record<string, unknown>;
20
23
  items?: Array<BreadcrumbItem>;
21
24
  'aria-label'?: string;
22
25
  'aria-describedby'?: string;
@@ -39,6 +42,9 @@ export interface BreadcrumbsProps {
39
42
  })
40
43
  export class BreadcrumbsComponent implements OrigoAdapter<BreadcrumbsProps> {
41
44
  static readonly contractSchema = {
45
+ permissions: 'object',
46
+ rules: 'object',
47
+ metadata: 'object',
42
48
  items: 'array',
43
49
  };
44
50
  static readonly strictContract = false;
@@ -12,6 +12,9 @@ import { OrigoAdapter } from '../../../adapters/web/adapter';
12
12
  import { WebExperienceAdapterService } from '../../../adapters/web/experience-adapter.service';
13
13
 
14
14
  export interface ButtonProps {
15
+ permissions?: Record<string, string>;
16
+ rules?: Record<string, unknown>;
17
+ metadata?: Record<string, unknown>;
15
18
  label?: string;
16
19
  disabled?: boolean;
17
20
  type?: 'button' | 'submit' | 'reset';
@@ -24,9 +27,6 @@ export interface ButtonProps {
24
27
  iconPosition?: string;
25
28
  badge?: string;
26
29
  badgeSeverity?: string;
27
- permissions?: any;
28
- rules?: any;
29
- metadata?: any;
30
30
  }
31
31
 
32
32
  @Component({
@@ -43,6 +43,9 @@ export interface ButtonProps {
43
43
  })
44
44
  export class ButtonComponent implements OrigoAdapter<ButtonProps> {
45
45
  static readonly contractSchema = {
46
+ permissions: 'object',
47
+ rules: 'object',
48
+ metadata: 'object',
46
49
  label: 'string',
47
50
  disabled: 'boolean',
48
51
  type: 'string',
@@ -53,9 +56,6 @@ export class ButtonComponent implements OrigoAdapter<ButtonProps> {
53
56
  iconPosition: 'string',
54
57
  badge: 'string',
55
58
  badgeSeverity: 'string',
56
- permissions: 'object',
57
- rules: 'object',
58
- metadata: 'object',
59
59
  };
60
60
  static readonly strictContract = false;
61
61
 
@@ -65,7 +65,8 @@ export class ButtonComponent implements OrigoAdapter<ButtonProps> {
65
65
  computedLoading = computed(() => !!this.contract().props?.loading);
66
66
  computedDisabled = computed(() => {
67
67
  const props = this.contract().props;
68
- const rulesDisable = props?.rules?.disable === true || props?.permissions?.allow === false;
68
+ const rulesDisable =
69
+ props?.rules?.['disable'] === true || props?.permissions?.['allow'] === 'false';
69
70
  return !!props?.disabled || this.computedLoading() || rulesDisable;
70
71
  });
71
72
 
@@ -9,6 +9,9 @@ import { InteractionContract } from '@origostudio/core';
9
9
  import { OrigoAdapter } from '../../../adapters/web/adapter';
10
10
 
11
11
  export interface ButtonGroupProps {
12
+ permissions?: Record<string, string>;
13
+ rules?: Record<string, unknown>;
14
+ metadata?: Record<string, unknown>;
12
15
  orientation?: 'row' | 'column';
13
16
  attached?: boolean;
14
17
  size?: 'small' | 'medium' | 'large';
@@ -30,6 +33,9 @@ export interface ButtonGroupProps {
30
33
  })
31
34
  export class ButtonGroupComponent implements OrigoAdapter<ButtonGroupProps> {
32
35
  static readonly contractSchema = {
36
+ permissions: 'object',
37
+ rules: 'object',
38
+ metadata: 'object',
33
39
  orientation: 'string',
34
40
  attached: 'boolean',
35
41
  size: 'string',
@@ -12,6 +12,9 @@ import { InteractionContract } from '@origostudio/core';
12
12
  import { OrigoAdapter } from '../../../adapters/web/adapter';
13
13
 
14
14
  export interface CardProps {
15
+ permissions?: Record<string, string>;
16
+ rules?: Record<string, unknown>;
17
+ metadata?: Record<string, unknown>;
15
18
  title?: string;
16
19
  subtitle?: string;
17
20
  imageUrl?: string;
@@ -36,6 +39,9 @@ export interface CardProps {
36
39
  })
37
40
  export class CardComponent implements OrigoAdapter<CardProps> {
38
41
  static readonly contractSchema = {
42
+ permissions: 'object',
43
+ rules: 'object',
44
+ metadata: 'object',
39
45
  title: 'string',
40
46
  subtitle: 'string',
41
47
  imageUrl: 'string',
@@ -1,16 +1,25 @@
1
- <label [for]="contract().id" [class.disabled]="computedDisabled()">
2
- <input
3
- type="checkbox"
4
- [id]="contract().id"
5
- [disabled]="computedDisabled()"
6
- [required]="computedRequired()"
7
- [attr.aria-label]="computedAriaLabel()"
8
- [attr.aria-describedby]="computedAriaDescribedBy()"
9
- (change)="onChange($event)"
10
- [checked]="checked()"
11
- />
12
- <span class="label-text">{{ computedLabel() }}</span>
13
- @if (computedRequired()) {
14
- <span class="required-indicator" aria-hidden="true">*</span>
1
+ <div class="origo-checkbox__wrapper">
2
+ <label [for]="contract().id" [class.disabled]="computedDisabled()">
3
+ <input
4
+ type="checkbox"
5
+ [id]="contract().id"
6
+ [disabled]="computedDisabled()"
7
+ [required]="computedRequired()"
8
+ [attr.aria-label]="computedAriaLabel()"
9
+ [attr.aria-describedby]="computedAriaDescribedBy()"
10
+ [attr.aria-invalid]="computedInvalid() ? 'true' : null"
11
+ (change)="onChange($event)"
12
+ [checked]="checked()"
13
+ />
14
+ <span class="label-text">{{ computedLabel() }}</span>
15
+ @if (computedRequired()) {
16
+ <span class="required-indicator" aria-hidden="true">*</span>
17
+ }
18
+ </label>
19
+ @if (computedErrorText()) {
20
+ <div class="origo-checkbox__error">{{ computedErrorText() }}</div>
15
21
  }
16
- </label>
22
+ @if (computedHelpText()) {
23
+ <div class="origo-checkbox__help">{{ computedHelpText() }}</div>
24
+ }
25
+ </div>
@@ -2,28 +2,33 @@
2
2
  display: block;
3
3
  }
4
4
 
5
+ .origo-checkbox__wrapper {
6
+ display: flex;
7
+ flex-direction: column;
8
+ }
9
+
5
10
  label {
6
11
  display: inline-flex;
7
12
  align-items: center;
8
- gap: var(--origo-spacing-container-padding, 8px);
13
+ gap: var(--origo-spacing-container-padding);
9
14
  cursor: pointer;
10
- font-family: var(--origo-typography-input-font-family, inherit);
11
- font-size: var(--origo-typography-input-font-size, 1rem);
12
- color: var(--origo-color-text-primary, #333);
15
+ font-family: var(--origo-typography-input-font-family);
16
+ font-size: var(--origo-typography-input-font-size);
17
+ color: var(--origo-color-text-primary);
13
18
 
14
19
  &.disabled {
15
- opacity: var(--origo-opacity-disabled, 0.5);
20
+ opacity: var(--origo-opacity-disabled);
16
21
  cursor: not-allowed;
17
22
  }
18
23
  }
19
24
 
20
25
  input[type='checkbox'] {
21
26
  margin: 0;
22
- accent-color: var(--origo-color-focus, #005fcc);
27
+ accent-color: var(--origo-color-focus);
23
28
 
24
29
  &:focus-visible {
25
- outline: 2px solid var(--origo-color-focus, #005fcc);
26
- outline-offset: 2px;
30
+ outline: var(--origo-border-width-thick) solid var(--origo-color-focus);
31
+ outline-offset: var(--origo-border-width-thick);
27
32
  }
28
33
 
29
34
  &:disabled {
@@ -32,5 +37,16 @@ input[type='checkbox'] {
32
37
  }
33
38
 
34
39
  .required-indicator {
35
- color: var(--origo-color-error, #d32f2f);
40
+ color: var(--origo-color-error);
41
+ }
42
+
43
+ .origo-checkbox__error {
44
+ color: var(--origo-color-text-danger);
45
+ font-size: var(--origo-typography-caption-font-size);
46
+ margin-top: var(--origo-spacing-xs);
47
+ }
48
+ .origo-checkbox__help {
49
+ color: var(--origo-color-text-muted);
50
+ font-size: var(--origo-typography-caption-font-size);
51
+ margin-top: var(--origo-spacing-xs);
36
52
  }
@@ -14,12 +14,18 @@ import { OrigoAdapter } from '../../../adapters/web/adapter';
14
14
  import { WebExperienceAdapterService } from '../../../adapters/web/experience-adapter.service';
15
15
 
16
16
  export interface CheckboxProps {
17
+ permissions?: Record<string, string>;
18
+ rules?: Record<string, unknown>;
19
+ metadata?: Record<string, unknown>;
17
20
  checked?: boolean;
18
21
  label?: string;
19
22
  disabled?: boolean;
20
23
  'aria-label'?: string;
21
24
  'aria-describedby'?: string;
22
25
  required?: boolean;
26
+ invalid?: boolean;
27
+ errorText?: string;
28
+ helpText?: string;
23
29
  }
24
30
 
25
31
  @Component({
@@ -36,10 +42,16 @@ export interface CheckboxProps {
36
42
  })
37
43
  export class CheckboxComponent implements OrigoAdapter<CheckboxProps> {
38
44
  static readonly contractSchema = {
45
+ permissions: 'object',
46
+ rules: 'object',
47
+ metadata: 'object',
39
48
  checked: 'boolean',
40
49
  label: 'string',
41
50
  disabled: 'boolean',
42
51
  required: 'boolean',
52
+ invalid: 'boolean',
53
+ errorText: 'string',
54
+ helpText: 'string',
43
55
  };
44
56
  static readonly strictContract = false;
45
57
 
@@ -62,6 +74,10 @@ export class CheckboxComponent implements OrigoAdapter<CheckboxProps> {
62
74
  : undefined;
63
75
  });
64
76
 
77
+ computedInvalid = computed(() => !!this.contract().props?.invalid);
78
+ computedErrorText = computed(() => this.contract().props?.errorText ?? '');
79
+ computedHelpText = computed(() => this.contract().props?.helpText ?? '');
80
+
65
81
  private experienceAdapter = inject(WebExperienceAdapterService);
66
82
 
67
83
  constructor() {
@@ -14,6 +14,9 @@ import { OrigoAdapter, coerceContractProps } from '../../../adapters/web/adapter
14
14
  import { WebExperienceAdapterService } from '../../../adapters/web/experience-adapter.service';
15
15
 
16
16
  export interface ChipProps {
17
+ permissions?: Record<string, string>;
18
+ rules?: Record<string, unknown>;
19
+ metadata?: Record<string, unknown>;
17
20
  selected?: boolean;
18
21
  label?: string;
19
22
  disabled?: boolean;
@@ -15,6 +15,9 @@ import { OrigoAdapter } from '../../../adapters/web/adapter';
15
15
  import { WebExperienceAdapterService } from '../../../adapters/web/experience-adapter.service';
16
16
 
17
17
  export interface DataGridProps {
18
+ permissions?: Record<string, string>;
19
+ rules?: Record<string, unknown>;
20
+ metadata?: Record<string, unknown>;
18
21
  columns?: Array<{ key: string; label: string; sortable?: boolean }>;
19
22
  rows?: Array<Record<string, unknown>>;
20
23
  pageSize?: number;
@@ -42,6 +45,9 @@ export interface DataGridProps {
42
45
  })
43
46
  export class DataGridComponent implements OrigoAdapter<DataGridProps> {
44
47
  static readonly contractSchema = {
48
+ permissions: 'object',
49
+ rules: 'object',
50
+ metadata: 'object',
45
51
  columns: 'array',
46
52
  rows: 'array',
47
53
  pageSize: 'number',
@@ -11,6 +11,9 @@ import { OrigoAdapter } from '../../../adapters/web/adapter';
11
11
  import { WebExperienceAdapterService } from '../../../adapters/web/experience-adapter.service';
12
12
 
13
13
  export interface FabProps {
14
+ permissions?: Record<string, string>;
15
+ rules?: Record<string, unknown>;
16
+ metadata?: Record<string, unknown>;
14
17
  icon?: string;
15
18
  label?: string;
16
19
  severity?: string;
@@ -19,9 +22,6 @@ export interface FabProps {
19
22
  position?: 'bottom-right' | 'bottom-left';
20
23
  'aria-label'?: string;
21
24
  'aria-describedby'?: string;
22
- permissions?: any;
23
- rules?: any;
24
- metadata?: any;
25
25
  }
26
26
 
27
27
  @Component({
@@ -38,6 +38,9 @@ export interface FabProps {
38
38
  })
39
39
  export class FloatingActionButtonComponent implements OrigoAdapter<FabProps> {
40
40
  static readonly contractSchema = {
41
+ permissions: 'object',
42
+ rules: 'object',
43
+ metadata: 'object',
41
44
  icon: 'string',
42
45
  label: 'string',
43
46
  severity: 'string',
@@ -46,9 +49,6 @@ export class FloatingActionButtonComponent implements OrigoAdapter<FabProps> {
46
49
  position: 'string',
47
50
  'aria-label': 'string',
48
51
  'aria-describedby': 'string',
49
- permissions: 'object',
50
- rules: 'object',
51
- metadata: 'object',
52
52
  };
53
53
  static readonly strictContract = false;
54
54
 
@@ -59,7 +59,8 @@ export class FloatingActionButtonComponent implements OrigoAdapter<FabProps> {
59
59
  computedLoading = computed(() => !!this.contract().props?.loading);
60
60
  computedDisabled = computed(() => {
61
61
  const props = this.contract().props;
62
- const rulesDisable = props?.rules?.disable === true || props?.permissions?.allow === false;
62
+ const rulesDisable =
63
+ props?.rules?.['disable'] === true || props?.permissions?.['allow'] === 'false';
63
64
  return !!props?.disabled || this.computedLoading() || rulesDisable;
64
65
  });
65
66
 
@@ -12,6 +12,9 @@ import { OrigoAdapter, ContainerComponent } from '../../../adapters/web/adapter'
12
12
  import { LabelComponent, LabelProps } from '../label/label.component';
13
13
 
14
14
  export interface FormFieldProps {
15
+ permissions?: Record<string, string>;
16
+ rules?: Record<string, unknown>;
17
+ metadata?: Record<string, unknown>;
15
18
  label?: string;
16
19
  error?: string;
17
20
  hint?: string;
@@ -39,6 +42,9 @@ export interface FormFieldProps {
39
42
  })
40
43
  export class FormFieldComponent implements OrigoAdapter<FormFieldProps>, ContainerComponent {
41
44
  static readonly contractSchema = {
45
+ permissions: 'object',
46
+ rules: 'object',
47
+ metadata: 'object',
42
48
  label: 'string',
43
49
  error: 'string',
44
50
  hint: 'string',
@@ -11,6 +11,9 @@ import { InteractionContract } from '@origostudio/core';
11
11
  import { OrigoAdapter, ContainerComponent } from '../../../adapters/web/adapter';
12
12
 
13
13
  export interface HBoxProps {
14
+ permissions?: Record<string, string>;
15
+ rules?: Record<string, unknown>;
16
+ metadata?: Record<string, unknown>;
14
17
  gap?: number | string;
15
18
  alignment?: 'start' | 'center' | 'end' | 'stretch';
16
19
  padding?: number | string;
@@ -38,6 +41,9 @@ export interface HBoxProps {
38
41
  })
39
42
  export class HBoxComponent implements OrigoAdapter<HBoxProps>, ContainerComponent {
40
43
  static readonly contractSchema = {
44
+ permissions: 'object',
45
+ rules: 'object',
46
+ metadata: 'object',
41
47
  gap: 'string',
42
48
  alignment: 'string',
43
49
  padding: 'string',
@@ -11,6 +11,9 @@ import { OrigoAdapter } from '../../../adapters/web/adapter';
11
11
  import { WebExperienceAdapterService } from '../../../adapters/web/experience-adapter.service';
12
12
 
13
13
  export interface IconButtonProps {
14
+ permissions?: Record<string, string>;
15
+ rules?: Record<string, unknown>;
16
+ metadata?: Record<string, unknown>;
14
17
  icon?: string;
15
18
  label?: string;
16
19
  tooltip?: string;
@@ -21,9 +24,6 @@ export interface IconButtonProps {
21
24
  disabled?: boolean;
22
25
  'aria-label'?: string;
23
26
  'aria-describedby'?: string;
24
- permissions?: any;
25
- rules?: any;
26
- metadata?: any;
27
27
  }
28
28
 
29
29
  @Component({
@@ -40,6 +40,9 @@ export interface IconButtonProps {
40
40
  })
41
41
  export class IconButtonComponent implements OrigoAdapter<IconButtonProps> {
42
42
  static readonly contractSchema = {
43
+ permissions: 'object',
44
+ rules: 'object',
45
+ metadata: 'object',
43
46
  icon: 'string',
44
47
  label: 'string',
45
48
  tooltip: 'string',
@@ -50,9 +53,6 @@ export class IconButtonComponent implements OrigoAdapter<IconButtonProps> {
50
53
  disabled: 'boolean',
51
54
  'aria-label': 'string',
52
55
  'aria-describedby': 'string',
53
- permissions: 'object',
54
- rules: 'object',
55
- metadata: 'object',
56
56
  };
57
57
  static readonly strictContract = false;
58
58
 
@@ -62,7 +62,8 @@ export class IconButtonComponent implements OrigoAdapter<IconButtonProps> {
62
62
  computedLoading = computed(() => !!this.contract().props?.loading);
63
63
  computedDisabled = computed(() => {
64
64
  const props = this.contract().props;
65
- const rulesDisable = props?.rules?.disable === true || props?.permissions?.allow === false;
65
+ const rulesDisable =
66
+ props?.rules?.['disable'] === true || props?.permissions?.['allow'] === 'false';
66
67
  return !!props?.disabled || this.computedLoading() || rulesDisable;
67
68
  });
68
69
 
@@ -0,0 +1,24 @@
1
+ <div class="origo-input-number__wrapper">
2
+ <input
3
+ type="number"
4
+ [id]="contract().id"
5
+ [disabled]="computedDisabled()"
6
+ [readonly]="computedReadonly()"
7
+ [required]="computedRequired()"
8
+ [attr.min]="computedMin()"
9
+ [attr.max]="computedMax()"
10
+ [attr.step]="computedStep()"
11
+ [attr.placeholder]="computedPlaceholder()"
12
+ [attr.aria-label]="computedAriaLabel()"
13
+ [attr.aria-describedby]="computedAriaDescribedBy()"
14
+ [attr.aria-invalid]="computedInvalid() ? 'true' : null"
15
+ (input)="onInput($event)"
16
+ [value]="value() ?? ''"
17
+ />
18
+ </div>
19
+ @if (computedErrorText()) {
20
+ <div class="origo-input-number__error">{{ computedErrorText() }}</div>
21
+ }
22
+ @if (computedHelpText()) {
23
+ <div class="origo-input-number__help">{{ computedHelpText() }}</div>
24
+ }
@@ -0,0 +1,80 @@
1
+ :host {
2
+ display: inline-block;
3
+ }
4
+
5
+ :host(.origo-input-number--fluid) {
6
+ display: block;
7
+ width: 100%;
8
+ }
9
+
10
+ .origo-input-number__wrapper {
11
+ display: flex;
12
+ flex-direction: column;
13
+ }
14
+
15
+ input {
16
+ box-sizing: border-box;
17
+ width: 100%;
18
+ background-color: var(--origo-color-surface-background);
19
+ color: var(--origo-color-text-primary);
20
+ padding: var(--origo-spacing-container-padding);
21
+ border: var(--origo-border-width-default) solid var(--origo-color-border-default);
22
+ border-radius: var(--origo-radius-sm);
23
+ box-shadow: var(--origo-shadow-sm);
24
+ font-family: var(--origo-typography-input-font-family);
25
+ font-size: var(--origo-typography-input-font-size);
26
+ font-weight: var(--origo-typography-input-font-weight);
27
+ line-height: var(--origo-typography-input-line-height);
28
+ transition: all var(--origo-duration-fast) ease-in-out;
29
+
30
+ &::placeholder {
31
+ color: var(--origo-color-text-muted);
32
+ }
33
+
34
+ &:hover:not(:disabled):not([readonly]) {
35
+ border-color: var(--origo-color-border-hover);
36
+ }
37
+
38
+ &:active:not(:disabled):not([readonly]) {
39
+ border-color: var(--origo-color-border-active);
40
+ }
41
+
42
+ &:focus,
43
+ &:focus-visible {
44
+ outline: var(--origo-border-width-thick) solid var(--origo-color-focus);
45
+ outline-offset: var(--origo-border-offset-negative);
46
+ border-color: var(--origo-color-focus);
47
+ }
48
+
49
+ &:disabled {
50
+ cursor: not-allowed;
51
+ opacity: var(--origo-opacity-disabled);
52
+ background-color: var(--origo-color-surface-disabled);
53
+ color: var(--origo-color-text-disabled);
54
+ }
55
+
56
+ &[readonly] {
57
+ background-color: var(--origo-color-surface-readonly);
58
+ }
59
+ }
60
+
61
+ :host(.origo-input-number--filled) input {
62
+ background-color: var(--origo-color-surface-subtle);
63
+ border: none;
64
+ }
65
+
66
+ :host(.origo-input-number--text) input {
67
+ background-color: transparent;
68
+ border: none;
69
+ }
70
+
71
+ .origo-input-number__error {
72
+ color: var(--origo-color-text-danger);
73
+ font-size: var(--origo-typography-caption-font-size);
74
+ margin-top: var(--origo-spacing-xs);
75
+ }
76
+ .origo-input-number__help {
77
+ color: var(--origo-color-text-muted);
78
+ font-size: var(--origo-typography-caption-font-size);
79
+ margin-top: var(--origo-spacing-xs);
80
+ }