@sigx/zero-daisyui 0.2.0-beta.6 → 0.4.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 (89) hide show
  1. package/README.md +78 -5
  2. package/dist/audit.json +271915 -0
  3. package/dist/components.d.ts +75 -18
  4. package/dist/components.js +15 -3
  5. package/dist/css/breakpoints.css +7 -0
  6. package/dist/css/components/avatar.css +12 -0
  7. package/dist/css/components/badge.css +130 -1
  8. package/dist/css/components/box.css +58 -0
  9. package/dist/css/components/button.css +17 -17
  10. package/dist/css/components/center.css +17 -0
  11. package/dist/css/components/checkbox.css +1 -1
  12. package/dist/css/components/combobox.css +57 -6
  13. package/dist/css/components/container.css +16 -0
  14. package/dist/css/components/countdown.css +5 -0
  15. package/dist/css/components/dialog.css +3 -2
  16. package/dist/css/components/drawer.css +102 -6
  17. package/dist/css/components/empty-state.css +164 -0
  18. package/dist/css/components/grid.css +32 -0
  19. package/dist/css/components/kbd.css +1 -1
  20. package/dist/css/components/menu.css +4 -4
  21. package/dist/css/components/nav-list.css +165 -0
  22. package/dist/css/components/radio-group.css +2 -2
  23. package/dist/css/components/select.css +1 -1
  24. package/dist/css/components/spacer.css +13 -0
  25. package/dist/css/components/stack.css +39 -0
  26. package/dist/css/components/steps.css +109 -28
  27. package/dist/css/components/table.css +276 -2
  28. package/dist/css/components/timeline.css +64 -1
  29. package/dist/css/components/tree-view.css +2 -2
  30. package/dist/css/index.css +2220 -279
  31. package/dist/css/index.d.ts +2 -0
  32. package/dist/css/tokens.css +9 -0
  33. package/dist/design-system.d.ts.map +1 -1
  34. package/dist/design-system.js +15 -8
  35. package/dist/design-system.js.map +1 -1
  36. package/dist/lynx/components/avatar.css +12 -0
  37. package/dist/lynx/components/badge.css +56 -1
  38. package/dist/lynx/components/box.css +54 -0
  39. package/dist/lynx/components/breadcrumbs.css +10 -10
  40. package/dist/lynx/components/button.css +15 -4
  41. package/dist/lynx/components/card.css +5 -5
  42. package/dist/lynx/components/center.css +13 -0
  43. package/dist/lynx/components/chat.css +10 -10
  44. package/dist/lynx/components/checkbox.css +1 -1
  45. package/dist/lynx/components/combobox.css +49 -6
  46. package/dist/lynx/components/container.css +11 -0
  47. package/dist/lynx/components/countdown.css +5 -0
  48. package/dist/lynx/components/dialog.css +8 -7
  49. package/dist/lynx/components/drawer.css +18 -0
  50. package/dist/lynx/components/empty-state.css +342 -0
  51. package/dist/lynx/components/file-upload.css +10 -10
  52. package/dist/lynx/components/grid.css +28 -0
  53. package/dist/lynx/components/kbd.css +1 -1
  54. package/dist/lynx/components/menu.css +4 -4
  55. package/dist/lynx/components/nav-list.css +302 -0
  56. package/dist/lynx/components/pagination.css +5 -5
  57. package/dist/lynx/components/radial-progress.css +5 -5
  58. package/dist/lynx/components/radio-group.css +2 -2
  59. package/dist/lynx/components/rating-group.css +5 -5
  60. package/dist/lynx/components/select.css +6 -6
  61. package/dist/lynx/components/spacer.css +11 -0
  62. package/dist/lynx/components/stack.css +35 -0
  63. package/dist/lynx/components/stats.css +10 -10
  64. package/dist/lynx/components/steps.css +99 -59
  65. package/dist/lynx/components/switch.css +5 -5
  66. package/dist/lynx/components/table.css +18 -12
  67. package/dist/lynx/components/tabs.css +5 -5
  68. package/dist/lynx/components/timeline.css +14 -5
  69. package/dist/lynx/components/tree-view.css +2 -2
  70. package/dist/lynx/index.css +1254 -345
  71. package/dist/lynx/manifest.json +354 -37
  72. package/dist/lynx/tokens.css +36 -0
  73. package/dist/manifest.json +351 -34
  74. package/dist/recipes.d.ts +17 -10
  75. package/dist/recipes.d.ts.map +1 -1
  76. package/dist/recipes.js +582 -173
  77. package/dist/recipes.js.map +1 -1
  78. package/dist/register.d.ts +89 -14
  79. package/dist/report.json +2476 -564
  80. package/dist/tokens.d.ts +22 -11
  81. package/dist/tokens.d.ts.map +1 -1
  82. package/dist/tokens.js +57 -7
  83. package/dist/tokens.js.map +1 -1
  84. package/package.json +28 -10
  85. package/src/design-system.ts +15 -8
  86. package/src/recipes.ts +594 -177
  87. package/src/tokens.ts +54 -7
  88. package/dist/css/components/native-select.css +0 -128
  89. package/dist/lynx/components/native-select.css +0 -130
package/src/tokens.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  * zero contract. Values match the daisy presets `@sigx/daisyui` ships, so a
4
4
  * zero app skinned with this package sits visually next to a daisy app.
5
5
  */
6
+ import { layoutScopes } from '@sigx/zero-kit/define';
6
7
  import type { CustomTokenDecl, RoleDecl, SystemTokens, TokensInput } from '@sigx/zero-kit';
7
8
 
8
9
  /** daisyUI's color vocabulary — the recommended eight roles, declared explicitly. */
@@ -42,6 +43,18 @@ export const system = {
42
43
  },
43
44
  // daisy runs a slightly roomier ramp than basic — the `xl`/`2xl` steps
44
45
  // are where its cards and modals get their air.
46
+ // Page-scale widths a Container is bounded by. The density ramp cannot
47
+ // reach these — it tops out at a rung you would not notice.
48
+ // Tailwind's container ramp, which is what daisy is authored against.
49
+ measure: {
50
+ xs: '20rem',
51
+ sm: '24rem',
52
+ md: '28rem',
53
+ lg: '32rem',
54
+ xl: '36rem',
55
+ prose: '65ch',
56
+ },
57
+
45
58
  spacing: {
46
59
  '2xs': '0.125rem',
47
60
  xs: '0.25rem',
@@ -140,18 +153,20 @@ export const variants = [...buttonVariants, ...tabVariants] as const;
140
153
 
141
154
  /**
142
155
  * daisyUI 5's button modifier set (#332), each a documented `btn-*` class:
143
- * `btn-wide`, `btn-block`, `btn-square`, `btn-circle`, `btn-active`, and
144
- * the loading spinner (daisy renders it as a `loading loading-spinner`
145
- * span; here the recipe draws it, no DOM change). All six were boolean
146
- * props on the old `@sigx/daisyui` Button — the api declaration routes
147
- * them back to those names.
156
+ * `btn-wide`, `btn-block`, `btn-square`, `btn-circle`, `btn-active`. All
157
+ * five were boolean props on the old `@sigx/daisyui` Button — the api
158
+ * declaration routes them back to those names. The sixth, `loading`, is not
159
+ * a modifier any more: since #50 it is `Button.Root`'s own prop (a state
160
+ * with `aria-busy` and blocked activation, not just paint), so
161
+ * `<Button loading>` reaches zero directly and the recipe draws the
162
+ * `spinner` part.
148
163
  *
149
164
  * `glass` is deliberately NOT here: daisyUI 5 no longer documents it on
150
165
  * any component (a v4 relic whose v5 survival is a compatibility style
151
166
  * with open breakage — saadeghi/daisyui#3316, #3501), and the old
152
167
  * `@sigx/daisyui` Button never exposed it either.
153
168
  */
154
- export const modifiers = ['wide', 'block', 'square', 'circle', 'active', 'loading'] as const;
169
+ export const modifiers = ['wide', 'block', 'square', 'circle', 'active'] as const;
155
170
 
156
171
  /**
157
172
  * daisyUI's table looks (#340): `table-zebra` and the row-level `hover`
@@ -160,11 +175,37 @@ export const modifiers = ['wide', 'block', 'square', 'circle', 'active', 'loadin
160
175
  */
161
176
  export const tableModifiers = ['zebra', 'hover'] as const;
162
177
 
178
+ /**
179
+ * A countdown set inside a sentence (#57). daisy's own `.countdown` sets no
180
+ * display size — it takes the text utilities around it — so `inline` is the
181
+ * daisy-faithful look, spelled as the opt-out from this skin's display step.
182
+ */
183
+ export const countdownModifiers = ['inline'] as const;
184
+
163
185
  export const tokens: TokensInput<typeof roles, typeof system> = {
164
186
  roles,
165
187
  custom,
166
188
  variants,
167
- modifiers: [...modifiers, ...tableModifiers],
189
+ modifiers: [...modifiers, ...tableModifiers, ...countdownModifiers],
190
+ /**
191
+ * The avatar's shape (zero#129) — the first custom axis a shipped skin
192
+ * declares, and the acceptance test for `tokens.axes`: an enumerated
193
+ * choice with no named prop (`axes={{ shape: 'square' }}` →
194
+ * `data-shape="square"`). Wired on avatar alone; its unset default is
195
+ * this skin's own avatar radius.
196
+ */
197
+ axes: { shape: ['circle', 'square', 'rounded'] },
198
+ /**
199
+ * daisyUI's own ramp — Tailwind's, which daisy is authored against.
200
+ *
201
+ * Declared because of the layout tier: the other five skins already had
202
+ * breakpoints, and without one here a responsive layout prop
203
+ * (`gap={{ md: 'lg' }}`) would render an attribute that matches nothing
204
+ * on this skin alone — a zero-level prop silently working in five design
205
+ * systems and not the sixth. `resolveCondition` also throws on an
206
+ * unknown condition key, so a recipe could not reference one either.
207
+ */
208
+ breakpoints: { sm: '40rem', md: '48rem', lg: '64rem' },
168
209
  /**
169
210
  * Per-scope vocabulary claims (#294). Button wires `variant` and the
170
211
  * `btn-*` modifier set (#175); restating its union is the explicit
@@ -174,11 +215,17 @@ export const tokens: TokensInput<typeof roles, typeof system> = {
174
215
  * and tabs (#377) carries the three flavors and nothing of button's.
175
216
  */
176
217
  scopes: {
218
+ // The layout tier wires neither colour nor size — every one of its
219
+ // scopes is geometry, and `data-color` on geometry would paint
220
+ // nothing. Declared out of existence rather than left to the
221
+ // axis-coverage audit to report.
222
+ ...layoutScopes,
177
223
  button: {
178
224
  variants: [...buttonVariants],
179
225
  modifiers: [...modifiers],
180
226
  },
181
227
  table: { modifiers: [...tableModifiers] },
228
+ countdown: { modifiers: [...countdownModifiers] },
182
229
  tabs: { variants: [...tabVariants] },
183
230
  },
184
231
  system,
@@ -1,128 +0,0 @@
1
- @layer zero.recipes {
2
- [data-scope="native-select"][data-part="root"] {
3
- --native-select-accent: var(--color-base-content);
4
- }
5
-
6
- [data-scope="native-select"][data-part="root"] {
7
- position: relative;
8
- display: inline-flex;
9
- align-items: center;
10
- }
11
-
12
- [data-scope="native-select"][data-part="control"] {
13
- appearance: none;
14
- width: 100%;
15
- min-width: 12rem;
16
- box-sizing: border-box;
17
- height: calc(var(--size-field) * 12);
18
- background: var(--color-base-100);
19
- border: var(--border) solid var(--color-base-300);
20
- border-radius: var(--radius-field);
21
- box-shadow: var(--shadow-xs);
22
- color: var(--color-base-content);
23
- font: inherit;
24
- font-size: var(--text-sm);
25
- padding: var(--space-sm) var(--space-md);
26
- padding-inline-end: calc(var(--space-md) + 1.25em);
27
- cursor: pointer;
28
- transition: border-color var(--duration-fast) var(--ease-standard);
29
- }
30
-
31
- [data-scope="native-select"][data-part="control"]:hover:not([data-disabled]) {
32
- border-color: var(--color-base-content);
33
- }
34
-
35
- [data-scope="native-select"][data-part="control"][data-invalid] {
36
- border-color: var(--color-error);
37
- }
38
-
39
- [data-scope="native-select"][data-part="control"][data-disabled] {
40
- opacity: var(--disabled-opacity);
41
- cursor: not-allowed;
42
- }
43
-
44
- [data-scope="native-select"][data-part="control"][data-placeholder] {
45
- color: color-mix(in oklab, var(--color-base-content) 60%, transparent);
46
- }
47
-
48
- [data-scope="native-select"][data-part="control"][data-focus-visible] {
49
- outline: 2px solid var(--native-select-accent);
50
- outline-offset: 2px;
51
- }
52
-
53
- [data-scope="native-select"][data-part="indicator"] {
54
- position: absolute;
55
- inset-inline-end: var(--space-md);
56
- pointer-events: none;
57
- opacity: 0.6;
58
- font-size: var(--text-sm);
59
- }
60
-
61
- [data-scope="native-select"][data-part="root"][data-color="primary"] {
62
- --native-select-accent: var(--color-primary);
63
- }
64
-
65
- [data-scope="native-select"][data-part="root"][data-color="secondary"] {
66
- --native-select-accent: var(--color-secondary);
67
- }
68
-
69
- [data-scope="native-select"][data-part="root"][data-color="accent"] {
70
- --native-select-accent: var(--color-accent);
71
- }
72
-
73
- [data-scope="native-select"][data-part="root"][data-color="neutral"] {
74
- --native-select-accent: var(--color-neutral);
75
- }
76
-
77
- [data-scope="native-select"][data-part="root"][data-color="info"] {
78
- --native-select-accent: var(--color-info);
79
- }
80
-
81
- [data-scope="native-select"][data-part="root"][data-color="success"] {
82
- --native-select-accent: var(--color-success);
83
- }
84
-
85
- [data-scope="native-select"][data-part="root"][data-color="warning"] {
86
- --native-select-accent: var(--color-warning);
87
- }
88
-
89
- [data-scope="native-select"][data-part="root"][data-color="error"] {
90
- --native-select-accent: var(--color-error);
91
- }
92
-
93
- @scope ([data-scope="native-select"][data-part="root"][data-size="xs"]) to ([data-scope="native-select"][data-part="root"]) {
94
- [data-scope="native-select"][data-part="control"] {
95
- height: calc(var(--size-field) * 8);
96
- font-size: var(--text-xs);
97
- padding: var(--space-2xs) var(--space-xs);
98
- padding-inline-end: calc(var(--space-xs) + 1.25em);
99
- }
100
- }
101
-
102
- @scope ([data-scope="native-select"][data-part="root"][data-size="sm"]) to ([data-scope="native-select"][data-part="root"]) {
103
- [data-scope="native-select"][data-part="control"] {
104
- height: calc(var(--size-field) * 10);
105
- font-size: var(--text-xs);
106
- padding: var(--space-xs) var(--space-sm);
107
- padding-inline-end: calc(var(--space-sm) + 1.25em);
108
- }
109
- }
110
-
111
- @scope ([data-scope="native-select"][data-part="root"][data-size="lg"]) to ([data-scope="native-select"][data-part="root"]) {
112
- [data-scope="native-select"][data-part="control"] {
113
- height: calc(var(--size-field) * 14);
114
- font-size: var(--text-md);
115
- padding: var(--space-md) var(--space-lg);
116
- padding-inline-end: calc(var(--space-lg) + 1.25em);
117
- }
118
- }
119
-
120
- @scope ([data-scope="native-select"][data-part="root"][data-size="xl"]) to ([data-scope="native-select"][data-part="root"]) {
121
- [data-scope="native-select"][data-part="control"] {
122
- height: calc(var(--size-field) * 16);
123
- font-size: var(--text-lg);
124
- padding: var(--space-lg) var(--space-xl);
125
- padding-inline-end: calc(var(--space-xl) + 1.25em);
126
- }
127
- }
128
- }
@@ -1,130 +0,0 @@
1
- .zx-native-select__root {
2
- --native-select-accent: var(--color-base-content);
3
- }
4
-
5
- .zx-native-select__root {
6
- position: relative;
7
- display: flex;
8
- align-items: center;
9
- }
10
-
11
- .zx-native-select__control {
12
- appearance: none;
13
- width: 100%;
14
- min-width: 12rem;
15
- box-sizing: border-box;
16
- height: calc(var(--size-field) * 12);
17
- background: var(--color-base-100);
18
- border: var(--border) solid var(--color-base-300);
19
- border-radius: var(--radius-field);
20
- box-shadow: var(--shadow-xs);
21
- color: var(--color-base-content);
22
- font: inherit;
23
- font-size: var(--text-sm);
24
- padding: var(--space-sm) var(--space-md);
25
- cursor: pointer;
26
- transition: border-color var(--duration-fast) var(--ease-standard);
27
- padding-right: calc(var(--space-md) + 1.25em);
28
- }
29
-
30
- .zx-native-select__control.zx-f-invalid {
31
- border-color: var(--color-error);
32
- }
33
-
34
- .zx-native-select__control.zx-f-disabled {
35
- opacity: var(--disabled-opacity);
36
- cursor: not-allowed;
37
- }
38
-
39
- .zx-root .zx-native-select__control.zx-f-placeholder {
40
- color: #07070899;
41
- }
42
-
43
- .zx-root.zx-theme-dark .zx-native-select__control.zx-f-placeholder {
44
- color: #767d8099;
45
- }
46
-
47
- .zx-root.zx-theme-dim .zx-native-select__control.zx-f-placeholder {
48
- color: #57656a99;
49
- }
50
-
51
- .zx-root.zx-theme-nord .zx-native-select__control.zx-f-placeholder {
52
- color: #12151b99;
53
- }
54
-
55
- .zx-root.zx-theme-sunset .zx-native-select__control.zx-f-placeholder {
56
- color: #4d5b6799;
57
- }
58
-
59
- .zx-native-select__control.zx-f-focus-visible {
60
- outline: 2px solid var(--native-select-accent);
61
- outline-offset: 2px;
62
- }
63
-
64
- .zx-native-select__indicator {
65
- position: absolute;
66
- pointer-events: none;
67
- opacity: 0.6;
68
- font-size: var(--text-sm);
69
- right: var(--space-md);
70
- }
71
-
72
- .zx-native-select__root.zx-a-color-primary {
73
- --native-select-accent: var(--color-primary);
74
- }
75
-
76
- .zx-native-select__root.zx-a-color-secondary {
77
- --native-select-accent: var(--color-secondary);
78
- }
79
-
80
- .zx-native-select__root.zx-a-color-accent {
81
- --native-select-accent: var(--color-accent);
82
- }
83
-
84
- .zx-native-select__root.zx-a-color-neutral {
85
- --native-select-accent: var(--color-neutral);
86
- }
87
-
88
- .zx-native-select__root.zx-a-color-info {
89
- --native-select-accent: var(--color-info);
90
- }
91
-
92
- .zx-native-select__root.zx-a-color-success {
93
- --native-select-accent: var(--color-success);
94
- }
95
-
96
- .zx-native-select__root.zx-a-color-warning {
97
- --native-select-accent: var(--color-warning);
98
- }
99
-
100
- .zx-native-select__root.zx-a-color-error {
101
- --native-select-accent: var(--color-error);
102
- }
103
-
104
- .zx-native-select__control.zx-a-size-xs {
105
- height: calc(var(--size-field) * 8);
106
- font-size: var(--text-xs);
107
- padding: var(--space-2xs) var(--space-xs);
108
- padding-right: calc(var(--space-xs) + 1.25em);
109
- }
110
-
111
- .zx-native-select__control.zx-a-size-sm {
112
- height: calc(var(--size-field) * 10);
113
- font-size: var(--text-xs);
114
- padding: var(--space-xs) var(--space-sm);
115
- padding-right: calc(var(--space-sm) + 1.25em);
116
- }
117
-
118
- .zx-native-select__control.zx-a-size-lg {
119
- height: calc(var(--size-field) * 14);
120
- font-size: var(--text-md);
121
- padding: var(--space-md) var(--space-lg);
122
- padding-right: calc(var(--space-lg) + 1.25em);
123
- }
124
-
125
- .zx-native-select__control.zx-a-size-xl {
126
- height: calc(var(--size-field) * 16);
127
- font-size: var(--text-lg);
128
- padding: var(--space-lg) var(--space-xl);
129
- padding-right: calc(var(--space-xl) + 1.25em);
130
- }