@sondor-technology/sondor-components 1.0.0 → 1.0.1-develop.3

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 (168) hide show
  1. package/README.md +8 -0
  2. package/dist/components/alert/alert.d.ts +13 -0
  3. package/dist/components/alert/alert.d.ts.map +1 -0
  4. package/dist/components/alert/alert.js +105 -0
  5. package/dist/components/badge/badge.d.ts +13 -0
  6. package/dist/components/badge/badge.d.ts.map +1 -0
  7. package/dist/components/badge/badge.js +101 -0
  8. package/dist/components/breadcrumb/breadcrumb.d.ts +19 -0
  9. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
  10. package/dist/components/breadcrumb/breadcrumb.js +99 -0
  11. package/dist/components/button/button.d.ts +23 -0
  12. package/dist/components/button/button.d.ts.map +1 -0
  13. package/dist/components/button/button.js +304 -0
  14. package/dist/components/button-group/button-group.d.ts +6 -0
  15. package/dist/components/button-group/button-group.d.ts.map +1 -0
  16. package/dist/components/button-group/button-group.js +74 -0
  17. package/dist/components/card/card.d.ts +11 -0
  18. package/dist/components/card/card.d.ts.map +1 -0
  19. package/dist/components/card/card.js +54 -0
  20. package/dist/components/checkbox/checkbox.d.ts +28 -0
  21. package/dist/components/checkbox/checkbox.d.ts.map +1 -0
  22. package/dist/components/checkbox/checkbox.js +247 -0
  23. package/dist/components/code-block/code-block.d.ts +20 -0
  24. package/dist/components/code-block/code-block.d.ts.map +1 -0
  25. package/dist/components/code-block/code-block.js +260 -0
  26. package/dist/components/content-card/content-card.d.ts +13 -0
  27. package/dist/components/content-card/content-card.d.ts.map +1 -0
  28. package/dist/components/content-card/content-card.js +140 -0
  29. package/dist/components/divider/divider.d.ts +16 -0
  30. package/dist/components/divider/divider.d.ts.map +1 -0
  31. package/dist/components/divider/divider.js +82 -0
  32. package/dist/components/drawer/drawer.d.ts +22 -0
  33. package/dist/components/drawer/drawer.d.ts.map +1 -0
  34. package/dist/components/drawer/drawer.js +226 -0
  35. package/dist/components/field/field.d.ts +11 -0
  36. package/dist/components/field/field.d.ts.map +1 -0
  37. package/dist/components/field/field.js +32 -0
  38. package/dist/components/footer/footer.d.ts +6 -0
  39. package/dist/components/footer/footer.d.ts.map +1 -0
  40. package/dist/components/footer/footer.js +65 -0
  41. package/dist/components/form/form-step.d.ts +13 -0
  42. package/dist/components/form/form-step.d.ts.map +1 -0
  43. package/dist/components/form/form-step.js +41 -0
  44. package/dist/components/form/form.d.ts +25 -0
  45. package/dist/components/form/form.d.ts.map +1 -0
  46. package/dist/components/form/form.js +358 -0
  47. package/dist/components/grid/grid-row.d.ts +17 -0
  48. package/dist/components/grid/grid-row.d.ts.map +1 -0
  49. package/dist/components/grid/grid-row.js +92 -0
  50. package/dist/components/grid/grid.d.ts +13 -0
  51. package/dist/components/grid/grid.d.ts.map +1 -0
  52. package/dist/components/grid/grid.js +42 -0
  53. package/dist/components/icon/icon-paths.d.ts +132 -0
  54. package/dist/components/icon/icon-paths.d.ts.map +1 -0
  55. package/dist/components/icon/icon-paths.js +137 -0
  56. package/dist/components/icon/icon.d.ts +16 -0
  57. package/dist/components/icon/icon.d.ts.map +1 -0
  58. package/dist/components/icon/icon.js +95 -0
  59. package/dist/components/input/input.d.ts +31 -0
  60. package/dist/components/input/input.d.ts.map +1 -0
  61. package/dist/components/input/input.js +268 -0
  62. package/dist/components/link/link.d.ts +16 -0
  63. package/dist/components/link/link.d.ts.map +1 -0
  64. package/dist/components/link/link.js +116 -0
  65. package/dist/components/metadata/metadata.d.ts +18 -0
  66. package/dist/components/metadata/metadata.d.ts.map +1 -0
  67. package/dist/components/metadata/metadata.js +71 -0
  68. package/dist/components/modal/modal.d.ts +24 -0
  69. package/dist/components/modal/modal.d.ts.map +1 -0
  70. package/dist/components/modal/modal.js +163 -0
  71. package/dist/components/page-layout/page-layout.d.ts +46 -0
  72. package/dist/components/page-layout/page-layout.d.ts.map +1 -0
  73. package/dist/components/page-layout/page-layout.js +697 -0
  74. package/dist/components/radio/radio.d.ts +16 -0
  75. package/dist/components/radio/radio.d.ts.map +1 -0
  76. package/dist/components/radio/radio.js +152 -0
  77. package/dist/components/radio-group/radio-group.d.ts +27 -0
  78. package/dist/components/radio-group/radio-group.d.ts.map +1 -0
  79. package/dist/components/radio-group/radio-group.js +161 -0
  80. package/dist/components/router/router.d.ts +7 -0
  81. package/dist/components/router/router.d.ts.map +1 -0
  82. package/dist/components/router/router.js +37 -0
  83. package/dist/components/select/select.d.ts +16 -0
  84. package/dist/components/select/select.d.ts.map +1 -0
  85. package/dist/components/select/select.js +172 -0
  86. package/dist/components/skeleton/skeleton.d.ts +17 -0
  87. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  88. package/dist/components/skeleton/skeleton.js +78 -0
  89. package/dist/components/switch/switch.d.ts +25 -0
  90. package/dist/components/switch/switch.d.ts.map +1 -0
  91. package/dist/components/switch/switch.js +185 -0
  92. package/dist/components/table/data-table.d.ts +72 -0
  93. package/dist/components/table/data-table.d.ts.map +1 -0
  94. package/dist/components/table/data-table.js +551 -0
  95. package/dist/components/table/table.d.ts +22 -0
  96. package/dist/components/table/table.d.ts.map +1 -0
  97. package/dist/components/table/table.js +167 -0
  98. package/dist/components/tabs/tab-panel.d.ts +8 -0
  99. package/dist/components/tabs/tab-panel.d.ts.map +1 -0
  100. package/dist/components/tabs/tab-panel.js +46 -0
  101. package/dist/components/tabs/tab.d.ts +9 -0
  102. package/dist/components/tabs/tab.d.ts.map +1 -0
  103. package/dist/components/tabs/tab.js +91 -0
  104. package/dist/components/tabs/tabs.d.ts +14 -0
  105. package/dist/components/tabs/tabs.d.ts.map +1 -0
  106. package/dist/components/tabs/tabs.js +85 -0
  107. package/dist/components/textarea/textarea.d.ts +36 -0
  108. package/dist/components/textarea/textarea.d.ts.map +1 -0
  109. package/dist/components/textarea/textarea.js +231 -0
  110. package/dist/components/theme-toggle/theme-toggle.d.ts +15 -0
  111. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -0
  112. package/dist/components/theme-toggle/theme-toggle.js +130 -0
  113. package/dist/components/vertical-nav/vertical-nav-group.d.ts +10 -0
  114. package/dist/components/vertical-nav/vertical-nav-group.d.ts.map +1 -0
  115. package/dist/components/vertical-nav/vertical-nav-group.js +127 -0
  116. package/dist/components/vertical-nav/vertical-nav-item.d.ts +9 -0
  117. package/dist/components/vertical-nav/vertical-nav-item.d.ts.map +1 -0
  118. package/dist/components/vertical-nav/vertical-nav-item.js +85 -0
  119. package/dist/styles/index.css +171 -0
  120. package/dist/styles/reset.d.ts +2 -0
  121. package/dist/styles/reset.d.ts.map +1 -0
  122. package/dist/styles/reset.js +50 -0
  123. package/package.json +7 -2
  124. package/src/components/alert/alert.ts +100 -100
  125. package/src/components/badge/badge.ts +96 -96
  126. package/src/components/breadcrumb/breadcrumb.ts +98 -98
  127. package/src/components/button/button.ts +281 -281
  128. package/src/components/button-group/button-group.ts +67 -67
  129. package/src/components/card/card.ts +52 -52
  130. package/src/components/checkbox/checkbox.ts +238 -238
  131. package/src/components/code-block/code-block.ts +256 -256
  132. package/src/components/content-card/content-card.ts +133 -133
  133. package/src/components/divider/divider.ts +68 -68
  134. package/src/components/drawer/drawer.ts +217 -217
  135. package/src/components/field/field.ts +30 -30
  136. package/src/components/footer/footer.ts +58 -58
  137. package/src/components/form/form-step.ts +32 -32
  138. package/src/components/form/form.ts +376 -376
  139. package/src/components/grid/grid-row.ts +75 -75
  140. package/src/components/grid/grid.ts +36 -36
  141. package/src/components/icon/icon-paths.ts +140 -124
  142. package/src/components/icon/icon.ts +82 -82
  143. package/src/components/input/input.ts +248 -248
  144. package/src/components/link/link.ts +97 -97
  145. package/src/components/metadata/metadata.ts +66 -66
  146. package/src/components/modal/modal.ts +158 -158
  147. package/src/components/page-layout/page-layout.ts +704 -704
  148. package/src/components/radio/radio.ts +142 -142
  149. package/src/components/radio-group/radio-group.ts +157 -157
  150. package/src/components/router/router.ts +46 -46
  151. package/src/components/select/select.ts +161 -161
  152. package/src/components/skeleton/skeleton.ts +67 -67
  153. package/src/components/switch/switch.ts +181 -181
  154. package/src/components/table/data-table.ts +556 -556
  155. package/src/components/table/table.ts +153 -153
  156. package/src/components/tabs/tab-panel.ts +30 -30
  157. package/src/components/tabs/tab.ts +76 -76
  158. package/src/components/tabs/tabs.ts +88 -88
  159. package/src/components/textarea/textarea.ts +215 -215
  160. package/src/components/theme-toggle/theme-toggle.ts +131 -131
  161. package/src/components/vertical-nav/vertical-nav-group.ts +109 -96
  162. package/src/components/vertical-nav/vertical-nav-item.ts +66 -49
  163. package/src/styles/globals.css +58 -58
  164. package/src/styles/index.css +80 -80
  165. package/src/styles/reset.ts +50 -50
  166. package/src/styles/theme.css +58 -58
  167. package/src/styles/typography.css +25 -25
  168. package/tsconfig.json +15 -15
@@ -1,181 +1,181 @@
1
- import {LitElement, html, css, PropertyValues} from "lit";
2
- import {customElement, property, query} from "lit/decorators.js";
3
- import {resetStyles} from "../../styles/reset.js";
4
-
5
- @customElement("st-switch")
6
- export class StSwitch extends LitElement {
7
- static formAssociated = true;
8
- private _internals: ElementInternals;
9
-
10
- @query("input") private _inputEl!: HTMLInputElement;
11
-
12
- @property({type: String, reflect: true}) name = "";
13
- @property({type: String}) value = "on";
14
-
15
- @property({type: Boolean, reflect: true}) checked = false;
16
- @property({type: Boolean, reflect: true}) disabled = false;
17
- @property({type: Boolean, reflect: true}) required = false;
18
-
19
- @property({attribute: "aria-label"}) ariaLabel = "";
20
-
21
- constructor() {
22
- super();
23
- this._internals = this.attachInternals();
24
- }
25
-
26
- static styles = [
27
- resetStyles,
28
- css`
29
- :host {
30
- display: inline-block;
31
- outline: none;
32
- user-select: none;
33
- }
34
-
35
- label {
36
- display: inline-flex;
37
- align-items: center;
38
- gap: var(--st-spacing-sm);
39
- cursor: pointer;
40
- color: var(--st-color-text);
41
- font-size: var(--st-font-size-base);
42
- }
43
-
44
- /* Visually hide the native input */
45
- input {
46
- position: absolute;
47
- width: 1px;
48
- height: 1px;
49
- padding: 0;
50
- margin: -1px;
51
- overflow: hidden;
52
- clip: rect(0, 0, 0, 0);
53
- white-space: nowrap;
54
- border-width: 0;
55
- }
56
-
57
- /* The Switch Track (Pill) */
58
- .track {
59
- display: flex;
60
- align-items: center;
61
- width: 2.25rem; /* 36px */
62
- height: 1.25rem; /* 20px */
63
- background-color: var(--st-color-border);
64
- border-radius: 999px;
65
- padding: 2px;
66
- transition:
67
- background-color 0.2s ease,
68
- box-shadow 0.2s ease;
69
- flex-shrink: 0;
70
- }
71
-
72
- /* The Switch Thumb (Circle) */
73
- .thumb {
74
- width: 1rem; /* 16px */
75
- height: 1rem; /* 16px */
76
- background-color: var(--st-white);
77
- border-radius: 50%;
78
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
79
- transform: translateX(0);
80
- transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
81
- }
82
-
83
- /* Focus State */
84
- input:focus-visible + .track {
85
- box-shadow:
86
- 0 0 0 2px var(--st-color-bg),
87
- 0 0 0 4px var(--st-color-primary);
88
- }
89
-
90
- /* Checked State */
91
- :host([checked]) .track {
92
- background-color: var(--st-color-primary);
93
- }
94
-
95
- :host([checked]) .thumb {
96
- /* Move thumb to the right: Track width (36px) - Padding (4px) - Thumb width (16px) = 16px */
97
- transform: translateX(16px);
98
- }
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
- :host([disabled]) {
107
- pointer-events: none;
108
- }
109
-
110
- :host([disabled]) label {
111
- opacity: 0.5;
112
- cursor: not-allowed;
113
- }
114
- `,
115
- ];
116
-
117
- override updated(changedProperties: PropertyValues<this>) {
118
- super.updated(changedProperties);
119
-
120
- if (changedProperties.has("checked") || changedProperties.has("value")) {
121
- this._internals.setFormValue(this.checked ? this.value : null);
122
- this._syncValidity();
123
- }
124
-
125
- if (changedProperties.has("required")) {
126
- this._syncValidity();
127
- }
128
- }
129
-
130
- private _syncValidity() {
131
- if (!this._inputEl) return;
132
- this._internals.setValidity(
133
- this._inputEl.validity,
134
- this._inputEl.validationMessage,
135
- this._inputEl,
136
- );
137
- }
138
-
139
- formResetCallback() {
140
- this.checked = false;
141
- this._internals.setFormValue(null);
142
- this.updateComplete.then(() => this._syncValidity());
143
- }
144
-
145
- private _handleChange(e: Event) {
146
- e.stopPropagation();
147
-
148
- if (this.disabled) return;
149
-
150
- this.checked = this._inputEl.checked;
151
- this.dispatchEvent(new Event("change", {bubbles: true, composed: true}));
152
- }
153
-
154
- render() {
155
- return html`
156
- <label>
157
- <input
158
- type="checkbox"
159
- role="switch"
160
- aria-label=${this.ariaLabel || ""}
161
- .name=${this.name}
162
- .value=${this.value}
163
- .checked=${this.checked}
164
- ?disabled=${this.disabled}
165
- ?required=${this.required}
166
- @change=${this._handleChange}
167
- />
168
- <div class="track">
169
- <div class="thumb"></div>
170
- </div>
171
- <span class="label"><slot></slot></span>
172
- </label>
173
- `;
174
- }
175
- }
176
-
177
- declare global {
178
- interface HTMLElementTagNameMap {
179
- "st-switch": StSwitch;
180
- }
181
- }
1
+ import {LitElement, html, css, PropertyValues} from "lit";
2
+ import {customElement, property, query} from "lit/decorators.js";
3
+ import {resetStyles} from "../../styles/reset.js";
4
+
5
+ @customElement("st-switch")
6
+ export class StSwitch extends LitElement {
7
+ static formAssociated = true;
8
+ private _internals: ElementInternals;
9
+
10
+ @query("input") private _inputEl!: HTMLInputElement;
11
+
12
+ @property({type: String, reflect: true}) name = "";
13
+ @property({type: String}) value = "on";
14
+
15
+ @property({type: Boolean, reflect: true}) checked = false;
16
+ @property({type: Boolean, reflect: true}) disabled = false;
17
+ @property({type: Boolean, reflect: true}) required = false;
18
+
19
+ @property({attribute: "aria-label"}) ariaLabel = "";
20
+
21
+ constructor() {
22
+ super();
23
+ this._internals = this.attachInternals();
24
+ }
25
+
26
+ static styles = [
27
+ resetStyles,
28
+ css`
29
+ :host {
30
+ display: inline-block;
31
+ outline: none;
32
+ user-select: none;
33
+ }
34
+
35
+ label {
36
+ display: inline-flex;
37
+ align-items: center;
38
+ gap: var(--st-spacing-sm);
39
+ cursor: pointer;
40
+ color: var(--st-color-text);
41
+ font-size: var(--st-font-size-base);
42
+ }
43
+
44
+ /* Visually hide the native input */
45
+ input {
46
+ position: absolute;
47
+ width: 1px;
48
+ height: 1px;
49
+ padding: 0;
50
+ margin: -1px;
51
+ overflow: hidden;
52
+ clip: rect(0, 0, 0, 0);
53
+ white-space: nowrap;
54
+ border-width: 0;
55
+ }
56
+
57
+ /* The Switch Track (Pill) */
58
+ .track {
59
+ display: flex;
60
+ align-items: center;
61
+ width: 2.25rem; /* 36px */
62
+ height: 1.25rem; /* 20px */
63
+ background-color: var(--st-color-border);
64
+ border-radius: 999px;
65
+ padding: 2px;
66
+ transition:
67
+ background-color 0.2s ease,
68
+ box-shadow 0.2s ease;
69
+ flex-shrink: 0;
70
+ }
71
+
72
+ /* The Switch Thumb (Circle) */
73
+ .thumb {
74
+ width: 1rem; /* 16px */
75
+ height: 1rem; /* 16px */
76
+ background-color: var(--st-white);
77
+ border-radius: 50%;
78
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
79
+ transform: translateX(0);
80
+ transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
81
+ }
82
+
83
+ /* Focus State */
84
+ input:focus-visible + .track {
85
+ box-shadow:
86
+ 0 0 0 2px var(--st-color-bg),
87
+ 0 0 0 4px var(--st-color-primary);
88
+ }
89
+
90
+ /* Checked State */
91
+ :host([checked]) .track {
92
+ background-color: var(--st-color-primary);
93
+ }
94
+
95
+ :host([checked]) .thumb {
96
+ /* Move thumb to the right: Track width (36px) - Padding (4px) - Thumb width (16px) = 16px */
97
+ transform: translateX(16px);
98
+ }
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
+ :host([disabled]) {
107
+ pointer-events: none;
108
+ }
109
+
110
+ :host([disabled]) label {
111
+ opacity: 0.5;
112
+ cursor: not-allowed;
113
+ }
114
+ `,
115
+ ];
116
+
117
+ override updated(changedProperties: PropertyValues<this>) {
118
+ super.updated(changedProperties);
119
+
120
+ if (changedProperties.has("checked") || changedProperties.has("value")) {
121
+ this._internals.setFormValue(this.checked ? this.value : null);
122
+ this._syncValidity();
123
+ }
124
+
125
+ if (changedProperties.has("required")) {
126
+ this._syncValidity();
127
+ }
128
+ }
129
+
130
+ private _syncValidity() {
131
+ if (!this._inputEl) return;
132
+ this._internals.setValidity(
133
+ this._inputEl.validity,
134
+ this._inputEl.validationMessage,
135
+ this._inputEl,
136
+ );
137
+ }
138
+
139
+ formResetCallback() {
140
+ this.checked = false;
141
+ this._internals.setFormValue(null);
142
+ this.updateComplete.then(() => this._syncValidity());
143
+ }
144
+
145
+ private _handleChange(e: Event) {
146
+ e.stopPropagation();
147
+
148
+ if (this.disabled) return;
149
+
150
+ this.checked = this._inputEl.checked;
151
+ this.dispatchEvent(new Event("change", {bubbles: true, composed: true}));
152
+ }
153
+
154
+ render() {
155
+ return html`
156
+ <label>
157
+ <input
158
+ type="checkbox"
159
+ role="switch"
160
+ aria-label=${this.ariaLabel || ""}
161
+ .name=${this.name}
162
+ .value=${this.value}
163
+ .checked=${this.checked}
164
+ ?disabled=${this.disabled}
165
+ ?required=${this.required}
166
+ @change=${this._handleChange}
167
+ />
168
+ <div class="track">
169
+ <div class="thumb"></div>
170
+ </div>
171
+ <span class="label"><slot></slot></span>
172
+ </label>
173
+ `;
174
+ }
175
+ }
176
+
177
+ declare global {
178
+ interface HTMLElementTagNameMap {
179
+ "st-switch": StSwitch;
180
+ }
181
+ }