@sondor-technology/sondor-components 1.0.4 → 1.0.6

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 (220) hide show
  1. package/dist/components/alert/alert.constants.d.ts +3 -0
  2. package/dist/components/alert/alert.constants.d.ts.map +1 -0
  3. package/dist/components/alert/alert.constants.js +2 -0
  4. package/dist/components/alert/alert.constants.js.map +1 -0
  5. package/dist/components/alert/alert.d.ts +4 -3
  6. package/dist/components/alert/alert.d.ts.map +1 -1
  7. package/dist/components/alert/alert.js +21 -11
  8. package/dist/components/alert/alert.js.map +1 -0
  9. package/dist/components/badge/badge.constants.d.ts +3 -0
  10. package/dist/components/badge/badge.constants.d.ts.map +1 -0
  11. package/dist/components/badge/badge.constants.js +2 -0
  12. package/dist/components/badge/badge.constants.js.map +1 -0
  13. package/dist/components/badge/badge.d.ts +1 -1
  14. package/dist/components/badge/badge.d.ts.map +1 -1
  15. package/dist/components/badge/badge.js +3 -2
  16. package/dist/components/badge/badge.js.map +1 -0
  17. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  18. package/dist/components/breadcrumb/breadcrumb.js +2 -1
  19. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  20. package/dist/components/button/button.constants.d.ts +7 -0
  21. package/dist/components/button/button.constants.d.ts.map +1 -0
  22. package/dist/components/button/button.constants.js +4 -0
  23. package/dist/components/button/button.constants.js.map +1 -0
  24. package/dist/components/button/button.d.ts +8 -4
  25. package/dist/components/button/button.d.ts.map +1 -1
  26. package/dist/components/button/button.js +181 -137
  27. package/dist/components/button/button.js.map +1 -0
  28. package/dist/components/button-group/button-group.d.ts +6 -0
  29. package/dist/components/button-group/button-group.d.ts.map +1 -1
  30. package/dist/components/button-group/button-group.js +17 -21
  31. package/dist/components/button-group/button-group.js.map +1 -0
  32. package/dist/components/checkbox/checkbox.constants.d.ts +3 -0
  33. package/dist/components/checkbox/checkbox.constants.d.ts.map +1 -0
  34. package/dist/components/checkbox/checkbox.constants.js +2 -0
  35. package/dist/components/checkbox/checkbox.constants.js.map +1 -0
  36. package/dist/components/checkbox/checkbox.d.ts +5 -1
  37. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  38. package/dist/components/checkbox/checkbox.js +21 -5
  39. package/dist/components/checkbox/checkbox.js.map +1 -0
  40. package/dist/components/code-block/code-block.d.ts +12 -7
  41. package/dist/components/code-block/code-block.d.ts.map +1 -1
  42. package/dist/components/code-block/code-block.js +130 -66
  43. package/dist/components/code-block/code-block.js.map +1 -0
  44. package/dist/components/content-card/content-card.d.ts.map +1 -1
  45. package/dist/components/content-card/content-card.js +10 -15
  46. package/dist/components/content-card/content-card.js.map +1 -0
  47. package/dist/components/divider/divider.constants.d.ts +5 -0
  48. package/dist/components/divider/divider.constants.d.ts.map +1 -0
  49. package/dist/components/divider/divider.constants.js +3 -0
  50. package/dist/components/divider/divider.constants.js.map +1 -0
  51. package/dist/components/divider/divider.d.ts +4 -2
  52. package/dist/components/divider/divider.d.ts.map +1 -1
  53. package/dist/components/divider/divider.js +18 -9
  54. package/dist/components/divider/divider.js.map +1 -0
  55. package/dist/components/drawer/drawer.d.ts +7 -4
  56. package/dist/components/drawer/drawer.d.ts.map +1 -1
  57. package/dist/components/drawer/drawer.js +73 -30
  58. package/dist/components/drawer/drawer.js.map +1 -0
  59. package/dist/components/field/field.d.ts +2 -2
  60. package/dist/components/field/field.d.ts.map +1 -1
  61. package/dist/components/field/field.js +8 -9
  62. package/dist/components/field/field.js.map +1 -0
  63. package/dist/components/footer/footer.d.ts +8 -1
  64. package/dist/components/footer/footer.d.ts.map +1 -1
  65. package/dist/components/footer/footer.js +42 -12
  66. package/dist/components/footer/footer.js.map +1 -0
  67. package/dist/components/form/form-step.js +1 -0
  68. package/dist/components/form/form-step.js.map +1 -0
  69. package/dist/components/form/form.d.ts +3 -0
  70. package/dist/components/form/form.d.ts.map +1 -1
  71. package/dist/components/form/form.js +107 -67
  72. package/dist/components/form/form.js.map +1 -0
  73. package/dist/components/grid/grid-row.d.ts +3 -3
  74. package/dist/components/grid/grid-row.d.ts.map +1 -1
  75. package/dist/components/grid/grid-row.js +36 -22
  76. package/dist/components/grid/grid-row.js.map +1 -0
  77. package/dist/components/grid/grid.d.ts +2 -2
  78. package/dist/components/grid/grid.d.ts.map +1 -1
  79. package/dist/components/grid/grid.js +5 -2
  80. package/dist/components/grid/grid.js.map +1 -0
  81. package/dist/components/icon/icon-paths.js +1 -0
  82. package/dist/components/icon/icon-paths.js.map +1 -0
  83. package/dist/components/icon/icon.js +1 -0
  84. package/dist/components/icon/icon.js.map +1 -0
  85. package/dist/components/input/input.d.ts +14 -0
  86. package/dist/components/input/input.d.ts.map +1 -1
  87. package/dist/components/input/input.js +30 -37
  88. package/dist/components/input/input.js.map +1 -0
  89. package/dist/components/link/link.d.ts +6 -6
  90. package/dist/components/link/link.d.ts.map +1 -1
  91. package/dist/components/link/link.js +42 -19
  92. package/dist/components/link/link.js.map +1 -0
  93. package/dist/components/metadata/metadata.d.ts +3 -3
  94. package/dist/components/metadata/metadata.d.ts.map +1 -1
  95. package/dist/components/metadata/metadata.js +23 -20
  96. package/dist/components/metadata/metadata.js.map +1 -0
  97. package/dist/components/modal/modal.d.ts +4 -16
  98. package/dist/components/modal/modal.d.ts.map +1 -1
  99. package/dist/components/modal/modal.js +99 -62
  100. package/dist/components/modal/modal.js.map +1 -0
  101. package/dist/components/page-layout/page-layout.d.ts +4 -3
  102. package/dist/components/page-layout/page-layout.d.ts.map +1 -1
  103. package/dist/components/page-layout/page-layout.js +96 -69
  104. package/dist/components/page-layout/page-layout.js.map +1 -0
  105. package/dist/components/radio/radio.d.ts +8 -0
  106. package/dist/components/radio/radio.d.ts.map +1 -1
  107. package/dist/components/radio/radio.js +8 -12
  108. package/dist/components/radio/radio.js.map +1 -0
  109. package/dist/components/radio-group/radio-group.d.ts +6 -1
  110. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  111. package/dist/components/radio-group/radio-group.js +44 -18
  112. package/dist/components/radio-group/radio-group.js.map +1 -0
  113. package/dist/components/router/router.d.ts +5 -7
  114. package/dist/components/router/router.d.ts.map +1 -1
  115. package/dist/components/router/router.js +54 -38
  116. package/dist/components/router/router.js.map +1 -0
  117. package/dist/components/select/select.d.ts +41 -7
  118. package/dist/components/select/select.d.ts.map +1 -1
  119. package/dist/components/select/select.js +467 -150
  120. package/dist/components/select/select.js.map +1 -0
  121. package/dist/components/skeleton/skeleton.d.ts +3 -2
  122. package/dist/components/skeleton/skeleton.d.ts.map +1 -1
  123. package/dist/components/skeleton/skeleton.js +10 -13
  124. package/dist/components/skeleton/skeleton.js.map +1 -0
  125. package/dist/components/switch/switch.d.ts +12 -0
  126. package/dist/components/switch/switch.d.ts.map +1 -1
  127. package/dist/components/switch/switch.js +28 -22
  128. package/dist/components/switch/switch.js.map +1 -0
  129. package/dist/components/table/data-table.d.ts +3 -25
  130. package/dist/components/table/data-table.d.ts.map +1 -1
  131. package/dist/components/table/data-table.js +211 -146
  132. package/dist/components/table/data-table.js.map +1 -0
  133. package/dist/components/table/table.d.ts +3 -3
  134. package/dist/components/table/table.d.ts.map +1 -1
  135. package/dist/components/table/table.js +39 -20
  136. package/dist/components/table/table.js.map +1 -0
  137. package/dist/components/tabs/tab-panel.d.ts +8 -1
  138. package/dist/components/tabs/tab-panel.d.ts.map +1 -1
  139. package/dist/components/tabs/tab-panel.js +21 -11
  140. package/dist/components/tabs/tab-panel.js.map +1 -0
  141. package/dist/components/tabs/tab.d.ts +10 -1
  142. package/dist/components/tabs/tab.d.ts.map +1 -1
  143. package/dist/components/tabs/tab.js +46 -28
  144. package/dist/components/tabs/tab.js.map +1 -0
  145. package/dist/components/tabs/tabs.d.ts +9 -0
  146. package/dist/components/tabs/tabs.d.ts.map +1 -1
  147. package/dist/components/tabs/tabs.js +76 -13
  148. package/dist/components/tabs/tabs.js.map +1 -0
  149. package/dist/components/textarea/textarea.d.ts +13 -0
  150. package/dist/components/textarea/textarea.d.ts.map +1 -1
  151. package/dist/components/textarea/textarea.js +59 -13
  152. package/dist/components/textarea/textarea.js.map +1 -0
  153. package/dist/components/theme-toggle/theme-toggle.constants.d.ts +3 -0
  154. package/dist/components/theme-toggle/theme-toggle.constants.d.ts.map +1 -0
  155. package/dist/components/theme-toggle/theme-toggle.constants.js +2 -0
  156. package/dist/components/theme-toggle/theme-toggle.constants.js.map +1 -0
  157. package/dist/components/theme-toggle/theme-toggle.d.ts +3 -2
  158. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -1
  159. package/dist/components/theme-toggle/theme-toggle.js +46 -19
  160. package/dist/components/theme-toggle/theme-toggle.js.map +1 -0
  161. package/dist/components/vertical-nav/vertical-nav-group.d.ts +5 -2
  162. package/dist/components/vertical-nav/vertical-nav-group.d.ts.map +1 -1
  163. package/dist/components/vertical-nav/vertical-nav-group.js +50 -14
  164. package/dist/components/vertical-nav/vertical-nav-group.js.map +1 -0
  165. package/dist/components/vertical-nav/vertical-nav-item.d.ts +3 -2
  166. package/dist/components/vertical-nav/vertical-nav-item.d.ts.map +1 -1
  167. package/dist/components/vertical-nav/vertical-nav-item.js +30 -8
  168. package/dist/components/vertical-nav/vertical-nav-item.js.map +1 -0
  169. package/dist/styles/index.css +50 -17
  170. package/dist/styles/reset.js +1 -0
  171. package/dist/styles/reset.js.map +1 -0
  172. package/package.json +2 -1
  173. package/src/components/alert/alert.constants.ts +2 -0
  174. package/src/components/alert/alert.ts +24 -15
  175. package/src/components/badge/badge.constants.ts +2 -0
  176. package/src/components/badge/badge.ts +3 -4
  177. package/src/components/breadcrumb/breadcrumb.ts +2 -2
  178. package/src/components/button/button.constants.ts +8 -0
  179. package/src/components/button/button.ts +184 -144
  180. package/src/components/button-group/button-group.ts +23 -21
  181. package/src/components/checkbox/checkbox.constants.ts +2 -0
  182. package/src/components/checkbox/checkbox.ts +33 -18
  183. package/src/components/code-block/code-block.ts +157 -84
  184. package/src/components/content-card/content-card.ts +10 -16
  185. package/src/components/divider/divider.constants.ts +5 -0
  186. package/src/components/divider/divider.ts +22 -11
  187. package/src/components/drawer/drawer.ts +79 -34
  188. package/src/components/field/field.ts +9 -11
  189. package/src/components/footer/footer.ts +43 -12
  190. package/src/components/form/form.ts +120 -83
  191. package/src/components/grid/grid-row.ts +45 -32
  192. package/src/components/grid/grid.ts +7 -4
  193. package/src/components/input/input.ts +37 -41
  194. package/src/components/link/link.ts +45 -21
  195. package/src/components/metadata/metadata.ts +26 -24
  196. package/src/components/modal/modal.ts +108 -74
  197. package/src/components/page-layout/page-layout.ts +98 -73
  198. package/src/components/radio/radio.ts +8 -13
  199. package/src/components/radio-group/radio-group.ts +45 -21
  200. package/src/components/router/router.ts +73 -50
  201. package/src/components/select/select.ts +502 -131
  202. package/src/components/skeleton/skeleton.ts +14 -14
  203. package/src/components/switch/switch.ts +31 -25
  204. package/src/components/table/data-table.ts +248 -177
  205. package/src/components/table/table.ts +52 -29
  206. package/src/components/tabs/tab-panel.ts +30 -13
  207. package/src/components/tabs/tab.ts +64 -33
  208. package/src/components/tabs/tabs.ts +82 -14
  209. package/src/components/textarea/textarea.ts +63 -15
  210. package/src/components/theme-toggle/theme-toggle.constants.ts +2 -0
  211. package/src/components/theme-toggle/theme-toggle.ts +47 -22
  212. package/src/components/vertical-nav/vertical-nav-group.ts +57 -18
  213. package/src/components/vertical-nav/vertical-nav-item.ts +35 -12
  214. package/src/styles/globals.css +27 -4
  215. package/src/styles/theme.css +39 -31
  216. package/tsconfig.json +2 -1
  217. package/dist/components/card/card.d.ts +0 -11
  218. package/dist/components/card/card.d.ts.map +0 -1
  219. package/dist/components/card/card.js +0 -54
  220. package/src/components/card/card.ts +0 -53
@@ -1,4 +1,4 @@
1
- import { LitElement, html, css } from 'lit';
1
+ import { LitElement, html, css, PropertyValues } from 'lit';
2
2
  import { customElement, property } from 'lit/decorators.js';
3
3
  import { resetStyles } from '../../styles/reset.js';
4
4
 
@@ -9,8 +9,14 @@ export class StSkeleton extends LitElement {
9
9
  @property({ type: String }) width = '';
10
10
  @property({ type: String }) height = '';
11
11
 
12
- // Apply properties directly to the :host as CSS variables when they change
13
- updated(changedProperties: Map<string | number | symbol, unknown>) {
12
+ constructor() {
13
+ super();
14
+ this.setAttribute('role', 'status');
15
+ this.setAttribute('aria-label', 'Loading');
16
+ this.setAttribute('aria-busy', 'true');
17
+ }
18
+
19
+ override updated(changedProperties: PropertyValues<this>) {
14
20
  super.updated(changedProperties);
15
21
 
16
22
  if (changedProperties.has('width')) {
@@ -36,22 +42,20 @@ export class StSkeleton extends LitElement {
36
42
  :host {
37
43
  display: block;
38
44
 
39
- /* Define base sizing variables that can be overridden by props */
40
45
  --_width: var(--st-skeleton-width, 100%);
41
46
  --_height: var(--st-skeleton-height, 1em);
42
47
 
43
- /*
44
- CRITICAL FIX: Apply sizing directly to the host.
45
- This allows external classes and styles (like margin: auto) to work perfectly.
46
- */
47
48
  width: var(--_width);
48
49
  height: var(--_height);
49
50
 
50
- /* Expose radius as a token for external theme overrides */
51
51
  --st-skeleton-radius: var(--st-radius-sm, 0.25rem);
52
52
  }
53
53
 
54
- /* Shape Variants adjust the host's sizing variables */
54
+ :host([variant="text"]) {
55
+ display: inline-block;
56
+ vertical-align: middle;
57
+ }
58
+
55
59
  :host([variant="circular"]) {
56
60
  --_width: var(--st-skeleton-width, 2.5rem);
57
61
  --_height: var(--st-skeleton-height, 2.5rem);
@@ -62,7 +66,6 @@ export class StSkeleton extends LitElement {
62
66
  }
63
67
 
64
68
  .skeleton {
65
- /* The inner element simply fills the host */
66
69
  display: block;
67
70
  width: 100%;
68
71
  height: 100%;
@@ -76,7 +79,6 @@ export class StSkeleton extends LitElement {
76
79
  background-size: 400% 100%;
77
80
  border-radius: var(--st-skeleton-radius);
78
81
 
79
- /* Prevent accidental selection */
80
82
  user-select: none;
81
83
  pointer-events: none;
82
84
  }
@@ -85,7 +87,6 @@ export class StSkeleton extends LitElement {
85
87
  border-radius: 50%;
86
88
  }
87
89
 
88
- /* Animations */
89
90
  :host([animation="shimmer"]) .skeleton {
90
91
  animation: st-shimmer 1.4s ease infinite;
91
92
  }
@@ -100,7 +101,6 @@ export class StSkeleton extends LitElement {
100
101
  animation: none;
101
102
  }
102
103
 
103
- /* Accessibility: Respect OS reduced motion settings */
104
104
  @media (prefers-reduced-motion: reduce) {
105
105
  .skeleton {
106
106
  animation: none !important;
@@ -1,23 +1,25 @@
1
1
  import {LitElement, html, css, PropertyValues} from "lit";
2
2
  import {customElement, property, query} from "lit/decorators.js";
3
+ import {ifDefined} from "lit/directives/if-defined.js";
3
4
  import {resetStyles} from "../../styles/reset.js";
4
5
 
5
6
  @customElement("st-switch")
6
7
  export class StSwitch extends LitElement {
7
8
  static formAssociated = true;
8
9
  private _internals: ElementInternals;
10
+ static shadowRootOptions = {...LitElement.shadowRootOptions, delegatesFocus: true};
9
11
 
10
12
  @query("input") private _inputEl!: HTMLInputElement;
11
13
 
12
14
  @property({type: String, reflect: true}) name = "";
13
15
  @property({type: String}) value = "on";
14
-
15
16
  @property({type: Boolean, reflect: true}) checked = false;
16
17
  @property({type: Boolean, reflect: true}) disabled = false;
17
18
  @property({type: Boolean, reflect: true}) required = false;
18
-
19
19
  @property({attribute: "aria-label"}) ariaLabel = "";
20
20
 
21
+ private _defaultChecked = false;
22
+
21
23
  constructor() {
22
24
  super();
23
25
  this._internals = this.attachInternals();
@@ -41,7 +43,6 @@ export class StSwitch extends LitElement {
41
43
  font-size: var(--st-font-size-base);
42
44
  }
43
45
 
44
- /* Visually hide the native input */
45
46
  input {
46
47
  position: absolute;
47
48
  width: 1px;
@@ -54,12 +55,11 @@ export class StSwitch extends LitElement {
54
55
  border-width: 0;
55
56
  }
56
57
 
57
- /* The Switch Track (Pill) */
58
58
  .track {
59
59
  display: flex;
60
60
  align-items: center;
61
- width: 2.25rem; /* 36px */
62
- height: 1.25rem; /* 20px */
61
+ width: 2.25rem;
62
+ height: 1.25rem;
63
63
  background-color: var(--st-color-border);
64
64
  border-radius: 999px;
65
65
  padding: 2px;
@@ -69,40 +69,34 @@ export class StSwitch extends LitElement {
69
69
  flex-shrink: 0;
70
70
  }
71
71
 
72
- /* The Switch Thumb (Circle) */
73
72
  .thumb {
74
- width: 1rem; /* 16px */
75
- height: 1rem; /* 16px */
76
- background-color: var(--st-white);
73
+ width: 1rem;
74
+ height: 1rem;
75
+ background-color: #ffffff; /* Explicitly white for contrast */
77
76
  border-radius: 50%;
78
77
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
79
78
  transform: translateX(0);
80
79
  transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
81
80
  }
82
81
 
83
- /* Focus State */
82
+ label:hover input:not(:checked):not(:disabled) + .track {
83
+ background-color: var(--st-color-text-muted);
84
+ }
85
+
84
86
  input:focus-visible + .track {
85
87
  box-shadow:
86
88
  0 0 0 2px var(--st-color-bg),
87
89
  0 0 0 4px var(--st-color-primary);
88
90
  }
89
91
 
90
- /* Checked State */
91
92
  :host([checked]) .track {
92
93
  background-color: var(--st-color-primary);
93
94
  }
94
95
 
95
96
  :host([checked]) .thumb {
96
- /* Move thumb to the right: Track width (36px) - Padding (4px) - Thumb width (16px) = 16px */
97
97
  transform: translateX(16px);
98
98
  }
99
99
 
100
- /* Hover State (Subtle darkening of the track if unchecked) */
101
- label:hover input:not(:checked) + .track {
102
- background-color: var(--st-color-text-muted);
103
- }
104
-
105
- /* Disabled State */
106
100
  :host([disabled]) {
107
101
  pointer-events: none;
108
102
  }
@@ -114,16 +108,21 @@ export class StSwitch extends LitElement {
114
108
  `,
115
109
  ];
116
110
 
111
+ override firstUpdated(changedProperties: PropertyValues) {
112
+ super.firstUpdated(changedProperties);
113
+ this._defaultChecked = this.checked;
114
+ }
115
+
117
116
  override updated(changedProperties: PropertyValues<this>) {
118
117
  super.updated(changedProperties);
119
118
 
120
119
  if (changedProperties.has("checked") || changedProperties.has("value")) {
121
120
  this._internals.setFormValue(this.checked ? this.value : null);
122
- this._syncValidity();
121
+ this.updateComplete.then(() => this._syncValidity());
123
122
  }
124
123
 
125
124
  if (changedProperties.has("required")) {
126
- this._syncValidity();
125
+ this.updateComplete.then(() => this._syncValidity());
127
126
  }
128
127
  }
129
128
 
@@ -136,15 +135,22 @@ export class StSwitch extends LitElement {
136
135
  );
137
136
  }
138
137
 
138
+ public checkValidity() {
139
+ return this._internals.checkValidity();
140
+ }
141
+
142
+ public reportValidity() {
143
+ return this._internals.reportValidity();
144
+ }
145
+
139
146
  formResetCallback() {
140
- this.checked = false;
141
- this._internals.setFormValue(null);
147
+ this.checked = this._defaultChecked;
148
+ this._internals.setFormValue(this.checked ? this.value : null);
142
149
  this.updateComplete.then(() => this._syncValidity());
143
150
  }
144
151
 
145
152
  private _handleChange(e: Event) {
146
153
  e.stopPropagation();
147
-
148
154
  if (this.disabled) return;
149
155
 
150
156
  this.checked = this._inputEl.checked;
@@ -157,7 +163,7 @@ export class StSwitch extends LitElement {
157
163
  <input
158
164
  type="checkbox"
159
165
  role="switch"
160
- aria-label=${this.ariaLabel || ""}
166
+ aria-label=${ifDefined(this.ariaLabel || undefined)}
161
167
  .name=${this.name}
162
168
  .value=${this.value}
163
169
  .checked=${this.checked}