@redvars/peacock 3.1.0 → 3.1.2

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 (187) hide show
  1. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/avatar/avatar.css.js +3 -3
  2. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/avatar/avatar.css.js.map +1 -1
  3. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/avatar/avatar.d.ts +16 -3
  4. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/avatar/avatar.js +16 -3
  5. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/avatar/avatar.js.map +1 -1
  6. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/avatar/p-avatar.d.ts +3 -0
  7. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/avatar/p-avatar.js +10 -0
  8. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/avatar/p-avatar.js.map +1 -0
  9. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/badge/badge.css.d.ts +1 -0
  10. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/badge/badge.css.js +34 -0
  11. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/badge/badge.css.js.map +1 -0
  12. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/badge/badge.d.ts +23 -0
  13. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/badge/badge.js +54 -0
  14. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/badge/badge.js.map +1 -0
  15. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/badge/index.d.ts +1 -0
  16. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/badge/index.js +2 -0
  17. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/badge/index.js.map +1 -0
  18. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/badge/p-badge.d.ts +3 -0
  19. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/badge/p-badge.js +10 -0
  20. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/badge/p-badge.js.map +1 -0
  21. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/clock/clock.css.d.ts +1 -0
  22. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/clock/clock.css.js +12 -0
  23. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/clock/clock.css.js.map +1 -0
  24. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/clock/clock.d.ts +27 -0
  25. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/clock/clock.js +58 -0
  26. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/clock/clock.js.map +1 -0
  27. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/clock/index.d.ts +1 -0
  28. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/clock/index.js +2 -0
  29. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/clock/index.js.map +1 -0
  30. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/divider/divider.css.d.ts +1 -0
  31. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/divider/divider.css.js +58 -0
  32. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/divider/divider.css.js.map +1 -0
  33. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/divider/divider.d.ts +28 -0
  34. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/divider/divider.js +68 -0
  35. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/divider/divider.js.map +1 -0
  36. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/divider/index.d.ts +1 -0
  37. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/divider/index.js +2 -0
  38. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/divider/index.js.map +1 -0
  39. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/icon/icon.d.ts +15 -1
  40. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/icon/icon.js +10 -1
  41. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/icon/icon.js.map +1 -1
  42. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/icon/p-icon.d.ts +1 -1
  43. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/icon/p-icon.js +4 -4
  44. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/icon/p-icon.js.map +1 -1
  45. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/index.d.ts +5 -2
  46. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/index.js +5 -2
  47. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/index.js.map +1 -1
  48. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/link/index.d.ts +1 -0
  49. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/link/index.js +2 -0
  50. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/link/index.js.map +1 -0
  51. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/link/link.css.d.ts +2 -0
  52. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/link/link.css.js +36 -0
  53. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/link/link.css.js.map +1 -0
  54. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/link/link.d.ts +12 -0
  55. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/link/link.js +18 -0
  56. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/link/link.js.map +1 -0
  57. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/peacock-loader.js +41 -2
  58. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/peacock-loader.js.map +1 -1
  59. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/styleMixins.css.d.ts +9 -0
  60. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/styleMixins.css.js +46 -0
  61. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/styleMixins.css.js.map +1 -0
  62. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/text/text.css.d.ts +2 -0
  63. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/text/text.css.js +70 -0
  64. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/text/text.css.js.map +1 -0
  65. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/utils.d.ts +1 -1
  66. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/utils.js +32 -7
  67. package/.rollup.cache/E/git/redvars/peacock/components/dist/src/utils.js.map +1 -1
  68. package/.rollup.cache/E/git/redvars/peacock/components/dist/tsconfig.tsbuildinfo +1 -1
  69. package/bin/typedoc-gen.mjs +64 -0
  70. package/custom-elements-manifest.config.mjs +8 -21
  71. package/demo/index.html +21 -9
  72. package/demo/int.html +2 -0
  73. package/dist/assets/styles/tokens.css +8 -1
  74. package/dist/{component/avatar.js → avatar.js} +23 -13
  75. package/dist/avatar.js.map +1 -0
  76. package/dist/badge.js +89 -0
  77. package/dist/badge.js.map +1 -0
  78. package/dist/class-map-DpvLRi0h.js +11 -0
  79. package/dist/class-map-DpvLRi0h.js.map +1 -0
  80. package/dist/clock.js +70 -0
  81. package/dist/clock.js.map +1 -0
  82. package/dist/custom-elements-jsdocs.json +656 -0
  83. package/dist/directive-BKuZRRPO.js +9 -0
  84. package/dist/directive-BKuZRRPO.js.map +1 -0
  85. package/dist/divider.js +123 -0
  86. package/dist/divider.js.map +1 -0
  87. package/dist/{component/Icon.js → icon.js} +15 -9
  88. package/dist/icon.js.map +1 -0
  89. package/dist/index.js +11 -88
  90. package/dist/index.js.map +1 -1
  91. package/dist/peacock-loader.js +141 -3
  92. package/dist/peacock-loader.js.map +1 -1
  93. package/dist/property-D4Kn9TsY.js +63 -0
  94. package/dist/property-D4Kn9TsY.js.map +1 -0
  95. package/dist/src/avatar/avatar.d.ts +16 -3
  96. package/dist/src/avatar/p-avatar.d.ts +3 -0
  97. package/dist/src/badge/badge.css.d.ts +1 -0
  98. package/dist/src/badge/badge.d.ts +23 -0
  99. package/dist/src/badge/index.d.ts +1 -0
  100. package/dist/src/badge/p-badge.d.ts +3 -0
  101. package/dist/src/clock/clock.css.d.ts +1 -0
  102. package/dist/src/clock/clock.d.ts +27 -0
  103. package/dist/src/clock/index.d.ts +1 -0
  104. package/dist/src/divider/divider.css.d.ts +1 -0
  105. package/dist/src/divider/divider.d.ts +28 -0
  106. package/dist/src/divider/index.d.ts +1 -0
  107. package/dist/src/icon/icon.d.ts +15 -1
  108. package/dist/src/icon/p-icon.d.ts +1 -1
  109. package/dist/src/index.d.ts +5 -2
  110. package/dist/src/link/link.css.d.ts +2 -0
  111. package/dist/src/styleMixins.css.d.ts +9 -0
  112. package/dist/src/text/text.css.d.ts +2 -0
  113. package/dist/src/utils.d.ts +1 -1
  114. package/dist/state-CxzmLNIi.js +10 -0
  115. package/dist/state-CxzmLNIi.js.map +1 -0
  116. package/dist/styleMixins.css-CivfMYtB.js +17 -0
  117. package/dist/styleMixins.css-CivfMYtB.js.map +1 -0
  118. package/dist/tsconfig.tsbuildinfo +1 -1
  119. package/dist/{src/utils.js → utils-_5no4mk7.js} +37 -10
  120. package/dist/utils-_5no4mk7.js.map +1 -0
  121. package/package.json +17 -9
  122. package/readme.md +178 -0
  123. package/rollup.config.js +72 -34
  124. package/scratch.mjs +0 -0
  125. package/src/avatar/avatar.css.ts +3 -3
  126. package/src/avatar/avatar.ts +16 -3
  127. package/src/avatar/demo/index.html +2 -2
  128. package/src/avatar/p-avatar.ts +5 -0
  129. package/src/badge/badge.css.ts +34 -0
  130. package/src/badge/badge.ts +51 -0
  131. package/src/badge/demo/index.html +62 -0
  132. package/src/badge/index.ts +1 -0
  133. package/src/badge/p-badge.ts +5 -0
  134. package/src/clock/clock.css.ts +12 -0
  135. package/src/clock/clock.ts +57 -0
  136. package/src/clock/demo/index.html +26 -0
  137. package/src/clock/index.ts +1 -0
  138. package/src/divider/demo/index.html +58 -0
  139. package/src/divider/divider.css.ts +58 -0
  140. package/src/divider/divider.ts +65 -0
  141. package/src/divider/index.ts +1 -0
  142. package/src/icon/demo/index.html +4 -4
  143. package/src/icon/icon.ts +16 -2
  144. package/src/icon/p-icon.ts +1 -1
  145. package/src/index.ts +5 -2
  146. package/src/link/link.css.ts +36 -0
  147. package/src/peacock-loader.ts +49 -2
  148. package/src/styleMixins.css.ts +55 -0
  149. package/src/styles.d.ts +11 -0
  150. package/src/text/text.css.ts +76 -0
  151. package/src/utils.ts +42 -7
  152. package/tsconfig.json +1 -1
  153. package/README.md +0 -46
  154. package/custom-elements.md +0 -268
  155. package/demo/tokens.css +0 -510
  156. package/dist/component/Icon.js.map +0 -1
  157. package/dist/component/avatar.js.map +0 -1
  158. package/dist/icon-1wpxQtrZ.js +0 -341
  159. package/dist/icon-1wpxQtrZ.js.map +0 -1
  160. package/dist/src/LoaderUtils.js +0 -81
  161. package/dist/src/LoaderUtils.js.map +0 -1
  162. package/dist/src/avatar/avatar.css.js +0 -41
  163. package/dist/src/avatar/avatar.css.js.map +0 -1
  164. package/dist/src/avatar/avatar.js +0 -49
  165. package/dist/src/avatar/avatar.js.map +0 -1
  166. package/dist/src/avatar/index.js +0 -2
  167. package/dist/src/avatar/index.js.map +0 -1
  168. package/dist/src/icon/datasource.js +0 -20
  169. package/dist/src/icon/datasource.js.map +0 -1
  170. package/dist/src/icon/icon.css.js +0 -22
  171. package/dist/src/icon/icon.css.js.map +0 -1
  172. package/dist/src/icon/icon.js +0 -124
  173. package/dist/src/icon/icon.js.map +0 -1
  174. package/dist/src/icon/index.js +0 -2
  175. package/dist/src/icon/index.js.map +0 -1
  176. package/dist/src/icon/p-icon.js +0 -15
  177. package/dist/src/icon/p-icon.js.map +0 -1
  178. package/dist/src/index.js +0 -3
  179. package/dist/src/index.js.map +0 -1
  180. package/dist/src/peacock-loader.js +0 -16
  181. package/dist/src/peacock-loader.js.map +0 -1
  182. package/dist/src/utils.js.map +0 -1
  183. package/dist/test/icon.test.js +0 -14
  184. package/dist/test/icon.test.js.map +0 -1
  185. package/dist/utils-CSwoJIcG.js +0 -171
  186. package/dist/utils-CSwoJIcG.js.map +0 -1
  187. package/readme-gen.mjs +0 -11
package/readme.md ADDED
@@ -0,0 +1,178 @@
1
+ # Peacock
2
+ **The foundation for beautiful user interfaces.**
3
+
4
+ [![Build](https://github.com/redvars/peacock/workflows/Build/badge.svg)](https://github.com/goatui/components/actions?workflow=Build)
5
+ [![GitHub license](https://img.shields.io/github/license/redvars/peacock.svg)](/LICENSE)
6
+ ![Version](https://img.shields.io/npm/v/%40redvars%2Fpeacock)
7
+
8
+
9
+ <div align="center">
10
+ <img alt="Peacock LOGO" src="./logo.png" width="210">
11
+ </div>
12
+
13
+ Peacock gives you the tools and foundation to build beautiful, usable product interfaces. It’s the system you use to craft your own component library.
14
+
15
+ ## What is Peacock?
16
+ Peacock is more than just a collection of components; it is an aesthetic philosophy. Like its avian namesake, it provides the core elements (the primitives) that allow the full, vibrant display (the design) to be unveiled.
17
+
18
+ **Opinionated Beauty:** We deliver pre-styled, beautiful components that follow modern design trends, significantly reducing the boilerplate needed to achieve a professional look.
19
+
20
+ **Foundation First:** Similar to projects like `shadcn/ui`, Peacock focuses on providing the foundational primitives, ensuring maximum flexibility for customization without sacrificing initial polish.
21
+
22
+ **Seamless Integration:** Designed with modern web frameworks in mind (e.g., React, Vue), integrating Peacock into your existing project structure is fast, efficient, and empowering.
23
+
24
+ ## Key Features
25
+ Vibrant & Consistent Design System: Every component—from buttons and cards to complex data tables—shares a cohesive, high-quality visual language.
26
+
27
+ **Highly Extensible:** The component structure is designed for easy overwriting and theme customization, allowing you to quickly adapt the style to your specific brand identity.
28
+
29
+ **Built for Accessibility:** Focus on semantic HTML and proper ARIA attributes to ensure that your beautiful interfaces are accessible to all users.
30
+
31
+ **Responsive by Default:** Components are built with responsiveness baked in, guaranteeing a graceful display across all screen sizes and devices.
32
+
33
+ ## Documentation
34
+ Visit [https://peacock.redvars.com](https://goatui.com) to view the documentation.
35
+
36
+ ## Getting Started
37
+
38
+
39
+ ```html
40
+ <head>
41
+
42
+ <!-- Default font : Noto Sans and Noto Sans Mono -->
43
+ <link rel="preconnect" href="https://fonts.googleapis.com">
44
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
45
+ <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Mono:wght@100..900&family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
46
+
47
+ <script type='module'
48
+ src='https://cdn.jsdelivr.net/npm/@redvars/peacock@3.1.1/dist/peacock-loader.js'></script>
49
+ </head>
50
+
51
+ <p-avatar name="Shivaji Varma"></p-avatar>
52
+ ```
53
+
54
+ # Components
55
+
56
+ - 🟢 ready (feature complete for now)
57
+ - 🟡 beta (changes possible, not feature complete)
58
+ - 🔴 not ready (unstyled / no functions)
59
+ - 🔵 planned (created, but empty files)
60
+
61
+ ## Input Controls
62
+
63
+ Input controls are UI design elements that allow users to input information into the system. They are essential for
64
+ collecting data and enabling user interactions. Some common examples of input controls include text fields, dropdown
65
+ menus, checkboxes, and radio buttons.
66
+
67
+ | Name | Component | State |
68
+ |------------------------------------------------------------|----------------------|-------|
69
+ | [Code editor](https://peacock.redvars.com/components/code-editor) | p-card-editor | 🟢 |
70
+ | Color picker | p-color-picker | 🔴 |
71
+ | [Checkbox](https://peacock.redvars.com/components/checkbox) | p-checkbox | 🟢 |
72
+ | [Date picker](https://peacock.redvars.com/components/date-picker) | p-date-picker | 🟡 |
73
+ | Date Time picker | p-datetime-picker | 🔴 |
74
+ | [Form control](https://peacock.redvars.com/components/form-control) | p-form-control | 🟡 |
75
+ | File picker | p-file-picker | 🔴 |
76
+ | [HTML editor](https://peacock.redvars.com/components/html-editor) | p-html-editor | 🟢 |
77
+ | [Input](https://peacock.redvars.com/components/input) | p-input | 🟢 |
78
+ | [Input URL](https://peacock.redvars.com/components/input-url) | p-input-url | 🟢 |
79
+ | Month picker | p-month-picker | 🔴 |
80
+ | [Number](https://peacock.redvars.com/components/number) | p-number | 🟢 |
81
+ | [Select](https://peacock.redvars.com/components/select) | p-select | 🟢 |
82
+ | [Textarea](https://peacock.redvars.com/components/textarea) | p-textarea | 🟢 |
83
+ | [Time picker](https://peacock.redvars.com/components/time-picker) | p-time-picker | 🟡 |
84
+ | [URL input](https://peacock.redvars.com/components/url-input) | p-url-input. | 🔴 |
85
+ | Week picker | p-week-picker | 🔴 |
86
+
87
+ ## Navigation
88
+
89
+ Navigational components are UI elements that help users move around the app or website. They provide users with a clear
90
+ and intuitive way to navigate through different sections and pages. Some common examples of navigational components
91
+ include menus, tabs, and breadcrumbs.
92
+
93
+ | Name | Component | State |
94
+ |--------------------------------------------------------|-----------------|-------|
95
+ | [Breadcrumb](https://peacock.redvars.com/components/breadcrumb) | p-breadcrumb | 🟢 |
96
+ | [Dropdown](https://peacock.redvars.com/components/dropdown) | p-dropdown | 🟡 |
97
+ | [Menu](https://peacock.redvars.com/components/menu) | p-menu | 🟡 |
98
+ | [Tabs](https://peacock.redvars.com/components/tabs) | p-tabs | 🟢 |
99
+
100
+ ## Informational
101
+
102
+ Informational components are UI elements that provide information to users. They communicate important messages,
103
+ updates, or instructions within the app or website. Some common examples of informational components include
104
+ notifications, tooltips, and progress bars.
105
+
106
+ | Name | Component | State |
107
+ |----------------------------------------------------------------------------------|---------------------------|-------|
108
+ | [Badge](https://peacock.redvars.com/components/badge) | p-badge | 🟢 |
109
+ | [Progress](https://peacock.redvars.com/components/progress) | p-progress | 🟢 |
110
+ | [Spinner](https://peacock.redvars.com/components/spinner) | p-spinner | 🟢 |
111
+ | [Tooltip](https://peacock.redvars.com/components/tooltip) | p-tooltip | 🟢 |
112
+ | [Notification](https://peacock.redvars.com/components/notification) | p-notification | 🟢 |
113
+ | [Notification Manager](https://peacock.redvars.com/components/notification-manager) | p-notification-manager | 🟢 |
114
+
115
+
116
+ ## Containers
117
+
118
+ Containers are UI elements that group similar content together, making it easier for users to navigate and scan through
119
+ the interface. Examples of common containers include cards, carousels, and accordions, which provide structure and
120
+ organization to the content.
121
+
122
+ | Name | Component | State |
123
+ |------------------------------------------------------|----------------|-------|
124
+ | [Accordion](https://peacock.redvars.com/components/accordion) | p-accordion | 🟢 |
125
+ | Card | p-card | 🟡 |
126
+
127
+ ## General
128
+
129
+ These components are used for general purpose. They include
130
+
131
+ | Name | Component | State |
132
+ |----------------------------------------------------------------------------|---------------------------|-------|
133
+ | [Avatar](https://peacock.redvars.com/components/avatar) | p-avatar | 🟢 |
134
+ | [Button](https://peacock.redvars.com/components/button) | p-button | 🟢 |
135
+ | [Button Group](https://peacock.redvars.com/components/button-group) | p-button-group | 🟢 |
136
+ | [Calendar](https://peacock.redvars.com/components/calendar) | p-calendar | 🟢 |
137
+ | Card Select | p-cardselect | 🔴 |
138
+ | [Code Highlighter](https://peacock.redvars.com/components/code-highlighter) | p-card-highlighter | 🟢 |
139
+ | Column | p-col | 🔴 |
140
+ | [Empty State](https://peacock.redvars.com/components/empty-state) | p-empty-state | 🟡 |
141
+ | [Flow Designer ](https://peacock.redvars.com/components/flow-designer) | p-flow-designer | 🔵 |
142
+ | Grid | p-grid | 🔴 |
143
+ | Group | p-group | 🔴 |
144
+ | [Header](https://peacock.redvars.com/components/header) | p-header | 🟢 |
145
+ | [Icon](https://peacock.redvars.com/components/icon) | p-icon | 🟢 |
146
+ | [Link](https://peacock.redvars.com/components/link) | p-link | 🟢 |
147
+ | [Modal](https://peacock.redvars.com/components/modal) | p-modal | 🟢 |
148
+ | [Notification Manager](https://peacock.redvars.com/components/notification-manager) | p-notification-manager | 🟡 |
149
+ | Observer | p-observer | 🔴 |
150
+ | Pagination | p-pagination | 🔴 |
151
+ | Radio Group | p-radiogroup | 🔴 |
152
+ | Row | p-row | 🔴 |
153
+ | [Slider](https://peacock.redvars.com/components/slider) | p-slider | 🟡 |
154
+ | Spoiler | p-spoiler | 🔴 |
155
+ | Stepper | p-stepper | 🔴 |
156
+ | [Table](https://peacock.redvars.com/components/table) | p-table | 🟡 |
157
+ | [Tag](https://peacock.redvars.com/components/tag) / Chip | p-tag | 🟢 |
158
+ | [Text](https://peacock.redvars.com/components/text) | p-text | 🟢 |
159
+ | [Tree View](https://peacock.redvars.com/components/tree-view) | p-tree-view | 🟡 |
160
+ | [Toggle](https://peacock.redvars.com/components/toggle) | p-toggle | 🟢 |
161
+
162
+ ## Charts
163
+
164
+ These components are used to display data in a graphical format. They include
165
+
166
+ | Name | Component | State |
167
+ |----------------------------------------------------------------|---------------------|-------|
168
+ | [Doughnut Chart](https://peacock.redvars.com/components/chart-doughnut) | p-chart-doughnut | 🟢 |
169
+ | [Pie Chart ](https://peacock.redvars.com/components/chart-pie) | p-chart-pie | 🟢 |
170
+
171
+
172
+ ## 📄 License
173
+
174
+ Peacock is open-source software licensed under the [Apache-2.0 License](LICENSE).
175
+
176
+ ---
177
+
178
+ Made with 💖 by [shivajivarma](https://shivajivarma.com).
package/rollup.config.js CHANGED
@@ -1,39 +1,77 @@
1
1
  import typescript from '@rollup/plugin-typescript';
2
2
  import { nodeResolve } from '@rollup/plugin-node-resolve';
3
+ import css from 'rollup-plugin-import-css';
3
4
  import copy from 'rollup-plugin-copy';
5
+ import { readFile } from 'node:fs/promises';
6
+ import { glob } from 'glob';
4
7
 
5
- export default [
6
- {
7
- input: ['src/index.ts', 'src/peacock-loader.ts'], // Your main TypeScript entry file
8
- output: {
9
- dir: 'dist',
10
- format: 'esm', // Output as ES Modules (esm), also supports cjs, umd, etc.
11
- sourcemap: true,
8
+ export default async function () {
9
+ const files = await findLitComponents();
10
+ return [
11
+ {
12
+ input: ['src/index.ts', 'src/peacock-loader.ts', ...files], // Your main TypeScript entry file
13
+ output: {
14
+ dir: 'dist',
15
+ format: 'esm', // Output as ES Modules (esm), also supports cjs, umd, etc.
16
+ sourcemap: true,
17
+ },
18
+ plugins: [
19
+ typescript(), // The plugin loads options from tsconfig.json by default
20
+ css(),
21
+ nodeResolve(),
22
+ copy({
23
+ targets: [
24
+ {
25
+ src: '../readme.md',
26
+ dest: './',
27
+ },
28
+ {
29
+ src: './node_modules/@redvars/peacock-design-tokens/dist/tokens.css',
30
+ dest: './dist/assets/styles/',
31
+ },
32
+ ],
33
+ }),
34
+ ],
12
35
  },
13
- plugins: [
14
- typescript(), // The plugin loads options from tsconfig.json by default
15
- nodeResolve(),
16
- copy({
17
- targets: [
18
- {
19
- src: '../design-tokens/dist/**',
20
- dest: 'dist/assets/styles/',
21
- },
22
- ],
23
- }),
24
- ],
25
- },
26
- {
27
- input: ['src/icon/icon.ts', 'src/avatar/avatar.ts'], // Your main TypeScript entry file
28
- output: {
29
- dir: `dist`,
30
- format: 'esm', // Output as ES Modules (esm), also supports cjs, umd, etc.
31
- sourcemap: true,
32
- entryFileNames: 'component/[name].js',
33
- },
34
- plugins: [
35
- typescript(), // The plugin loads options from tsconfig.json by default
36
- nodeResolve(),
37
- ],
38
- },
39
- ];
36
+ ];
37
+ }
38
+
39
+ async function findLitComponents(searchDir = 'src') {
40
+ console.log(`🚀 Scanning for Lit components in "${searchDir}"...\n`);
41
+ /**
42
+ * We look for:
43
+ * 1. Lit imports
44
+ * 2. Class extensions
45
+ * 3. Custom element decorators
46
+ */
47
+ const LIT_SIGNATURES = [/extends\s+LitElement/];
48
+
49
+ try {
50
+ // glob() returns a Promise that resolves to an array of file paths
51
+ // We ignore node_modules and typical build folders
52
+ const files = await glob(`${searchDir}/**/*.{js,ts,mjs}`, {
53
+ ignore: ['**/node_modules/**', '**/dist/**', '**/build/**'],
54
+ });
55
+
56
+ const results = [];
57
+
58
+ for (const file of files) {
59
+ const content = await readFile(file, 'utf8');
60
+
61
+ // Check if any Lit-specific pattern exists in the file
62
+ const isLit = LIT_SIGNATURES.some(pattern => pattern.test(content));
63
+
64
+ if (isLit) {
65
+ results.push(file);
66
+ console.log(`✅ Found: ${file}`);
67
+ }
68
+ }
69
+
70
+ console.log(
71
+ `\n✨ Search complete. Total Lit components: ${results.length}`,
72
+ );
73
+ return results;
74
+ } catch (error) {
75
+ console.error('❌ Error during scan:', error);
76
+ }
77
+ }
package/scratch.mjs ADDED
File without changes
@@ -1,5 +1,5 @@
1
- import { css, unsafeCSS } from 'lit';
2
- import { getTypography } from '../utils.js';
1
+ import { css } from 'lit';
2
+ import { getTypography } from '../styleMixins.css.js';
3
3
 
4
4
  export const styles = css`
5
5
  :host {
@@ -26,7 +26,7 @@ export const styles = css`
26
26
  color: var(--avatar-text-color);
27
27
  width: var(--avatar-size);
28
28
  height: var(--avatar-size);
29
- ${unsafeCSS(getTypography('body-large-emphasized'))}
29
+ ${getTypography('body-large-emphasized')}
30
30
  background-color: var(--avatar-background-color);
31
31
 
32
32
  font-size: calc(var(--avatar-size) * 0.4);
@@ -4,10 +4,23 @@ import { classMap } from 'lit/directives/class-map.js';
4
4
  import { styles } from './avatar.css.js';
5
5
 
6
6
  /**
7
- * @summary Icons are visual symbols used to represent ideas, objects, or actions.
7
+ * @label Avatar
8
+ * @tag p-avatar
9
+ * @rawTag avatar
10
+ * @summary The Avatar component is used to represent user, and displays the profile picture, initials or fallback icon.
8
11
  *
9
- * @cssprop --icon-color - Controls the color of the icon.
10
- * @cssprop --icon-size - Controls the size of the icon.
12
+ * @cssprop --avatar-border-radius - Controls the border radius of the avatar.
13
+ * @cssprop --avatar-background-color - Controls the color of the avatar.
14
+ * @cssprop --avatar-size - Controls the size of the avatar.
15
+ * @cssprop --avatar-text-color - Controls the color of the text inside the avatar.
16
+ *
17
+ *
18
+ * @example
19
+ * ```html
20
+ * <p-avatar name="Shivaji Varma" src="https://peacock.redvars.com/assets/img/avatar.webp"></p-avatar>
21
+ * ```
22
+ *
23
+ * @tags display
11
24
  */
12
25
  export class Avatar extends LitElement {
13
26
  static styles = [styles];
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset='utf-8'>
5
5
  <meta name='viewport' content='width=device-width, initial-scale=1.0, viewport-fit=cover' />
6
- <link rel='stylesheet' href='/demo/tokens.css' />
6
+ <link rel='stylesheet' href='/dist/assets/styles/tokens.css' />
7
7
  <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Mono:wght@100..900&family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
8
8
 
9
9
  <style>
@@ -18,7 +18,7 @@
18
18
  <p-avatar name='Shivaji Varma'></p-avatar>
19
19
 
20
20
  <script type='module'>
21
- import { Avatar } from '/dist/src/index.js';
21
+ import { Avatar } from '/dist/index.js';
22
22
 
23
23
  window.customElements.define('p-avatar', Avatar);
24
24
  </script>
@@ -0,0 +1,5 @@
1
+ import { customElement } from 'lit/decorators.js';
2
+ import { Avatar } from './avatar.js';
3
+
4
+ @customElement('p-avatar')
5
+ export class PAvatar extends Avatar {}
@@ -0,0 +1,34 @@
1
+ import { css } from 'lit';
2
+ import { getTypography } from '../styleMixins.css.js';
3
+
4
+ export const styles = css`
5
+ :host {
6
+ display: inline-block;
7
+ --badge-color: var(--global-badge-color);
8
+ }
9
+
10
+ .badge {
11
+ pointer-events: none;
12
+ z-index: var(--z-index-badge);
13
+ color: var(--color-white);
14
+ display: flex;
15
+ justify-content: center;
16
+ align-items: center;
17
+ background-color: var(--badge-color);
18
+ border-radius: var(--shape-corner-full);
19
+ box-sizing: border-box;
20
+
21
+ &.slot-has-content {
22
+ height: 1rem;
23
+ min-width: 1rem;
24
+ padding-inline: var(--spacing-050);
25
+ ${getTypography('label-small')};
26
+ color: var(--color-on-error);
27
+ }
28
+
29
+ &:not(.slot-has-content) {
30
+ height: 0.375rem;
31
+ width: 0.375rem;
32
+ }
33
+ }
34
+ `;
@@ -0,0 +1,51 @@
1
+ import { html, LitElement } from 'lit';
2
+ import { property, state } from 'lit/decorators.js';
3
+ import { classMap } from 'lit/directives/class-map.js';
4
+ import { styles } from './badge.css.js';
5
+ import { observerSlotChangesWithCallback } from '../utils.js';
6
+
7
+ /**
8
+ * @label Badge
9
+ * @tag p-badge
10
+ * @rawTag badge
11
+ * @summary The badge component is used to display a small amount of information to the user.
12
+ *
13
+ * @cssprop --badge-color - Controls the color of the badge.
14
+ *
15
+ * @example
16
+ * ```html
17
+ * <p-badge>1</p-badge>
18
+ * ```
19
+ * @tags display
20
+ */
21
+ export class Badge extends LitElement {
22
+ static styles = [styles];
23
+
24
+ @property({ type: String, reflect: true }) name: string = '';
25
+
26
+ @property({ type: String, reflect: true }) src?: string;
27
+
28
+ @state()
29
+ slotHasContent = false;
30
+
31
+ firstUpdated() {
32
+ observerSlotChangesWithCallback(
33
+ this.renderRoot.querySelector('slot'),
34
+ hasContent => {
35
+ this.slotHasContent = hasContent;
36
+ this.requestUpdate();
37
+ },
38
+ );
39
+ }
40
+
41
+ render() {
42
+ return html`<div
43
+ class=${classMap({
44
+ badge: true,
45
+ 'slot-has-content': this.slotHasContent,
46
+ })}
47
+ >
48
+ <slot></slot>
49
+ </div>`;
50
+ }
51
+ }
@@ -0,0 +1,62 @@
1
+ <!doctype html>
2
+ <html lang='en-GB'>
3
+ <head>
4
+ <meta charset='utf-8'>
5
+ <meta name='viewport' content='width=device-width, initial-scale=1.0, viewport-fit=cover' />
6
+ <link rel='stylesheet' href='/dist/assets/styles/tokens.css' />
7
+ <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Mono:wght@100..900&family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
8
+
9
+ <style>
10
+ body {
11
+ background: #fafafa;
12
+ }
13
+ </style>
14
+ </head>
15
+ <body>
16
+
17
+ <style>
18
+ .badge-wrapper {
19
+ position: relative;
20
+ display: inline-flex;
21
+ width: 1.5rem;
22
+ height: 1.5rem;
23
+ align-items: center;
24
+ justify-content: center;
25
+ }
26
+
27
+ .badge-anchor-simple {
28
+ position: absolute;
29
+ top: 0;
30
+ right: 0;
31
+ }
32
+
33
+ .badge-anchor {
34
+ position: absolute;
35
+ top: -2px;
36
+ left: calc(100% - 12px);
37
+ }
38
+ </style>
39
+
40
+ <div class="badge-wrapper">
41
+ <p-icon name="notifications"></p-icon>
42
+ <p-badge class="badge-anchor-simple"></p-badge>
43
+ </div>
44
+
45
+
46
+ <div class="badge-wrapper">
47
+ <p-icon name="notifications"></p-icon>
48
+ <p-badge class="badge-anchor">1</p-badge>
49
+ </div>
50
+
51
+ <div class="badge-wrapper">
52
+ <p-icon name="notifications"></p-icon>
53
+ <p-badge class="badge-anchor">999+</p-badge>
54
+ </div>
55
+
56
+ <script type='module'>
57
+ import { Icon, Badge } from '/dist/index.js';
58
+ window.customElements.define('p-icon', Icon);
59
+ window.customElements.define('p-badge', Badge);
60
+ </script>
61
+ </body>
62
+ </html>
@@ -0,0 +1 @@
1
+ export { Badge } from './badge.js';
@@ -0,0 +1,5 @@
1
+ import { customElement } from 'lit/decorators.js';
2
+ import { Badge } from './badge.js';
3
+
4
+ @customElement('p-badge')
5
+ export class PBadge extends Badge {}
@@ -0,0 +1,12 @@
1
+ import { css } from 'lit';
2
+ import { getTypography } from '../styleMixins.css.js';
3
+
4
+ export const styles = css`
5
+ :host {
6
+ display: inline-block;
7
+ }
8
+
9
+ .current-time {
10
+ ${getTypography('body-medium')}
11
+ }
12
+ `;
@@ -0,0 +1,57 @@
1
+ import { html, LitElement } from 'lit';
2
+ import { property, state } from 'lit/decorators.js';
3
+ import { styles } from './clock.css.js';
4
+
5
+ /**
6
+ * @label Clock
7
+ * @tag p-clock
8
+ * @rawTag clock
9
+ *
10
+ * @summary Displays the current time in a given timezone.
11
+ * @overview
12
+ * - Clocks are used to display the current time in a specified timezone.
13
+ * - They can be displayed in various formats, including 12-hour and 24-hour time.
14
+ *
15
+ * @example
16
+ * ```html
17
+ * <p-clock></p-clock>
18
+ * ```
19
+ * @tags display
20
+ */
21
+ export class Clock extends LitElement {
22
+ static styles = [styles];
23
+
24
+ @property() timezone?: string;
25
+
26
+ // `currentTime` is decorated with `@State()`,
27
+ // as we need to trigger a rerender when its
28
+ // value changes to show the latest time
29
+ @state() currentTime: string = '';
30
+
31
+ private _timerId: any;
32
+
33
+ connectedCallback() {
34
+ super.connectedCallback();
35
+ this.__updateCurrentTime();
36
+ this._timerId = setInterval(() => {
37
+ this.__updateCurrentTime();
38
+ }, 1000);
39
+ }
40
+
41
+ disconnectedCallback() {
42
+ if (this._timerId) {
43
+ clearInterval(this._timerId);
44
+ }
45
+ super.disconnectedCallback();
46
+ }
47
+
48
+ __updateCurrentTime() {
49
+ this.currentTime = new Date().toLocaleTimeString('en-US', {
50
+ timeZone: this.timezone,
51
+ });
52
+ }
53
+
54
+ render() {
55
+ return html`<div class="current-time">${this.currentTime}</div>`;
56
+ }
57
+ }
@@ -0,0 +1,26 @@
1
+ <!doctype html>
2
+ <html lang='en-GB'>
3
+ <head>
4
+ <meta charset='utf-8'>
5
+ <meta name='viewport' content='width=device-width, initial-scale=1.0, viewport-fit=cover' />
6
+ <link rel='stylesheet' href='/dist/assets/styles/tokens.css' />
7
+ <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Mono:wght@100..900&family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
8
+
9
+ <style>
10
+ body {
11
+ background: #fafafa;
12
+ }
13
+ </style>
14
+ </head>
15
+ <body>
16
+
17
+
18
+ <p-clock></p-clock>
19
+
20
+ <script type='module'>
21
+ import { Clock } from '/dist/index.js';
22
+
23
+ window.customElements.define('p-clock', Clock);
24
+ </script>
25
+ </body>
26
+ </html>
@@ -0,0 +1 @@
1
+ export { Clock } from './clock.js';