mtrl 0.2.5 → 0.2.7

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 (196) hide show
  1. package/index.ts +18 -0
  2. package/package.json +1 -1
  3. package/src/components/badge/_styles.scss +123 -115
  4. package/src/components/badge/api.ts +57 -59
  5. package/src/components/badge/badge.ts +16 -2
  6. package/src/components/badge/config.ts +65 -11
  7. package/src/components/badge/constants.ts +22 -12
  8. package/src/components/badge/features.ts +44 -40
  9. package/src/components/badge/types.ts +42 -30
  10. package/src/components/bottom-app-bar/_styles.scss +103 -0
  11. package/src/components/bottom-app-bar/bottom-app-bar.ts +196 -0
  12. package/src/components/bottom-app-bar/config.ts +73 -0
  13. package/src/components/bottom-app-bar/index.ts +11 -0
  14. package/src/components/bottom-app-bar/types.ts +108 -0
  15. package/src/components/button/_styles.scss +0 -66
  16. package/src/components/button/api.ts +5 -0
  17. package/src/components/button/button.ts +0 -2
  18. package/src/components/button/config.ts +5 -0
  19. package/src/components/button/constants.ts +0 -6
  20. package/src/components/button/index.ts +2 -2
  21. package/src/components/button/types.ts +7 -7
  22. package/src/components/card/_styles.scss +67 -25
  23. package/src/components/card/api.ts +54 -3
  24. package/src/components/card/card.ts +25 -6
  25. package/src/components/card/config.ts +189 -22
  26. package/src/components/card/constants.ts +20 -19
  27. package/src/components/card/content.ts +299 -2
  28. package/src/components/card/features.ts +158 -4
  29. package/src/components/card/index.ts +31 -9
  30. package/src/components/card/types.ts +166 -15
  31. package/src/components/checkbox/_styles.scss +0 -2
  32. package/src/components/chip/chip.ts +1 -9
  33. package/src/components/chip/constants.ts +0 -10
  34. package/src/components/chip/index.ts +1 -1
  35. package/src/components/chip/types.ts +1 -4
  36. package/src/components/datepicker/_styles.scss +358 -0
  37. package/src/components/datepicker/api.ts +272 -0
  38. package/src/components/datepicker/config.ts +144 -0
  39. package/src/components/datepicker/constants.ts +98 -0
  40. package/src/components/datepicker/datepicker.ts +346 -0
  41. package/src/components/datepicker/index.ts +9 -0
  42. package/src/components/datepicker/render.ts +452 -0
  43. package/src/components/datepicker/types.ts +268 -0
  44. package/src/components/datepicker/utils.ts +290 -0
  45. package/src/components/dialog/_styles.scss +174 -128
  46. package/src/components/dialog/api.ts +48 -13
  47. package/src/components/dialog/config.ts +9 -5
  48. package/src/components/dialog/dialog.ts +6 -3
  49. package/src/components/dialog/features.ts +290 -130
  50. package/src/components/dialog/types.ts +7 -4
  51. package/src/components/divider/_styles.scss +57 -0
  52. package/src/components/divider/config.ts +81 -0
  53. package/src/components/divider/divider.ts +37 -0
  54. package/src/components/divider/features.ts +207 -0
  55. package/src/components/divider/index.ts +5 -0
  56. package/src/components/divider/types.ts +55 -0
  57. package/src/components/extended-fab/_styles.scss +267 -0
  58. package/src/components/extended-fab/api.ts +141 -0
  59. package/src/components/extended-fab/config.ts +108 -0
  60. package/src/components/extended-fab/constants.ts +36 -0
  61. package/src/components/extended-fab/extended-fab.ts +125 -0
  62. package/src/components/extended-fab/index.ts +4 -0
  63. package/src/components/extended-fab/types.ts +287 -0
  64. package/src/components/fab/_styles.scss +225 -0
  65. package/src/components/fab/api.ts +97 -0
  66. package/src/components/fab/config.ts +94 -0
  67. package/src/components/fab/constants.ts +41 -0
  68. package/src/components/fab/fab.ts +67 -0
  69. package/src/components/fab/index.ts +4 -0
  70. package/src/components/fab/types.ts +234 -0
  71. package/src/components/navigation/_styles.scss +1 -0
  72. package/src/components/navigation/api.ts +78 -50
  73. package/src/components/navigation/features/items.ts +280 -0
  74. package/src/components/navigation/nav-item.ts +72 -23
  75. package/src/components/navigation/navigation.ts +54 -2
  76. package/src/components/navigation/types.ts +210 -188
  77. package/src/components/progress/_styles.scss +0 -65
  78. package/src/components/progress/config.ts +1 -2
  79. package/src/components/progress/constants.ts +0 -14
  80. package/src/components/progress/index.ts +1 -1
  81. package/src/components/progress/progress.ts +1 -4
  82. package/src/components/progress/types.ts +1 -4
  83. package/src/components/radios/_styles.scss +0 -45
  84. package/src/components/radios/api.ts +85 -60
  85. package/src/components/radios/config.ts +1 -2
  86. package/src/components/radios/constants.ts +0 -9
  87. package/src/components/radios/index.ts +1 -1
  88. package/src/components/radios/radio.ts +34 -11
  89. package/src/components/radios/radios.ts +2 -1
  90. package/src/components/radios/types.ts +1 -7
  91. package/src/components/search/_styles.scss +306 -0
  92. package/src/components/search/api.ts +203 -0
  93. package/src/components/search/config.ts +87 -0
  94. package/src/components/search/constants.ts +21 -0
  95. package/src/components/search/features/index.ts +4 -0
  96. package/src/components/search/features/search.ts +718 -0
  97. package/src/components/search/features/states.ts +165 -0
  98. package/src/components/search/features/structure.ts +198 -0
  99. package/src/components/search/index.ts +10 -0
  100. package/src/components/search/search.ts +52 -0
  101. package/src/components/search/types.ts +163 -0
  102. package/src/components/segmented-button/_styles.scss +117 -0
  103. package/src/components/segmented-button/config.ts +67 -0
  104. package/src/components/segmented-button/constants.ts +42 -0
  105. package/src/components/segmented-button/index.ts +4 -0
  106. package/src/components/segmented-button/segment.ts +155 -0
  107. package/src/components/segmented-button/segmented-button.ts +250 -0
  108. package/src/components/segmented-button/types.ts +219 -0
  109. package/src/components/slider/_styles.scss +221 -168
  110. package/src/components/slider/accessibility.md +59 -0
  111. package/src/components/slider/api.ts +41 -120
  112. package/src/components/slider/config.ts +51 -49
  113. package/src/components/slider/features/handlers.ts +495 -0
  114. package/src/components/slider/features/index.ts +1 -2
  115. package/src/components/slider/features/slider.ts +66 -84
  116. package/src/components/slider/features/states.ts +195 -0
  117. package/src/components/slider/features/structure.ts +141 -184
  118. package/src/components/slider/features/ui.ts +150 -201
  119. package/src/components/slider/index.ts +2 -11
  120. package/src/components/slider/slider.ts +9 -12
  121. package/src/components/slider/types.ts +39 -24
  122. package/src/components/switch/_styles.scss +0 -2
  123. package/src/components/tabs/_styles.scss +346 -154
  124. package/src/components/tabs/api.ts +178 -400
  125. package/src/components/tabs/config.ts +46 -52
  126. package/src/components/tabs/constants.ts +85 -8
  127. package/src/components/tabs/features.ts +403 -0
  128. package/src/components/tabs/index.ts +60 -3
  129. package/src/components/tabs/indicator.ts +285 -0
  130. package/src/components/tabs/responsive.ts +144 -0
  131. package/src/components/tabs/scroll-indicators.ts +149 -0
  132. package/src/components/tabs/state.ts +186 -0
  133. package/src/components/tabs/tab-api.ts +258 -0
  134. package/src/components/tabs/tab.ts +255 -0
  135. package/src/components/tabs/tabs.ts +50 -31
  136. package/src/components/tabs/types.ts +332 -128
  137. package/src/components/tabs/utils.ts +107 -0
  138. package/src/components/textfield/_styles.scss +0 -98
  139. package/src/components/textfield/config.ts +2 -3
  140. package/src/components/textfield/constants.ts +0 -14
  141. package/src/components/textfield/index.ts +2 -2
  142. package/src/components/textfield/textfield.ts +0 -2
  143. package/src/components/textfield/types.ts +1 -4
  144. package/src/components/timepicker/README.md +277 -0
  145. package/src/components/timepicker/_styles.scss +451 -0
  146. package/src/components/timepicker/api.ts +632 -0
  147. package/src/components/timepicker/clockdial.ts +482 -0
  148. package/src/components/timepicker/config.ts +130 -0
  149. package/src/components/timepicker/constants.ts +138 -0
  150. package/src/components/timepicker/index.ts +8 -0
  151. package/src/components/timepicker/render.ts +613 -0
  152. package/src/components/timepicker/timepicker.ts +117 -0
  153. package/src/components/timepicker/types.ts +336 -0
  154. package/src/components/timepicker/utils.ts +241 -0
  155. package/src/components/top-app-bar/_styles.scss +225 -0
  156. package/src/components/top-app-bar/config.ts +83 -0
  157. package/src/components/top-app-bar/index.ts +11 -0
  158. package/src/components/top-app-bar/top-app-bar.ts +316 -0
  159. package/src/components/top-app-bar/types.ts +140 -0
  160. package/src/core/build/_ripple.scss +6 -6
  161. package/src/core/build/ripple.ts +72 -95
  162. package/src/core/compose/component.ts +1 -1
  163. package/src/core/compose/features/badge.ts +79 -0
  164. package/src/core/compose/features/icon.ts +3 -1
  165. package/src/core/compose/features/index.ts +3 -1
  166. package/src/core/compose/features/ripple.ts +4 -1
  167. package/src/core/compose/features/textlabel.ts +26 -2
  168. package/src/core/dom/create.ts +5 -0
  169. package/src/index.ts +9 -0
  170. package/src/styles/abstract/_theme.scss +115 -3
  171. package/src/styles/themes/_autumn.scss +21 -0
  172. package/src/styles/themes/_base-theme.scss +61 -0
  173. package/src/styles/themes/_baseline.scss +58 -0
  174. package/src/styles/themes/_bluekhaki.scss +125 -0
  175. package/src/styles/themes/_brownbeige.scss +125 -0
  176. package/src/styles/themes/_browngreen.scss +125 -0
  177. package/src/styles/themes/_forest.scss +6 -0
  178. package/src/styles/themes/_greenbeige.scss +125 -0
  179. package/src/styles/themes/_material.scss +125 -0
  180. package/src/styles/themes/_ocean.scss +6 -0
  181. package/src/styles/themes/_sageivory.scss +125 -0
  182. package/src/styles/themes/_spring.scss +6 -0
  183. package/src/styles/themes/_summer.scss +5 -0
  184. package/src/styles/themes/_sunset.scss +5 -0
  185. package/src/styles/themes/_tealcaramel.scss +125 -0
  186. package/src/styles/themes/_winter.scss +6 -0
  187. package/src/components/card/actions.ts +0 -48
  188. package/src/components/card/header.ts +0 -88
  189. package/src/components/card/media.ts +0 -52
  190. package/src/components/navigation/features/items.js +0 -192
  191. package/src/components/slider/features/appearance.ts +0 -94
  192. package/src/components/slider/features/disabled.ts +0 -43
  193. package/src/components/slider/features/events.ts +0 -164
  194. package/src/components/slider/features/interactions.ts +0 -261
  195. package/src/components/slider/features/keyboard.ts +0 -112
  196. package/src/core/collection/adapters/mongodb.js +0 -232
@@ -0,0 +1,219 @@
1
+ // src/components/segmented-button/types.ts
2
+
3
+ /**
4
+ * Segmented button selection mode
5
+ * @category Components
6
+ */
7
+ export enum SelectionMode {
8
+ /** Only one segment can be selected at a time */
9
+ SINGLE = 'single',
10
+ /** Multiple segments can be selected */
11
+ MULTI = 'multi'
12
+ }
13
+
14
+ /**
15
+ * Configuration for a single segment within a segmented button
16
+ * @category Components
17
+ */
18
+ export interface SegmentConfig {
19
+ /**
20
+ * Text content for the segment
21
+ * @example 'Day'
22
+ */
23
+ text?: string;
24
+
25
+ /**
26
+ * Icon HTML content
27
+ * @example '<svg>...</svg>'
28
+ */
29
+ icon?: string;
30
+
31
+ /**
32
+ * Whether this segment is initially selected
33
+ * @default false
34
+ */
35
+ selected?: boolean;
36
+
37
+ /**
38
+ * Value associated with this segment
39
+ */
40
+ value?: string;
41
+
42
+ /**
43
+ * Whether this segment is disabled
44
+ * @default false
45
+ */
46
+ disabled?: boolean;
47
+
48
+ /**
49
+ * Additional CSS class names for this segment
50
+ */
51
+ class?: string;
52
+ }
53
+
54
+ /**
55
+ * Configuration interface for the Segmented Button component
56
+ * @category Components
57
+ */
58
+ export interface SegmentedButtonConfig {
59
+ /**
60
+ * Selection mode for the segmented button group
61
+ * @default SelectionMode.SINGLE
62
+ */
63
+ mode?: SelectionMode;
64
+
65
+ /**
66
+ * Array of segment configurations
67
+ */
68
+ segments?: SegmentConfig[];
69
+
70
+ /**
71
+ * Component prefix for class names
72
+ * @default 'mtrl'
73
+ */
74
+ prefix?: string;
75
+
76
+ /**
77
+ * Component name used in class generation
78
+ */
79
+ componentName?: string;
80
+
81
+ /**
82
+ * Whether the entire segmented button is initially disabled
83
+ * @default false
84
+ */
85
+ disabled?: boolean;
86
+
87
+ /**
88
+ * Additional CSS class for the segmented button container
89
+ */
90
+ class?: string;
91
+
92
+ /**
93
+ * Whether to enable ripple effect
94
+ * @default true
95
+ */
96
+ ripple?: boolean;
97
+
98
+ /**
99
+ * Ripple effect configuration
100
+ */
101
+ rippleConfig?: {
102
+ /** Duration of the ripple animation in milliseconds */
103
+ duration?: number;
104
+ /** Timing function for the ripple animation */
105
+ timing?: string;
106
+ /** Opacity values for ripple start and end [start, end] */
107
+ opacity?: [string, string];
108
+ };
109
+ }
110
+
111
+ /**
112
+ * Interface for a segment within a segmented button
113
+ * @category Components
114
+ */
115
+ export interface Segment {
116
+ /** The segment's DOM element */
117
+ element: HTMLElement;
118
+
119
+ /** The segment's value */
120
+ value: string;
121
+
122
+ /**
123
+ * Gets whether the segment is selected
124
+ */
125
+ isSelected: () => boolean;
126
+
127
+ /**
128
+ * Sets the segment's selected state
129
+ * @param selected - Whether the segment should be selected
130
+ */
131
+ setSelected: (selected: boolean) => void;
132
+
133
+ /**
134
+ * Gets whether the segment is disabled
135
+ */
136
+ isDisabled: () => boolean;
137
+
138
+ /**
139
+ * Sets the segment's disabled state
140
+ * @param disabled - Whether the segment should be disabled
141
+ */
142
+ setDisabled: (disabled: boolean) => void;
143
+
144
+ /**
145
+ * Destroys the segment and cleans up resources
146
+ */
147
+ destroy: () => void;
148
+ }
149
+
150
+ /**
151
+ * Segmented Button component interface
152
+ * @category Components
153
+ */
154
+ export interface SegmentedButtonComponent {
155
+ /** The component's container DOM element */
156
+ element: HTMLElement;
157
+
158
+ /** Array of segment objects */
159
+ segments: Segment[];
160
+
161
+ /**
162
+ * Gets the selected segment(s)
163
+ * @returns An array of selected segments
164
+ */
165
+ getSelected: () => Segment[];
166
+
167
+ /**
168
+ * Gets the values of selected segment(s)
169
+ * @returns An array of selected segment values
170
+ */
171
+ getValue: () => string[];
172
+
173
+ /**
174
+ * Selects a segment by its value
175
+ * @param value - The value of the segment to select
176
+ * @returns The SegmentedButtonComponent for chaining
177
+ */
178
+ select: (value: string) => SegmentedButtonComponent;
179
+
180
+ /**
181
+ * Deselects a segment by its value
182
+ * @param value - The value of the segment to deselect
183
+ * @returns The SegmentedButtonComponent for chaining
184
+ */
185
+ deselect: (value: string) => SegmentedButtonComponent;
186
+
187
+ /**
188
+ * Enables the segmented button
189
+ * @returns The SegmentedButtonComponent for chaining
190
+ */
191
+ enable: () => SegmentedButtonComponent;
192
+
193
+ /**
194
+ * Disables the segmented button
195
+ * @returns The SegmentedButtonComponent for chaining
196
+ */
197
+ disable: () => SegmentedButtonComponent;
198
+
199
+ /**
200
+ * Adds an event listener to the segmented button
201
+ * @param event - Event name ('change', etc.)
202
+ * @param handler - Event handler function
203
+ * @returns The SegmentedButtonComponent for chaining
204
+ */
205
+ on: (event: string, handler: Function) => SegmentedButtonComponent;
206
+
207
+ /**
208
+ * Removes an event listener from the segmented button
209
+ * @param event - Event name
210
+ * @param handler - Event handler function
211
+ * @returns The SegmentedButtonComponent for chaining
212
+ */
213
+ off: (event: string, handler: Function) => SegmentedButtonComponent;
214
+
215
+ /**
216
+ * Destroys the component and cleans up resources
217
+ */
218
+ destroy: () => void;
219
+ }