phoenix_duskmoon 9.0.0-rc.3 → 9.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.
package/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  [![release](https://github.com/duskmoon-dev/phoenix-duskmoon-ui/actions/workflows/test-and-release.yml/badge.svg)](https://github.com/duskmoon-dev/phoenix-duskmoon-ui/actions/workflows/test-and-release.yml)
4
4
 
5
- Provides Duskmoon UI for Phoenix project.
5
+ Duskmoon UI component library for Phoenix LiveView applications.
6
6
 
7
- **v9**: Uses `@duskmoon-dev/core` CSS design system and HTML Custom Elements (`duskmoon-elements`).
7
+ **v9**: Uses `@duskmoon-dev/core` CSS design system, HTML Custom Elements (`@duskmoon-dev/elements`), and Art Custom Elements (`@duskmoon-dev/art-elements`).
8
8
 
9
9
  Requires `tailwindcss >= 4.0`
10
10
 
@@ -13,41 +13,138 @@ See the [docs](https://hexdocs.pm/phoenix_duskmoon/) for more information.
13
13
 
14
14
  ## Install
15
15
 
16
- Add deps in `mix.exs`
16
+ Add to `mix.exs`:
17
+
17
18
  ```elixir
18
- {:phoenix_duskmoon, "~> 9.0"},
19
+ {:phoenix_duskmoon, "~> 9.0"},
19
20
  ```
20
21
 
21
22
  Install frontend packages:
23
+
22
24
  ```bash
23
25
  bun add @duskmoon-dev/core @duskmoon-dev/elements
24
26
  ```
25
27
 
26
- Include in phoenix view helpers
28
+ Optionally, add CSS Art and Art Custom Elements support:
29
+
30
+ ```bash
31
+ bun add @duskmoon-dev/css-art @duskmoon-dev/art-elements
32
+ ```
33
+
34
+ ### View Helpers
35
+
36
+ Add to your Phoenix view helpers (e.g. `lib/my_app_web.ex`):
27
37
 
28
38
  ```elixir
29
39
  defp html_helpers do
30
40
  quote do
31
- # import all duskmoon ui component
41
+ # Standard UI components (buttons, cards, forms, navigation, etc.)
32
42
  use PhoenixDuskmoon.Component
33
- # import all duskmoon ui fun component
34
- use PhoenixDuskmoon.Fun
43
+ # CSS Art decorative components (snow, plasma ball, eclipse, etc.)
44
+ use PhoenixDuskmoon.CssArt
35
45
  end
36
46
  end
37
47
  ```
38
48
 
39
- Import `css`
49
+ ### CSS Setup
40
50
 
41
- ```css
42
- @source "../js/**/*.js";
43
- @source '../../lib/**/*.exs';
44
- @source '../../lib/**/*.ex';
51
+ In your CSS entry file (e.g. `assets/css/app.css`):
45
52
 
53
+ ```css
46
54
  @import "tailwindcss";
47
- @import "@duskmoon-dev/core";
55
+ @plugin "@duskmoon-dev/core/plugin";
48
56
  @import "phoenix_duskmoon/components";
49
57
  ```
50
58
 
59
+ ### JavaScript Setup
60
+
61
+ Register the custom elements in `assets/js/app.js`:
62
+
63
+ ```javascript
64
+ import "@duskmoon-dev/elements/register";
65
+ // Optionally, register art custom elements
66
+ import "@duskmoon-dev/art-elements/register";
67
+ ```
68
+
69
+ ### Hooks Setup
70
+
71
+ Some components require LiveView hooks. Add them when creating your `LiveSocket`:
72
+
73
+ ```javascript
74
+ import {LiveSocket} from "phoenix_live_view"
75
+ import * as DuskmoonHooks from "phoenix_duskmoon/hooks"
76
+
77
+ let liveSocket = new LiveSocket("/live", Socket, {
78
+ params: {_csrf_token: csrfToken},
79
+ hooks: DuskmoonHooks
80
+ })
81
+ ```
82
+
83
+ Components that require hooks:
84
+ - `<.dm_theme_switcher>` — theme switching with localStorage
85
+ - `<.dmf_spotlight>` — keyboard shortcut handling (Cmd/Ctrl+K)
86
+ - `<.dm_page_header>` — scroll-based intersection observer
87
+
88
+
89
+ ## Usage
90
+
91
+ ### Buttons
92
+
93
+ ```heex
94
+ <.dm_btn variant="primary">Click me</.dm_btn>
95
+ <.dm_btn variant="secondary" loading={@loading}>Loading</.dm_btn>
96
+ <.dm_btn variant="error" shape="circle">×</.dm_btn>
97
+ ```
98
+
99
+ ### Cards
100
+
101
+ ```heex
102
+ <.dm_card class="p-6">
103
+ <:title><h3>Title</h3></:title>
104
+ <p>Content here</p>
105
+ <:footer><.dm_btn>Action</.dm_btn></:footer>
106
+ </.dm_card>
107
+ ```
108
+
109
+ ### Icons
110
+
111
+ ```heex
112
+ <.dm_mdi name="home" />
113
+ <.dm_bsi name="house" />
114
+ ```
115
+
116
+ ### Forms
117
+
118
+ ```heex
119
+ <.dm_form for={@form} phx-submit="save">
120
+ <.dmf_input field={@form[:email]} label="Email" />
121
+ <.dm_btn variant="primary" type="submit">Save</.dm_btn>
122
+ </.dm_form>
123
+ ```
124
+
125
+ ### Common Attributes
126
+
127
+ | Attribute | Values |
128
+ |-----------|--------|
129
+ | `variant` | `primary`, `secondary`, `accent`, `info`, `success`, `warning`, `error`, `ghost`, `link`, `outline` |
130
+ | `size` | `xs`, `sm`, `md`, `lg` |
131
+ | `shape` | `square`, `circle` |
132
+ | `loading` | boolean |
133
+ | `disabled`| boolean |
134
+ | `class` | additional CSS classes |
135
+
136
+
137
+ ## Available Components
138
+
139
+ - **Action**: buttons, dropdowns, links, menus, toggles
140
+ - **Data Display**: accordion, avatar, badge, card, chip, collapse, flash, list, markdown, pagination, popover, progress, skeleton, stat, table, timeline, tooltip
141
+ - **Data Entry**: autocomplete, cascader, checkbox, compact input, file upload, form, input, multi-select, OTP input, PIN input, radio, rating, segment control, select, slider, switch, textarea, time input, tree select
142
+ - **Feedback**: dialog, loading, snackbar, toast
143
+ - **Navigation**: actionbar, appbar, bottom nav, breadcrumb, left menu, navbar, nested menu, page footer, page header, stepper, steps, tabs
144
+ - **Layout**: bottom sheet, divider, drawer, theme switcher
145
+ - **CSS Art**: button noise, eclipse, plasma ball, signature, snow, spotlight search
146
+
147
+
51
148
  ## Live Storybook
52
149
 
53
150
  [Live Storybook](https://duskmoon-storybook.gsmlg.dev)
@@ -13,6 +13,18 @@
13
13
 
14
14
  el-dm-accordion,
15
15
  el-dm-alert,
16
+ el-dm-art-atom,
17
+ el-dm-art-cat-stargazer,
18
+ el-dm-art-circular-gallery,
19
+ el-dm-art-color-spin,
20
+ el-dm-art-eclipse,
21
+ el-dm-art-flower-animation,
22
+ el-dm-art-moon,
23
+ el-dm-art-mountain,
24
+ el-dm-art-plasma-ball,
25
+ el-dm-art-snow,
26
+ el-dm-art-sun,
27
+ el-dm-art-synthwave-starfield,
16
28
  el-dm-autocomplete,
17
29
  el-dm-badge,
18
30
  el-dm-bottom-navigation,
@@ -11,10 +11,17 @@
11
11
  @import "@duskmoon-dev/core/components";
12
12
  @import "./element-theme-bridge.css";
13
13
 
14
- /* CSS Art — decorative/animated visual effects */
15
- @import "./css_art/button-noise.css";
16
- @import "./css_art/eclipse.css";
17
- @import "./css_art/plasma-ball.css";
18
- @import "./css_art/signature.css";
19
- @import "./css_art/snow.css";
20
- @import "./css_art/spotlight-search.css";
14
+ /* CSS Art — decorative/animated visual effects from @duskmoon-dev/css-art */
15
+ @import "@duskmoon-dev/css-art/dist/art/atom.css";
16
+ @import "@duskmoon-dev/css-art/dist/art/cat-stargazer.css";
17
+ @import "@duskmoon-dev/css-art/dist/art/circular-gallery.css";
18
+ @import "@duskmoon-dev/css-art/dist/art/color-spin.css";
19
+ @import "@duskmoon-dev/css-art/dist/art/eclipse.css";
20
+ @import "@duskmoon-dev/css-art/dist/art/flower-animation.css";
21
+ @import "@duskmoon-dev/css-art/dist/art/gemini-input.css";
22
+ @import "@duskmoon-dev/css-art/dist/art/moon.css";
23
+ @import "@duskmoon-dev/css-art/dist/art/mountain.css";
24
+ @import "@duskmoon-dev/css-art/dist/art/plasma-ball.css";
25
+ @import "@duskmoon-dev/css-art/dist/art/snow.css";
26
+ @import "@duskmoon-dev/css-art/dist/art/sun.css";
27
+ @import "@duskmoon-dev/css-art/dist/art/synthwave-starfield.css";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "phoenix_duskmoon",
3
- "version": "9.0.0-rc.3",
3
+ "version": "9.0.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./priv/static/phoenix_duskmoon.js",
@@ -30,7 +30,9 @@
30
30
  "registry": "https://registry.npmjs.org/"
31
31
  },
32
32
  "dependencies": {
33
+ "@duskmoon-dev/art-elements": ">=0.9.0",
33
34
  "@duskmoon-dev/core": ">=1.11.0",
35
+ "@duskmoon-dev/css-art": ">=1.12.0",
34
36
  "@duskmoon-dev/elements": ">=0.5.0"
35
37
  },
36
38
  "devDependencies": {