···220220 </span>
221221 </h1>
222222 <p class="construct dither-mask">
223223- Construct your audio player.
223223+ Your audio<br />your data<br />your rules
224224 </p>
225225 <p>
226226- Diffuse is a collection of components and software that make it possible to listen to audio from various sources on your devices and the web, and to create the ideal digital
227227- audio listening experience for you.
226226+ Diffuse is a collection of components and software that make it possible to listen to audio from various sources on your devices and the web, and to create the ideal digital audio listening experience for you.
228227 </p>
229228 <p style="align-items: center; display: flex; gap: var(--space-2xs); opacity: 0.55;">
230229 <i class="ph-fill ph-crane"></i>
···232231 </p>
233232 <ul class="table-of-contents">
234233 <li><a href="#usage">Usage</a></li>
235235- <li><a href="#demo">Demo</a></li>
236234 <li><a href="#themes">Themes</a></li>
237235 <li><a href="#constituents">Constituents</a></li>
238238- <li><a href="#take-control">Take control</a></li>
236236+ <li><a href="#agency">Agency</a></li>
239237 <li><a href="#elements">Elements</a></li>
240238 <li><a href="#definitions">Definitions</a></li>
241239 </ul>
···246244 <div class="dither-mask filler"></div>
247245</header>
248246<main>
249249- <div class="columns">
250250- <!-- USAGE -->
251251- <section>
252252- <h2 id="usage">Usage</h2>
253253-254254- <p>
255255- The easiest way to start is by exploring the software. If you prefer a traditional pre­packaged web application approach, you can check out <a href="#themes">themes</a>.
256256- </p>
247247+ <!-- USAGE -->
248248+ <section>
249249+ <h2 id="usage">Usage</h2>
257250258258- <p>
259259- Alternatively, there's <a href="#constituents">constituents</a> which allows you to use any component from any theme interchange­ably, each in a separate browser tab. Each tab talks to each other, so you can for example browse audio in one tab and play it in another.
260260- </p>
251251+ <div class="columns">
252252+ <div class="element">
253253+ <p>
254254+ The easiest way to start is by exploring the software. If you prefer a traditional pre­packaged application approach, you can check out <a href="themes/">themes</a>. Themes can look and function entirely different from each other, so make sure to explore!
255255+ </p>
261256262262- <p>
263263- The goal is for every user, no matter their experience with web software, to have agency over their software. One can start with making small changes and gradually progress to making big changes.
264264- </p>
265265- </section>
257257+ <p>
258258+ Alternatively, there's <a href="constituents/">constituents</a> which allows you to use any component from any theme interchange­ably, among pieces that are not in themes; each in a separate browser tab. Each tab talks to each other, so you can for example browse audio in one tab and play it in another.
259259+ </p>
260260+ </div>
266261267267- <!-- DEMO -->
268268- <section>
269269- <h2 id="demo">Demo</h2>
262262+ <div class="element">
263263+ <p>
264264+ <strong style="color: var(--accent); font-weight: 700;">Diffuse is not your typical streaming service though, you have to add sources of audio.</strong> To start you can try out the demo by clicking the button below, or, go to a <a href="themes/">theme</a> or <a href="constituents/">constituent</a> that lets you add your audio input.
265265+ </p>
270266271271- <p>Diffuse is not your typical streaming service, you have to add sources of audio. This button here adds a few sample audio files.</p>
267267+ <p>
268268+ <button id="add-sample-content">
269269+ <span>Add sample content</span>
270270+ </button>
271271+ </p>
272272+ </div>
273273+ </div>
274274+ </section>
272275273273- <p>
274274- <button id="add-sample-content">
275275- <span>Add sample content</span>
276276- </button>
277277- </p>
278278-279279- <p>
280280- Next, select any <a href="#themes">theme</a> from below to play the audio. Or any of the other options suggested in the usage section.
281281- </p>
282282- </section>
283283- </div>
276276+ <!-- THEMES & CONSTITUENTS -->
284277 <div class="columns">
285285- <!-- THEMES -->
286278 <section>
287279 <h2 id="themes">Themes</h2>
288280···292284 </p>
293285294286 <p>
295295- <small>
296296- <strong><i class="ph-fill ph-info"></i></strong>
297297- Each theme is unique, not just a skin; each one might have a totally different feature set.
298298- </small>
287287+ <a class="button button--alt" href="themes/">Explore</a>
299288 </p>
300300-301301- {{ await comp.list({ items: themes }) }}
302289 </section>
303290304304- <!-- CONSTITUENTS -->
305291 <section>
306292 <h2 id="constituents">Constituents</h2>
307293···310296 </p>
311297312298 <p>
313313- <small>
314314- <strong><i class="ph-fill ph-info"></i></strong>
315315- It also allows non-browser web environments, such as WebViews, to display UI components separately. For example, to enable moveable web views on the desktop.
316316- </small>
299299+ <a class="button button--alt" href="constituents/">Explore</a>
317300 </p>
318318-319319- {{ await comp.list({ items: constituents }) }}
320301 </section>
321302 </div>
322303323323- <!-- TAKE CONTROL -->
304304+ <!-- AGENCY -->
324305 <section>
325325- <h2 id="take-control">Take control</h2>
306306+ <h2 id="agency">Agency</h2>
326307327308 <p>
328328- <em>Diffuse ranges from “eating out at a great restaurant” all the way to “making your favourite meal at home”</em>
309309+ The goal is for every user, no matter their experience, to have agency over their data and their software. One can start with making small changes and gradually progress to making big changes.
329310 </p>
330311312312+ <h3>Take control</h3>
313313+331314 <ul class="columns">
332315 <div class="element">
333316 <!-- 1 -->
334317 <li>
335318 <p>
336336- <i class="ph-fill ph-storefront"></i> <strong>Level 1</strong>: Pick your restaurant, food comes in all shapes and sizes. The equivalent of choosing a Diffuse <a href="#themes">theme</a>.
319319+ <i class="ph-fill ph-storefront"></i> <strong>Level 1</strong>: Pick your restaurant, food comes in all shapes and sizes. The equivalent of choosing a Diffuse <a href="themes/">theme</a>.
337320 </p>
338321 </li>
339322 <!-- 2 -->
340323 <li>
341324 <p>
342342- <i class="ph-fill ph-basket"></i> <strong>Level 2</strong>: Take out food from various places, eg. cheese shop + bakery. You choose how you combine the foods and from where you order them. That's <a href="#constituents">constituents</a>.
325325+ <i class="ph-fill ph-basket"></i> <strong>Level 2</strong>: Take out food from various places, eg. cheese shop + bakery. You choose how you combine the foods and from where you order them. That's <a href="constituents/">constituents</a>.
343326 </p>
344327 </li>
345328 <!-- 3 -->
···348331 <i class="ph-fill ph-pepper"></i> <strong>Level 3</strong>: Now that you know which food is good and how to make combinations, you might make a slight customization, add a little something of your own (eg. add some spice). However, you're not quite confident enough which spice to pick, so you hire some help.
349332 </p>
350333 <p>
351351- This can be done using the <a href="#constituents-loader">constituents loader</a> which allows you to build on top of a familiar preconfigured foundation and load custom constituents. People might share their own, or maybe you use an LLM to generate something for you (eg. an album art gallery).
334334+ This can be done using the <a href="constituents/#builder">constituents builder</a> which allows you to build on top of a familiar preconfigured foundation and load custom constituents. People might share their own, or maybe you use an LLM to generate something for you (eg. an album art gallery).
352335 </p>
353336 </li>
354337 <!-- 4 -->
···357340 <i class="ph-fill ph-knife"></i> <strong>Level 4</strong>: You learned a bit from watching and talking to the help you hired, so you decide to take things in your own hands.
358341 </p>
359342 <p>
360360- You continue to use the <a href="#constituents-loader">constituents loader</a> but learn a bit of <a href="https://htmlforpeople.com">HTML</a>, <a href="https://javascript.info">Javascript</a> and <a href="https://htmlforpeople.com/css-basics/">CSS</a>; so you're able to write your own constituent.
343343+ You continue to use the <a href="constituents/#builder">constituents builder</a> but learn a bit of <a href="https://htmlforpeople.com">HTML</a>, <a href="https://javascript.info">Javascript</a> and <a href="https://htmlforpeople.com/css-basics/">CSS</a>; so you're able to write your own constituent.
361344 </p>
362345 </li>
363346 </div>
···368351 <i class="ph-fill ph-cooking-pot"></i> <strong>Level 5</strong>: At this point you're confident enough to make a meal from scratch. You can start very simple, eg. just throwing a steak in the pan with some butter and some salt to it. Then later add some baked potatoes and go from there.
369352 </p>
370353 <p>
371371- A similar tool comes into play here, the <a href="#themes-loader">themes loader</a>. Same concept as the constituents loader, but now you need to specify the foundation yourself. You can use the <a href="#elements">elements</a> listed below to do so. The code for these is available from this website or through the <a href="https://jsr.io/@toko/diffuse">Javascript package</a>.
354354+ A similar tool comes into play here, the <a href="themes/#builder">themes builder</a>. Same concept as the constituents builder, but now you need to specify the foundation yourself. You can use the <a href="#elements">elements</a> listed below to do so. The code for these is available from this website or through the <a href="https://jsr.io/@toko/diffuse">Javascript package</a>.
372355 </p>
373356 </li>
374357 <!-- 6 -->
···377360 <i class="ph-fill ph-storefront"></i> <strong>Level 6</strong>: You open your own restaurant.
378361 </p>
379362 <p>
380380- You can host the theme you made on any web server, it's only HTML after all. Only difference is that you'll have to create the entire HTML tree, not just the body element, as is the case with the theme loader.
363363+ You can host the theme you made on any web server, it's only HTML after all. Only difference is that you'll have to create the entire HTML tree, not just the body element, as is the case with the theme builder.
381364 </p>
382365 </li>
383366 <!-- 7 -->
···399382400383 <p>
401384 The (web) components of the system. These custom elements are then recombined into an entire music player experience, or whatever you want to build.
385385+ </p>
386386+387387+ <p>
388388+ Consume these using the constituents <a href="constituents/#builder">builder</a>, the Javascript <a href="https://jsr.io/@toko/diffuse">package</a>, or the linked Javascript files down below.
402389 </p>
403390404391 <div class="columns">