@phcdevworks/spectre-components 0.0.1 → 1.1.0

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 (62) hide show
  1. package/README.md +113 -40
  2. package/dist/base-2rD8EmdC.d.cts +32 -0
  3. package/dist/base-2rD8EmdC.d.ts +32 -0
  4. package/dist/button.cjs +295 -170
  5. package/dist/button.cjs.map +1 -1
  6. package/dist/button.d.cts +30 -61
  7. package/dist/button.d.ts +30 -61
  8. package/dist/button.js +296 -171
  9. package/dist/button.js.map +1 -1
  10. package/dist/checkbox.cjs +286 -71
  11. package/dist/checkbox.cjs.map +1 -1
  12. package/dist/checkbox.d.cts +38 -43
  13. package/dist/checkbox.d.ts +38 -43
  14. package/dist/checkbox.js +287 -72
  15. package/dist/checkbox.js.map +1 -1
  16. package/dist/fieldset.cjs +233 -88
  17. package/dist/fieldset.cjs.map +1 -1
  18. package/dist/fieldset.d.cts +23 -40
  19. package/dist/fieldset.d.ts +23 -40
  20. package/dist/fieldset.js +233 -88
  21. package/dist/fieldset.js.map +1 -1
  22. package/dist/form-iI7vV-3W.d.cts +6 -0
  23. package/dist/form-iI7vV-3W.d.ts +6 -0
  24. package/dist/index.cjs +564 -1029
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.cts +5 -2
  27. package/dist/index.d.ts +5 -2
  28. package/dist/index.js +566 -1030
  29. package/dist/index.js.map +1 -1
  30. package/dist/input.cjs +232 -119
  31. package/dist/input.cjs.map +1 -1
  32. package/dist/input.d.cts +52 -68
  33. package/dist/input.d.ts +52 -68
  34. package/dist/input.js +232 -119
  35. package/dist/input.js.map +1 -1
  36. package/dist/label.cjs +232 -73
  37. package/dist/label.cjs.map +1 -1
  38. package/dist/label.d.cts +13 -22
  39. package/dist/label.d.ts +13 -22
  40. package/dist/label.js +232 -73
  41. package/dist/label.js.map +1 -1
  42. package/dist/projectable-BzDQ4xp_.d.cts +17 -0
  43. package/dist/projectable-s3SgvjGX.d.ts +17 -0
  44. package/dist/radio.cjs +286 -71
  45. package/dist/radio.cjs.map +1 -1
  46. package/dist/radio.d.cts +38 -43
  47. package/dist/radio.d.ts +38 -43
  48. package/dist/radio.js +287 -72
  49. package/dist/radio.js.map +1 -1
  50. package/dist/select.cjs +292 -163
  51. package/dist/select.cjs.map +1 -1
  52. package/dist/select.d.cts +35 -58
  53. package/dist/select.d.ts +35 -58
  54. package/dist/select.js +293 -163
  55. package/dist/select.js.map +1 -1
  56. package/dist/textarea.cjs +191 -290
  57. package/dist/textarea.cjs.map +1 -1
  58. package/dist/textarea.d.cts +41 -58
  59. package/dist/textarea.d.ts +41 -58
  60. package/dist/textarea.js +191 -290
  61. package/dist/textarea.js.map +1 -1
  62. package/package.json +13 -12
package/README.md CHANGED
@@ -48,22 +48,30 @@ Use the components in markup:
48
48
  <sp-button variant="primary" size="md">Save</sp-button>
49
49
  <sp-button variant="ghost" size="sm">Cancel</sp-button>
50
50
  <sp-input name="email" type="email" placeholder="Email address"></sp-input>
51
+ <sp-textarea name="bio" rows="4" placeholder="Short bio"></sp-textarea>
52
+ <sp-select name="role">
53
+ <option value="admin">Admin</option>
54
+ <option value="user">User</option>
55
+ </sp-select>
56
+ <sp-checkbox name="terms" value="accepted">Accept terms</sp-checkbox>
57
+ <sp-radio name="plan" value="monthly">Monthly</sp-radio>
58
+ <sp-label for="email">Email address</sp-label>
59
+ <sp-fieldset legend="Contact preferences">
60
+ <sp-checkbox name="email-updates">Email updates</sp-checkbox>
61
+ </sp-fieldset>
51
62
  ```
52
63
 
53
- Register only the button when you want a narrower entry point:
64
+ Register only what you need using the per-component entry points:
54
65
 
55
66
  ```ts
56
67
  import { defineSpectreButton } from "@phcdevworks/spectre-components/button";
57
-
58
- defineSpectreButton();
59
- ```
60
-
61
- Register only the input when you want the input-only entry point:
62
-
63
- ```ts
64
68
  import { defineSpectreInput } from "@phcdevworks/spectre-components/input";
65
-
66
- defineSpectreInput();
69
+ import { defineSpectreTextarea } from "@phcdevworks/spectre-components/textarea";
70
+ import { defineSpectreSelect } from "@phcdevworks/spectre-components/select";
71
+ import { defineSpectreCheckbox } from "@phcdevworks/spectre-components/checkbox";
72
+ import { defineSpectreRadio } from "@phcdevworks/spectre-components/radio";
73
+ import { defineSpectreLabel } from "@phcdevworks/spectre-components/label";
74
+ import { defineSpectreFieldset } from "@phcdevworks/spectre-components/fieldset";
67
75
  ```
68
76
 
69
77
  ## What this package owns
@@ -91,32 +99,95 @@ contracts locally.
91
99
 
92
100
  ### Root package
93
101
 
94
- `@phcdevworks/spectre-components` exports:
95
-
96
- - `defineSpectreComponents()`
97
- - `defineSpectreButton()`
98
- - `defineSpectreInput()`
99
- - `SpectreButtonElement`
100
- - `SpectreInputElement`
101
- - `spectreButtonVariants`
102
- - `spectreButtonSizes`
103
- - `spectreButtonTypes`
104
- - `spectreInputTypes`
105
- - `spectreInputSizes`
106
- - `SpectreButtonProps` and related button types
107
- - `SpectreInputProps` and related input types
102
+ `@phcdevworks/spectre-components` exports everything from all component entry
103
+ points plus the `defineSpectreComponents()` bulk registration helper.
104
+
105
+ **Registration helpers**
106
+
107
+ - `defineSpectreComponents()` — registers all components at once
108
+ - `defineSpectreButton()`, `defineSpectreInput()`, `defineSpectreTextarea()`
109
+ - `defineSpectreSelect()`, `defineSpectreCheckbox()`, `defineSpectreRadio()`
110
+ - `defineSpectreLabel()`, `defineSpectreFieldset()`
111
+
112
+ **Element classes**
113
+
114
+ - `SpectreButtonElement`, `SpectreInputElement`, `SpectreTextareaElement`
115
+ - `SpectreSelectElement`, `SpectreCheckboxElement`, `SpectreRadioElement`
116
+ - `SpectreLabelElement`, `SpectreFieldsetElement`
117
+
118
+ **Constants and types (button)**
119
+
120
+ - `spectreButtonVariants`, `spectreButtonSizes`, `spectreButtonTypes`
121
+ - `SpectreButtonVariant`, `SpectreButtonSize`, `SpectreButtonType`
122
+ - `SpectreButtonProps`
123
+
124
+ **Constants and types (input / textarea / select)**
125
+
126
+ - `spectreInputSizes`, `spectreInputTypes`
127
+ - `SpectreInputSize`, `SpectreInputType`
128
+ - `SpectreInputProps`, `SpectreTextareaProps`, `SpectreSelectProps`
129
+
130
+ **Props interfaces (checkbox / radio / label / fieldset)**
131
+
132
+ - `SpectreCheckboxProps`, `SpectreRadioProps`
133
+ - `SpectreLabelProps`, `SpectreFieldsetProps`
108
134
 
109
135
  ### Button entry point
110
136
 
111
- `@phcdevworks/spectre-components/button` exports the button-only API so
112
- consumers can register a single component without importing the full package
113
- entry.
137
+ `@phcdevworks/spectre-components/button` — registers only `sp-button`.
138
+
139
+ Exports: `defineSpectreButton`, `SpectreButtonElement`, `SpectreButtonProps`,
140
+ `spectreButtonVariants`, `spectreButtonSizes`, `spectreButtonTypes`,
141
+ `SpectreButtonVariant`, `SpectreButtonSize`, `SpectreButtonType`.
114
142
 
115
143
  ### Input entry point
116
144
 
117
- `@phcdevworks/spectre-components/input` exports the input-only API so
118
- consumers can register just `sp-input` when they do not need the broader
119
- component bundle.
145
+ `@phcdevworks/spectre-components/input` — registers only `sp-input`.
146
+
147
+ Exports: `defineSpectreInput`, `SpectreInputElement`, `SpectreInputProps`,
148
+ `spectreInputSizes`, `spectreInputTypes`, `SpectreInputSize`, `SpectreInputType`.
149
+
150
+ ### Textarea entry point
151
+
152
+ `@phcdevworks/spectre-components/textarea` — registers only `sp-textarea`.
153
+
154
+ Exports: `defineSpectreTextarea`, `SpectreTextareaElement`, `SpectreTextareaProps`.
155
+
156
+ Size constants shared with input: import `spectreInputSizes` / `SpectreInputSize`
157
+ from `@phcdevworks/spectre-components/input`.
158
+
159
+ ### Select entry point
160
+
161
+ `@phcdevworks/spectre-components/select` — registers only `sp-select`.
162
+
163
+ Exports: `defineSpectreSelect`, `SpectreSelectElement`, `SpectreSelectProps`.
164
+
165
+ Size constants shared with input: import `spectreInputSizes` / `SpectreInputSize`
166
+ from `@phcdevworks/spectre-components/input`.
167
+
168
+ ### Checkbox entry point
169
+
170
+ `@phcdevworks/spectre-components/checkbox` — registers only `sp-checkbox`.
171
+
172
+ Exports: `defineSpectreCheckbox`, `SpectreCheckboxElement`, `SpectreCheckboxProps`.
173
+
174
+ ### Radio entry point
175
+
176
+ `@phcdevworks/spectre-components/radio` — registers only `sp-radio`.
177
+
178
+ Exports: `defineSpectreRadio`, `SpectreRadioElement`, `SpectreRadioProps`.
179
+
180
+ ### Label entry point
181
+
182
+ `@phcdevworks/spectre-components/label` — registers only `sp-label`.
183
+
184
+ Exports: `defineSpectreLabel`, `SpectreLabelElement`, `SpectreLabelProps`.
185
+
186
+ ### Fieldset entry point
187
+
188
+ `@phcdevworks/spectre-components/fieldset` — registers only `sp-fieldset`.
189
+
190
+ Exports: `defineSpectreFieldset`, `SpectreFieldsetElement`, `SpectreFieldsetProps`.
120
191
 
121
192
  ## Relationship to the rest of Spectre
122
193
 
@@ -132,16 +203,18 @@ Spectre keeps responsibilities separate:
132
203
  That separation keeps visual meaning centralized, styling contracts stable, and
133
204
  component behavior reusable across frameworks.
134
205
 
135
- ## Current foundation
136
-
137
- This v0 foundation includes:
138
-
139
- - a publishable TypeScript package build
140
- - root and subpath exports
141
- - a Lit-based `sp-button` starter component
142
- - a Lit-based `sp-input` foundation component
143
- - explicit registration helpers instead of implicit global side effects
144
- - Vitest coverage for baseline rendering and accessibility behavior
206
+ ## Components
207
+
208
+ | Element | Tag | Description |
209
+ |---|---|---|
210
+ | `SpectreButtonElement` | `sp-button` | Button with variant, size, loading, and pill support |
211
+ | `SpectreInputElement` | `sp-input` | Text input with state, size, and type support |
212
+ | `SpectreTextareaElement` | `sp-textarea` | Multiline text input with resizable rows |
213
+ | `SpectreSelectElement` | `sp-select` | Native select with projected option elements |
214
+ | `SpectreCheckboxElement` | `sp-checkbox` | Checkbox with projected or property-based label |
215
+ | `SpectreRadioElement` | `sp-radio` | Radio button with projected or property-based label |
216
+ | `SpectreLabelElement` | `sp-label` | Accessible label with `for` forwarding |
217
+ | `SpectreFieldsetElement` | `sp-fieldset` | Fieldset group with legend text and slot support |
145
218
 
146
219
  ## Development
147
220
 
@@ -0,0 +1,32 @@
1
+ import { LitElement, PropertyDeclarations } from 'lit';
2
+
3
+ declare class SpectreBaseElement extends LitElement {
4
+ static properties: PropertyDeclarations;
5
+ private _ariaLabel;
6
+ private _ariaLabelledBy;
7
+ private _ariaDescribedBy;
8
+ private _title;
9
+ private _id;
10
+ get ariaLabel(): string | null;
11
+ set ariaLabel(value: string | null);
12
+ get ariaLabelledBy(): string | null;
13
+ set ariaLabelledBy(value: string | null);
14
+ get ariaDescribedBy(): string | null;
15
+ set ariaDescribedBy(value: string | null);
16
+ get title(): string;
17
+ set title(value: string | undefined | null);
18
+ get id(): string;
19
+ set id(value: string | undefined | null);
20
+ createRenderRoot(): this;
21
+ connectedCallback(): void;
22
+ getAttribute(qualifiedName: string): string | null;
23
+ hasAttribute(qualifiedName: string): boolean;
24
+ setAttribute(qualifiedName: string, value: string): void;
25
+ removeAttribute(qualifiedName: string): void;
26
+ private _removeHostAttribute;
27
+ protected get forwardedAriaLabel(): string | undefined;
28
+ protected get forwardedAriaLabelledBy(): string | undefined;
29
+ protected get forwardedAriaDescribedBy(): string | undefined;
30
+ }
31
+
32
+ export { SpectreBaseElement as S };
@@ -0,0 +1,32 @@
1
+ import { LitElement, PropertyDeclarations } from 'lit';
2
+
3
+ declare class SpectreBaseElement extends LitElement {
4
+ static properties: PropertyDeclarations;
5
+ private _ariaLabel;
6
+ private _ariaLabelledBy;
7
+ private _ariaDescribedBy;
8
+ private _title;
9
+ private _id;
10
+ get ariaLabel(): string | null;
11
+ set ariaLabel(value: string | null);
12
+ get ariaLabelledBy(): string | null;
13
+ set ariaLabelledBy(value: string | null);
14
+ get ariaDescribedBy(): string | null;
15
+ set ariaDescribedBy(value: string | null);
16
+ get title(): string;
17
+ set title(value: string | undefined | null);
18
+ get id(): string;
19
+ set id(value: string | undefined | null);
20
+ createRenderRoot(): this;
21
+ connectedCallback(): void;
22
+ getAttribute(qualifiedName: string): string | null;
23
+ hasAttribute(qualifiedName: string): boolean;
24
+ setAttribute(qualifiedName: string, value: string): void;
25
+ removeAttribute(qualifiedName: string): void;
26
+ private _removeHostAttribute;
27
+ protected get forwardedAriaLabel(): string | undefined;
28
+ protected get forwardedAriaLabelledBy(): string | undefined;
29
+ protected get forwardedAriaDescribedBy(): string | undefined;
30
+ }
31
+
32
+ export { SpectreBaseElement as S };