@proyecto-viviana/ui 0.4.0 → 0.5.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 (112) hide show
  1. package/dist/styles.css +0 -3
  2. package/dist/vite.d.ts +1 -0
  3. package/dist/vite.d.ts.map +1 -1
  4. package/dist/vite.js +9 -1
  5. package/dist/vite.js.map +1 -1
  6. package/dist/vite.jsx +9 -1
  7. package/dist/vite.jsx.map +1 -1
  8. package/dist/viviana-tokens.css +240 -171
  9. package/package.json +3 -57
  10. package/src/vite.ts +13 -1
  11. package/src/viviana-tokens.css +240 -171
  12. package/dist/CalendarCard.d.ts +0 -2
  13. package/dist/CalendarCard.d.ts.map +0 -1
  14. package/dist/CalendarCard.js +0 -97
  15. package/dist/CalendarCard.js.map +0 -1
  16. package/dist/CalendarCard.jsx +0 -51
  17. package/dist/CalendarCard.jsx.map +0 -1
  18. package/dist/Chip.d.ts +0 -2
  19. package/dist/Chip.d.ts.map +0 -1
  20. package/dist/Chip.js +0 -2
  21. package/dist/Chip.jsx +0 -2
  22. package/dist/Conversation.d.ts +0 -2
  23. package/dist/Conversation.d.ts.map +0 -1
  24. package/dist/Conversation.js +0 -177
  25. package/dist/Conversation.js.map +0 -1
  26. package/dist/Conversation.jsx +0 -107
  27. package/dist/Conversation.jsx.map +0 -1
  28. package/dist/EventCard.d.ts +0 -2
  29. package/dist/EventCard.d.ts.map +0 -1
  30. package/dist/EventCard.js +0 -173
  31. package/dist/EventCard.js.map +0 -1
  32. package/dist/EventCard.jsx +0 -96
  33. package/dist/EventCard.jsx.map +0 -1
  34. package/dist/Logo.d.ts +0 -2
  35. package/dist/Logo.d.ts.map +0 -1
  36. package/dist/Logo.js +0 -116
  37. package/dist/Logo.js.map +0 -1
  38. package/dist/Logo.jsx +0 -101
  39. package/dist/Logo.jsx.map +0 -1
  40. package/dist/PageLayout.d.ts +0 -2
  41. package/dist/PageLayout.d.ts.map +0 -1
  42. package/dist/PageLayout.js +0 -31
  43. package/dist/PageLayout.js.map +0 -1
  44. package/dist/PageLayout.jsx +0 -23
  45. package/dist/PageLayout.jsx.map +0 -1
  46. package/dist/ProfileCard.d.ts +0 -2
  47. package/dist/ProfileCard.d.ts.map +0 -1
  48. package/dist/ProfileCard.js +0 -78
  49. package/dist/ProfileCard.js.map +0 -1
  50. package/dist/ProfileCard.jsx +0 -53
  51. package/dist/ProfileCard.jsx.map +0 -1
  52. package/dist/ProjectCard.d.ts +0 -2
  53. package/dist/ProjectCard.d.ts.map +0 -1
  54. package/dist/ProjectCard.js +0 -164
  55. package/dist/ProjectCard.js.map +0 -1
  56. package/dist/ProjectCard.jsx +0 -133
  57. package/dist/ProjectCard.jsx.map +0 -1
  58. package/dist/TimelineItem.d.ts +0 -2
  59. package/dist/TimelineItem.d.ts.map +0 -1
  60. package/dist/TimelineItem.js +0 -137
  61. package/dist/TimelineItem.js.map +0 -1
  62. package/dist/TimelineItem.jsx +0 -70
  63. package/dist/TimelineItem.jsx.map +0 -1
  64. package/dist/chip2.js +0 -82
  65. package/dist/chip2.js.map +0 -1
  66. package/dist/chip2.jsx +0 -68
  67. package/dist/chip2.jsx.map +0 -1
  68. package/dist/custom/calendar-card/index.d.ts +0 -12
  69. package/dist/custom/calendar-card/index.d.ts.map +0 -1
  70. package/dist/custom/chip/index.d.ts +0 -16
  71. package/dist/custom/chip/index.d.ts.map +0 -1
  72. package/dist/custom/conversation/index.d.ts +0 -32
  73. package/dist/custom/conversation/index.d.ts.map +0 -1
  74. package/dist/custom/event-card/index.d.ts +0 -30
  75. package/dist/custom/event-card/index.d.ts.map +0 -1
  76. package/dist/custom/header/index.d.ts +0 -12
  77. package/dist/custom/header/index.d.ts.map +0 -1
  78. package/dist/custom/lateral-nav/index.d.ts +0 -32
  79. package/dist/custom/lateral-nav/index.d.ts.map +0 -1
  80. package/dist/custom/logo/index.d.ts +0 -11
  81. package/dist/custom/logo/index.d.ts.map +0 -1
  82. package/dist/custom/nav-header/index.d.ts +0 -13
  83. package/dist/custom/nav-header/index.d.ts.map +0 -1
  84. package/dist/custom/page-layout/index.d.ts +0 -7
  85. package/dist/custom/page-layout/index.d.ts.map +0 -1
  86. package/dist/custom/profile-card/index.d.ts +0 -16
  87. package/dist/custom/profile-card/index.d.ts.map +0 -1
  88. package/dist/custom/project-card/index.d.ts +0 -13
  89. package/dist/custom/project-card/index.d.ts.map +0 -1
  90. package/dist/custom/timeline-item/index.d.ts +0 -28
  91. package/dist/custom/timeline-item/index.d.ts.map +0 -1
  92. package/src/CalendarCard.ts +0 -1
  93. package/src/Chip.ts +0 -1
  94. package/src/Conversation.ts +0 -1
  95. package/src/EventCard.ts +0 -1
  96. package/src/Logo.ts +0 -1
  97. package/src/PageLayout.ts +0 -1
  98. package/src/ProfileCard.ts +0 -1
  99. package/src/ProjectCard.ts +0 -1
  100. package/src/TimelineItem.ts +0 -1
  101. package/src/custom/calendar-card/index.tsx +0 -115
  102. package/src/custom/chip/index.tsx +0 -78
  103. package/src/custom/conversation/index.tsx +0 -199
  104. package/src/custom/event-card/index.tsx +0 -232
  105. package/src/custom/header/index.tsx +0 -64
  106. package/src/custom/lateral-nav/index.tsx +0 -134
  107. package/src/custom/logo/index.tsx +0 -53
  108. package/src/custom/nav-header/index.tsx +0 -98
  109. package/src/custom/page-layout/index.tsx +0 -33
  110. package/src/custom/profile-card/index.tsx +0 -114
  111. package/src/custom/project-card/index.tsx +0 -76
  112. package/src/custom/timeline-item/index.tsx +0 -140
@@ -1,51 +0,0 @@
1
- import { t as Chip } from "./chip2.jsx";
2
- /* empty css */
3
- /* empty css */
4
- /* empty css */
5
- import { For, Show } from "solid-js";
6
- //#region src/custom/calendar-card/index.tsx
7
- const card = " sd13 eb13 Ug13 qg13 Za13 LQAax0d13 Te13 Qe13 Se13 Re13 oe13 ne13 ke13 je13 _kc13 hc13 mc13 lc13 _jf13 i6nBqyb13 gg0eWE13 _nLeasBb13";
8
- const thumb = " ZKniM13 FKniM13 _va13 _Hb13 oc13 nc13 kc13 jc13 _kc13 hc13 mc13 lc13 _jf13 ij1j4Pd13";
9
- const body = " sd13 _ta13 Ue13 qe13 _ub13 Na13";
10
- const title = " uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-f13 vx13 xe13 _xa13 xX0cczbd13 _xX0cczba13 xfe13 _xfa13 xfX0cczbd13 _xfX0cczba13 _Fd13 _FnuYUweb13 pXDQpyb13 _Nc13 Pc13 _Yb13 _7c13";
11
- const followers = " uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-b13 vx13 xb13 _xa13 _Fd13 _FnuYUweb13 pxeCuqc13";
12
- const followerName = " xd13 _xa13 xX0cczbc13 _xX0cczba13 pj1j4Pd13";
13
- const tags = " sd13 _wb13 Ub13 qb13";
14
- function CalendarCard(props) {
15
- const displayedFollowers = () => props.followers?.slice(0, 2) ?? [];
16
- const remainingCount = () => {
17
- return (props.followerCount ?? props.followers?.length ?? 0) - displayedFollowers().length;
18
- };
19
- return <div class={`${card} ${props.class ?? ""}`}>
20
- <Show when={props.image}>
21
- <img class={thumb} src={props.image} alt={props.title} />
22
- </Show>
23
- <div class={body}>
24
- <span class={title}>{props.title}</span>
25
- <Show when={displayedFollowers().length > 0}>
26
- <span class={followers}>
27
- seguida por{" "}
28
- <For each={displayedFollowers()}>
29
- {(follower, index) => <>
30
- <span class={followerName}>{follower.name}</span>
31
- {index() < displayedFollowers().length - 1 && ", "}
32
- </>}
33
- </For>
34
- <Show when={remainingCount() > 0}>
35
- {" "}
36
- y <span class={followerName}>{remainingCount()} más</span>
37
- </Show>
38
- </span>
39
- </Show>
40
- <Show when={props.tags && props.tags.length > 0}>
41
- <div class={tags}>
42
- <For each={props.tags}>{(tag) => <Chip text={tag} variant="primary" />}</For>
43
- </div>
44
- </Show>
45
- </div>
46
- </div>;
47
- }
48
- //#endregion
49
- export { CalendarCard };
50
-
51
- //# sourceMappingURL=CalendarCard.jsx.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CalendarCard.jsx","names":[],"sources":["../src/custom/calendar-card/index.tsx"],"sourcesContent":["import { Show, For } from \"solid-js\";\nimport { Chip } from \"../chip\";\n// Styled via the S2 style() macro through viviana's own seam (../../style →\n// src/style.ts). A horizontal \"followed calendar\" card: square thumbnail +\n// title + followers line + tag chips, on the S2 ramps in Silapse colors.\nimport { style } from \"../../style\" with { type: \"macro\" };\n\nexport interface CalendarCardProps {\n title: string;\n image?: string;\n tags?: string[];\n followers?: { name: string }[];\n followerCount?: number;\n class?: string;\n}\n\nconst card = style({\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"full\",\n maxWidth: 500,\n padding: 12,\n borderRadius: \"xl\",\n borderWidth: 2,\n borderStyle: \"solid\",\n borderColor: \"[var(--color-primary-600)]\",\n backgroundColor: \"[var(--color-bg-300)]\",\n boxShadow: \"elevated\",\n});\n\nconst thumb = style({\n width: 80,\n height: 80,\n flexShrink: 0,\n objectFit: \"cover\",\n borderRadius: \"lg\",\n borderWidth: 2,\n borderStyle: \"solid\",\n borderColor: \"[var(--color-accent)]\",\n});\n\nconst body = style({\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n flexGrow: 1,\n minWidth: 0,\n});\n\nconst title = style({\n font: \"heading-sm\",\n color: \"[var(--color-primary-100)]\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n});\n\nconst followers = style({\n font: \"ui-sm\",\n color: \"[var(--color-text-secondary)]\",\n});\n\nconst followerName = style({\n fontWeight: \"bold\",\n color: \"[var(--color-accent)]\",\n});\n\nconst tags = style({\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 4,\n});\n\nexport function CalendarCard(props: CalendarCardProps) {\n const displayedFollowers = () => props.followers?.slice(0, 2) ?? [];\n const remainingCount = () => {\n const total = props.followerCount ?? props.followers?.length ?? 0;\n const displayed = displayedFollowers().length;\n return total - displayed;\n };\n\n return (\n <div class={`${card} ${props.class ?? \"\"}`}>\n <Show when={props.image}>\n <img class={thumb} src={props.image} alt={props.title} />\n </Show>\n <div class={body}>\n <span class={title}>{props.title}</span>\n <Show when={displayedFollowers().length > 0}>\n <span class={followers}>\n seguida por{\" \"}\n <For each={displayedFollowers()}>\n {(follower, index) => (\n <>\n <span class={followerName}>{follower.name}</span>\n {index() < displayedFollowers().length - 1 && \", \"}\n </>\n )}\n </For>\n <Show when={remainingCount() > 0}>\n {\" \"}\n y <span class={followerName}>{remainingCount()} más</span>\n </Show>\n </span>\n </Show>\n <Show when={props.tags && props.tags.length > 0}>\n <div class={tags}>\n <For each={props.tags}>{(tag) => <Chip text={tag} variant=\"primary\" />}</For>\n </div>\n </Show>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;AAgBA,MAAM,QAAA;AAeN,MAAM,OAAA;AAWN,MAAM,QAAA;AAQN,MAAM,YAAA;AAQN,MAAM,eAAA;AAKN,MAAM,OAAA;AAKN,SAAM,aAAA,OAAA;CAMN,MAAA,2BAAqD,MAAA,WAAA,MAAA,GAAA,CAAA,KAAA,CAAA;CACnD,MAAM,uBAAA;EACN,QAAM,MAAA,iBAAiB,MAAA,WAAA,UAAA,KAAA,mBAAA,EAAA;;CAIvB,OAAA,CAAA,IAAA,OAAA,GAAA,KAAA,GAAA,MAAA,SAAA,MAAA;MAEA,CAAA,KACG,MAAI,MAAU,OAAQ;QACpB,CAAA,IAAK,OAAM,OAAM,KAAO,MAAA,OAAA,KAAA,MAAA,SAAA;QACvB,KAAK;MACP,CAAA,IAAE,OAAK,MAAA;QACN,CAAA,KAAI,OAAO,QAAM,MAAA,MAAA,EAAA,KAAA;QAChB,CAAC,KAAK,MAAA,mBAAqB,EAAK,SAAQ,GAAA;UACvC,CAAA,KAAK,OAAM,WAAA;wBACG,IAAA;0CACK,GAAA;gBACf,UAAU,UAAA,EAAA;kBACP,CAAA,KAAA,OAAU,eACR,SAAA,KAAA,EAAA,KAAA;mBACC,MAAK,IAAA,mBAAsB,EAAA,SAAS,KAAO,KAAK;oBAChD;kBACH;YAEJ,CAAA,KAAM,MAAA,eAAA,IAAA,GAAA;eACL,IAAK;gBACH,CAAA,KAAI,OAAA,eAAA,eAAA,EAAA,IAAA,EAAA,KAAA;mBACF;YACL,KAAE;UACJ,KAAE;QACJ,CAAA,KAAE,MAAK,MAAA,QAAA,MAAA,KAAA,SAAA,GAAA;UACN,CAAA,IAAK,OAAM,MAAM;YACf,CAAA,IAAI,MAAO,MAAM,QAAA,QAAA,CAAA,KAAA,MAAA,KAAA,qBAAA,EAAA,IAAA;YAChB,IAAC;UACH,KAAE;QACJ,IAAE;MACJ"}
package/dist/Chip.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from "./custom/chip";
2
- //# sourceMappingURL=Chip.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../src/Chip.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
package/dist/Chip.js DELETED
@@ -1,2 +0,0 @@
1
- import { t as Chip } from "./chip2.js";
2
- export { Chip };
package/dist/Chip.jsx DELETED
@@ -1,2 +0,0 @@
1
- import { t as Chip } from "./chip2.jsx";
2
- export { Chip };
@@ -1,2 +0,0 @@
1
- export * from "./custom/conversation";
2
- //# sourceMappingURL=Conversation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Conversation.d.ts","sourceRoot":"","sources":["../src/Conversation.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -1,177 +0,0 @@
1
- /* empty css */
2
- import { Avatar } from "@proyecto-viviana/solid-spectrum";
3
- import { className, createComponent, effect, getNextElement, getNextMarker, insert, memo, template } from "solid-js/web";
4
- import { For, Show } from "solid-js";
5
- import { Button } from "@proyecto-viviana/solidaria-components";
6
- //#region src/custom/conversation/index.tsx
7
- var _tmpl$ = /*#__PURE__*/ template(`<span class=" uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-b13 vx13 xc13 _xa13 xfd13 _xfa13 xfX0cczbc13 _xfX0cczba13 _Fd13 _FnuYUweb13 pcoywsd13 _va13">`), _tmpl$2 = /*#__PURE__*/ template(`<p class=" uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-b13 vx13 xb13 _xa13 _Fd13 _FnuYUweb13 pxeCuqc13 _Nc13 Pc13 _Yb13 _7c13">`), _tmpl$3 = /*#__PURE__*/ template(`<div class=" sd13 _ta13 Ua13 qa13 _ub13 Na13"><div class=" sd13 eb13 _Ce13 Ue13 qe13"><span class=" uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-c13 vx13 xd13 _xa13 xX0cczbc13 _xX0cczba13 _Fd13 _FnuYUweb13 pXDQpyb13 _Nc13 Pc13 _Yb13 _7c13"></span><!$><!/></div><!$><!/>`), _tmpl$4 = /*#__PURE__*/ template(`<span class=" sd13 eb13 _Ca13 _va13 Zm13 Fn13 og13 ng13 kg13 jg13 uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-b13 vx13 xd13 _xa13 xX0cczbc13 _xX0cczba13 _Fd13 _FnuYUweb13 pTloWE13 gj1j4Pd13">`), _tmpl$5 = /*#__PURE__*/ template(`<span>`), _tmpl$6 = /*#__PURE__*/ template(`<div><div><p></p><!$><!/>`), _tmpl$7 = /*#__PURE__*/ template(`<div>`);
8
- const preview = " sd13 eb13 Ug13 qg13 Za13 Te13 Qe13 Se13 Re13 oc13 nc13 kc13 jc13 _Wd13 ry13 g913 _je13";
9
- function ConversationPreview(props) {
10
- return createComponent(Button, {
11
- type: "button",
12
- get ["class"]() {
13
- return `${preview} ${props.class ?? ""}`;
14
- },
15
- onPress: () => props.onClick?.(),
16
- get children() {
17
- return [
18
- createComponent(Avatar, {
19
- get src() {
20
- return props.user.avatar;
21
- },
22
- get alt() {
23
- return props.user.name;
24
- },
25
- get online() {
26
- return props.user.online;
27
- },
28
- size: "md"
29
- }),
30
- (() => {
31
- var _el$ = getNextElement(_tmpl$3), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$5 = _el$3.nextSibling, [_el$6, _co$] = getNextMarker(_el$5.nextSibling), _el$8 = _el$2.nextSibling, [_el$9, _co$2] = getNextMarker(_el$8.nextSibling);
32
- insert(_el$3, () => props.user.name);
33
- insert(_el$2, createComponent(Show, {
34
- get when() {
35
- return props.timestamp;
36
- },
37
- get children() {
38
- var _el$4 = getNextElement(_tmpl$);
39
- insert(_el$4, () => props.timestamp);
40
- return _el$4;
41
- }
42
- }), _el$6, _co$);
43
- insert(_el$, createComponent(Show, {
44
- get when() {
45
- return props.lastMessage;
46
- },
47
- get children() {
48
- var _el$7 = getNextElement(_tmpl$2);
49
- insert(_el$7, () => props.lastMessage);
50
- return _el$7;
51
- }
52
- }), _el$9, _co$2);
53
- return _el$;
54
- })(),
55
- createComponent(Show, {
56
- get when() {
57
- return memo(() => !!props.unreadCount)() && props.unreadCount > 0;
58
- },
59
- get children() {
60
- var _el$0 = getNextElement(_tmpl$4);
61
- insert(_el$0, () => props.unreadCount);
62
- return _el$0;
63
- }
64
- })
65
- ];
66
- }
67
- });
68
- }
69
- const bubbleRow = function anonymous(props) {
70
- let rules = " ";
71
- rules += " sd13";
72
- if (props.isUser) rules += " _Cb13";
73
- else rules += " _Cg13";
74
- return rules;
75
- };
76
- const bubble = function anonymous(props) {
77
- let rules = " ";
78
- rules += " sd13";
79
- rules += " _ta13";
80
- rules += " Ua13";
81
- rules += " qa13";
82
- rules += " LbmOfn13";
83
- rules += " Sf13";
84
- rules += " Rf13";
85
- rules += " Tt13";
86
- rules += " Qt13";
87
- rules += " oc13";
88
- rules += " nc13";
89
- rules += " kc13";
90
- rules += " jc13";
91
- if (props.isUser) rules += " gj1j4Pd13";
92
- else rules += " gg0eWE13";
93
- if (props.isUser) rules += " pTloWE13";
94
- else rules += " pXDQpyb13";
95
- return rules;
96
- };
97
- const bubbleTime = function anonymous(props) {
98
- let rules = " ";
99
- rules += " uk13";
100
- rules += " ucJ9TBTb13";
101
- rules += " ud3Euai13";
102
- rules += " uea13";
103
- rules += " ugb13";
104
- rules += " uhd13";
105
- rules += " uje13";
106
- rules += " u2NhKxcl13";
107
- rules += " uic13";
108
- rules += " -_6BNtrc-b13";
109
- rules += " vx13";
110
- rules += " xc13";
111
- rules += " _xa13";
112
- rules += " xfd13";
113
- rules += " _xfa13";
114
- rules += " xfX0cczbc13";
115
- rules += " _xfX0cczba13";
116
- rules += " _Fd13";
117
- rules += " _FnuYUweb13";
118
- if (props.isUser) rules += " pg0eWE13";
119
- else rules += " pcoywsd13";
120
- return rules;
121
- };
122
- function ConversationBubble(props) {
123
- const isUser = () => props.sender === "user";
124
- return (() => {
125
- var _el$1 = getNextElement(_tmpl$6), _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$13 = _el$11.nextSibling, [_el$14, _co$3] = getNextMarker(_el$13.nextSibling);
126
- insert(_el$11, () => props.content);
127
- insert(_el$10, createComponent(Show, {
128
- get when() {
129
- return props.timestamp;
130
- },
131
- get children() {
132
- var _el$12 = getNextElement(_tmpl$5);
133
- insert(_el$12, () => props.timestamp);
134
- effect(() => className(_el$12, bubbleTime({ isUser: isUser() })));
135
- return _el$12;
136
- }
137
- }), _el$14, _co$3);
138
- effect((_p$) => {
139
- var _v$ = `${bubbleRow({ isUser: isUser() })} ${props.class ?? ""}`, _v$2 = bubble({ isUser: isUser() });
140
- _v$ !== _p$.e && className(_el$1, _p$.e = _v$);
141
- _v$2 !== _p$.t && className(_el$10, _p$.t = _v$2);
142
- return _p$;
143
- }, {
144
- e: void 0,
145
- t: void 0
146
- });
147
- return _el$1;
148
- })();
149
- }
150
- const thread = " sd13 _ta13 Ue13 qe13 Tf13 Qf13 Sf13 Rf13";
151
- function Conversation(props) {
152
- return (() => {
153
- var _el$15 = getNextElement(_tmpl$7);
154
- insert(_el$15, createComponent(For, {
155
- get each() {
156
- return props.messages;
157
- },
158
- children: (message) => createComponent(ConversationBubble, {
159
- get content() {
160
- return message.content;
161
- },
162
- get sender() {
163
- return message.sender;
164
- },
165
- get timestamp() {
166
- return message.timestamp;
167
- }
168
- })
169
- }));
170
- effect(() => className(_el$15, `${thread} ${props.class ?? ""}`));
171
- return _el$15;
172
- })();
173
- }
174
- //#endregion
175
- export { Conversation, ConversationBubble, ConversationPreview };
176
-
177
- //# sourceMappingURL=Conversation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Conversation.js","names":[],"sources":["../src/custom/conversation/index.tsx"],"sourcesContent":["import { Show, For } from \"solid-js\";\nimport { Avatar } from \"@proyecto-viviana/solid-spectrum\";\nimport { Button as HeadlessButton } from \"@proyecto-viviana/solidaria-components\";\n// Styled via the S2 style() macro through viviana's own seam (../../style →\n// src/style.ts). A conversation preview row, message bubbles, and a thread\n// list, on the S2 spacing/radius ramps in Silapse colors.\nimport { style } from \"../../style\" with { type: \"macro\" };\n\nexport interface Message {\n id: string;\n content: string;\n sender: \"user\" | \"other\";\n timestamp?: string;\n}\n\nexport interface ConversationPreviewProps {\n user: {\n name: string;\n avatar?: string;\n online?: boolean;\n };\n lastMessage?: string;\n unreadCount?: number;\n timestamp?: string;\n onClick?: () => void;\n class?: string;\n}\n\nconst preview = style({\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"full\",\n padding: 12,\n borderRadius: \"lg\",\n textAlign: \"start\",\n cursor: \"pointer\",\n backgroundColor: \"transparent\",\n borderStyle: \"none\",\n});\n\nconst previewBody = style({\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n flexGrow: 1,\n minWidth: 0,\n});\n\nconst previewTop = style({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 8,\n});\n\nconst previewName = style({\n font: \"ui\",\n fontWeight: \"bold\",\n color: \"[var(--color-primary-100)]\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n});\n\nconst previewTime = style({\n font: \"detail-sm\",\n color: \"[var(--color-text-muted)]\",\n flexShrink: 0,\n});\n\nconst previewMessage = style({\n font: \"ui-sm\",\n color: \"[var(--color-text-secondary)]\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n});\n\nconst unread = style({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n width: 20,\n height: 20,\n borderRadius: \"full\",\n font: \"detail-sm\",\n fontWeight: \"bold\",\n backgroundColor: \"[var(--color-accent)]\",\n color: \"[var(--color-bg-400)]\",\n});\n\nexport function ConversationPreview(props: ConversationPreviewProps) {\n return (\n <HeadlessButton\n type=\"button\"\n class={`${preview} ${props.class ?? \"\"}`}\n onPress={() => props.onClick?.()}\n >\n <Avatar src={props.user.avatar} alt={props.user.name} online={props.user.online} size=\"md\" />\n <div class={previewBody}>\n <div class={previewTop}>\n <span class={previewName}>{props.user.name}</span>\n <Show when={props.timestamp}>\n <span class={previewTime}>{props.timestamp}</span>\n </Show>\n </div>\n <Show when={props.lastMessage}>\n <p class={previewMessage}>{props.lastMessage}</p>\n </Show>\n </div>\n <Show when={props.unreadCount && props.unreadCount > 0}>\n <span class={unread}>{props.unreadCount}</span>\n </Show>\n </HeadlessButton>\n );\n}\n\nexport interface ConversationBubbleProps {\n content: string;\n sender: \"user\" | \"other\";\n timestamp?: string;\n class?: string;\n}\n\nconst bubbleRow = style<{ isUser: boolean }>({\n display: \"flex\",\n justifyContent: { default: \"start\", isUser: \"end\" },\n});\n\nconst bubble = style<{ isUser: boolean }>({\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n maxWidth: \"[70%]\",\n paddingX: 16,\n paddingY: 8,\n borderRadius: \"lg\",\n backgroundColor: {\n default: \"[var(--color-bg-300)]\",\n isUser: \"[var(--color-accent)]\",\n },\n color: {\n default: \"[var(--color-primary-100)]\",\n isUser: \"[var(--color-bg-400)]\",\n },\n});\n\nconst bubbleTime = style<{ isUser: boolean }>({\n font: \"detail-sm\",\n color: {\n default: \"[var(--color-text-muted)]\",\n isUser: \"[var(--color-bg-300)]\",\n },\n});\n\nexport function ConversationBubble(props: ConversationBubbleProps) {\n const isUser = () => props.sender === \"user\";\n\n return (\n <div class={`${bubbleRow({ isUser: isUser() })} ${props.class ?? \"\"}`}>\n <div class={bubble({ isUser: isUser() })}>\n <p>{props.content}</p>\n <Show when={props.timestamp}>\n <span class={bubbleTime({ isUser: isUser() })}>{props.timestamp}</span>\n </Show>\n </div>\n </div>\n );\n}\n\nexport interface ConversationProps {\n messages: Message[];\n class?: string;\n}\n\nconst thread = style({\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n padding: 16,\n});\n\nexport function Conversation(props: ConversationProps) {\n return (\n <div class={`${thread} ${props.class ?? \"\"}`}>\n <For each={props.messages}>\n {(message) => (\n <ConversationBubble\n content={message.content}\n sender={message.sender}\n timestamp={message.timestamp}\n />\n )}\n </For>\n </div>\n );\n}\n"],"mappings":";;;;;;;AA4BA,MAAM,UAAA;AAiEN,SAAgB,oBAAoB,OAA+B;CACjE,OAAA,gBACG,QAAA;EACC,MAAA;EAAA,KAAA,WAAA;GAAA,OACO,GAAG,QAAA,GAAW,MAAM,SAAS;EAAI;EACxC,eAAe,MAAM,UAAO;EAAA,IAAA,WAAA;GAAA,OAAA;IAAA,gBAE3B,QAAA;KAAA,IAAO,MAAA;MAAA,OAAK,MAAM,KAAK;KAAM;KAAA,IAAE,MAAA;MAAA,OAAK,MAAM,KAAK;KAAI;KAAA,IAAE,SAAA;MAAA,OAAQ,MAAM,KAAK;KAAM;KAAE,MAAA;IAAA,CAAA;WAAA;KAAA,IAAA,OAAA,eAAA,OAAA,GAAA,QAAA,KAAA,YAAA,QAAA,MAAA,YAAA,QAAA,MAAA,aAAA,CAAA,OAAA,QAAA,cAAA,MAAA,WAAA,GAAA,QAAA,MAAA,aAAA,CAAA,OAAA,SAAA,cAAA,MAAA,WAAA;KAAA,OAAA,aAGlD,MAAM,KAAK,IAAI;KAAA,OAAA,OAAA,gBACzC,MAAA;MAAA,IAAK,OAAA;OAAA,OAAM,MAAM;MAAS;MAAA,IAAA,WAAA;OAAA,IAAA,QAAA,eAAA,MAAA;OAAA,OAAA,aACE,MAAM,SAAS;OAAA,OAAA;MAAA;KAAA,CAAA,GAAA,OAAA,IAAA;KAAA,OAAA,MAAA,gBAG7C,MAAA;MAAA,IAAK,OAAA;OAAA,OAAM,MAAM;MAAW;MAAA,IAAA,WAAA;OAAA,IAAA,QAAA,eAAA,OAAA;OAAA,OAAA,aACA,MAAM,WAAW;OAAA,OAAA;MAAA;KAAA,CAAA,GAAA,OAAA,KAAA;KAAA,OAAA;IAAA,GAAA;IAAA,gBAG/C,MAAA;KAAA,IAAK,OAAA;MAAA,OAAM,WAAA,CAAA,CAAA,MAAM,WAAW,EAAA,KAAI,MAAM,cAAc;KAAA;KAAA,IAAA,WAAA;MAAA,IAAA,QAAA,eAAA,OAAA;MAAA,OAAA,aAC7B,MAAM,WAAW;MAAA,OAAA;KAAA;IAAA,CAAA;GAAA;EAAA;CAAA,CAAA;AAI/C;AASA,MAAM,YAAA,SAAA,UAAA,OAAA;;;;;;;AAKN,MAAM,SAAA,SAAA,UAAA,OAAA;;;;;;;;;;;;;;;;;;;;;AAkBN,MAAM,aAAA,SAAA,UAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAQN,SAAgB,mBAAmB,OAA8B;CAC/D,MAAM,eAAe,MAAM,WAAW;CAEtC,cAAA;EAAA,IAAA,QAAA,eAAA,OAAA,GAAA,SAAA,MAAA,YAAA,SAAA,OAAA,YAAA,SAAA,OAAA,aAAA,CAAA,QAAA,SAAA,cAAA,OAAA,WAAA;EAAA,OAAA,cAGU,MAAM,OAAO;EAAA,OAAA,QAAA,gBAChB,MAAA;GAAA,IAAK,OAAA;IAAA,OAAM,MAAM;GAAS;GAAA,IAAA,WAAA;IAAA,IAAA,SAAA,eAAA,OAAA;IAAA,OAAA,cACuB,MAAM,SAAS;IAAA,aAAA,UAAA,QAAlD,WAAW,EAAE,QAAQ,OAAA,EAAS,CAAA,CAAA,CAAA;IAAA,OAAA;GAAA;EAAA,CAAA,GAAA,QAAA,KAAA;EAAA,QAAA,QAAA;GAAA,IAAA,MAJrC,GAAG,UAAU,EAAE,QAAQ,OAAA,EAAS,CAAA,EAAA,GAAM,MAAM,SAAS,MAAI,OACvD,OAAO,EAAE,QAAQ,OAAA,EAAS,CAAA;GAAA,QAAA,IAAA,KAAA,UAAA,OAAA,IAAA,IAAA,GAAA;GAAA,SAAA,IAAA,KAAA,UAAA,QAAA,IAAA,IAAA,IAAA;GAAA,OAAA;EAAA,GAAA;GAAA,GAAA,KAAA;GAAA,GAAA,KAAA;EAAA,CAAA;EAAA,OAAA;CAAA,GAAA;AAQ5C;AAOA,MAAM,SAAA;AAON,SAAgB,aAAa,OAAwB;CACnD,cAAA;EAAA,IAAA,SAAA,eAAA,OAAA;EAAA,OAAA,QAAA,gBAEK,KAAA;GAAA,IAAI,OAAA;IAAA,OAAM,MAAM;GAAQ;GAAA,WACrB,YAAA,gBACC,oBAAA;IAAA,IACC,UAAA;KAAA,OAAS,QAAQ;IAAO;IAAA,IACxB,SAAA;KAAA,OAAQ,QAAQ;IAAM;IAAA,IACtB,YAAA;KAAA,OAAW,QAAQ;IAAS;GAAA,CAAA;EAEhC,CAAA,CAAA;EAAA,aAAA,UAAA,QARQ,GAAG,OAAA,GAAU,MAAM,SAAS,IAAI,CAAA;EAAA,OAAA;CAAA,GAAA;AAYhD"}
@@ -1,107 +0,0 @@
1
- /* empty css */
2
- import { Avatar } from "@proyecto-viviana/solid-spectrum";
3
- import { For, Show } from "solid-js";
4
- import { Button } from "@proyecto-viviana/solidaria-components";
5
- //#region src/custom/conversation/index.tsx
6
- const preview = " sd13 eb13 Ug13 qg13 Za13 Te13 Qe13 Se13 Re13 oc13 nc13 kc13 jc13 _Wd13 ry13 g913 _je13";
7
- const previewBody = " sd13 _ta13 Ua13 qa13 _ub13 Na13";
8
- const previewTop = " sd13 eb13 _Ce13 Ue13 qe13";
9
- const previewName = " uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-c13 vx13 xd13 _xa13 xX0cczbc13 _xX0cczba13 _Fd13 _FnuYUweb13 pXDQpyb13 _Nc13 Pc13 _Yb13 _7c13";
10
- const previewTime = " uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-b13 vx13 xc13 _xa13 xfd13 _xfa13 xfX0cczbc13 _xfX0cczba13 _Fd13 _FnuYUweb13 pcoywsd13 _va13";
11
- const previewMessage = " uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-b13 vx13 xb13 _xa13 _Fd13 _FnuYUweb13 pxeCuqc13 _Nc13 Pc13 _Yb13 _7c13";
12
- const unread = " sd13 eb13 _Ca13 _va13 Zm13 Fn13 og13 ng13 kg13 jg13 uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-b13 vx13 xd13 _xa13 xX0cczbc13 _xX0cczba13 _Fd13 _FnuYUweb13 pTloWE13 gj1j4Pd13";
13
- function ConversationPreview(props) {
14
- return <Button type="button" class={`${preview} ${props.class ?? ""}`} onPress={() => props.onClick?.()}>
15
- <Avatar src={props.user.avatar} alt={props.user.name} online={props.user.online} size="md" />
16
- <div class={previewBody}>
17
- <div class={previewTop}>
18
- <span class={previewName}>{props.user.name}</span>
19
- <Show when={props.timestamp}>
20
- <span class={previewTime}>{props.timestamp}</span>
21
- </Show>
22
- </div>
23
- <Show when={props.lastMessage}>
24
- <p class={previewMessage}>{props.lastMessage}</p>
25
- </Show>
26
- </div>
27
- <Show when={props.unreadCount && props.unreadCount > 0}>
28
- <span class={unread}>{props.unreadCount}</span>
29
- </Show>
30
- </Button>;
31
- }
32
- const bubbleRow = function anonymous(props) {
33
- let rules = " ";
34
- rules += " sd13";
35
- if (props.isUser) rules += " _Cb13";
36
- else rules += " _Cg13";
37
- return rules;
38
- };
39
- const bubble = function anonymous(props) {
40
- let rules = " ";
41
- rules += " sd13";
42
- rules += " _ta13";
43
- rules += " Ua13";
44
- rules += " qa13";
45
- rules += " LbmOfn13";
46
- rules += " Sf13";
47
- rules += " Rf13";
48
- rules += " Tt13";
49
- rules += " Qt13";
50
- rules += " oc13";
51
- rules += " nc13";
52
- rules += " kc13";
53
- rules += " jc13";
54
- if (props.isUser) rules += " gj1j4Pd13";
55
- else rules += " gg0eWE13";
56
- if (props.isUser) rules += " pTloWE13";
57
- else rules += " pXDQpyb13";
58
- return rules;
59
- };
60
- const bubbleTime = function anonymous(props) {
61
- let rules = " ";
62
- rules += " uk13";
63
- rules += " ucJ9TBTb13";
64
- rules += " ud3Euai13";
65
- rules += " uea13";
66
- rules += " ugb13";
67
- rules += " uhd13";
68
- rules += " uje13";
69
- rules += " u2NhKxcl13";
70
- rules += " uic13";
71
- rules += " -_6BNtrc-b13";
72
- rules += " vx13";
73
- rules += " xc13";
74
- rules += " _xa13";
75
- rules += " xfd13";
76
- rules += " _xfa13";
77
- rules += " xfX0cczbc13";
78
- rules += " _xfX0cczba13";
79
- rules += " _Fd13";
80
- rules += " _FnuYUweb13";
81
- if (props.isUser) rules += " pg0eWE13";
82
- else rules += " pcoywsd13";
83
- return rules;
84
- };
85
- function ConversationBubble(props) {
86
- const isUser = () => props.sender === "user";
87
- return <div class={`${bubbleRow({ isUser: isUser() })} ${props.class ?? ""}`}>
88
- <div class={bubble({ isUser: isUser() })}>
89
- <p>{props.content}</p>
90
- <Show when={props.timestamp}>
91
- <span class={bubbleTime({ isUser: isUser() })}>{props.timestamp}</span>
92
- </Show>
93
- </div>
94
- </div>;
95
- }
96
- const thread = " sd13 _ta13 Ue13 qe13 Tf13 Qf13 Sf13 Rf13";
97
- function Conversation(props) {
98
- return <div class={`${thread} ${props.class ?? ""}`}>
99
- <For each={props.messages}>
100
- {(message) => <ConversationBubble content={message.content} sender={message.sender} timestamp={message.timestamp} />}
101
- </For>
102
- </div>;
103
- }
104
- //#endregion
105
- export { Conversation, ConversationBubble, ConversationPreview };
106
-
107
- //# sourceMappingURL=Conversation.jsx.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Conversation.jsx","names":[],"sources":["../src/custom/conversation/index.tsx"],"sourcesContent":["import { Show, For } from \"solid-js\";\nimport { Avatar } from \"@proyecto-viviana/solid-spectrum\";\nimport { Button as HeadlessButton } from \"@proyecto-viviana/solidaria-components\";\n// Styled via the S2 style() macro through viviana's own seam (../../style →\n// src/style.ts). A conversation preview row, message bubbles, and a thread\n// list, on the S2 spacing/radius ramps in Silapse colors.\nimport { style } from \"../../style\" with { type: \"macro\" };\n\nexport interface Message {\n id: string;\n content: string;\n sender: \"user\" | \"other\";\n timestamp?: string;\n}\n\nexport interface ConversationPreviewProps {\n user: {\n name: string;\n avatar?: string;\n online?: boolean;\n };\n lastMessage?: string;\n unreadCount?: number;\n timestamp?: string;\n onClick?: () => void;\n class?: string;\n}\n\nconst preview = style({\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"full\",\n padding: 12,\n borderRadius: \"lg\",\n textAlign: \"start\",\n cursor: \"pointer\",\n backgroundColor: \"transparent\",\n borderStyle: \"none\",\n});\n\nconst previewBody = style({\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n flexGrow: 1,\n minWidth: 0,\n});\n\nconst previewTop = style({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 8,\n});\n\nconst previewName = style({\n font: \"ui\",\n fontWeight: \"bold\",\n color: \"[var(--color-primary-100)]\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n});\n\nconst previewTime = style({\n font: \"detail-sm\",\n color: \"[var(--color-text-muted)]\",\n flexShrink: 0,\n});\n\nconst previewMessage = style({\n font: \"ui-sm\",\n color: \"[var(--color-text-secondary)]\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n});\n\nconst unread = style({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n width: 20,\n height: 20,\n borderRadius: \"full\",\n font: \"detail-sm\",\n fontWeight: \"bold\",\n backgroundColor: \"[var(--color-accent)]\",\n color: \"[var(--color-bg-400)]\",\n});\n\nexport function ConversationPreview(props: ConversationPreviewProps) {\n return (\n <HeadlessButton\n type=\"button\"\n class={`${preview} ${props.class ?? \"\"}`}\n onPress={() => props.onClick?.()}\n >\n <Avatar src={props.user.avatar} alt={props.user.name} online={props.user.online} size=\"md\" />\n <div class={previewBody}>\n <div class={previewTop}>\n <span class={previewName}>{props.user.name}</span>\n <Show when={props.timestamp}>\n <span class={previewTime}>{props.timestamp}</span>\n </Show>\n </div>\n <Show when={props.lastMessage}>\n <p class={previewMessage}>{props.lastMessage}</p>\n </Show>\n </div>\n <Show when={props.unreadCount && props.unreadCount > 0}>\n <span class={unread}>{props.unreadCount}</span>\n </Show>\n </HeadlessButton>\n );\n}\n\nexport interface ConversationBubbleProps {\n content: string;\n sender: \"user\" | \"other\";\n timestamp?: string;\n class?: string;\n}\n\nconst bubbleRow = style<{ isUser: boolean }>({\n display: \"flex\",\n justifyContent: { default: \"start\", isUser: \"end\" },\n});\n\nconst bubble = style<{ isUser: boolean }>({\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n maxWidth: \"[70%]\",\n paddingX: 16,\n paddingY: 8,\n borderRadius: \"lg\",\n backgroundColor: {\n default: \"[var(--color-bg-300)]\",\n isUser: \"[var(--color-accent)]\",\n },\n color: {\n default: \"[var(--color-primary-100)]\",\n isUser: \"[var(--color-bg-400)]\",\n },\n});\n\nconst bubbleTime = style<{ isUser: boolean }>({\n font: \"detail-sm\",\n color: {\n default: \"[var(--color-text-muted)]\",\n isUser: \"[var(--color-bg-300)]\",\n },\n});\n\nexport function ConversationBubble(props: ConversationBubbleProps) {\n const isUser = () => props.sender === \"user\";\n\n return (\n <div class={`${bubbleRow({ isUser: isUser() })} ${props.class ?? \"\"}`}>\n <div class={bubble({ isUser: isUser() })}>\n <p>{props.content}</p>\n <Show when={props.timestamp}>\n <span class={bubbleTime({ isUser: isUser() })}>{props.timestamp}</span>\n </Show>\n </div>\n </div>\n );\n}\n\nexport interface ConversationProps {\n messages: Message[];\n class?: string;\n}\n\nconst thread = style({\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n padding: 16,\n});\n\nexport function Conversation(props: ConversationProps) {\n return (\n <div class={`${thread} ${props.class ?? \"\"}`}>\n <For each={props.messages}>\n {(message) => (\n <ConversationBubble\n content={message.content}\n sender={message.sender}\n timestamp={message.timestamp}\n />\n )}\n </For>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AA4BA,MAAM,cAAA;AAaN,MAAM,cAAA;AAQN,MAAM,iBAAA;AAON,MAAM,SAAA;AASN,SAAM,oBAAA,OAAA;CAMN,OAAM,CAAA,OAAA,cAAA,OAAA,GAAA,QAAA,GAAA,MAAA,SAAA,MAAA,eAAA,MAAA,UAAA,GAAA;MAQA,CAAA,OAAA,KAAA,MAAA,KAAA,QAAA,KAAA,MAAA,KAAA,MAAA,QAAA,MAAA,KAAA,QAAA,YAAA;MAcN,CAAA,IAAgB,OAAA,aAAoB;QAC3B,CACJ,IAAA,OACC,YACA;UAGC,CAAA,KAAO,OAAK,cAAW,MAAa,KAAA,KAAM,EAAK,KAAM;UACrD,CAAI,KAAA,MAAO,MAAA,WAAa;YACtB,CAAI,KAAA,OAAO,cAAY,MAAA,UAAA,EAAA,KAAA;UACtB,EAAC,KAAK;UACN,IAAC;cACE,MAAK,MAAO,aAAc;UAC7B,CAAA,EAAE,OAAK,iBAAA,MAAA,YAAA,EAAA,EAAA;QACT,EAAE,KAAI;QACN,IAAC;YACE,MAAE,MAAO,eAAiB,MAAM,cAAgB,GAAA;QACnD,CAAA,KAAE,OAAK,SAAA,MAAA,YAAA,EAAA,KAAA;MACT,EAAE,KAAI;MACN;;MAEA,YAAO,SAAA,UAAA,OAAA;KACT,QAAE;CAEN,SAAA;CASA,IAAA,MAAM,QAAA,SAAA;;;;;;;CAKN,SAAM;;;;;;;;;;;;;;;;;;;;;CAkBN,SAAM;;;;;;;;;;;;;;;;;;;;;;;;;MAQN,CAAA,IAAgB,OAAA,OAAA,EAAA,QAAiD,OAAA,EAAA,CAAA,GAAA;QACzD,CAAA,GAAA,MAAA,QAAe,EAAM,EAAA;QAEpB,CACJ,KAAI,MAAO,MAAG,WAAY;UACxB,CAAI,KAAA,OAAO,WAAS,EAAQ,QAAS,OAAI,EAAA,CAAA,IAAA,MAAA,UAAA,EAAA,KAAA;QACxC,EAAC,KAAG;QACJ,IAAC;;;MAGH,SAAM;SACN,aAAA,OAAA;CAEN,OAAA,CAAA,IAAA,OAAA,GAAA,OAAA,GAAA,MAAA,SAAA,MAAA;MAOM,CAAA,IAAA,MAAA,MAAA,UAAA;UAOU,YAAa,CAAA,mBAAwB,SAAA,QAAA,SAAA,QAAA,QAAA,QAAA,WAAA,QAAA,cAAA;MACnD,EAAO,IACJ;MACC;;;AAWN,SAAA,cAAA,oBAAA"}
@@ -1,2 +0,0 @@
1
- export * from "./custom/event-card";
2
- //# sourceMappingURL=EventCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventCard.d.ts","sourceRoot":"","sources":["../src/EventCard.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
package/dist/EventCard.js DELETED
@@ -1,173 +0,0 @@
1
- /* empty css */
2
- /* empty css */
3
- /* empty css */
4
- import { Avatar } from "@proyecto-viviana/solid-spectrum";
5
- import { className, createComponent, effect, getNextElement, getNextMarker, insert, memo, setAttribute, template } from "solid-js/web";
6
- import { For, Show } from "solid-js";
7
- import { Button } from "@proyecto-viviana/solidaria-components";
8
- //#region src/custom/event-card/index.tsx
9
- var _tmpl$ = /*#__PURE__*/ template(`<img class=" _Pa13 WJ13 _zI13 ZC13 Fx13 _Ha13"alt>`), _tmpl$2 = /*#__PURE__*/ template(`<img class=" Za13 fu4qurc13 _Hb13">`), _tmpl$3 = /*#__PURE__*/ template(`<div class=" sd13 eb13 Ub13 qb13"><span class=" pj1j4Pd13">@</span><span>`), _tmpl$4 = /*#__PURE__*/ template(`<div class=" sd13 eb13 Ub13 qb13"><span class=" pj1j4Pd13">⏱</span><span>`), _tmpl$5 = /*#__PURE__*/ template(`<div class=" sd13 eb13 Ul13 ql13 uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-b13 vx13 xb13 _xa13 _Fd13 _FnuYUweb13 pxeCuqc13"><!$><!/><!$><!/>`), _tmpl$6 = /*#__PURE__*/ template(`<span class=" uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-b13 vx13 xb13 _xa13 _Fd13 _FnuYUweb13 pxeCuqc13">+<!$><!/> más`), _tmpl$7 = /*#__PURE__*/ template(`<div class=" sd13 eb13 Ue13 qe13"><div class=" sd13 eb13 Ub13 qb13"></div><!$><!/>`), _tmpl$8 = /*#__PURE__*/ template(`<div class=" sd13 Ue13 qe13">`), _tmpl$9 = /*#__PURE__*/ template(`<div><!$><!/><!$><!/><div class=" sd13 _ta13 Ug13 qg13 Tf13 Qf13 Sf13 Rf13"><h3 class=" uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-g13 vx13 xe13 _xa13 xX0cczbd13 _xX0cczba13 xfe13 _xfa13 xfX0cczbd13 _xfX0cczba13 _Fd13 _FnuYUweb13 pj1j4Pd13"></h3><!$><!/><!$><!/><!$><!/>`), _tmpl$0 = /*#__PURE__*/ template(`<img class=" ZF13 Fz13 _va13 ob13 nb13 kb13 jb13 _Hb13">`), _tmpl$1 = /*#__PURE__*/ template(`<p class=" uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-b13 vx13 xb13 _xa13 _Fd13 _FnuYUweb13 pxeCuqc13 _Nc13 Pc13 _Yb13 _7c13">`), _tmpl$10 = /*#__PURE__*/ template(`<div class=" sd13 _ta13 _ub13 Na13"><h4 class=" uk13 ucJ9TBTb13 ud3Euai13 uea13 ugb13 uhd13 uje13 u2NhKxcl13 uic13 -_6BNtrc-c13 vx13 xc13 _xa13 _Fd13 _FnuYUweb13 pXDQpyb13 _Nc13 Pc13 _Yb13 _7c13"></h4><!$><!/>`);
10
- const card = " _Pc13 sd13 _ta13 _Nc13 Pc13 oe13 ne13 ke13 je13 gDE5VE13 _nLeasBb13";
11
- function EventCard(props) {
12
- const displayedAttendees = () => props.attendees?.slice(0, 3) ?? [];
13
- const remainingCount = () => {
14
- return (props.attendeeCount ?? props.attendees?.length ?? 0) - displayedAttendees().length;
15
- };
16
- return (() => {
17
- var _el$ = getNextElement(_tmpl$9), _el$31 = _el$.firstChild, [_el$32, _co$8] = getNextMarker(_el$31.nextSibling), _el$33 = _el$32.nextSibling, [_el$34, _co$9] = getNextMarker(_el$33.nextSibling), _el$4 = _el$34.nextSibling, _el$5 = _el$4.firstChild, _el$25 = _el$5.nextSibling, [_el$26, _co$5] = getNextMarker(_el$25.nextSibling), _el$27 = _el$26.nextSibling, [_el$28, _co$6] = getNextMarker(_el$27.nextSibling), _el$29 = _el$28.nextSibling, [_el$30, _co$7] = getNextMarker(_el$29.nextSibling);
18
- insert(_el$, createComponent(Show, {
19
- get when() {
20
- return props.decorationImage;
21
- },
22
- get children() {
23
- var _el$2 = getNextElement(_tmpl$);
24
- effect(() => setAttribute(_el$2, "src", props.decorationImage));
25
- return _el$2;
26
- }
27
- }), _el$32, _co$8);
28
- insert(_el$, createComponent(Show, {
29
- get when() {
30
- return props.image;
31
- },
32
- get children() {
33
- var _el$3 = getNextElement(_tmpl$2);
34
- effect((_p$) => {
35
- var _v$ = props.image, _v$2 = props.title;
36
- _v$ !== _p$.e && setAttribute(_el$3, "src", _p$.e = _v$);
37
- _v$2 !== _p$.t && setAttribute(_el$3, "alt", _p$.t = _v$2);
38
- return _p$;
39
- }, {
40
- e: void 0,
41
- t: void 0
42
- });
43
- return _el$3;
44
- }
45
- }), _el$34, _co$9);
46
- insert(_el$5, () => props.title);
47
- insert(_el$4, createComponent(Show, {
48
- get when() {
49
- return props.date || props.author;
50
- },
51
- get children() {
52
- var _el$6 = getNextElement(_tmpl$5), _el$11 = _el$6.firstChild, [_el$12, _co$] = getNextMarker(_el$11.nextSibling), _el$13 = _el$12.nextSibling, [_el$14, _co$2] = getNextMarker(_el$13.nextSibling);
53
- insert(_el$6, createComponent(Show, {
54
- get when() {
55
- return props.author;
56
- },
57
- get children() {
58
- var _el$7 = getNextElement(_tmpl$3), _el$9 = _el$7.firstChild.nextSibling;
59
- insert(_el$9, () => props.author);
60
- return _el$7;
61
- }
62
- }), _el$12, _co$);
63
- insert(_el$6, createComponent(Show, {
64
- get when() {
65
- return props.date;
66
- },
67
- get children() {
68
- var _el$0 = getNextElement(_tmpl$4), _el$10 = _el$0.firstChild.nextSibling;
69
- insert(_el$10, () => props.date);
70
- return _el$0;
71
- }
72
- }), _el$14, _co$2);
73
- return _el$6;
74
- }
75
- }), _el$26, _co$5);
76
- insert(_el$4, createComponent(Show, {
77
- get when() {
78
- return displayedAttendees().length > 0;
79
- },
80
- get children() {
81
- var _el$15 = getNextElement(_tmpl$7), _el$16 = _el$15.firstChild, _el$22 = _el$16.nextSibling, [_el$23, _co$4] = getNextMarker(_el$22.nextSibling);
82
- insert(_el$16, createComponent(For, {
83
- get each() {
84
- return displayedAttendees();
85
- },
86
- children: (attendee) => createComponent(Avatar, {
87
- get src() {
88
- return attendee.avatar;
89
- },
90
- get alt() {
91
- return attendee.name;
92
- },
93
- size: "sm"
94
- })
95
- }));
96
- insert(_el$15, createComponent(Show, {
97
- get when() {
98
- return remainingCount() > 0;
99
- },
100
- get children() {
101
- var _el$17 = getNextElement(_tmpl$6), _el$20 = _el$17.firstChild.nextSibling, [_el$21, _co$3] = getNextMarker(_el$20.nextSibling);
102
- _el$21.nextSibling;
103
- insert(_el$17, remainingCount, _el$21, _co$3);
104
- return _el$17;
105
- }
106
- }), _el$23, _co$4);
107
- return _el$15;
108
- }
109
- }), _el$28, _co$6);
110
- insert(_el$4, createComponent(Show, {
111
- get when() {
112
- return props.actions;
113
- },
114
- get children() {
115
- var _el$24 = getNextElement(_tmpl$8);
116
- insert(_el$24, (() => {
117
- var _c$ = memo(() => typeof props.actions === "function");
118
- return () => _c$() ? props.actions() : props.actions;
119
- })());
120
- return _el$24;
121
- }
122
- }), _el$30, _co$7);
123
- effect(() => className(_el$, `${card} ${props.class ?? ""}`));
124
- return _el$;
125
- })();
126
- }
127
- const listItem = " sd13 eb13 Ug13 qg13 Za13 Tt13 Qt13 St13 Rt13 oc13 nc13 kc13 jc13 _Wd13 ry13 g913 _je13";
128
- function EventListItem(props) {
129
- return createComponent(Button, {
130
- get ["class"]() {
131
- return `${listItem} ${props.class ?? ""}`;
132
- },
133
- onPress: () => props.onClick?.(),
134
- get children() {
135
- return [createComponent(Show, {
136
- get when() {
137
- return props.image;
138
- },
139
- get children() {
140
- var _el$35 = getNextElement(_tmpl$0);
141
- effect((_p$) => {
142
- var _v$3 = props.image, _v$4 = props.title;
143
- _v$3 !== _p$.e && setAttribute(_el$35, "src", _p$.e = _v$3);
144
- _v$4 !== _p$.t && setAttribute(_el$35, "alt", _p$.t = _v$4);
145
- return _p$;
146
- }, {
147
- e: void 0,
148
- t: void 0
149
- });
150
- return _el$35;
151
- }
152
- }), (() => {
153
- var _el$36 = getNextElement(_tmpl$10), _el$37 = _el$36.firstChild, _el$39 = _el$37.nextSibling, [_el$40, _co$0] = getNextMarker(_el$39.nextSibling);
154
- insert(_el$37, () => props.title);
155
- insert(_el$36, createComponent(Show, {
156
- get when() {
157
- return props.subtitle;
158
- },
159
- get children() {
160
- var _el$38 = getNextElement(_tmpl$1);
161
- insert(_el$38, () => props.subtitle);
162
- return _el$38;
163
- }
164
- }), _el$40, _co$0);
165
- return _el$36;
166
- })()];
167
- }
168
- });
169
- }
170
- //#endregion
171
- export { EventCard, EventListItem };
172
-
173
- //# sourceMappingURL=EventCard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventCard.js","names":[],"sources":["../src/custom/event-card/index.tsx"],"sourcesContent":["import type { JSX } from \"solid-js\";\nimport { Show, For } from \"solid-js\";\nimport { Avatar } from \"@proyecto-viviana/solid-spectrum\";\nimport { Button as HeadlessButton } from \"@proyecto-viviana/solidaria-components\";\n// Styled via the S2 style() macro through viviana's own seam (../../style →\n// src/style.ts). An event summary card (S2 Card shape: preview + content +\n// footer) plus a compact list-item variant, on the S2 ramps in Silapse colors.\nimport { style } from \"../../style\" with { type: \"macro\" };\n\nexport interface EventCardProps {\n title: string;\n image?: string;\n date?: string;\n author?: string;\n authorAvatar?: string;\n attendees?: { avatar?: string; name: string }[];\n attendeeCount?: number;\n decorationImage?: string;\n /**\n * Actions to display below the event.\n * Use a function returning JSX for SSR compatibility: `actions={() => <Button>...</Button>}`\n */\n actions?: JSX.Element | (() => JSX.Element);\n class?: string;\n}\n\nconst card = style({\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n borderRadius: \"xl\",\n backgroundColor: \"[var(--color-bg-200)]\",\n boxShadow: \"elevated\",\n});\n\nconst decoration = style({\n position: \"absolute\",\n top: 8,\n insetEnd: 8,\n width: 32,\n height: 32,\n objectFit: \"contain\",\n});\n\nconst preview = style({\n width: \"full\",\n aspectRatio: \"16/9\",\n objectFit: \"cover\",\n});\n\nconst body = style({\n display: \"flex\",\n flexDirection: \"column\",\n gap: 12,\n padding: 16,\n});\n\nconst title = style({\n font: \"heading\",\n color: \"[var(--color-accent)]\",\n});\n\nconst meta = style({\n display: \"flex\",\n alignItems: \"center\",\n gap: 16,\n font: \"ui-sm\",\n color: \"[var(--color-text-secondary)]\",\n});\n\nconst metaItem = style({\n display: \"flex\",\n alignItems: \"center\",\n gap: 4,\n});\n\nconst metaIcon = style({\n color: \"[var(--color-accent)]\",\n});\n\nconst attendeesRow = style({\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n});\n\nconst avatars = style({\n display: \"flex\",\n alignItems: \"center\",\n gap: 4,\n});\n\nconst more = style({\n font: \"ui-sm\",\n color: \"[var(--color-text-secondary)]\",\n});\n\nconst actionRow = style({\n display: \"flex\",\n gap: 8,\n});\n\nexport function EventCard(props: EventCardProps) {\n const displayedAttendees = () => props.attendees?.slice(0, 3) ?? [];\n const remainingCount = () => {\n const total = props.attendeeCount ?? props.attendees?.length ?? 0;\n const displayed = displayedAttendees().length;\n return total - displayed;\n };\n\n return (\n <div class={`${card} ${props.class ?? \"\"}`}>\n <Show when={props.decorationImage}>\n <img class={decoration} src={props.decorationImage} alt=\"\" />\n </Show>\n\n <Show when={props.image}>\n <img class={preview} src={props.image} alt={props.title} />\n </Show>\n\n <div class={body}>\n <h3 class={title}>{props.title}</h3>\n\n <Show when={props.date || props.author}>\n <div class={meta}>\n <Show when={props.author}>\n <div class={metaItem}>\n <span class={metaIcon}>@</span>\n <span>{props.author}</span>\n </div>\n </Show>\n <Show when={props.date}>\n <div class={metaItem}>\n <span class={metaIcon}>⏱</span>\n <span>{props.date}</span>\n </div>\n </Show>\n </div>\n </Show>\n\n <Show when={displayedAttendees().length > 0}>\n <div class={attendeesRow}>\n <div class={avatars}>\n <For each={displayedAttendees()}>\n {(attendee) => <Avatar src={attendee.avatar} alt={attendee.name} size=\"sm\" />}\n </For>\n </div>\n <Show when={remainingCount() > 0}>\n <span class={more}>+{remainingCount()} más</span>\n </Show>\n </div>\n </Show>\n\n <Show when={props.actions}>\n <div class={actionRow}>\n {typeof props.actions === \"function\" ? props.actions() : props.actions}\n </div>\n </Show>\n </div>\n </div>\n );\n}\n\nexport interface EventListItemProps {\n title: string;\n image?: string;\n subtitle?: string;\n onClick?: () => void;\n class?: string;\n}\n\nconst listItem = style({\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"full\",\n padding: 8,\n borderRadius: \"lg\",\n textAlign: \"start\",\n cursor: \"pointer\",\n backgroundColor: \"transparent\",\n borderStyle: \"none\",\n});\n\nconst thumb = style({\n width: 48,\n height: 48,\n flexShrink: 0,\n borderRadius: \"default\",\n objectFit: \"cover\",\n});\n\nconst listBody = style({\n display: \"flex\",\n flexDirection: \"column\",\n flexGrow: 1,\n minWidth: 0,\n});\n\nconst listTitle = style({\n font: \"ui\",\n fontWeight: \"medium\",\n color: \"[var(--color-primary-100)]\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n});\n\nconst listSubtitle = style({\n font: \"ui-sm\",\n color: \"[var(--color-text-secondary)]\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n});\n\nexport function EventListItem(props: EventListItemProps) {\n return (\n <HeadlessButton class={`${listItem} ${props.class ?? \"\"}`} onPress={() => props.onClick?.()}>\n <Show when={props.image}>\n <img class={thumb} src={props.image} alt={props.title} />\n </Show>\n <div class={listBody}>\n <h4 class={listTitle}>{props.title}</h4>\n <Show when={props.subtitle}>\n <p class={listSubtitle}>{props.subtitle}</p>\n </Show>\n </div>\n </HeadlessButton>\n );\n}\n"],"mappings":"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"}