lightview 1.8.2 → 2.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 (264) hide show
  1. package/.agent/workflows/daisyui-component-migration.md +155 -0
  2. package/.codacy/cli.sh +149 -0
  3. package/.codacy/codacy.yaml +15 -0
  4. package/.github/instructions/codacy.instructions.md +72 -0
  5. package/.wranglerignore +21 -0
  6. package/README.md +1330 -19
  7. package/_headers +4 -0
  8. package/build.js +70 -0
  9. package/components/actions/button.js +151 -0
  10. package/components/actions/dropdown.js +120 -0
  11. package/components/actions/modal.js +146 -0
  12. package/components/actions/swap.js +118 -0
  13. package/components/daisyui.js +288 -0
  14. package/components/data-display/accordion.js +128 -0
  15. package/components/data-display/alert.js +112 -0
  16. package/components/data-display/avatar.js +170 -0
  17. package/components/data-display/badge.js +82 -0
  18. package/components/data-display/card.js +151 -0
  19. package/components/data-display/carousel.js +94 -0
  20. package/components/data-display/chart.js +220 -0
  21. package/components/data-display/chat.js +128 -0
  22. package/components/data-display/collapse.js +103 -0
  23. package/components/data-display/countdown.js +69 -0
  24. package/components/data-display/diff.js +111 -0
  25. package/components/data-display/kbd.js +65 -0
  26. package/components/data-display/loading.js +75 -0
  27. package/components/data-display/progress.js +79 -0
  28. package/components/data-display/radial-progress.js +88 -0
  29. package/components/data-display/skeleton.js +66 -0
  30. package/components/data-display/stats.js +159 -0
  31. package/components/data-display/table.js +146 -0
  32. package/components/data-display/timeline.js +146 -0
  33. package/components/data-display/toast.js +72 -0
  34. package/components/data-display/tooltip.js +74 -0
  35. package/components/data-input/checkbox.js +253 -0
  36. package/components/data-input/file-input.js +224 -0
  37. package/components/data-input/input.js +264 -0
  38. package/components/data-input/radio.js +338 -0
  39. package/components/data-input/range.js +204 -0
  40. package/components/data-input/rating.js +219 -0
  41. package/components/data-input/select.js +287 -0
  42. package/components/data-input/textarea.js +287 -0
  43. package/components/data-input/toggle.js +201 -0
  44. package/components/index.js +137 -0
  45. package/components/layout/divider.js +72 -0
  46. package/components/layout/drawer.js +142 -0
  47. package/components/layout/footer.js +100 -0
  48. package/components/layout/hero.js +109 -0
  49. package/components/layout/indicator.js +90 -0
  50. package/components/layout/join.js +78 -0
  51. package/components/layout/navbar.js +110 -0
  52. package/components/navigation/breadcrumbs.js +91 -0
  53. package/components/navigation/dock.js +103 -0
  54. package/components/navigation/menu.js +126 -0
  55. package/components/navigation/pagination.js +105 -0
  56. package/components/navigation/steps.js +89 -0
  57. package/components/navigation/tabs.css +177 -0
  58. package/components/navigation/tabs.js +123 -0
  59. package/components/theme/theme-switch.css +65 -0
  60. package/components/theme/theme-switch.js +177 -0
  61. package/docs/about.html +164 -0
  62. package/docs/api/computed.html +184 -0
  63. package/docs/api/effects.html +173 -0
  64. package/docs/api/elements.html +180 -0
  65. package/docs/api/enhance.html +225 -0
  66. package/docs/api/hypermedia.html +165 -0
  67. package/docs/api/index.html +178 -0
  68. package/docs/api/nav.html +18 -0
  69. package/docs/api/signals.html +136 -0
  70. package/docs/api/state.html +217 -0
  71. package/docs/assets/images/logo-favicon.svg +42 -0
  72. package/docs/assets/images/logo-static.svg +40 -0
  73. package/docs/assets/images/logo.svg +66 -0
  74. package/docs/assets/js/examplify.js +395 -0
  75. package/docs/assets/styles/site.css +1102 -0
  76. package/docs/assets/styles/themes.css +236 -0
  77. package/docs/components/accordion.html +439 -0
  78. package/docs/components/alert.html +528 -0
  79. package/docs/components/avatar.html +586 -0
  80. package/docs/components/badge.html +531 -0
  81. package/docs/components/breadcrumbs.html +278 -0
  82. package/docs/components/button.html +579 -0
  83. package/docs/components/card.html +561 -0
  84. package/docs/components/carousel.html +286 -0
  85. package/docs/components/chart-area.html +702 -0
  86. package/docs/components/chart-bar.html +782 -0
  87. package/docs/components/chart-column.html +735 -0
  88. package/docs/components/chart-line.html +794 -0
  89. package/docs/components/chart-pie.html +823 -0
  90. package/docs/components/chart.html +610 -15
  91. package/docs/components/chat.html +547 -0
  92. package/docs/components/checkbox.html +641 -0
  93. package/docs/components/collapse.html +536 -0
  94. package/docs/components/component-nav.html +53 -0
  95. package/docs/components/countdown.html +470 -0
  96. package/docs/components/diff.html +245 -0
  97. package/docs/components/divider.html +240 -0
  98. package/docs/components/dock.html +277 -0
  99. package/docs/components/drawer.html +515 -0
  100. package/docs/components/dropdown.html +479 -0
  101. package/docs/components/file-input.html +591 -0
  102. package/docs/components/footer.html +301 -0
  103. package/docs/components/gallery.html +504 -0
  104. package/docs/components/hero.html +264 -0
  105. package/docs/components/index.css +840 -0
  106. package/docs/components/index.html +735 -0
  107. package/docs/components/indicator.html +342 -0
  108. package/docs/components/input.html +644 -0
  109. package/docs/components/join.html +285 -0
  110. package/docs/components/kbd.html +322 -0
  111. package/docs/components/loading.html +521 -0
  112. package/docs/components/menu.html +461 -0
  113. package/docs/components/modal.html +639 -0
  114. package/docs/components/navbar.html +321 -0
  115. package/docs/components/pagination.html +279 -0
  116. package/docs/components/progress.html +514 -0
  117. package/docs/components/radial-progress.html +434 -0
  118. package/docs/components/radio.html +655 -0
  119. package/docs/components/range.html +611 -0
  120. package/docs/components/rating.html +642 -0
  121. package/docs/components/select.html +696 -0
  122. package/docs/components/sidebar-setup.js +93 -0
  123. package/docs/components/skeleton.html +447 -0
  124. package/docs/components/spinner.html +68 -0
  125. package/docs/components/stats.html +486 -0
  126. package/docs/components/steps.html +356 -0
  127. package/docs/components/swap.html +517 -0
  128. package/docs/components/switch.html +68 -0
  129. package/docs/components/table.html +668 -0
  130. package/docs/components/tabs.html +506 -0
  131. package/docs/components/text-input.html +68 -0
  132. package/docs/components/textarea.html +603 -0
  133. package/docs/components/timeline.html +485 -42
  134. package/docs/components/toast.html +474 -0
  135. package/docs/components/toggle.html +564 -0
  136. package/docs/components/tooltip.html +423 -0
  137. package/docs/examples/getting-started-example.html +40 -0
  138. package/docs/examples/index.html +93 -0
  139. package/docs/getting-started/index.html +739 -0
  140. package/docs/getting-started/reviews.html +23 -0
  141. package/docs/getting-started/reviews.odom +108 -0
  142. package/docs/getting-started/reviews.vdom +84 -0
  143. package/docs/index.html +132 -42
  144. package/docs/playground.html +416 -0
  145. package/docs/router.html +285 -0
  146. package/docs/styles/index.html +190 -0
  147. package/functions/_middleware.js +32 -0
  148. package/index.html +309 -0
  149. package/lightview-router.js +364 -0
  150. package/lightview-x.js +1577 -0
  151. package/lightview.js +659 -1200
  152. package/lightview.js.backup +793 -0
  153. package/middleware/locale.js +25 -0
  154. package/middleware/markdown.js +44 -0
  155. package/middleware/notFound.js +37 -0
  156. package/package.json +27 -41
  157. package/watch.js +92 -0
  158. package/wrangler.toml +12 -0
  159. package/.idea/lightview.iml +0 -12
  160. package/.idea/modules.xml +0 -8
  161. package/.idea/vcs.xml +0 -6
  162. package/LICENSE +0 -21
  163. package/codepen-no-tabs-embed.css +0 -2
  164. package/docs/CNAME +0 -1
  165. package/docs/api.html +0 -674
  166. package/docs/blank.html +0 -10
  167. package/docs/comparedto.html +0 -89
  168. package/docs/components/chart-repl.html +0 -69
  169. package/docs/components/components.js +0 -113
  170. package/docs/components/contents.html +0 -17
  171. package/docs/components/gantt-repl.html +0 -61
  172. package/docs/components/gantt.html +0 -42
  173. package/docs/components/gauge-repl.html +0 -66
  174. package/docs/components/gauge.html +0 -20
  175. package/docs/components/orgchart-repl.html +0 -64
  176. package/docs/components/orgchart.html +0 -41
  177. package/docs/components/repl-as-src.html +0 -17
  178. package/docs/components/repl-repl.html +0 -95
  179. package/docs/components/repl.html +0 -527
  180. package/docs/components/timeline-repl.html +0 -72
  181. package/docs/components.html +0 -14
  182. package/docs/css/highlightjs.min.css +0 -9
  183. package/docs/css/tutorial.css +0 -35
  184. package/docs/examples/anchor.html +0 -11
  185. package/docs/examples/chart.html +0 -34
  186. package/docs/examples/counter.html +0 -26
  187. package/docs/examples/counter.test.mjs +0 -47
  188. package/docs/examples/counter2.html +0 -26
  189. package/docs/examples/directives.html +0 -79
  190. package/docs/examples/foreign.html +0 -50
  191. package/docs/examples/forgeinform.html +0 -98
  192. package/docs/examples/form.html +0 -61
  193. package/docs/examples/gauge.html +0 -18
  194. package/docs/examples/invalid-template-literals.html +0 -44
  195. package/docs/examples/medium/remote.html +0 -60
  196. package/docs/examples/message.html +0 -18
  197. package/docs/examples/nested.html +0 -11
  198. package/docs/examples/object-bound-form.html +0 -34
  199. package/docs/examples/remote-server.js +0 -51
  200. package/docs/examples/remote.html +0 -34
  201. package/docs/examples/remote.json +0 -1
  202. package/docs/examples/scratch.html +0 -69
  203. package/docs/examples/sensors/index.html +0 -44
  204. package/docs/examples/sensors/sensor-server.js +0 -30
  205. package/docs/examples/shared.html +0 -41
  206. package/docs/examples/template.html +0 -33
  207. package/docs/examples/timeline.html +0 -21
  208. package/docs/examples/todo.html +0 -40
  209. package/docs/examples/top.html +0 -10
  210. package/docs/examples/types.html +0 -94
  211. package/docs/examples/xor.html +0 -62
  212. package/docs/examples.html +0 -25
  213. package/docs/javascript/codejar.min.js +0 -8
  214. package/docs/javascript/highlightjs.min.js +0 -1173
  215. package/docs/javascript/isomorphic-git.js +0 -9
  216. package/docs/javascript/json5.min.js +0 -1
  217. package/docs/javascript/lightning-fs.js +0 -1
  218. package/docs/javascript/lightview.js +0 -1285
  219. package/docs/javascript/marked.min.js +0 -6
  220. package/docs/javascript/peerjs.min.js +0 -70
  221. package/docs/javascript/turndown.js +0 -973
  222. package/docs/javascript/types.js +0 -606
  223. package/docs/javascript/utils.js +0 -45
  224. package/docs/lightview.html +0 -63
  225. package/docs/old_index.html +0 -965
  226. package/docs/old_index.md +0 -1132
  227. package/docs/slidein.html +0 -51
  228. package/docs/tutorial/0-getting-started.html +0 -67
  229. package/docs/tutorial/1-intro-to-variables.html +0 -103
  230. package/docs/tutorial/10-template-components.html +0 -80
  231. package/docs/tutorial/11-linked-components.html +0 -76
  232. package/docs/tutorial/12-imported-components.html +0 -67
  233. package/docs/tutorial/13-input-binding.html +0 -94
  234. package/docs/tutorial/14-automatic-variable-creation.html +0 -74
  235. package/docs/tutorial/15-form-binding.html +0 -110
  236. package/docs/tutorial/16-if-directive.html +0 -60
  237. package/docs/tutorial/17-loop-directives.html +0 -83
  238. package/docs/tutorial/18-sanitizing-and-escaping-input.html +0 -79
  239. package/docs/tutorial/2-imported-and-exported-variables.html +0 -80
  240. package/docs/tutorial/3-data-types.html +0 -89
  241. package/docs/tutorial/4-extended-data-types.html +0 -83
  242. package/docs/tutorial/5-extended-functional-types.html +0 -96
  243. package/docs/tutorial/5.1-extended-functional-types.html +0 -79
  244. package/docs/tutorial/5.2-extended-functional-types.html +0 -70
  245. package/docs/tutorial/6-conventional-javascript.html +0 -75
  246. package/docs/tutorial/7-monitoring-with-observers.html +0 -107
  247. package/docs/tutorial/8-event-listeners.html +0 -65
  248. package/docs/tutorial/9-intro-to-components.html +0 -91
  249. package/docs/tutorial/contents.html +0 -32
  250. package/docs/tutorial/my-component.html +0 -29
  251. package/docs/tutorial/remote-value.json +0 -4
  252. package/docs/websiterepl.html +0 -46
  253. package/jest-puppeteer.config.js +0 -5
  254. package/jest.config.json +0 -12
  255. package/lightview.min.js +0 -1
  256. package/lightview_good.js +0 -1267
  257. package/lightview_optimized.js +0 -1274
  258. package/repl_hold.html +0 -320
  259. package/test/basic.html +0 -104
  260. package/test/basic.test.mjs +0 -315
  261. package/test/extended.html +0 -29
  262. package/test/extended.test.mjs +0 -448
  263. package/types.js +0 -607
  264. package/unsplash.key +0 -1
@@ -0,0 +1,504 @@
1
+ <!-- SEO-friendly SPA Shim -->
2
+ <script src="/lightview-router.js"></script>
3
+ <script>
4
+ if (window.LightviewRouter) {
5
+ LightviewRouter.base('/index.html');
6
+ }
7
+ </script>
8
+
9
+ <!-- Load the page-specific stylesheet -->
10
+ <link rel="stylesheet" href="./index.css">
11
+
12
+ <!-- Gallery Structure -->
13
+ <div class="gallery-page">
14
+ <div class="gallery-layout">
15
+ <!-- Sidebar Overlay -->
16
+ <div id="sidebar-overlay" class="sidebar-overlay"></div>
17
+
18
+ <!-- Sidebar -->
19
+ <div id="gallery-sidebar" class="gallery-sidebar" style="visibility: hidden" src="./component-nav.html"></div>
20
+
21
+ <!-- Main Content -->
22
+ <div id="gallery-main" class="gallery-main">
23
+ <!-- Header Container -->
24
+ <div
25
+ style="position: sticky; top: 0; z-index: 30; background: var(--gallery-surface); border-bottom: 1px solid var(--gallery-border); backdrop-filter: blur(8px);">
26
+ <!-- Breadcrumbs Row -->
27
+ <div style="padding: 0.75rem 1.5rem 0;">
28
+ <script>
29
+ (() => {
30
+ const { Breadcrumbs } = Lightview.tags;
31
+ const breadcrumbs = Breadcrumbs({
32
+ id: 'page-breadcrumbs',
33
+ items: [
34
+ { label: 'Components', href: '/docs/components' },
35
+ { label: 'Gallery' }
36
+ ]
37
+ });
38
+ document.currentScript.replaceWith(breadcrumbs.domEl);
39
+ })();
40
+ </script>
41
+ </div>
42
+ <!-- Title Row -->
43
+ <div class="gallery-header"
44
+ style="border-bottom: none; height: auto; padding-top: 0.5rem; padding-bottom: 0.75rem;">
45
+ <button id="toggle-btn" class="toggle-btn" aria-label="Toggle Sidebar">
46
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" class="toggle-icon"
47
+ style="stroke: currentColor; stroke-width: 2;">
48
+ <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7" />
49
+ <path stroke-linecap="round" stroke-linejoin="round" d="M11 19l-7-7 7-7" />
50
+ </svg>
51
+ </button>
52
+ <h1 class="gallery-title">Gallery</h1>
53
+ </div>
54
+ </div>
55
+
56
+ <!-- Content -->
57
+ <div class="gallery-content">
58
+ <div class="section-content" style="max-width: 1000px;">
59
+ <p class="text-lg" style="opacity: 0.7; margin-bottom: 1.5rem;">
60
+ Live examples of all Lightview components powered by DaisyUI.
61
+ </p>
62
+
63
+ <!-- Theme Selector -->
64
+ <div style="margin-bottom: 2rem; display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center;">
65
+ <span class="font-semibold">Theme:</span>
66
+ <select class="select select-bordered select-sm"
67
+ onchange="document.documentElement.setAttribute('data-theme', this.value)">
68
+ <option value="light">Light</option>
69
+ <option value="dark">Dark</option>
70
+ <option value="cupcake">Cupcake</option>
71
+ <option value="cyberpunk">Cyberpunk</option>
72
+ <option value="synthwave">Synthwave</option>
73
+ <option value="retro">Retro</option>
74
+ <option value="dracula">Dracula</option>
75
+ <option value="forest">Forest</option>
76
+ </select>
77
+ </div>
78
+
79
+ <!-- Buttons -->
80
+ <section style="margin-bottom: 3rem;">
81
+ <h2 class="text-xl font-bold mb-4" style="display: flex; align-items: center; gap: 0.5rem">
82
+ <span class="badge badge-primary">Buttons</span>
83
+ </h2>
84
+ <div class="card bg-base-200">
85
+ <div class="card-body">
86
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Colors</h3>
87
+ <div style="display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1rem;">
88
+ <button class="btn">Default</button>
89
+ <button class="btn btn-neutral">Neutral</button>
90
+ <button class="btn btn-primary">Primary</button>
91
+ <button class="btn btn-secondary">Secondary</button>
92
+ <button class="btn btn-accent">Accent</button>
93
+ <button class="btn btn-info">Info</button>
94
+ <button class="btn btn-success">Success</button>
95
+ <button class="btn btn-warning">Warning</button>
96
+ <button class="btn btn-error">Error</button>
97
+ </div>
98
+
99
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Variants</h3>
100
+ <div style="display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1rem;">
101
+ <button class="btn btn-outline btn-primary">Outline</button>
102
+ <button class="btn btn-soft btn-primary">Soft</button>
103
+ <button class="btn btn-ghost">Ghost</button>
104
+ <button class="btn btn-link">Link</button>
105
+ </div>
106
+
107
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Sizes</h3>
108
+ <div
109
+ style="display: flex; flex-wrap: wrap; align-items: flex-end; gap: 0.5rem; margin-bottom: 1rem;">
110
+ <button class="btn btn-xs">Extra Small</button>
111
+ <button class="btn btn-sm">Small</button>
112
+ <button class="btn btn-md">Medium</button>
113
+ <button class="btn btn-lg">Large</button>
114
+ </div>
115
+
116
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">States</h3>
117
+ <div style="display: flex; flex-wrap: wrap; gap: 0.5rem;">
118
+ <button class="btn btn-primary">Normal</button>
119
+ <button class="btn btn-primary btn-active">Active</button>
120
+ <button class="btn btn-primary" disabled>Disabled</button>
121
+ <button class="btn btn-primary">
122
+ <span class="loading loading-spinner loading-sm"></span>
123
+ Loading
124
+ </button>
125
+ </div>
126
+ </div>
127
+ </div>
128
+ </section>
129
+
130
+ <!-- Inputs -->
131
+ <section style="margin-bottom: 3rem;">
132
+ <h2 class="text-xl font-bold mb-4" style="display: flex; align-items: center; gap: 0.5rem">
133
+ <span class="badge badge-accent">Inputs</span>
134
+ </h2>
135
+ <div class="card bg-base-200">
136
+ <div class="card-body">
137
+ <div class="grid md:grid-cols-2" style="gap: 1.5rem;">
138
+ <div>
139
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Text Input</h3>
140
+ <input type="text" placeholder="Type here"
141
+ class="input input-bordered w-full" />
142
+ </div>
143
+ <div>
144
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Select</h3>
145
+ <select class="select select-bordered w-full">
146
+ <option disabled selected>Pick one</option>
147
+ <option>Option 1</option>
148
+ <option>Option 2</option>
149
+ </select>
150
+ </div>
151
+ <div>
152
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Textarea</h3>
153
+ <textarea class="textarea textarea-bordered w-full"
154
+ placeholder="Your message..."></textarea>
155
+ </div>
156
+ <div>
157
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">File Input</h3>
158
+ <input type="file" class="file-input file-input-bordered w-full" />
159
+ </div>
160
+ <div>
161
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Range</h3>
162
+ <input type="range" min="0" max="100" value="40" class="range range-primary" />
163
+ </div>
164
+ <div>
165
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Rating</h3>
166
+ <div class="rating">
167
+ <input type="radio" name="rating-1"
168
+ class="mask mask-star-2 bg-orange-400" />
169
+ <input type="radio" name="rating-1" class="mask mask-star-2 bg-orange-400"
170
+ checked="checked" />
171
+ <input type="radio" name="rating-1"
172
+ class="mask mask-star-2 bg-orange-400" />
173
+ <input type="radio" name="rating-1"
174
+ class="mask mask-star-2 bg-orange-400" />
175
+ <input type="radio" name="rating-1"
176
+ class="mask mask-star-2 bg-orange-400" />
177
+ </div>
178
+ </div>
179
+ </div>
180
+
181
+ <div class="divider"></div>
182
+
183
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Checkboxes & Toggles</h3>
184
+ <div style="display: flex; flex-wrap: wrap; gap: 1.5rem;">
185
+ <label style="display: flex; align-items: center; gap: 0.5rem; cursor: pointer">
186
+ <input type="checkbox" class="checkbox checkbox-primary" checked />
187
+ <span>Primary</span>
188
+ </label>
189
+ <label style="display: flex; align-items: center; gap: 0.5rem; cursor: pointer">
190
+ <input type="checkbox" class="checkbox checkbox-secondary" checked />
191
+ <span>Secondary</span>
192
+ </label>
193
+ <label style="display: flex; align-items: center; gap: 0.5rem; cursor: pointer">
194
+ <input type="checkbox" class="toggle toggle-primary" checked />
195
+ <span>Toggle</span>
196
+ </label>
197
+ <label style="display: flex; align-items: center; gap: 0.5rem; cursor: pointer">
198
+ <input type="radio" name="radio-1" class="radio radio-primary" checked />
199
+ <span>Radio</span>
200
+ </label>
201
+ </div>
202
+ </div>
203
+ </div>
204
+ </section>
205
+
206
+ <!-- Cards -->
207
+ <section style="margin-bottom: 3rem;">
208
+ <h2 class="text-xl font-bold mb-4" style="display: flex; align-items: center; gap: 0.5rem">
209
+ <span class="badge badge-secondary">Cards</span>
210
+ </h2>
211
+ <div class="grid md:grid-cols-3" style="gap: 1rem;">
212
+ <div class="card bg-base-100 shadow-xl">
213
+ <figure><img
214
+ src="https://images.unsplash.com/photo-1606107557195-0e29a4b5b4aa?w=400&h=200&fit=crop"
215
+ alt="Shoes" /></figure>
216
+ <div class="card-body">
217
+ <h2 class="card-title">
218
+ Card with Image
219
+ <span class="badge badge-secondary">NEW</span>
220
+ </h2>
221
+ <p>A card with an image and badge.</p>
222
+ <div class="card-actions justify-end">
223
+ <button class="btn btn-primary">Buy Now</button>
224
+ </div>
225
+ </div>
226
+ </div>
227
+
228
+ <div class="card card-bordered bg-base-100">
229
+ <div class="card-body">
230
+ <h2 class="card-title">Bordered Card</h2>
231
+ <p>Card with a border instead of shadow.</p>
232
+ <div class="card-actions justify-end">
233
+ <button class="btn btn-primary btn-outline">Details</button>
234
+ </div>
235
+ </div>
236
+ </div>
237
+
238
+ <div class="card image-full bg-base-100 shadow-xl">
239
+ <figure><img
240
+ src="https://images.unsplash.com/photo-1606107557195-0e29a4b5b4aa?w=400&h=300&fit=crop"
241
+ alt="Shoes" /></figure>
242
+ <div class="card-body">
243
+ <h2 class="card-title">Image Overlay</h2>
244
+ <p>Text displayed over the image.</p>
245
+ <div class="card-actions justify-end">
246
+ <button class="btn btn-primary">Shop</button>
247
+ </div>
248
+ </div>
249
+ </div>
250
+ </div>
251
+ </section>
252
+
253
+ <!-- Alerts -->
254
+ <section style="margin-bottom: 3rem;">
255
+ <h2 class="text-xl font-bold mb-4" style="display: flex; align-items: center; gap: 0.5rem">
256
+ <span class="badge badge-info">Alerts</span>
257
+ </h2>
258
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
259
+ <div role="alert" class="alert alert-info">
260
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
261
+ class="h-6 w-6 shrink-0 stroke-current">
262
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
263
+ d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
264
+ </svg>
265
+ <span>Info: New software update available.</span>
266
+ </div>
267
+ <div role="alert" class="alert alert-success">
268
+ <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 shrink-0 stroke-current"
269
+ fill="none" viewBox="0 0 24 24">
270
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
271
+ d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
272
+ </svg>
273
+ <span>Success: Your purchase has been confirmed!</span>
274
+ </div>
275
+ <div role="alert" class="alert alert-warning">
276
+ <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 shrink-0 stroke-current"
277
+ fill="none" viewBox="0 0 24 24">
278
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
279
+ d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
280
+ </svg>
281
+ <span>Warning: Your subscription is about to expire.</span>
282
+ </div>
283
+ <div role="alert" class="alert alert-error">
284
+ <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 shrink-0 stroke-current"
285
+ fill="none" viewBox="0 0 24 24">
286
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
287
+ d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" />
288
+ </svg>
289
+ <span>Error: Unable to process your request.</span>
290
+ </div>
291
+ </div>
292
+ </section>
293
+
294
+ <!-- Badges & Indicators -->
295
+ <section style="margin-bottom: 3rem;">
296
+ <h2 class="text-xl font-bold mb-4" style="display: flex; align-items: center; gap: 0.5rem">
297
+ <span class="badge badge-success">Badges</span>
298
+ </h2>
299
+ <div class="card bg-base-200">
300
+ <div class="card-body">
301
+ <div style="display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1rem;">
302
+ <span class="badge">default</span>
303
+ <span class="badge badge-neutral">neutral</span>
304
+ <span class="badge badge-primary">primary</span>
305
+ <span class="badge badge-secondary">secondary</span>
306
+ <span class="badge badge-accent">accent</span>
307
+ <span class="badge badge-ghost">ghost</span>
308
+ </div>
309
+ <div style="display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1rem;">
310
+ <span class="badge badge-info">info</span>
311
+ <span class="badge badge-success">success</span>
312
+ <span class="badge badge-warning">warning</span>
313
+ <span class="badge badge-error">error</span>
314
+ </div>
315
+ <div style="display: flex; flex-wrap: wrap; gap: 0.5rem;">
316
+ <span class="badge badge-outline">outline</span>
317
+ <span class="badge badge-outline badge-primary">outline primary</span>
318
+ <span class="badge badge-lg">large</span>
319
+ <span class="badge badge-md">medium</span>
320
+ <span class="badge badge-sm">small</span>
321
+ <span class="badge badge-xs">xs</span>
322
+ </div>
323
+ </div>
324
+ </div>
325
+ </section>
326
+
327
+ <!-- Progress & Loading -->
328
+ <section style="margin-bottom: 3rem;">
329
+ <h2 class="text-xl font-bold mb-4" style="display: flex; align-items: center; gap: 0.5rem">
330
+ <span class="badge badge-warning">Progress</span>
331
+ </h2>
332
+ <div class="card bg-base-200">
333
+ <div class="card-body">
334
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Progress Bars</h3>
335
+ <div style="display: flex; flex-direction: column; gap: 0.5rem; margin-bottom: 1.5rem;">
336
+ <progress class="progress progress-primary w-full" value="25" max="100"></progress>
337
+ <progress class="progress progress-secondary w-full" value="50"
338
+ max="100"></progress>
339
+ <progress class="progress progress-accent w-full" value="75" max="100"></progress>
340
+ <progress class="progress progress-success w-full" value="100" max="100"></progress>
341
+ </div>
342
+
343
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Loading Spinners</h3>
344
+ <div style="display: flex; flex-wrap: wrap; gap: 1rem;">
345
+ <span class="loading loading-spinner loading-lg"></span>
346
+ <span class="loading loading-dots loading-lg"></span>
347
+ <span class="loading loading-ring loading-lg"></span>
348
+ <span class="loading loading-ball loading-lg"></span>
349
+ <span class="loading loading-bars loading-lg"></span>
350
+ <span class="loading loading-infinity loading-lg"></span>
351
+ </div>
352
+ </div>
353
+ </div>
354
+ </section>
355
+
356
+ <!-- Avatars -->
357
+ <section style="margin-bottom: 3rem;">
358
+ <h2 class="text-xl font-bold mb-4" style="display: flex; align-items: center; gap: 0.5rem">
359
+ <span class="badge badge-error">Avatars</span>
360
+ </h2>
361
+ <div class="card bg-base-200">
362
+ <div class="card-body">
363
+ <div style="display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-end;">
364
+ <div class="avatar">
365
+ <div class="w-12 rounded-full">
366
+ <img src="https://i.pravatar.cc/100?img=1" alt="Avatar" />
367
+ </div>
368
+ </div>
369
+ <div class="avatar">
370
+ <div
371
+ class="w-12 rounded-full ring ring-primary ring-offset-base-100 ring-offset-2">
372
+ <img src="https://i.pravatar.cc/100?img=2" alt="Avatar" />
373
+ </div>
374
+ </div>
375
+ <div class="avatar online">
376
+ <div class="w-12 rounded-full">
377
+ <img src="https://i.pravatar.cc/100?img=3" alt="Avatar" />
378
+ </div>
379
+ </div>
380
+ <div class="avatar offline">
381
+ <div class="w-12 rounded-full">
382
+ <img src="https://i.pravatar.cc/100?img=4" alt="Avatar" />
383
+ </div>
384
+ </div>
385
+ <div class="avatar placeholder">
386
+ <div class="bg-neutral text-neutral-content w-12 rounded-full">
387
+ <span>AI</span>
388
+ </div>
389
+ </div>
390
+ </div>
391
+
392
+ <div class="divider"></div>
393
+
394
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Avatar Group</h3>
395
+ <div class="avatar-group" style="display: flex">
396
+ <div class="avatar">
397
+ <div class="w-12">
398
+ <img src="https://i.pravatar.cc/100?img=5" alt="Avatar" />
399
+ </div>
400
+ </div>
401
+ <div class="avatar" style="margin-left: -1.5rem">
402
+ <div class="w-12">
403
+ <img src="https://i.pravatar.cc/100?img=6" alt="Avatar" />
404
+ </div>
405
+ </div>
406
+ <div class="avatar" style="margin-left: -1.5rem">
407
+ <div class="w-12">
408
+ <img src="https://i.pravatar.cc/100?img=7" alt="Avatar" />
409
+ </div>
410
+ </div>
411
+ <div class="avatar placeholder" style="margin-left: -1.5rem">
412
+ <div class="bg-neutral text-neutral-content w-12">
413
+ <span>+99</span>
414
+ </div>
415
+ </div>
416
+ </div>
417
+ </div>
418
+ </div>
419
+ </section>
420
+
421
+ <!-- Tabs & Steps -->
422
+ <section style="margin-bottom: 3rem;">
423
+ <h2 class="text-xl font-bold mb-4" style="display: flex; align-items: center; gap: 0.5rem">
424
+ <span class="badge badge-neutral">Navigation</span>
425
+ </h2>
426
+ <div class="card bg-base-200">
427
+ <div class="card-body">
428
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Tabs</h3>
429
+ <div role="tablist" class="tabs tabs-boxed" style="margin-bottom: 1.5rem;">
430
+ <a role="tab" class="tab tab-active">Tab 1</a>
431
+ <a role="tab" class="tab">Tab 2</a>
432
+ <a role="tab" class="tab">Tab 3</a>
433
+ </div>
434
+
435
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Steps</h3>
436
+ <ul class="steps" style="margin-bottom: 1.5rem;">
437
+ <li class="step step-primary">Register</li>
438
+ <li class="step step-primary">Choose plan</li>
439
+ <li class="step">Purchase</li>
440
+ <li class="step">Receive Product</li>
441
+ </ul>
442
+
443
+ <h3 class="font-semibold" style="margin-bottom: 0.5rem;">Breadcrumbs</h3>
444
+ <div class="breadcrumbs text-sm">
445
+ <ul>
446
+ <li><a>Home</a></li>
447
+ <li><a>Documents</a></li>
448
+ <li>Add Document</li>
449
+ </ul>
450
+ </div>
451
+ </div>
452
+ </div>
453
+ </section>
454
+
455
+ <!-- Stats -->
456
+ <section style="margin-bottom: 3rem;">
457
+ <h2 class="text-xl font-bold mb-4" style="display: flex; align-items: center; gap: 0.5rem">
458
+ <span class="badge">Stats</span>
459
+ </h2>
460
+ <div class="stats shadow w-full">
461
+ <div class="stat">
462
+ <div class="stat-figure text-primary">
463
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
464
+ class="inline-block h-8 w-8 stroke-current">
465
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
466
+ d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z">
467
+ </path>
468
+ </svg>
469
+ </div>
470
+ <div class="stat-title">Total Likes</div>
471
+ <div class="stat-value text-primary">25.6K</div>
472
+ <div class="stat-desc">21% more than last month</div>
473
+ </div>
474
+ <div class="stat">
475
+ <div class="stat-figure text-secondary">
476
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
477
+ class="inline-block h-8 w-8 stroke-current">
478
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
479
+ d="M13 10V3L4 14h7v7l9-11h-7z"></path>
480
+ </svg>
481
+ </div>
482
+ <div class="stat-title">Page Views</div>
483
+ <div class="stat-value text-secondary">2.6M</div>
484
+ <div class="stat-desc">14% better than last month</div>
485
+ </div>
486
+ <div class="stat">
487
+ <div class="stat-figure text-secondary">
488
+ <div class="avatar online">
489
+ <div class="w-16 rounded-full">
490
+ <img src="https://i.pravatar.cc/100?img=8" alt="Avatar" />
491
+ </div>
492
+ </div>
493
+ </div>
494
+ <div class="stat-value">86%</div>
495
+ <div class="stat-title">Tasks done</div>
496
+ <div class="stat-desc text-secondary">31 tasks remaining</div>
497
+ </div>
498
+ </div>
499
+ </section>
500
+ </div>
501
+ </div>
502
+ </div>
503
+ </div>
504
+ </div>