webc v0.0.11
Write and deploy websites using the C Programming Language.
Loading...
Searching...
No Matches
webc-ui.h
Go to the documentation of this file.
1
31#ifndef WEBCUI_H
32#define WEBCUI_H
33
34// ############ Includes ############ //
35
36#include "webc-core.h"
37
38#ifdef __cplusplus
39extern "C" {
40#endif
41
42// ############ Colors ############ //
43
44#define DAISY_COLOR_PRIMARY "primary"
45#define DAISY_COLOR_PRIMARY_CONTENT "primary-content"
46#define DAISY_COLOR_SECONDARY "secondary"
47#define DAISY_COLOR_SECONDARY_CONTENT "secondary-content"
48#define DAISY_COLOR_ACCENT "accent"
49#define DAISY_COLOR_ACCENT_CONTENT "accent-content"
50#define DAISY_COLOR_NEUTRAL "neutral"
51#define DAISY_COLOR_NEUTRAL_CONTENT "neutral-content"
52#define DAISY_COLOR_BASE_100 "base-100"
53#define DAISY_COLOR_BASE_200 "base-200"
54#define DAISY_COLOR_BASE_300 "base-300"
55#define DAISY_COLOR_INFO "info"
56#define DAISY_COLOR_INFO_CONTENT "info-content"
57#define DAISY_COLOR_SUCCESS "success"
58#define DAISY_COLOR_SUCCESS_CONTENT "success-content"
59#define DAISY_COLOR_WARNING "warning"
60#define DAISY_COLOR_WARNING_CONTENT "warning-content"
61#define DAISY_COLOR_ERROR "error"
62#define DAISY_COLOR_ERROR_CONTENT "error-content"
63
64#define DAISY_SIZE_XS "xs"
65#define DAISY_SIZE_SM "sm"
66#define DAISY_SIZE_MD "md"
67#define DAISY_SIZE_LG "lg"
68
69
70// ############ Types ############ //
71
72typedef struct {
73 Cstr title;
74 Cstr content;
75} Accordion;
76
77typedef enum {
78 AVATAR_DEFAULT,
79 AVATAR_CIRCLE,
80 AVATAR_RING,
81 AVATAR_PRESENCE_ONLINE,
82 AVATAR_PRESENCE_OFFLINE
83} AvatarType;
84
85typedef enum {
86 BADGE_DEFAULT,
87 BADGE_OUTLINE
88} BadgeType;
89
90typedef enum {
91 CAROUSEL_DEFAULT,
92 CAROUSEL_CENTER,
93 CAROUSEL_END,
94 CAROUSEL_FULL_WIDTH,
95 CAROUSEL_HALF_WIDTH,
96 CAROUSEL_FULL_BLEED,
97 CAROUSEL_INDICATOR_BUTTONS,
98 CAROUSEL_NEXT_PREV,
99 CAROUSEL_VERTICAL
100} CarouselType;
101
102typedef struct {
103 Cstr img_src;
104 Cstr img_alt;
106
107typedef enum {
108 CHAT_BUBBLE_DEFAULT,
109 CHAT_BUBBLE_IMAGE,
110 CHAT_BUBBLE_FULL,
111 CHAT_BUBBLE_HEADER_FOOTER
112} ChatBubbleType;
113
114typedef struct {
115 Cstr text;
116 Cstr color;
117 Cstr img_src;
118 Cstr img_alt;
119 Cstr name;
120 Cstr time;
121 Cstr footer;
122} ChatBubble;
123
124typedef enum {
125 ALERT_DEFAULT = 0,
126 ALERT_INFO = 1,
127 ALERT_SUCCESS = 2,
128 ALERT_WARNING = 3,
129 ALERT_ERROR = 4,
130} AlertType;
131
132typedef struct {
133 Cstr text;
134 Cstr color;
135 Cstr svg;
136 MouseEvents events;
137} Button;
138
139typedef enum {
140 BUTTON_DEFAULT,
141 BUTTON_OUTLINE,
142 BUTTON_RESPONSIVE,
143 BUTTON_WIDE,
144 BUTTON_GLASS,
145 BUTTON_SQUARE,
146 BUTTON_CIRCLE,
147 BUTTON_ICON,
148 BUTTON_LOADING,
149 BUTTON_LOADING_TEXT
150} ButtonType;
151
152typedef struct {
153 Cstr title;
154 Cstr link;
155 Cstr target;
156} NavLink;
157
158typedef enum {
159 LOADING_SPINNER,
160 LOADING_DOTS,
161 LOADING_RING,
162 LOADING_BALL,
163 LOADING_BAR,
164 LOADING_INFINITY
165} LoadingType;
166
167typedef struct {
168 Cstr prefix;
169 Cstr code;
170} CodeLine;
171
172typedef struct {
173 Cstr text;
174 Cstr github_link;
175} Footer;
176
177// ############ Utils ############ //
178
179#define SECURE_STR(s) ((s == NULL) ? "NULL" : s)
180int is_valid_daisy_size(Cstr size);
181int is_valid_daisy_color(Cstr color);
182void append_class_attr(char** class, Cstr attr);
183
184// ############ UI Elements ############ //
185
186// #ifdef DAISY_UI
187
188#define DAISYUI_LINK \
189 WEBC_MakeTag(LINK, \
190 WEBC_MakeAttributeList( \
191 WEBC_MakeAttribute(ATTR_HREF, "https://cdn.jsdelivr.net/npm/daisyui@4.12.10/dist/full.min.css"), \
192 WEBC_MakeAttribute(ATTR_REL, "stylesheet"), \
193 WEBC_MakeAttribute(ATTR_TYPE, "text/css"), \
194 NULL \
195 ) \
196 )
197
198#define TAILWINDCSS_SCRIPT(buffer) \
199 WEBC_PlainText(buffer, "<script src=\"https://cdn.tailwindcss.com\"></script>");
200
201
205WEBCAPI void WEBC_DaisyAccordion(char** buffer, Accordion accordion, int open);
206
210WEBCAPI void WEBC_DaisyAvatar(char** buffer, AvatarType type, Cstr img_src, Cstr placeholder, size_t width);
211
212
218WEBCAPI void WEBC_DaisyBadge(char** buffer, BadgeType type, Cstr color, Cstr text);
219
220// TODO: Card
221
227WEBCAPI void WEBC_DaisyCarousel(char** buffer, CarouselType type, size_t width, CarouselItem items[], size_t item_count);
228
232WEBCAPI void WEBC_DaisyChatBubble(char** buffer, ChatBubbleType type, ChatBubble bubble, int left);
233
237WEBCAPI void WEBC_DaisyCollapse(char** buffer, Cstr title, Cstr contents);
238
242WEBCAPI void WEBC_DaisyAlert(char** buffer, AlertType type, Cstr text);
243
247WEBCAPI void WEBC_DaisyButton(char** buffer, ButtonType type, Button button);
248
254WEBCAPI void WEBC_DaisyCheckbox(char** buffer, Cstr label, Cstr color);
255
262 char** buffer,
263 Cstr title,
264 NavLink navbar_items[],
265 size_t navbar_items_count,
266 NavLink sidebar_items[],
267 size_t sidebar_items_count,
268 BlockContents page_content);
269
273WEBCAPI void WEBC_DaisyDropdown(char** buffer, Cstr title, NavLink items[], size_t count);
274
280WEBCAPI void WEBC_DaisyLoading(char** buffer, LoadingType type, Cstr size);
281
285WEBCAPI void WEBC_DaisyFileInput(char** buffer, Cstr color);
286
290WEBCAPI void WEBC_DaisyIndicator(char** buffer, Cstr text, BlockContents toplaceon);
291
297WEBCAPI void WEBC_DaisyTextInput(char** buffer, int password, Cstr placeholder, Cstr icon);
298
302WEBCAPI void WEBC_DaisyCode(char** buffer, Cstr color, CodeLine code[], size_t count);
303
311WEBCAPI void WEBC_DaisyModal(char** buffer, Cstr id, Cstr title, Cstr content);
312
320WEBCAPI void WEBC_DaisyPagination(char** buffer, size_t from, size_t to, size_t checked);
321
327WEBCAPI void WEBC_DaisyProgress(char** buffer, size_t width, Cstr color, size_t value, size_t max);
328
332WEBCAPI void WEBC_DaisyRadio(char** buffer, Cstr group_name, Cstr color, int checked);
333
341WEBCAPI void WEBC_DaisyRange(
342 char** buffer,
343 size_t min,
344 size_t max,
345 size_t value,
346 size_t step,
347 Cstr size,
348 Cstr color);
349
353WEBCAPI void WEBC_DaisySelect(char** buffer, Cstr title, char* options[], size_t count, Cstr color);
354
360WEBCAPI void WEBC_DaisyTextarea(char** buffer, Cstr placeholder, Cstr color, Cstr size);
361
365WEBCAPI void WEBC_DaisyThemeController(char** buffer);
366
370WEBCAPI void WEBC_DaisyToast(char** buffer, Cstr text, Cstr color);
371
375WEBCAPI void WEBC_DaisyToggle(char** buffer, int checked, Cstr color, Cstr size);
376
380WEBCAPI void WEBC_DaisyTooltip(char** buffer, Cstr tooltip, Cstr location, int open, Cstr color, BlockContents toplaceon);
381
382WEBCAPI void WEBC_DaisyFooter(char** buffer, Footer footer);
383
384
385// #endif // DAISY_UI
386
387#ifdef __cplusplus
388}
389#endif
390
391#endif // WEBCUI_H
392
Definition webc-ui.h:72
Definition webc-ui.h:132
Definition webc-ui.h:102
Definition webc-ui.h:114
Definition webc-ui.h:167
Definition webc-ui.h:172
Definition webc-core.h:118
WEBCAPI void WEBC_DaisyDropdown(char **buffer, Cstr title, NavLink items[], size_t count)
WEBCAPI void WEBC_DaisyAccordion(char **buffer, Accordion accordion, int open)
WEBCAPI void WEBC_DaisyProgress(char **buffer, size_t width, Cstr color, size_t value, size_t max)
WEBCAPI void WEBC_DaisyButton(char **buffer, ButtonType type, Button button)
WEBCAPI void WEBC_DaisyFileInput(char **buffer, Cstr color)
WEBCAPI void WEBC_DaisyTextInput(char **buffer, int password, Cstr placeholder, Cstr icon)
WEBCAPI void WEBC_DaisyCode(char **buffer, Cstr color, CodeLine code[], size_t count)
WEBCAPI void WEBC_DaisyNavbarSidebar(char **buffer, Cstr title, NavLink navbar_items[], size_t navbar_items_count, NavLink sidebar_items[], size_t sidebar_items_count, BlockContents page_content)
WEBCAPI void WEBC_DaisyRange(char **buffer, size_t min, size_t max, size_t value, size_t step, Cstr size, Cstr color)
WEBCAPI void WEBC_DaisyAlert(char **buffer, AlertType type, Cstr text)
WEBCAPI void WEBC_DaisyThemeController(char **buffer)
WEBCAPI void WEBC_DaisyModal(char **buffer, Cstr id, Cstr title, Cstr content)
WEBCAPI void WEBC_DaisyTooltip(char **buffer, Cstr tooltip, Cstr location, int open, Cstr color, BlockContents toplaceon)
WEBCAPI void WEBC_DaisySelect(char **buffer, Cstr title, char *options[], size_t count, Cstr color)
WEBCAPI void WEBC_DaisyCarousel(char **buffer, CarouselType type, size_t width, CarouselItem items[], size_t item_count)
WEBCAPI void WEBC_DaisyRadio(char **buffer, Cstr group_name, Cstr color, int checked)
WEBCAPI void WEBC_DaisyBadge(char **buffer, BadgeType type, Cstr color, Cstr text)
WEBCAPI void WEBC_DaisyCheckbox(char **buffer, Cstr label, Cstr color)
WEBCAPI void WEBC_DaisyCollapse(char **buffer, Cstr title, Cstr contents)
WEBCAPI void WEBC_DaisyChatBubble(char **buffer, ChatBubbleType type, ChatBubble bubble, int left)
WEBCAPI void WEBC_DaisyIndicator(char **buffer, Cstr text, BlockContents toplaceon)
WEBCAPI void WEBC_DaisyPagination(char **buffer, size_t from, size_t to, size_t checked)
WEBCAPI void WEBC_DaisyLoading(char **buffer, LoadingType type, Cstr size)
WEBCAPI void WEBC_DaisyToggle(char **buffer, int checked, Cstr color, Cstr size)
WEBCAPI void WEBC_DaisyAvatar(char **buffer, AvatarType type, Cstr img_src, Cstr placeholder, size_t width)
WEBCAPI void WEBC_DaisyToast(char **buffer, Cstr text, Cstr color)
WEBCAPI void WEBC_DaisyTextarea(char **buffer, Cstr placeholder, Cstr color, Cstr size)