@inglorious/ui 0.1.0 → 1.0.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 (283) hide show
  1. package/README.md +45 -0
  2. package/package.json +191 -16
  3. package/src/all.css +7 -0
  4. package/src/controls/button/button.stories.js +35 -15
  5. package/src/controls/button/index.js +1 -3
  6. package/src/controls/button/style.css +80 -37
  7. package/src/controls/button/template.js +23 -26
  8. package/src/controls/button-group/button-group.stories.js +19 -15
  9. package/src/controls/button-group/index.js +1 -2
  10. package/src/controls/button-group/style.css +0 -7
  11. package/src/controls/button-group/template.js +46 -56
  12. package/src/controls/checkbox/checkbox.stories.js +16 -13
  13. package/src/controls/checkbox/index.js +1 -2
  14. package/src/controls/checkbox/style.css +23 -2
  15. package/src/controls/checkbox/template.js +20 -18
  16. package/src/controls/combobox/combobox.stories.js +92 -0
  17. package/src/controls/{select → combobox}/handlers.js +8 -5
  18. package/src/controls/combobox/helpers.js +91 -0
  19. package/src/controls/combobox/index.js +43 -0
  20. package/src/controls/combobox/style.css +203 -0
  21. package/src/controls/combobox/template.js +340 -0
  22. package/src/controls/controls.css +12 -0
  23. package/src/controls/fab/fab.stories.js +11 -11
  24. package/src/controls/fab/index.js +1 -2
  25. package/src/controls/fab/template.js +21 -19
  26. package/src/controls/icon-button/icon-button.stories.js +8 -10
  27. package/src/controls/icon-button/index.js +1 -2
  28. package/src/controls/icon-button/template.js +13 -19
  29. package/src/controls/input/index.js +1 -2
  30. package/src/controls/input/input.stories.js +24 -23
  31. package/src/controls/input/style.css +9 -7
  32. package/src/controls/input/template.js +28 -31
  33. package/src/controls/radio-group/index.js +1 -2
  34. package/src/controls/radio-group/radio-group.stories.js +11 -8
  35. package/src/controls/radio-group/style.css +22 -1
  36. package/src/controls/radio-group/template.js +20 -15
  37. package/src/controls/rating/index.js +1 -2
  38. package/src/controls/rating/rating.stories.js +7 -10
  39. package/src/controls/rating/style.css +1 -2
  40. package/src/controls/rating/template.js +20 -17
  41. package/src/controls/select/helpers.js +2 -21
  42. package/src/controls/select/index.js +1 -13
  43. package/src/controls/select/select.stories.js +68 -64
  44. package/src/controls/select/style.css +66 -189
  45. package/src/controls/select/template.js +77 -406
  46. package/src/controls/slider/index.js +1 -2
  47. package/src/controls/slider/slider.stories.js +15 -12
  48. package/src/controls/slider/style.css +24 -3
  49. package/src/controls/slider/template.js +30 -23
  50. package/src/controls/switch/index.js +1 -2
  51. package/src/controls/switch/style.css +23 -2
  52. package/src/controls/switch/switch.stories.js +14 -11
  53. package/src/controls/switch/template.js +18 -16
  54. package/src/data-display/avatar/avatar.stories.js +106 -0
  55. package/src/data-display/avatar/index.js +3 -0
  56. package/src/data-display/avatar/style.css +64 -0
  57. package/src/data-display/avatar/template.js +81 -0
  58. package/src/data-display/badge/badge.stories.js +64 -0
  59. package/src/data-display/badge/index.js +3 -0
  60. package/src/data-display/badge/style.css +84 -0
  61. package/src/data-display/badge/template.js +46 -0
  62. package/src/data-display/chip/chip.stories.js +57 -0
  63. package/src/data-display/chip/index.js +3 -0
  64. package/src/data-display/chip/style.css +84 -0
  65. package/src/data-display/chip/template.js +32 -0
  66. package/src/data-display/data-display.css +11 -0
  67. package/src/data-display/data-grid/base.css +58 -0
  68. package/src/data-display/data-grid/data-grid.stories.js +158 -0
  69. package/src/data-display/data-grid/filters/helpers.js +8 -0
  70. package/src/data-display/data-grid/filters/index.js +21 -0
  71. package/src/data-display/data-grid/filters/input.js +24 -0
  72. package/src/data-display/data-grid/filters/range.js +48 -0
  73. package/src/data-display/data-grid/filters/select.js +17 -0
  74. package/src/data-display/data-grid/handlers.js +523 -0
  75. package/src/data-display/data-grid/helpers.js +248 -0
  76. package/src/data-display/data-grid/index.js +64 -0
  77. package/src/data-display/data-grid/style.css +14 -0
  78. package/src/data-display/data-grid/template.js +458 -0
  79. package/src/data-display/data-grid/theme.css +148 -0
  80. package/src/data-display/divider/divider.stories.js +48 -0
  81. package/src/data-display/divider/index.js +3 -0
  82. package/src/data-display/divider/style.css +18 -0
  83. package/src/data-display/divider/template.js +17 -0
  84. package/src/data-display/icon/icon-implementations.mdx +160 -0
  85. package/src/data-display/icon/icon-utf8.stories.js +156 -0
  86. package/src/data-display/icon/icon.stories.js +38 -0
  87. package/src/data-display/icon/index.js +3 -0
  88. package/src/data-display/icon/style.css +17 -0
  89. package/src/data-display/icon/template.js +19 -0
  90. package/src/data-display/list/handlers.js +25 -0
  91. package/src/data-display/list/index.js +4 -0
  92. package/src/data-display/list/list.stories.js +187 -0
  93. package/src/data-display/list/style.css +119 -0
  94. package/src/data-display/list/template.js +302 -0
  95. package/src/data-display/material-icon/index.js +3 -0
  96. package/src/data-display/material-icon/material-icon.stories.js +99 -0
  97. package/src/data-display/material-icon/style.css +27 -0
  98. package/src/data-display/material-icon/template.js +21 -0
  99. package/src/data-display/table/index.js +1 -0
  100. package/src/data-display/table/style.css +42 -0
  101. package/src/data-display/table/table.stories.js +40 -0
  102. package/src/data-display/table/template.js +114 -0
  103. package/src/data-display/tooltip/index.js +3 -0
  104. package/src/data-display/tooltip/style.css +57 -0
  105. package/src/data-display/tooltip/template.js +58 -0
  106. package/src/data-display/tooltip/tooltip.stories.js +44 -0
  107. package/src/data-display/typography/index.js +3 -0
  108. package/src/data-display/typography/style.css +49 -0
  109. package/src/data-display/typography/template.js +110 -0
  110. package/src/data-display/typography/typography.stories.js +48 -0
  111. package/src/data-display/virtual-list/handlers.js +68 -0
  112. package/src/data-display/virtual-list/index.js +4 -0
  113. package/src/data-display/virtual-list/template.js +101 -0
  114. package/src/examples/dashboard/app-drawer.js +255 -0
  115. package/src/examples/dashboard/app-header.js +149 -0
  116. package/src/examples/dashboard/dashboard.js +85 -0
  117. package/src/examples/dashboard/dashboard.stories.js +47 -0
  118. package/src/examples/dashboard/data.js +205 -0
  119. package/src/examples/dashboard/mode.js +27 -0
  120. package/src/examples/dashboard/primitive-content.js +1325 -0
  121. package/src/examples/dashboard/primitive-section.js +158 -0
  122. package/src/examples/dashboard/router.js +13 -0
  123. package/src/examples/dashboard/social-card.js +73 -0
  124. package/src/examples/dashboard/stat-card.js +84 -0
  125. package/src/examples/dashboard/style.css +339 -0
  126. package/src/examples/dashboard/theme-utils.js +95 -0
  127. package/src/examples/dashboard/theme.js +27 -0
  128. package/src/examples/dashboard/traffic-card.js +108 -0
  129. package/src/examples/dashboard/traffic-sales-card.js +267 -0
  130. package/src/feedback/alert/alert.stories.js +70 -0
  131. package/src/feedback/alert/index.js +3 -0
  132. package/src/feedback/alert/style.css +98 -0
  133. package/src/feedback/alert/template.js +74 -0
  134. package/src/feedback/backdrop/backdrop.stories.js +21 -0
  135. package/src/feedback/backdrop/index.js +3 -0
  136. package/src/feedback/backdrop/style.css +25 -0
  137. package/src/feedback/backdrop/template.js +31 -0
  138. package/src/feedback/dialog/dialog.stories.js +27 -0
  139. package/src/feedback/dialog/index.js +3 -0
  140. package/src/feedback/dialog/style.css +68 -0
  141. package/src/feedback/dialog/template.js +64 -0
  142. package/src/feedback/feedback.css +6 -0
  143. package/src/feedback/progress/index.js +3 -0
  144. package/src/feedback/progress/progress.stories.js +54 -0
  145. package/src/feedback/progress/style.css +95 -0
  146. package/src/feedback/progress/template.js +88 -0
  147. package/src/feedback/skeleton/index.js +3 -0
  148. package/src/feedback/skeleton/skeleton.stories.js +44 -0
  149. package/src/feedback/skeleton/style.css +41 -0
  150. package/src/feedback/skeleton/template.js +48 -0
  151. package/src/feedback/snackbar/index.js +3 -0
  152. package/src/feedback/snackbar/snackbar.stories.js +25 -0
  153. package/src/feedback/snackbar/style.css +64 -0
  154. package/src/feedback/snackbar/template.js +55 -0
  155. package/src/index.js +32 -1
  156. package/src/layout/container/container.stories.js +105 -0
  157. package/src/layout/container/index.js +3 -0
  158. package/src/layout/container/style.css +34 -0
  159. package/src/layout/container/template.js +119 -0
  160. package/src/layout/flex/flex.stories.js +28 -10
  161. package/src/layout/flex/index.js +1 -2
  162. package/src/layout/flex/style.css +20 -0
  163. package/src/layout/flex/template.js +40 -13
  164. package/src/layout/grid/grid.stories.js +46 -30
  165. package/src/layout/grid/index.js +1 -2
  166. package/src/layout/grid/style.css +20 -0
  167. package/src/layout/grid/template.js +100 -20
  168. package/src/layout/layout.css +3 -0
  169. package/src/navigation/bottom-navigation/bottom-navigation.stories.js +33 -0
  170. package/src/navigation/bottom-navigation/index.js +1 -0
  171. package/src/navigation/bottom-navigation/style.css +32 -0
  172. package/src/navigation/bottom-navigation/template.js +74 -0
  173. package/src/navigation/breadcrumbs/breadcrumbs.stories.js +33 -0
  174. package/src/navigation/breadcrumbs/index.js +1 -0
  175. package/src/navigation/breadcrumbs/style.css +27 -0
  176. package/src/navigation/breadcrumbs/template.js +79 -0
  177. package/src/navigation/drawer/drawer.stories.js +60 -0
  178. package/src/navigation/drawer/index.js +3 -0
  179. package/src/navigation/drawer/style.css +125 -0
  180. package/src/navigation/drawer/template.js +131 -0
  181. package/src/navigation/link/index.js +3 -0
  182. package/src/navigation/link/link.stories.js +53 -0
  183. package/src/navigation/link/style.css +40 -0
  184. package/src/navigation/link/template.js +53 -0
  185. package/src/navigation/menu/index.js +1 -0
  186. package/src/navigation/menu/menu.stories.js +36 -0
  187. package/src/navigation/menu/style.css +44 -0
  188. package/src/navigation/menu/template.js +81 -0
  189. package/src/navigation/navigation.css +9 -0
  190. package/src/navigation/pagination/index.js +1 -0
  191. package/src/navigation/pagination/pagination.stories.js +61 -0
  192. package/src/navigation/pagination/style.css +29 -0
  193. package/src/navigation/pagination/template.js +140 -0
  194. package/src/navigation/speed-dial/index.js +1 -0
  195. package/src/navigation/speed-dial/speed-dial.stories.js +40 -0
  196. package/src/navigation/speed-dial/style.css +38 -0
  197. package/src/navigation/speed-dial/template.js +68 -0
  198. package/src/navigation/stepper/index.js +1 -0
  199. package/src/navigation/stepper/stepper.stories.js +35 -0
  200. package/src/navigation/stepper/style.css +49 -0
  201. package/src/navigation/stepper/template.js +61 -0
  202. package/src/navigation/tabs/index.js +1 -0
  203. package/src/navigation/tabs/style.css +35 -0
  204. package/src/navigation/tabs/tabs.stories.js +40 -0
  205. package/src/navigation/tabs/template.js +79 -0
  206. package/src/overview.mdx +39 -0
  207. package/src/stories/notifyStory.js +22 -25
  208. package/src/styles/base.css +2 -0
  209. package/src/styles/reset.css +15 -0
  210. package/src/{themes → styles/themes}/bootstrap.css +2 -0
  211. package/src/{themes → styles/themes}/inglorious.css +9 -1
  212. package/src/{themes → styles/themes}/material.css +2 -0
  213. package/src/{tokens/index.css → styles/tokens.css} +9 -0
  214. package/src/surfaces/accordion/accordion.stories.js +60 -0
  215. package/src/surfaces/accordion/index.js +1 -0
  216. package/src/surfaces/accordion/style.css +64 -0
  217. package/src/surfaces/accordion/template.js +85 -0
  218. package/src/surfaces/app-bar/app-bar.stories.js +109 -0
  219. package/src/surfaces/app-bar/index.js +3 -0
  220. package/src/surfaces/app-bar/style.css +109 -0
  221. package/src/surfaces/app-bar/template.js +78 -0
  222. package/src/surfaces/card/card.stories.js +108 -0
  223. package/src/surfaces/card/index.js +1 -0
  224. package/src/surfaces/card/style.css +107 -0
  225. package/src/surfaces/card/template.js +163 -0
  226. package/src/surfaces/paper/index.js +3 -0
  227. package/src/surfaces/paper/paper.stories.js +97 -0
  228. package/src/surfaces/paper/style.css +73 -0
  229. package/src/surfaces/paper/template.js +76 -0
  230. package/src/surfaces/surfaces.css +4 -0
  231. package/types/controls/button-group.d.ts +8 -7
  232. package/types/controls/button.d.ts +10 -7
  233. package/types/controls/checkbox.d.ts +8 -6
  234. package/types/controls/combobox.d.ts +66 -0
  235. package/types/controls/fab.d.ts +6 -5
  236. package/types/controls/icon-button.d.ts +8 -7
  237. package/types/controls/input.d.ts +18 -11
  238. package/types/controls/radio-group.d.ts +7 -5
  239. package/types/controls/rating.d.ts +6 -5
  240. package/types/controls/select.d.ts +11 -34
  241. package/types/controls/slider.d.ts +8 -6
  242. package/types/controls/switch.d.ts +7 -5
  243. package/types/data-display/avatar.d.ts +30 -0
  244. package/types/data-display/badge.d.ts +20 -0
  245. package/types/data-display/chip.d.ts +25 -0
  246. package/types/data-display/data-grid.d.ts +151 -0
  247. package/types/data-display/divider.d.ts +14 -0
  248. package/types/data-display/icon.d.ts +16 -0
  249. package/types/data-display/list.d.ts +66 -0
  250. package/types/data-display/material-icon.d.ts +15 -0
  251. package/types/data-display/table.d.ts +45 -0
  252. package/types/data-display/tooltip.d.ts +20 -0
  253. package/types/data-display/typography.d.ts +28 -0
  254. package/types/data-display/virtual-list.d.ts +94 -0
  255. package/types/feedback/alert.d.ts +22 -0
  256. package/types/feedback/backdrop.d.ts +17 -0
  257. package/types/feedback/dialog.d.ts +21 -0
  258. package/types/feedback/progress.d.ts +18 -0
  259. package/types/feedback/skeleton.d.ts +18 -0
  260. package/types/feedback/snackbar.d.ts +19 -0
  261. package/types/index.d.ts +92 -14
  262. package/types/layout/container.d.ts +28 -0
  263. package/types/layout/flex.d.ts +16 -5
  264. package/types/layout/grid.d.ts +15 -4
  265. package/types/navigation/bottom-navigation.d.ts +33 -0
  266. package/types/navigation/breadcrumbs.d.ts +29 -0
  267. package/types/navigation/drawer.d.ts +23 -0
  268. package/types/navigation/link.d.ts +22 -0
  269. package/types/navigation/menu.d.ts +32 -0
  270. package/types/navigation/pagination.d.ts +50 -0
  271. package/types/navigation/speed-dial.d.ts +35 -0
  272. package/types/navigation/stepper.d.ts +26 -0
  273. package/types/navigation/tabs.d.ts +31 -0
  274. package/types/surfaces/accordion.d.ts +32 -0
  275. package/types/surfaces/app-bar.d.ts +25 -0
  276. package/types/surfaces/card.d.ts +39 -0
  277. package/types/surfaces/paper.d.ts +28 -0
  278. package/src/shared/withRenderValidation.js +0 -19
  279. package/src/widgets/card/card.stories.js +0 -135
  280. package/src/widgets/card/index.js +0 -4
  281. package/src/widgets/card/style.css +0 -53
  282. package/src/widgets/card/template.js +0 -97
  283. package/types/widgets/card.d.ts +0 -21
package/README.md ADDED
@@ -0,0 +1,45 @@
1
+ # @inglorious/ui
2
+
3
+ A design system for Inglorious Web with render-function components and customizable themes.
4
+
5
+ ## Getting started
6
+
7
+ Import the base stylesheet (tokens + reset), pick a theme, then pull in the component styles you need:
8
+
9
+ ```js
10
+ import "@inglorious/ui/base.css"
11
+ import "@inglorious/ui/themes/bootstrap.css"
12
+ import "@inglorious/ui/data-grid.css"
13
+ ```
14
+
15
+ Apply the theme classes to your root element (or any container that wraps your UI), otherwise the theme will not take effect:
16
+
17
+ ```html
18
+ <body class="iw-theme-bootstrap iw-theme-light">
19
+ <!-- Your app -->
20
+ </body>
21
+ ```
22
+
23
+ If you want everything, you can import the full bundle:
24
+
25
+ ```js
26
+ import "@inglorious/ui/all.css"
27
+ ```
28
+
29
+ ## Styles structure
30
+
31
+ The core styles live under `src/styles/`:
32
+
33
+ - `styles/reset.css`: sensible resets (box-sizing, body margin, etc.)
34
+ - `styles/tokens.css`: design tokens
35
+ - `styles/base.css`: reset + tokens (the recommended public entry)
36
+ - `styles/themes/`: built-in themes
37
+
38
+ The public CSS exports are:
39
+
40
+ - `@inglorious/ui/base.css`
41
+ - `@inglorious/ui/tokens.css`
42
+ - `@inglorious/ui/themes/inglorious.css`
43
+ - `@inglorious/ui/themes/material.css`
44
+ - `@inglorious/ui/themes/bootstrap.css`
45
+ - `@inglorious/ui/all.css`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inglorious/ui",
3
- "version": "0.1.0",
3
+ "version": "1.0.0",
4
4
  "description": "A design system for Inglorious Web with render-function components and customizable themes",
5
5
  "author": "IceOnFire <antony.mistretta@gmail.com> (https://ingloriouscoderz.it)",
6
6
  "license": "MIT",
@@ -26,10 +26,18 @@
26
26
  "types": "./types/index.d.ts",
27
27
  "import": "./src/index.js"
28
28
  },
29
- "./tokens": "./src/tokens/index.css",
30
- "./themes/inglorious": "./src/themes/inglorious.css",
31
- "./themes/material": "./src/themes/material.css",
32
- "./themes/bootstrap": "./src/themes/bootstrap.css",
29
+ "./all.css": "./src/all.css",
30
+ "./base.css": "./src/styles/base.css",
31
+ "./controls.css": "./src/controls/controls.css",
32
+ "./data-display.css": "./src/data-display/data-display.css",
33
+ "./feedback.css": "./src/feedback/feedback.css",
34
+ "./layout.css": "./src/layout/layout.css",
35
+ "./navigation.css": "./src/navigation/navigation.css",
36
+ "./surfaces.css": "./src/surfaces/surfaces.css",
37
+ "./tokens.css": "./src/styles/tokens.css",
38
+ "./themes/inglorious.css": "./src/styles/themes/inglorious.css",
39
+ "./themes/material.css": "./src/styles/themes/material.css",
40
+ "./themes/bootstrap.css": "./src/styles/themes/bootstrap.css",
33
41
  "./button": {
34
42
  "types": "./types/controls/button.d.ts",
35
43
  "import": "./src/controls/button/index.js"
@@ -45,6 +53,16 @@
45
53
  "import": "./src/controls/checkbox/index.js"
46
54
  },
47
55
  "./checkbox.css": "./src/controls/checkbox/style.css",
56
+ "./combobox": {
57
+ "types": "./types/controls/combobox.d.ts",
58
+ "import": "./src/controls/combobox/index.js"
59
+ },
60
+ "./combobox.css": "./src/controls/combobox/style.css",
61
+ "./data-grid": {
62
+ "types": "./types/data-display/data-grid.d.ts",
63
+ "import": "./src/data-display/data-grid/index.js"
64
+ },
65
+ "./data-grid.css": "./src/data-display/data-grid/style.css",
48
66
  "./fab": {
49
67
  "types": "./types/controls/fab.d.ts",
50
68
  "import": "./src/controls/fab/index.js"
@@ -86,10 +104,10 @@
86
104
  },
87
105
  "./switch.css": "./src/controls/switch/style.css",
88
106
  "./card": {
89
- "types": "./types/widgets/card.d.ts",
90
- "import": "./src/widgets/card/index.js"
107
+ "types": "./types/surfaces/card.d.ts",
108
+ "import": "./src/surfaces/card/index.js"
91
109
  },
92
- "./card.css": "./src/widgets/card/style.css",
110
+ "./card.css": "./src/surfaces/card/style.css",
93
111
  "./flex": {
94
112
  "types": "./types/layout/flex.d.ts",
95
113
  "import": "./src/layout/flex/index.js"
@@ -99,7 +117,156 @@
99
117
  "types": "./types/layout/grid.d.ts",
100
118
  "import": "./src/layout/grid/index.js"
101
119
  },
102
- "./grid.css": "./src/layout/grid/style.css"
120
+ "./grid.css": "./src/layout/grid/style.css",
121
+ "./avatar": {
122
+ "types": "./types/data-display/avatar.d.ts",
123
+ "import": "./src/data-display/avatar/index.js"
124
+ },
125
+ "./avatar.css": "./src/data-display/avatar/style.css",
126
+ "./badge": {
127
+ "types": "./types/data-display/badge.d.ts",
128
+ "import": "./src/data-display/badge/index.js"
129
+ },
130
+ "./badge.css": "./src/data-display/badge/style.css",
131
+ "./chip": {
132
+ "types": "./types/data-display/chip.d.ts",
133
+ "import": "./src/data-display/chip/index.js"
134
+ },
135
+ "./chip.css": "./src/data-display/chip/style.css",
136
+ "./divider": {
137
+ "types": "./types/data-display/divider.d.ts",
138
+ "import": "./src/data-display/divider/index.js"
139
+ },
140
+ "./divider.css": "./src/data-display/divider/style.css",
141
+ "./icon": {
142
+ "types": "./types/data-display/icon.d.ts",
143
+ "import": "./src/data-display/icon/index.js"
144
+ },
145
+ "./icon.css": "./src/data-display/icon/style.css",
146
+ "./list": {
147
+ "types": "./types/data-display/list.d.ts",
148
+ "import": "./src/data-display/list/index.js"
149
+ },
150
+ "./list.css": "./src/data-display/list/style.css",
151
+ "./material-icon": {
152
+ "types": "./types/data-display/material-icon.d.ts",
153
+ "import": "./src/data-display/material-icon/index.js"
154
+ },
155
+ "./material-icon.css": "./src/data-display/material-icon/style.css",
156
+ "./table": {
157
+ "types": "./types/data-display/table.d.ts",
158
+ "import": "./src/data-display/table/index.js"
159
+ },
160
+ "./table.css": "./src/data-display/table/style.css",
161
+ "./tooltip": {
162
+ "types": "./types/data-display/tooltip.d.ts",
163
+ "import": "./src/data-display/tooltip/index.js"
164
+ },
165
+ "./tooltip.css": "./src/data-display/tooltip/style.css",
166
+ "./typography": {
167
+ "types": "./types/data-display/typography.d.ts",
168
+ "import": "./src/data-display/typography/index.js"
169
+ },
170
+ "./typography.css": "./src/data-display/typography/style.css",
171
+ "./alert": {
172
+ "types": "./types/feedback/alert.d.ts",
173
+ "import": "./src/feedback/alert/index.js"
174
+ },
175
+ "./virtual-list": {
176
+ "types": "./types/data-display/virtual-list.d.ts",
177
+ "import": "./src/data-display/virtual-list/index.js"
178
+ },
179
+ "./alert.css": "./src/feedback/alert/style.css",
180
+ "./backdrop": {
181
+ "types": "./types/feedback/backdrop.d.ts",
182
+ "import": "./src/feedback/backdrop/index.js"
183
+ },
184
+ "./backdrop.css": "./src/feedback/backdrop/style.css",
185
+ "./dialog": {
186
+ "types": "./types/feedback/dialog.d.ts",
187
+ "import": "./src/feedback/dialog/index.js"
188
+ },
189
+ "./dialog.css": "./src/feedback/dialog/style.css",
190
+ "./progress": {
191
+ "types": "./types/feedback/progress.d.ts",
192
+ "import": "./src/feedback/progress/index.js"
193
+ },
194
+ "./progress.css": "./src/feedback/progress/style.css",
195
+ "./skeleton": {
196
+ "types": "./types/feedback/skeleton.d.ts",
197
+ "import": "./src/feedback/skeleton/index.js"
198
+ },
199
+ "./skeleton.css": "./src/feedback/skeleton/style.css",
200
+ "./snackbar": {
201
+ "types": "./types/feedback/snackbar.d.ts",
202
+ "import": "./src/feedback/snackbar/index.js"
203
+ },
204
+ "./snackbar.css": "./src/feedback/snackbar/style.css",
205
+ "./accordion": {
206
+ "types": "./types/surfaces/accordion.d.ts",
207
+ "import": "./src/surfaces/accordion/index.js"
208
+ },
209
+ "./accordion.css": "./src/surfaces/accordion/style.css",
210
+ "./app-bar": {
211
+ "types": "./types/surfaces/app-bar.d.ts",
212
+ "import": "./src/surfaces/app-bar/index.js"
213
+ },
214
+ "./app-bar.css": "./src/surfaces/app-bar/style.css",
215
+ "./paper": {
216
+ "types": "./types/surfaces/paper.d.ts",
217
+ "import": "./src/surfaces/paper/index.js"
218
+ },
219
+ "./paper.css": "./src/surfaces/paper/style.css",
220
+ "./container": {
221
+ "types": "./types/layout/container.d.ts",
222
+ "import": "./src/layout/container/index.js"
223
+ },
224
+ "./container.css": "./src/layout/container/style.css",
225
+ "./bottom-navigation": {
226
+ "types": "./types/navigation/bottom-navigation.d.ts",
227
+ "import": "./src/navigation/bottom-navigation/index.js"
228
+ },
229
+ "./bottom-navigation.css": "./src/navigation/bottom-navigation/style.css",
230
+ "./breadcrumbs": {
231
+ "types": "./types/navigation/breadcrumbs.d.ts",
232
+ "import": "./src/navigation/breadcrumbs/index.js"
233
+ },
234
+ "./breadcrumbs.css": "./src/navigation/breadcrumbs/style.css",
235
+ "./drawer": {
236
+ "types": "./types/navigation/drawer.d.ts",
237
+ "import": "./src/navigation/drawer/index.js"
238
+ },
239
+ "./drawer.css": "./src/navigation/drawer/style.css",
240
+ "./link": {
241
+ "types": "./types/navigation/link.d.ts",
242
+ "import": "./src/navigation/link/index.js"
243
+ },
244
+ "./link.css": "./src/navigation/link/style.css",
245
+ "./menu": {
246
+ "types": "./types/navigation/menu.d.ts",
247
+ "import": "./src/navigation/menu/index.js"
248
+ },
249
+ "./menu.css": "./src/navigation/menu/style.css",
250
+ "./pagination": {
251
+ "types": "./types/navigation/pagination.d.ts",
252
+ "import": "./src/navigation/pagination/index.js"
253
+ },
254
+ "./pagination.css": "./src/navigation/pagination/style.css",
255
+ "./speed-dial": {
256
+ "types": "./types/navigation/speed-dial.d.ts",
257
+ "import": "./src/navigation/speed-dial/index.js"
258
+ },
259
+ "./speed-dial.css": "./src/navigation/speed-dial/style.css",
260
+ "./stepper": {
261
+ "types": "./types/navigation/stepper.d.ts",
262
+ "import": "./src/navigation/stepper/index.js"
263
+ },
264
+ "./stepper.css": "./src/navigation/stepper/style.css",
265
+ "./tabs": {
266
+ "types": "./types/navigation/tabs.d.ts",
267
+ "import": "./src/navigation/tabs/index.js"
268
+ },
269
+ "./tabs.css": "./src/navigation/tabs/style.css"
103
270
  },
104
271
  "files": [
105
272
  "src",
@@ -113,25 +280,33 @@
113
280
  "**/*.css"
114
281
  ],
115
282
  "peerDependencies": {
116
- "@inglorious/web": "4.4.0"
283
+ "@inglorious/charts": "4.0.0",
284
+ "@inglorious/utils": "3.7.3",
285
+ "@inglorious/web": "4.5.0"
117
286
  },
118
287
  "devDependencies": {
119
- "@storybook/addon-docs": "^10.2.10",
120
- "@storybook/web-components-vite": "^10.2.10",
288
+ "@fontsource/material-symbols-outlined": "^5.2.36",
289
+ "@fortawesome/fontawesome-free": "^7.2.0",
290
+ "@storybook/addon-docs": "^10.2.19",
291
+ "@storybook/web-components-vite": "^10.2.19",
121
292
  "happy-dom": "^15.11.0",
122
293
  "jsdom": "^25.0.0",
294
+ "lucide": "^0.575.0",
123
295
  "prettier": "^3.6.2",
124
- "storybook": "^10.2.10",
296
+ "storybook": "^10.2.19",
125
297
  "vite": "^7.3.1",
126
298
  "vitest": "^4.0.15",
127
- "@inglorious/eslint-config": "1.1.2",
128
- "@inglorious/web": "4.4.0",
129
- "@inglorious/store": "9.6.0"
299
+ "@inglorious/web": "4.5.0",
300
+ "@inglorious/store": "9.6.0",
301
+ "@inglorious/eslint-config": "1.1.2"
130
302
  },
131
303
  "engines": {
132
304
  "node": ">= 22"
133
305
  },
134
306
  "scripts": {
307
+ "dev": "vite --config app/vite.config.js",
308
+ "build": "vite build --config app/vite.config.js",
309
+ "preview": "vite preview --config app/vite.config.js",
135
310
  "format": "prettier --write .",
136
311
  "lint": "eslint .",
137
312
  "test:watch": "vitest",
package/src/all.css ADDED
@@ -0,0 +1,7 @@
1
+ @import "./styles/base.css";
2
+ @import "./controls/controls.css";
3
+ @import "./data-display/data-display.css";
4
+ @import "./feedback/feedback.css";
5
+ @import "./layout/layout.css";
6
+ @import "./navigation/navigation.css";
7
+ @import "./surfaces/surfaces.css";
@@ -1,17 +1,13 @@
1
1
  import { html } from "@inglorious/web"
2
2
 
3
- import {
4
- makeStoryRender,
5
- notifyActionArgType,
6
- } from "../../stories/notifyStory.js"
3
+ import { createRender } from "../../stories/notifyStory.js"
7
4
  import { button } from "."
8
5
 
9
6
  export default {
10
7
  title: "Controls/Button",
11
8
  tags: ["autodocs"],
12
- render: makeStoryRender(button, "story-button"),
9
+ render: createRender(button),
13
10
  argTypes: {
14
- ...notifyActionArgType,
15
11
  children: {
16
12
  control: "text",
17
13
  description: "Content displayed inside the button.",
@@ -23,7 +19,15 @@ export default {
23
19
  },
24
20
  color: {
25
21
  control: "select",
26
- options: ["primary", "secondary", "success", "warning", "error", "info"],
22
+ options: [
23
+ "default",
24
+ "primary",
25
+ "secondary",
26
+ "success",
27
+ "warning",
28
+ "error",
29
+ "info",
30
+ ],
27
31
  description: "Semantic color intent.",
28
32
  },
29
33
  size: {
@@ -36,11 +40,15 @@ export default {
36
40
  options: ["rectangle", "pill", "round", "square"],
37
41
  description: "Button shape profile.",
38
42
  },
39
- disabled: {
43
+ isDisabled: {
40
44
  control: "boolean",
41
45
  description: "Disables interaction and click notifications.",
42
46
  },
43
- fullWidth: {
47
+ isPressed: {
48
+ control: "boolean",
49
+ description: "Keeps the button in an active state.",
50
+ },
51
+ isFullWidth: {
44
52
  control: "boolean",
45
53
  description: "Expands button width to 100% of its container.",
46
54
  },
@@ -49,6 +57,7 @@ export default {
49
57
  options: ["button", "submit", "reset", "menu"],
50
58
  description: "Native HTML button type attribute.",
51
59
  },
60
+ onClick: { action: "onClick" },
52
61
  },
53
62
  parameters: {
54
63
  docs: {
@@ -62,16 +71,15 @@ export default {
62
71
  },
63
72
  },
64
73
  }
74
+
65
75
  export const Default = {}
66
76
  Default.args = {
67
77
  children: "Button",
68
78
  variant: "default",
69
- color: "primary",
70
79
  size: "md",
71
80
  shape: "rectangle",
72
- disabled: false,
73
- fullWidth: false,
74
- type: "button",
81
+ isDisabled: false,
82
+ isFullWidth: false,
75
83
  }
76
84
 
77
85
  export const Outline = {}
@@ -98,6 +106,12 @@ Large.args = {
98
106
  size: "lg",
99
107
  }
100
108
 
109
+ export const Primary = {}
110
+ Primary.args = {
111
+ ...Default.args,
112
+ color: "primary",
113
+ }
114
+
101
115
  export const Secondary = {}
102
116
  Secondary.args = {
103
117
  ...Default.args,
@@ -113,14 +127,20 @@ Success.args = {
113
127
  export const Disabled = {}
114
128
  Disabled.args = {
115
129
  ...Default.args,
116
- disabled: true,
130
+ isDisabled: true,
131
+ }
132
+
133
+ export const Pressed = {}
134
+ Pressed.args = {
135
+ ...Default.args,
136
+ isPressed: true,
117
137
  }
118
138
 
119
139
  export const FullWidth = {}
120
140
  FullWidth.args = {
121
141
  ...Default.args,
122
142
  children: "Full Width Button",
123
- fullWidth: true,
143
+ isFullWidth: true,
124
144
  }
125
145
 
126
146
  export const Round = {}
@@ -1,5 +1,3 @@
1
- import { withRenderValidation } from "../../shared/withRenderValidation.js"
2
1
  import * as renderers from "./template.js"
3
2
 
4
- export const buttonPrimitive = { ...renderers }
5
- export const button = [buttonPrimitive, withRenderValidation]
3
+ export const button = { ...renderers }
@@ -6,7 +6,7 @@
6
6
  padding: var(--iw-space-2) var(--iw-space-4);
7
7
  font-family: var(--iw-font-family-sans);
8
8
  font-size: var(--iw-font-size-base);
9
- font-weight: var(--iw-font-weight-medium);
9
+ font-weight: var(--iw-font-weight-normal);
10
10
  line-height: var(--iw-line-height-normal);
11
11
  text-decoration: none;
12
12
  white-space: nowrap;
@@ -18,22 +18,6 @@
18
18
  box-shadow: var(--iw-button-shadow);
19
19
  transition: all var(--iw-transition-fast);
20
20
 
21
- &:hover:not(:disabled) {
22
- background-color: var(--iw-button-bg-hover);
23
- box-shadow: var(--iw-button-shadow-hover);
24
- }
25
-
26
- &:active:not(:disabled) {
27
- background-color: var(--iw-button-bg-active);
28
- box-shadow: var(--iw-button-shadow-active);
29
- }
30
-
31
- &:disabled,
32
- &.iw-button-disabled {
33
- opacity: 0.5;
34
- cursor: not-allowed;
35
- }
36
-
37
21
  .iw-button-icon {
38
22
  display: inline-flex;
39
23
  align-items: center;
@@ -43,64 +27,122 @@
43
27
  }
44
28
 
45
29
  &.iw-button-outline {
46
- background-color: var(--iw-button-outline-bg);
47
- color: var(--iw-button-outline-text);
48
- border-color: var(--iw-button-outline-border);
30
+ background-color: transparent;
31
+ color: var(--iw-button-bg);
32
+ border-color: var(--iw-button-border);
49
33
  box-shadow: none;
50
34
 
51
35
  &:hover:not(:disabled) {
52
- background-color: var(--iw-button-outline-bg-hover);
53
- color: var(--iw-button-outline-text-hover);
36
+ background-color: color-mix(
37
+ in srgb,
38
+ var(--iw-button-color) 10%,
39
+ transparent
40
+ );
41
+ color: var(--iw-button-bg);
54
42
  box-shadow: none;
55
43
  }
56
44
  }
57
45
 
58
46
  &.iw-button-ghost {
59
- background-color: var(--iw-button-ghost-bg);
60
- color: var(--iw-button-ghost-text);
61
- border-color: var(--iw-button-ghost-border);
47
+ background-color: transparent;
48
+ color: var(--iw-button-bg);
49
+ border-color: transparent;
62
50
  box-shadow: none;
63
51
 
64
52
  &:hover:not(:disabled) {
65
- background-color: var(--iw-button-ghost-bg-hover);
53
+ background-color: color-mix(
54
+ in srgb,
55
+ var(--iw-button-color) 10%,
56
+ transparent
57
+ );
66
58
  box-shadow: none;
67
59
  }
68
60
  }
69
61
 
62
+ &.iw-button-default {
63
+ --iw-button-color: var(--iw-color-text);
64
+ --iw-button-bg: var(--iw-color-surface);
65
+ --iw-button-bg-hover: var(--iw-color-surface-hover);
66
+ --iw-button-bg-active: var(--iw-color-surface-active);
67
+ --iw-button-border: var(--iw-color-border);
68
+ --iw-button-text: var(--iw-color-text);
69
+
70
+ &.iw-button-outline,
71
+ &.iw-button-ghost {
72
+ color: var(--iw-button-color);
73
+ }
74
+ }
75
+
76
+ &.iw-button-primary {
77
+ --iw-button-color: var(--iw-color-primary-text);
78
+ --iw-button-bg: var(--iw-color-primary);
79
+ --iw-button-bg-hover: var(--iw-color-primary-hover);
80
+ --iw-button-bg-active: var(--iw-color-primary-active);
81
+ --iw-button-border: var(--iw-color-primary);
82
+ --iw-button-text: var(--iw-color-primary-text);
83
+ }
84
+
70
85
  &.iw-button-secondary {
71
- --iw-button-bg: var(--iw-color-gray-600);
86
+ --iw-button-color: var(--iw-color-gray-400);
87
+ --iw-button-bg: var(--iw-color-gray-400);
72
88
  --iw-button-bg-hover: var(--iw-color-gray-700);
73
- --iw-button-bg-active: var(--iw-color-gray-800);
74
- --iw-button-border: var(--iw-color-gray-600);
89
+ --iw-button-bg-active: var(--iw-color-gray-400);
90
+ --iw-button-border: var(--iw-color-gray-400);
91
+ --iw-button-text: var(--iw-color-text);
75
92
  }
76
93
 
77
94
  &.iw-button-success {
95
+ --iw-button-color: var(--iw-color-success);
78
96
  --iw-button-bg: var(--iw-color-success);
79
97
  --iw-button-bg-hover: var(--iw-color-success-dark);
80
98
  --iw-button-bg-active: #064e3b;
81
99
  --iw-button-border: var(--iw-color-success);
100
+ --iw-button-text: var(--iw-color-text);
82
101
  }
83
102
 
84
103
  &.iw-button-warning {
104
+ --iw-button-color: var(--iw-color-warning);
85
105
  --iw-button-bg: var(--iw-color-warning);
86
106
  --iw-button-bg-hover: var(--iw-color-warning-dark);
87
107
  --iw-button-bg-active: #78350f;
88
108
  --iw-button-border: var(--iw-color-warning);
89
- --iw-button-text: var(--iw-color-black);
109
+ --iw-button-text: var(--iw-color-text);
90
110
  }
91
111
 
92
112
  &.iw-button-error {
113
+ --iw-button-color: var(--iw-color-error);
93
114
  --iw-button-bg: var(--iw-color-error);
94
115
  --iw-button-bg-hover: var(--iw-color-error-dark);
95
116
  --iw-button-bg-active: #7f1d1d;
96
117
  --iw-button-border: var(--iw-color-error);
118
+ --iw-button-text: var(--iw-color-text);
97
119
  }
98
120
 
99
121
  &.iw-button-info {
122
+ --iw-button-color: var(--iw-color-info);
100
123
  --iw-button-bg: var(--iw-color-info);
101
124
  --iw-button-bg-hover: var(--iw-color-info-dark);
102
125
  --iw-button-bg-active: #1e3a8a;
103
126
  --iw-button-border: var(--iw-color-info);
127
+ --iw-button-text: var(--iw-color-text);
128
+ }
129
+
130
+ &:hover:not(:disabled) {
131
+ background-color: var(--iw-button-bg-hover);
132
+ box-shadow: var(--iw-button-shadow-hover);
133
+ }
134
+
135
+ &:active:not(:disabled),
136
+ &.iw-button-pressed {
137
+ background-color: var(--iw-button-bg-active);
138
+ color: var(--iw-button-text);
139
+ /* box-shadow: var(--iw-button-shadow-active); */
140
+ }
141
+
142
+ &:disabled,
143
+ &.iw-button-disabled {
144
+ opacity: 0.5;
145
+ cursor: not-allowed;
104
146
  }
105
147
 
106
148
  &.iw-button-sm {
@@ -121,13 +163,6 @@
121
163
  border-radius: 999px;
122
164
  }
123
165
 
124
- &.iw-button-shape-round,
125
- &.iw-button-shape-square {
126
- width: 2.5rem;
127
- aspect-ratio: 1 / 1;
128
- padding: 0;
129
- }
130
-
131
166
  &.iw-button-shape-round {
132
167
  border-radius: 999px;
133
168
  }
@@ -139,10 +174,18 @@
139
174
  &.iw-button-sm.iw-button-shape-round,
140
175
  &.iw-button-sm.iw-button-shape-square {
141
176
  width: 2rem;
177
+ height: 2rem;
178
+ }
179
+
180
+ &.iw-button-md.iw-button-shape-round,
181
+ &.iw-button-md.iw-button-shape-square {
182
+ width: 2.5rem;
183
+ height: 2.5rem;
142
184
  }
143
185
 
144
186
  &.iw-button-lg.iw-button-shape-round,
145
187
  &.iw-button-lg.iw-button-shape-square {
146
188
  width: 3rem;
189
+ height: 3rem;
147
190
  }
148
191
  }