@luster-ui/ui 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 (176) hide show
  1. package/PUBLISHING.md +469 -0
  2. package/README.md +423 -0
  3. package/dist/cjs/index-Couc0LVo.js +1571 -0
  4. package/dist/cjs/index.cjs.js +2 -0
  5. package/dist/cjs/loader.cjs.js +12 -0
  6. package/dist/cjs/luster-accordion_19.cjs.entry.js +555 -0
  7. package/dist/cjs/luster-card.cjs.entry.js +25 -0
  8. package/dist/cjs/luster.cjs.js +24 -0
  9. package/dist/collection/collection-manifest.json +32 -0
  10. package/dist/collection/components/luster-accordion/luster-accordion.css +76 -0
  11. package/dist/collection/components/luster-accordion/luster-accordion.js +160 -0
  12. package/dist/collection/components/luster-accordion/luster-accordion.stories.js +88 -0
  13. package/dist/collection/components/luster-activity-item/luster-activity-item.css +102 -0
  14. package/dist/collection/components/luster-activity-item/luster-activity-item.js +188 -0
  15. package/dist/collection/components/luster-activity-item/luster-activity-item.stories.js +94 -0
  16. package/dist/collection/components/luster-alert/luster-alert.css +71 -0
  17. package/dist/collection/components/luster-alert/luster-alert.js +171 -0
  18. package/dist/collection/components/luster-alert/luster-alert.stories.js +82 -0
  19. package/dist/collection/components/luster-article-card/luster-article-card.css +120 -0
  20. package/dist/collection/components/luster-article-card/luster-article-card.js +192 -0
  21. package/dist/collection/components/luster-article-card/luster-article-card.stories.js +82 -0
  22. package/dist/collection/components/luster-badge/luster-badge.css +38 -0
  23. package/dist/collection/components/luster-badge/luster-badge.js +87 -0
  24. package/dist/collection/components/luster-badge/luster-badge.stories.js +86 -0
  25. package/dist/collection/components/luster-button/luster-button.css +121 -0
  26. package/dist/collection/components/luster-button/luster-button.js +179 -0
  27. package/dist/collection/components/luster-button/luster-button.stories.js +103 -0
  28. package/dist/collection/components/luster-card/luster-card.css +29 -0
  29. package/dist/collection/components/luster-card/luster-card.js +92 -0
  30. package/dist/collection/components/luster-card/luster-card.stories.js +67 -0
  31. package/dist/collection/components/luster-checkbox/luster-checkbox.css +42 -0
  32. package/dist/collection/components/luster-checkbox/luster-checkbox.js +162 -0
  33. package/dist/collection/components/luster-checkbox/luster-checkbox.stories.js +78 -0
  34. package/dist/collection/components/luster-color-swatch/luster-color-swatch.css +33 -0
  35. package/dist/collection/components/luster-color-swatch/luster-color-swatch.js +108 -0
  36. package/dist/collection/components/luster-color-swatch/luster-color-swatch.stories.js +58 -0
  37. package/dist/collection/components/luster-feature-quote/luster-feature-quote.css +84 -0
  38. package/dist/collection/components/luster-feature-quote/luster-feature-quote.js +108 -0
  39. package/dist/collection/components/luster-feature-quote/luster-feature-quote.stories.js +52 -0
  40. package/dist/collection/components/luster-hero/luster-hero.css +119 -0
  41. package/dist/collection/components/luster-hero/luster-hero.js +129 -0
  42. package/dist/collection/components/luster-hero/luster-hero.stories.js +72 -0
  43. package/dist/collection/components/luster-input/luster-input.css +72 -0
  44. package/dist/collection/components/luster-input/luster-input.js +332 -0
  45. package/dist/collection/components/luster-input/luster-input.stories.js +106 -0
  46. package/dist/collection/components/luster-modal/luster-modal.css +103 -0
  47. package/dist/collection/components/luster-modal/luster-modal.js +215 -0
  48. package/dist/collection/components/luster-modal/luster-modal.stories.js +78 -0
  49. package/dist/collection/components/luster-navbar/luster-navbar.css +151 -0
  50. package/dist/collection/components/luster-navbar/luster-navbar.js +87 -0
  51. package/dist/collection/components/luster-navbar/luster-navbar.stories.js +41 -0
  52. package/dist/collection/components/luster-profile-card/luster-profile-card.css +89 -0
  53. package/dist/collection/components/luster-profile-card/luster-profile-card.js +194 -0
  54. package/dist/collection/components/luster-profile-card/luster-profile-card.stories.js +56 -0
  55. package/dist/collection/components/luster-resource-table/luster-resource-table.css +141 -0
  56. package/dist/collection/components/luster-resource-table/luster-resource-table.js +78 -0
  57. package/dist/collection/components/luster-resource-table/luster-resource-table.stories.js +44 -0
  58. package/dist/collection/components/luster-sidebar/luster-sidebar.css +152 -0
  59. package/dist/collection/components/luster-sidebar/luster-sidebar.js +78 -0
  60. package/dist/collection/components/luster-sidebar/luster-sidebar.stories.js +34 -0
  61. package/dist/collection/components/luster-stat-card/luster-stat-card.css +82 -0
  62. package/dist/collection/components/luster-stat-card/luster-stat-card.js +194 -0
  63. package/dist/collection/components/luster-stat-card/luster-stat-card.stories.js +75 -0
  64. package/dist/collection/components/luster-tabs/luster-tabs.css +35 -0
  65. package/dist/collection/components/luster-tabs/luster-tabs.js +116 -0
  66. package/dist/collection/components/luster-tabs/luster-tabs.stories.js +56 -0
  67. package/dist/collection/components/luster-toggle/luster-toggle.css +48 -0
  68. package/dist/collection/components/luster-toggle/luster-toggle.js +120 -0
  69. package/dist/collection/components/luster-toggle/luster-toggle.stories.js +66 -0
  70. package/dist/components/index.d.ts +33 -0
  71. package/dist/components/index.js +1 -0
  72. package/dist/components/luster-accordion.d.ts +11 -0
  73. package/dist/components/luster-accordion.js +1 -0
  74. package/dist/components/luster-activity-item.d.ts +11 -0
  75. package/dist/components/luster-activity-item.js +1 -0
  76. package/dist/components/luster-alert.d.ts +11 -0
  77. package/dist/components/luster-alert.js +1 -0
  78. package/dist/components/luster-article-card.d.ts +11 -0
  79. package/dist/components/luster-article-card.js +1 -0
  80. package/dist/components/luster-badge.d.ts +11 -0
  81. package/dist/components/luster-badge.js +1 -0
  82. package/dist/components/luster-badge2.js +1 -0
  83. package/dist/components/luster-button.d.ts +11 -0
  84. package/dist/components/luster-button.js +1 -0
  85. package/dist/components/luster-button2.js +1 -0
  86. package/dist/components/luster-card.d.ts +11 -0
  87. package/dist/components/luster-card.js +1 -0
  88. package/dist/components/luster-checkbox.d.ts +11 -0
  89. package/dist/components/luster-checkbox.js +1 -0
  90. package/dist/components/luster-color-swatch.d.ts +11 -0
  91. package/dist/components/luster-color-swatch.js +1 -0
  92. package/dist/components/luster-feature-quote.d.ts +11 -0
  93. package/dist/components/luster-feature-quote.js +1 -0
  94. package/dist/components/luster-hero.d.ts +11 -0
  95. package/dist/components/luster-hero.js +1 -0
  96. package/dist/components/luster-input.d.ts +11 -0
  97. package/dist/components/luster-input.js +1 -0
  98. package/dist/components/luster-modal.d.ts +11 -0
  99. package/dist/components/luster-modal.js +1 -0
  100. package/dist/components/luster-navbar.d.ts +11 -0
  101. package/dist/components/luster-navbar.js +1 -0
  102. package/dist/components/luster-profile-card.d.ts +11 -0
  103. package/dist/components/luster-profile-card.js +1 -0
  104. package/dist/components/luster-resource-table.d.ts +11 -0
  105. package/dist/components/luster-resource-table.js +1 -0
  106. package/dist/components/luster-sidebar.d.ts +11 -0
  107. package/dist/components/luster-sidebar.js +1 -0
  108. package/dist/components/luster-stat-card.d.ts +11 -0
  109. package/dist/components/luster-stat-card.js +1 -0
  110. package/dist/components/luster-tabs.d.ts +11 -0
  111. package/dist/components/luster-tabs.js +1 -0
  112. package/dist/components/luster-toggle.d.ts +11 -0
  113. package/dist/components/luster-toggle.js +1 -0
  114. package/dist/components/luster-toggle2.js +1 -0
  115. package/dist/esm/index-CeYIN8dN.js +1563 -0
  116. package/dist/esm/index.js +1 -0
  117. package/dist/esm/loader.js +10 -0
  118. package/dist/esm/luster-accordion_19.entry.js +535 -0
  119. package/dist/esm/luster-card.entry.js +23 -0
  120. package/dist/esm/luster.js +20 -0
  121. package/dist/index.cjs.js +1 -0
  122. package/dist/index.js +1 -0
  123. package/dist/luster/index.esm.js +0 -0
  124. package/dist/luster/luster.css +313 -0
  125. package/dist/luster/luster.esm.js +1 -0
  126. package/dist/luster/p-3c4ce897.entry.js +1 -0
  127. package/dist/luster/p-CeYIN8dN.js +2 -0
  128. package/dist/luster/p-e368ec08.entry.js +1 -0
  129. package/dist/types/.stencil/luster-accordion/luster-accordion.d.ts +13 -0
  130. package/dist/types/.stencil/luster-accordion/luster-accordion.stories.d.ts +10 -0
  131. package/dist/types/.stencil/luster-activity-item/luster-activity-item.d.ts +11 -0
  132. package/dist/types/.stencil/luster-activity-item/luster-activity-item.stories.d.ts +9 -0
  133. package/dist/types/.stencil/luster-alert/luster-alert.d.ts +13 -0
  134. package/dist/types/.stencil/luster-alert/luster-alert.stories.d.ts +10 -0
  135. package/dist/types/.stencil/luster-article-card/luster-article-card.d.ts +11 -0
  136. package/dist/types/.stencil/luster-article-card/luster-article-card.stories.d.ts +8 -0
  137. package/dist/types/.stencil/luster-badge/luster-badge.d.ts +6 -0
  138. package/dist/types/.stencil/luster-badge/luster-badge.stories.d.ts +12 -0
  139. package/dist/types/.stencil/luster-button/luster-button.d.ts +12 -0
  140. package/dist/types/.stencil/luster-button/luster-button.stories.d.ts +13 -0
  141. package/dist/types/.stencil/luster-card/luster-card.d.ts +6 -0
  142. package/dist/types/.stencil/luster-card/luster-card.stories.d.ts +10 -0
  143. package/dist/types/.stencil/luster-checkbox/luster-checkbox.d.ts +13 -0
  144. package/dist/types/.stencil/luster-checkbox/luster-checkbox.stories.d.ts +10 -0
  145. package/dist/types/.stencil/luster-color-swatch/luster-color-swatch.d.ts +7 -0
  146. package/dist/types/.stencil/luster-color-swatch/luster-color-swatch.stories.d.ts +8 -0
  147. package/dist/types/.stencil/luster-feature-quote/luster-feature-quote.d.ts +7 -0
  148. package/dist/types/.stencil/luster-feature-quote/luster-feature-quote.stories.d.ts +8 -0
  149. package/dist/types/.stencil/luster-hero/luster-hero.d.ts +8 -0
  150. package/dist/types/.stencil/luster-hero/luster-hero.stories.d.ts +8 -0
  151. package/dist/types/.stencil/luster-input/luster-input.d.ts +25 -0
  152. package/dist/types/.stencil/luster-input/luster-input.stories.d.ts +9 -0
  153. package/dist/types/.stencil/luster-modal/luster-modal.d.ts +17 -0
  154. package/dist/types/.stencil/luster-modal/luster-modal.stories.d.ts +8 -0
  155. package/dist/types/.stencil/luster-navbar/luster-navbar.d.ts +6 -0
  156. package/dist/types/.stencil/luster-navbar/luster-navbar.stories.d.ts +6 -0
  157. package/dist/types/.stencil/luster-profile-card/luster-profile-card.d.ts +11 -0
  158. package/dist/types/.stencil/luster-profile-card/luster-profile-card.stories.d.ts +7 -0
  159. package/dist/types/.stencil/luster-resource-table/luster-resource-table.d.ts +14 -0
  160. package/dist/types/.stencil/luster-resource-table/luster-resource-table.stories.d.ts +6 -0
  161. package/dist/types/.stencil/luster-sidebar/luster-sidebar.d.ts +9 -0
  162. package/dist/types/.stencil/luster-sidebar/luster-sidebar.stories.d.ts +8 -0
  163. package/dist/types/.stencil/luster-stat-card/luster-stat-card.d.ts +11 -0
  164. package/dist/types/.stencil/luster-stat-card/luster-stat-card.stories.d.ts +8 -0
  165. package/dist/types/.stencil/luster-tabs/luster-tabs.d.ts +15 -0
  166. package/dist/types/.stencil/luster-tabs/luster-tabs.stories.d.ts +7 -0
  167. package/dist/types/.stencil/luster-toggle/luster-toggle.d.ts +11 -0
  168. package/dist/types/.stencil/luster-toggle/luster-toggle.stories.d.ts +9 -0
  169. package/dist/types/components.d.ts +1355 -0
  170. package/dist/types/stencil-public-runtime.d.ts +1860 -0
  171. package/loader/cdn.js +1 -0
  172. package/loader/index.cjs.js +1 -0
  173. package/loader/index.d.ts +24 -0
  174. package/loader/index.es2017.js +1 -0
  175. package/loader/index.js +2 -0
  176. package/package.json +73 -0
@@ -0,0 +1,78 @@
1
+ import { h } from "@stencil/core";
2
+ export class DcSidebar {
3
+ constructor() {
4
+ this.active = 'foundations';
5
+ this.handleNav = (key) => {
6
+ this.dcNavChange.emit(key);
7
+ };
8
+ this.navItems = [
9
+ { key: 'foundations', label: 'Foundations' },
10
+ { key: 'buttons-inputs', label: 'Buttons & Inputs' },
11
+ { key: 'navigation', label: 'Navigation & Feedback' },
12
+ { key: 'cards', label: 'Cards & Data' },
13
+ ];
14
+ this.icons = {
15
+ foundations: (h("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none" }, h("polygon", { points: "12,3 22,21 2,21", stroke: "currentColor", "stroke-width": "2", "stroke-linejoin": "round" }))),
16
+ 'buttons-inputs': (h("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none" }, h("rect", { x: "3", y: "9", width: "18", height: "7", rx: "3.5", stroke: "currentColor", "stroke-width": "2" }))),
17
+ navigation: (h("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none" }, h("path", { d: "M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }), h("path", { d: "M13.73 21a2 2 0 0 1-3.46 0", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }))),
18
+ cards: (h("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none" }, h("rect", { x: "2", y: "4", width: "20", height: "13", rx: "2", stroke: "currentColor", "stroke-width": "2" }), h("path", { d: "M8 21h8M12 17v4", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }))),
19
+ };
20
+ }
21
+ render() {
22
+ return (h("aside", { key: '156bbdcd26532849231a17a0a25ada7e0b3ee49a', class: "sidebar" }, h("nav", { key: '0792a2cb932ef1e01be65b0e71b9b120007173ae', class: "sidebar__nav" }, this.navItems.map(item => (h("a", { key: item.key, class: `sidebar__item ${this.active === item.key ? 'sidebar__item--active' : ''}`, onClick: () => this.handleNav(item.key) }, h("span", { class: "sidebar__icon" }, this.icons[item.key]), h("span", { class: "sidebar__label" }, item.label))))), h("div", { key: '6569f9b239cc95c7af704bf6b8967912891e4669', class: "sidebar__bottom" }, h("button", { key: '5e49de90b28d51d366e30429308f5b088ea79de7', class: "sidebar__new-btn" }, h("svg", { key: 'b4adaf5f40fd916ee79cfa4ed31539cca891c3c0', width: "14", height: "14", viewBox: "0 0 24 24", fill: "none" }, h("line", { key: '2a1a1342289c742b5a19e9726d880f82d5391ae5', x1: "12", y1: "5", x2: "12", y2: "19", stroke: "currentColor", "stroke-width": "2.5", "stroke-linecap": "round" }), h("line", { key: '1c1af82ededac05213f765bf2b59dfaf842b72f3', x1: "5", y1: "12", x2: "19", y2: "12", stroke: "currentColor", "stroke-width": "2.5", "stroke-linecap": "round" })), "New Component"), h("div", { key: '415530b5a67ee42bec580664a27e5f050a124f64', class: "sidebar__footer-links" }, h("a", { key: 'f063c1d69506f587936dce24bf95ec475ab2c49a', class: "sidebar__item sidebar__item--sm" }, h("span", { key: '38aa317619f9f1a513f36e59fcfa6d0a9425472b', class: "sidebar__icon" }, h("svg", { key: 'ad5890e87a9e6ed96b2aea2267b773f2f0a22adc', width: "15", height: "15", viewBox: "0 0 24 24", fill: "none" }, h("circle", { key: 'cffb2dd618636cf8eb382f9ebdfbd3ff3f5e5474', cx: "12", cy: "12", r: "3", stroke: "currentColor", "stroke-width": "2" }), h("path", { key: 'a31d2b3c9ca5379940350f385a62520e141c4af5', d: "M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z", stroke: "currentColor", "stroke-width": "2" }))), h("span", { key: '9551440506113e8fb2e58ac849882962a2775a7a', class: "sidebar__label" }, "Settings")), h("a", { key: 'b406df93302d530917a0486b3e397339d0356092', class: "sidebar__item sidebar__item--sm" }, h("span", { key: 'd04b4f834fd2e84c08545e4cf73330c8bd6d3b79', class: "sidebar__icon" }, h("svg", { key: 'f9098ac49052cf9f959cea295b8dd9493a9d3635', width: "15", height: "15", viewBox: "0 0 24 24", fill: "none" }, h("circle", { key: 'cbb8a5bea8c9dfaa4413a435a670c87691d808ff', cx: "12", cy: "12", r: "10", stroke: "currentColor", "stroke-width": "2" }), h("path", { key: '38b50c506b9ec19bb443e555d1bae07f4819d134', d: "M12 16v-4M12 8h.01", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }))), h("span", { key: '65eb38a28de5d699eab95214ff7fd3c239d81d3e', class: "sidebar__label" }, "Support"))), h("div", { key: '13a36b659c7e9f3330c875477b051d6437822920', class: "sidebar__user" }, h("div", { key: 'cbf4b6a7ccd4bf4849c15762a967d612d67d487e', class: "sidebar__user-avatar" }, "AV"), h("div", { key: '2af195de05155ecd5ffcd9c612ec83f037316ad6', class: "sidebar__user-info" }, h("span", { key: 'a004b37c87e90aad0feae298da542966baabc871', class: "sidebar__user-name" }, "Alex Curator"), h("span", { key: '421c4155582025707eb780b30a71e1412ebabd19', class: "sidebar__user-role" }, "Lead Editor"))))));
23
+ }
24
+ static get is() { return "luster-sidebar"; }
25
+ static get encapsulation() { return "shadow"; }
26
+ static get originalStyleUrls() {
27
+ return {
28
+ "$": ["luster-sidebar.css"]
29
+ };
30
+ }
31
+ static get styleUrls() {
32
+ return {
33
+ "$": ["luster-sidebar.css"]
34
+ };
35
+ }
36
+ static get properties() {
37
+ return {
38
+ "active": {
39
+ "type": "string",
40
+ "mutable": false,
41
+ "complexType": {
42
+ "original": "string",
43
+ "resolved": "string",
44
+ "references": {}
45
+ },
46
+ "required": false,
47
+ "optional": false,
48
+ "docs": {
49
+ "tags": [],
50
+ "text": ""
51
+ },
52
+ "getter": false,
53
+ "setter": false,
54
+ "reflect": false,
55
+ "attribute": "active",
56
+ "defaultValue": "'foundations'"
57
+ }
58
+ };
59
+ }
60
+ static get events() {
61
+ return [{
62
+ "method": "dcNavChange",
63
+ "name": "dcNavChange",
64
+ "bubbles": true,
65
+ "cancelable": true,
66
+ "composed": true,
67
+ "docs": {
68
+ "tags": [],
69
+ "text": ""
70
+ },
71
+ "complexType": {
72
+ "original": "string",
73
+ "resolved": "string",
74
+ "references": {}
75
+ }
76
+ }];
77
+ }
78
+ }
@@ -0,0 +1,34 @@
1
+ import { html } from "lit";
2
+ const meta = {
3
+ title: 'Navigation/Sidebar',
4
+ tags: ['autodocs'],
5
+ parameters: {
6
+ docs: {
7
+ description: {
8
+ component: 'Sidebar de navegação lateral com itens e perfil de usuário. Props: `active`.',
9
+ },
10
+ },
11
+ layout: 'fullscreen',
12
+ },
13
+ argTypes: {
14
+ active: {
15
+ control: 'select',
16
+ options: ['foundations', 'buttons-inputs', 'navigation', 'cards'],
17
+ description: 'Item de menu ativo',
18
+ table: { defaultValue: { summary: 'foundations' } },
19
+ },
20
+ },
21
+ args: {
22
+ active: 'foundations',
23
+ },
24
+ };
25
+ export default meta;
26
+ const render = (args) => html `
27
+ <div style="height:600px;display:flex;">
28
+ <luster-sidebar active="${args.active}"></luster-sidebar>
29
+ </div>
30
+ `;
31
+ export const Foundations = { args: { active: 'foundations' }, render };
32
+ export const ButtonsInputs = { name: 'Buttons & Inputs', args: { active: 'buttons-inputs' }, render };
33
+ export const Navigation = { args: { active: 'navigation' }, render };
34
+ export const Cards = { args: { active: 'cards' }, render };
@@ -0,0 +1,82 @@
1
+ :host { display: block; }
2
+
3
+ .stat-card {
4
+ background: var(--dc-surface-container-high);
5
+ border-radius: var(--dc-round-4);
6
+ padding: var(--dc-space-5);
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: var(--dc-space-4);
10
+ transition: background var(--dc-transition-base), box-shadow var(--dc-transition-base);
11
+ cursor: default;
12
+ }
13
+
14
+ .stat-card:hover {
15
+ background: var(--dc-surface-bright);
16
+ box-shadow: var(--dc-shadow-md);
17
+ }
18
+
19
+ .stat-card__header { display: flex; justify-content: space-between; align-items: flex-start; }
20
+
21
+ .stat-card__icon-wrap {
22
+ width: 40px;
23
+ height: 40px;
24
+ border-radius: var(--dc-round-3);
25
+ background: var(--dc-icon-bg);
26
+ display: flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ }
30
+
31
+ .stat-card__icon { color: var(--dc-primary); display: flex; }
32
+
33
+ .stat-card__icon-placeholder {
34
+ width: 20px;
35
+ height: 20px;
36
+ border-radius: var(--dc-round-1);
37
+ background: var(--dc-primary-dim);
38
+ opacity: 0.4;
39
+ }
40
+
41
+ .stat-card__body { flex: 1; display: flex; flex-direction: column; gap: var(--dc-space-2); }
42
+
43
+ .stat-card__title {
44
+ font-family: var(--dc-font-display);
45
+ font-size: var(--dc-title-md);
46
+ font-weight: 700;
47
+ color: var(--dc-on-surface);
48
+ margin: 0;
49
+ }
50
+
51
+ .stat-card__desc {
52
+ font-size: var(--dc-body-sm);
53
+ color: var(--dc-on-surface-variant);
54
+ margin: 0;
55
+ line-height: 1.5;
56
+ display: -webkit-box;
57
+ -webkit-line-clamp: 2;
58
+ -webkit-box-orient: vertical;
59
+ overflow: hidden;
60
+ }
61
+
62
+ .stat-card__footer {
63
+ display: flex;
64
+ align-items: center;
65
+ justify-content: space-between;
66
+ gap: var(--dc-space-2);
67
+ }
68
+
69
+ .stat-card__meta {
70
+ display: flex;
71
+ align-items: center;
72
+ gap: var(--dc-space-2);
73
+ flex-wrap: wrap;
74
+ }
75
+
76
+ .stat-card__users {
77
+ display: flex;
78
+ align-items: center;
79
+ gap: var(--dc-space-1);
80
+ font-size: var(--dc-label-sm);
81
+ color: var(--dc-on-surface-variant);
82
+ }
@@ -0,0 +1,194 @@
1
+ import { h } from "@stencil/core";
2
+ export class DcStatCard {
3
+ constructor() {
4
+ this.heading = '';
5
+ this.description = '';
6
+ this.version = '';
7
+ this.status = 'active';
8
+ this.users = '';
9
+ this.hasToggle = false;
10
+ this.toggleOn = false;
11
+ this.icon = '';
12
+ }
13
+ render() {
14
+ return (h("div", { key: '67edcd065e8dbe0bbab3293a1c2d3113966b2e92', class: "stat-card" }, h("div", { key: '34def7d2976c9aa72c80cf97f016fe0198fcb224', class: "stat-card__header" }, h("div", { key: '7dd6a1fddc56da32b1c4ab70d95a47e62b32b201', class: "stat-card__icon-wrap" }, this.icon
15
+ ? h("span", { class: "stat-card__icon", innerHTML: this.icon })
16
+ : h("div", { class: "stat-card__icon-placeholder" }))), h("div", { key: '927d66d98c96284de9d702b4722f9a248f1fd5ad', class: "stat-card__body" }, h("h4", { key: 'd3e4ec0f889cb4c7a5dbae3c91be59af454cff69', class: "stat-card__title" }, this.heading), h("p", { key: 'cf66fdc344ce596626b4431e81c8a3dd9108dab9', class: "stat-card__desc" }, this.description)), h("div", { key: '7b8b1dc652ace8c975d944b8833af5ab01c7bfed', class: "stat-card__footer" }, h("div", { key: '3154ab32f16a58f3640cfae5e4a26ad402f2a306', class: "stat-card__meta" }, this.version && h("luster-badge", { key: '3cb211b7547c2e67d737c683f2f1aaa8023bf17e', variant: "default", size: "sm" }, this.version), this.status === 'beta' && h("luster-badge", { key: '81ef69da5d4fb0c22f17f48d133e262d3189aa18', variant: "beta", size: "sm" }, "Beta"), this.users && (h("span", { key: 'eab97e42ba598fb004be8bd1b995e2575ff0a769', class: "stat-card__users" }, h("svg", { key: '0b44cb51ab317b08c3ea4dc516e046101a3825ab', width: "12", height: "12", viewBox: "0 0 24 24", fill: "none" }, h("path", { key: 'a727ca4a5b7b4d47c4f4c29f716fa43999da498a', d: "M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2", stroke: "currentColor", "stroke-width": "2" }), h("circle", { key: '486f29a519eae561aaf9489bcad926e964bfe48f', cx: "9", cy: "7", r: "4", stroke: "currentColor", "stroke-width": "2" }), h("path", { key: 'bfcacb0897e2074d5fdc79c979e81357c7b8adea', d: "M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75", stroke: "currentColor", "stroke-width": "2" })), this.users))), this.hasToggle && h("luster-toggle", { key: '30b1744edb34562a3db4ae1773fa4b8ef7a33a79', checked: this.toggleOn }))));
17
+ }
18
+ static get is() { return "luster-stat-card"; }
19
+ static get encapsulation() { return "shadow"; }
20
+ static get originalStyleUrls() {
21
+ return {
22
+ "$": ["luster-stat-card.css"]
23
+ };
24
+ }
25
+ static get styleUrls() {
26
+ return {
27
+ "$": ["luster-stat-card.css"]
28
+ };
29
+ }
30
+ static get properties() {
31
+ return {
32
+ "heading": {
33
+ "type": "string",
34
+ "mutable": false,
35
+ "complexType": {
36
+ "original": "string",
37
+ "resolved": "string",
38
+ "references": {}
39
+ },
40
+ "required": false,
41
+ "optional": false,
42
+ "docs": {
43
+ "tags": [],
44
+ "text": ""
45
+ },
46
+ "getter": false,
47
+ "setter": false,
48
+ "reflect": false,
49
+ "attribute": "heading",
50
+ "defaultValue": "''"
51
+ },
52
+ "description": {
53
+ "type": "string",
54
+ "mutable": false,
55
+ "complexType": {
56
+ "original": "string",
57
+ "resolved": "string",
58
+ "references": {}
59
+ },
60
+ "required": false,
61
+ "optional": false,
62
+ "docs": {
63
+ "tags": [],
64
+ "text": ""
65
+ },
66
+ "getter": false,
67
+ "setter": false,
68
+ "reflect": false,
69
+ "attribute": "description",
70
+ "defaultValue": "''"
71
+ },
72
+ "version": {
73
+ "type": "string",
74
+ "mutable": false,
75
+ "complexType": {
76
+ "original": "string",
77
+ "resolved": "string",
78
+ "references": {}
79
+ },
80
+ "required": false,
81
+ "optional": false,
82
+ "docs": {
83
+ "tags": [],
84
+ "text": ""
85
+ },
86
+ "getter": false,
87
+ "setter": false,
88
+ "reflect": false,
89
+ "attribute": "version",
90
+ "defaultValue": "''"
91
+ },
92
+ "status": {
93
+ "type": "string",
94
+ "mutable": false,
95
+ "complexType": {
96
+ "original": "'active' | 'beta' | 'deprecated'",
97
+ "resolved": "\"active\" | \"beta\" | \"deprecated\"",
98
+ "references": {}
99
+ },
100
+ "required": false,
101
+ "optional": false,
102
+ "docs": {
103
+ "tags": [],
104
+ "text": ""
105
+ },
106
+ "getter": false,
107
+ "setter": false,
108
+ "reflect": false,
109
+ "attribute": "status",
110
+ "defaultValue": "'active'"
111
+ },
112
+ "users": {
113
+ "type": "string",
114
+ "mutable": false,
115
+ "complexType": {
116
+ "original": "string",
117
+ "resolved": "string",
118
+ "references": {}
119
+ },
120
+ "required": false,
121
+ "optional": false,
122
+ "docs": {
123
+ "tags": [],
124
+ "text": ""
125
+ },
126
+ "getter": false,
127
+ "setter": false,
128
+ "reflect": false,
129
+ "attribute": "users",
130
+ "defaultValue": "''"
131
+ },
132
+ "hasToggle": {
133
+ "type": "boolean",
134
+ "mutable": false,
135
+ "complexType": {
136
+ "original": "boolean",
137
+ "resolved": "boolean",
138
+ "references": {}
139
+ },
140
+ "required": false,
141
+ "optional": false,
142
+ "docs": {
143
+ "tags": [],
144
+ "text": ""
145
+ },
146
+ "getter": false,
147
+ "setter": false,
148
+ "reflect": false,
149
+ "attribute": "has-toggle",
150
+ "defaultValue": "false"
151
+ },
152
+ "toggleOn": {
153
+ "type": "boolean",
154
+ "mutable": false,
155
+ "complexType": {
156
+ "original": "boolean",
157
+ "resolved": "boolean",
158
+ "references": {}
159
+ },
160
+ "required": false,
161
+ "optional": false,
162
+ "docs": {
163
+ "tags": [],
164
+ "text": ""
165
+ },
166
+ "getter": false,
167
+ "setter": false,
168
+ "reflect": false,
169
+ "attribute": "toggle-on",
170
+ "defaultValue": "false"
171
+ },
172
+ "icon": {
173
+ "type": "string",
174
+ "mutable": false,
175
+ "complexType": {
176
+ "original": "string",
177
+ "resolved": "string",
178
+ "references": {}
179
+ },
180
+ "required": false,
181
+ "optional": false,
182
+ "docs": {
183
+ "tags": [],
184
+ "text": ""
185
+ },
186
+ "getter": false,
187
+ "setter": false,
188
+ "reflect": false,
189
+ "attribute": "icon",
190
+ "defaultValue": "''"
191
+ }
192
+ };
193
+ }
194
+ }
@@ -0,0 +1,75 @@
1
+ import { html } from "lit";
2
+ const meta = {
3
+ title: 'Cards/Stat Card',
4
+ tags: ['autodocs'],
5
+ parameters: {
6
+ docs: {
7
+ description: {
8
+ component: 'Cartão de componente/recurso com metadados e toggle opcional. Props: `heading`, `description`, `version`, `status`, `users`, `has-toggle`, `toggle-on`.',
9
+ },
10
+ },
11
+ },
12
+ argTypes: {
13
+ heading: { control: 'text', description: 'Nome do componente' },
14
+ description: { control: 'text', description: 'Descrição breve' },
15
+ version: { control: 'text', description: 'Versão exibida como badge' },
16
+ status: {
17
+ control: 'select',
18
+ options: ['active', 'beta', 'deprecated'],
19
+ description: 'Status do componente',
20
+ table: { defaultValue: { summary: 'active' } },
21
+ },
22
+ users: { control: 'text', description: 'Contagem de usuários' },
23
+ hasToggle: {
24
+ control: 'boolean',
25
+ description: 'Exibe toggle no rodapé',
26
+ table: { defaultValue: { summary: 'false' } },
27
+ },
28
+ toggleOn: {
29
+ control: 'boolean',
30
+ description: 'Estado inicial do toggle',
31
+ table: { defaultValue: { summary: 'false' } },
32
+ },
33
+ },
34
+ args: {
35
+ heading: 'luster-button',
36
+ description: 'Multi-variant action trigger with gradient, ghost, and text styles.',
37
+ version: 'v1.0',
38
+ status: 'active',
39
+ users: '2.4k',
40
+ hasToggle: true,
41
+ toggleOn: true,
42
+ },
43
+ };
44
+ export default meta;
45
+ const render = (args) => html `
46
+ <luster-stat-card
47
+ heading="${args.heading}"
48
+ description="${args.description}"
49
+ version="${args.version}"
50
+ status="${args.status}"
51
+ users="${args.users}"
52
+ ?has-toggle="${args.hasToggle}"
53
+ ?toggle-on="${args.toggleOn}"
54
+ ></luster-stat-card>
55
+ `;
56
+ export const Default = { render };
57
+ export const BetaStatus = {
58
+ name: 'Beta Status',
59
+ args: { heading: 'luster-hero', status: 'beta', version: 'v0.9', toggleOn: false },
60
+ render,
61
+ };
62
+ export const Deprecated = {
63
+ args: { heading: 'dc-button', status: 'deprecated', version: 'v0.1', users: '' },
64
+ render,
65
+ };
66
+ export const Grid = {
67
+ name: 'Card Grid',
68
+ render: () => html `
69
+ <div style="display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;max-width:780px;">
70
+ <luster-stat-card heading="luster-button" description="Action trigger" version="v1.0" status="active" users="2.4k" ?has-toggle="${true}" ?toggle-on="${true}"></luster-stat-card>
71
+ <luster-stat-card heading="luster-input" description="Text field" version="v1.0" status="active" users="1.9k" ?has-toggle="${true}" ?toggle-on="${true}"></luster-stat-card>
72
+ <luster-stat-card heading="luster-hero" description="Feature banner" version="v0.9" status="beta" users="340" ?has-toggle="${true}" ?toggle-on="${false}"></luster-stat-card>
73
+ </div>
74
+ `,
75
+ };
@@ -0,0 +1,35 @@
1
+ :host { display: block; }
2
+
3
+ .tabs { display: flex; flex-direction: column; gap: var(--dc-space-4); }
4
+
5
+ .tabs__list {
6
+ display: flex;
7
+ align-items: center;
8
+ gap: var(--dc-space-1);
9
+ background: var(--dc-surface-container-low);
10
+ border-radius: var(--dc-round-2);
11
+ padding: var(--dc-space-1);
12
+ width: fit-content;
13
+ }
14
+
15
+ .tabs__tab {
16
+ padding: var(--dc-space-1) var(--dc-space-4);
17
+ border: none;
18
+ border-radius: var(--dc-round-1);
19
+ background: transparent;
20
+ color: var(--dc-on-surface-variant);
21
+ font-family: var(--dc-font-body);
22
+ font-size: var(--dc-body-sm);
23
+ font-weight: 500;
24
+ cursor: pointer;
25
+ transition: all var(--dc-transition-fast);
26
+ white-space: nowrap;
27
+ }
28
+
29
+ .tabs__tab:hover { color: var(--dc-on-surface); background: rgba(64, 72, 93, 0.3); }
30
+
31
+ .tabs__tab--active {
32
+ background: var(--dc-surface-container-high);
33
+ color: var(--dc-on-surface);
34
+ font-weight: 600;
35
+ }
@@ -0,0 +1,116 @@
1
+ import { h } from "@stencil/core";
2
+ export class DcTabs {
3
+ constructor() {
4
+ this.tabs = '';
5
+ this.active = '';
6
+ this.activeTab = '';
7
+ this.parsedTabs = [];
8
+ }
9
+ componentWillLoad() {
10
+ var _a, _b;
11
+ if (typeof this.tabs === 'string') {
12
+ try {
13
+ this.parsedTabs = JSON.parse(this.tabs);
14
+ }
15
+ catch (_c) {
16
+ this.parsedTabs = [];
17
+ }
18
+ }
19
+ else {
20
+ this.parsedTabs = this.tabs;
21
+ }
22
+ this.activeTab = this.active || ((_b = (_a = this.parsedTabs[0]) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : '');
23
+ }
24
+ selectTab(value) {
25
+ this.activeTab = value;
26
+ this.dcTabChange.emit(value);
27
+ }
28
+ render() {
29
+ return (h("div", { key: '68e5a001a3c7e9f98a9239b18a3a54c8ded0c961', class: "tabs" }, h("div", { key: '5d14c39512d3e64c8a76745480b8a5789349d488', class: "tabs__list", role: "tablist" }, this.parsedTabs.map(tab => (h("button", { key: tab.value, class: `tabs__tab ${this.activeTab === tab.value ? 'tabs__tab--active' : ''}`, role: "tab", "aria-selected": this.activeTab === tab.value ? 'true' : 'false', onClick: () => this.selectTab(tab.value) }, tab.label)))), h("slot", { key: '2412bfdc1670989f3c348b1f289572cec10bd80f' })));
30
+ }
31
+ static get is() { return "luster-tabs"; }
32
+ static get encapsulation() { return "shadow"; }
33
+ static get originalStyleUrls() {
34
+ return {
35
+ "$": ["luster-tabs.css"]
36
+ };
37
+ }
38
+ static get styleUrls() {
39
+ return {
40
+ "$": ["luster-tabs.css"]
41
+ };
42
+ }
43
+ static get properties() {
44
+ return {
45
+ "tabs": {
46
+ "type": "string",
47
+ "mutable": false,
48
+ "complexType": {
49
+ "original": "TabItem[] | string",
50
+ "resolved": "TabItem[] | string",
51
+ "references": {
52
+ "TabItem": {
53
+ "location": "local",
54
+ "path": "C:/Users/vieir/Documents/estudos/luster/stencil-ds/src/components/luster-tabs/luster-tabs.tsx",
55
+ "id": "src/components/luster-tabs/luster-tabs.tsx::TabItem"
56
+ }
57
+ }
58
+ },
59
+ "required": false,
60
+ "optional": false,
61
+ "docs": {
62
+ "tags": [],
63
+ "text": ""
64
+ },
65
+ "getter": false,
66
+ "setter": false,
67
+ "reflect": false,
68
+ "attribute": "tabs",
69
+ "defaultValue": "''"
70
+ },
71
+ "active": {
72
+ "type": "string",
73
+ "mutable": false,
74
+ "complexType": {
75
+ "original": "string",
76
+ "resolved": "string",
77
+ "references": {}
78
+ },
79
+ "required": false,
80
+ "optional": false,
81
+ "docs": {
82
+ "tags": [],
83
+ "text": ""
84
+ },
85
+ "getter": false,
86
+ "setter": false,
87
+ "reflect": false,
88
+ "attribute": "active",
89
+ "defaultValue": "''"
90
+ }
91
+ };
92
+ }
93
+ static get states() {
94
+ return {
95
+ "activeTab": {}
96
+ };
97
+ }
98
+ static get events() {
99
+ return [{
100
+ "method": "dcTabChange",
101
+ "name": "dcTabChange",
102
+ "bubbles": true,
103
+ "cancelable": true,
104
+ "composed": true,
105
+ "docs": {
106
+ "tags": [],
107
+ "text": ""
108
+ },
109
+ "complexType": {
110
+ "original": "string",
111
+ "resolved": "string",
112
+ "references": {}
113
+ }
114
+ }];
115
+ }
116
+ }