dalila 1.5.13 → 1.7.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 (137) hide show
  1. package/README.md +47 -0
  2. package/dist/componentes/ui/accordion/index.d.ts +2 -0
  3. package/dist/componentes/ui/accordion/index.js +114 -0
  4. package/dist/componentes/ui/calendar/index.d.ts +2 -0
  5. package/dist/componentes/ui/calendar/index.js +132 -0
  6. package/dist/componentes/ui/combobox/index.d.ts +2 -0
  7. package/dist/componentes/ui/combobox/index.js +161 -0
  8. package/dist/componentes/ui/dialog/index.d.ts +10 -0
  9. package/dist/componentes/ui/dialog/index.js +54 -0
  10. package/dist/componentes/ui/drawer/index.d.ts +2 -0
  11. package/dist/componentes/ui/drawer/index.js +41 -0
  12. package/dist/componentes/ui/dropdown/index.d.ts +2 -0
  13. package/dist/componentes/ui/dropdown/index.js +48 -0
  14. package/dist/componentes/ui/dropzone/index.d.ts +2 -0
  15. package/dist/componentes/ui/dropzone/index.js +92 -0
  16. package/dist/componentes/ui/env.d.ts +1 -0
  17. package/dist/componentes/ui/env.js +2 -0
  18. package/dist/componentes/ui/index.d.ts +13 -0
  19. package/dist/componentes/ui/index.js +12 -0
  20. package/dist/componentes/ui/popover/index.d.ts +2 -0
  21. package/dist/componentes/ui/popover/index.js +156 -0
  22. package/dist/componentes/ui/runtime.d.ts +20 -0
  23. package/dist/componentes/ui/runtime.js +421 -0
  24. package/dist/componentes/ui/tabs/index.d.ts +3 -0
  25. package/dist/componentes/ui/tabs/index.js +101 -0
  26. package/dist/componentes/ui/toast/index.d.ts +3 -0
  27. package/dist/componentes/ui/toast/index.js +115 -0
  28. package/dist/componentes/ui/ui-types.d.ts +175 -0
  29. package/dist/componentes/ui/ui-types.js +1 -0
  30. package/dist/componentes/ui/validate.d.ts +7 -0
  31. package/dist/componentes/ui/validate.js +71 -0
  32. package/dist/components/ui/accordion/index.d.ts +2 -0
  33. package/dist/components/ui/accordion/index.js +114 -0
  34. package/dist/components/ui/calendar/index.d.ts +2 -0
  35. package/dist/components/ui/calendar/index.js +132 -0
  36. package/dist/components/ui/combobox/index.d.ts +2 -0
  37. package/dist/components/ui/combobox/index.js +161 -0
  38. package/dist/components/ui/dialog/index.d.ts +10 -0
  39. package/dist/components/ui/dialog/index.js +54 -0
  40. package/dist/components/ui/drawer/index.d.ts +2 -0
  41. package/dist/components/ui/drawer/index.js +41 -0
  42. package/dist/components/ui/dropdown/index.d.ts +2 -0
  43. package/dist/components/ui/dropdown/index.js +48 -0
  44. package/dist/components/ui/dropzone/index.d.ts +2 -0
  45. package/dist/components/ui/dropzone/index.js +92 -0
  46. package/dist/components/ui/env.d.ts +1 -0
  47. package/dist/components/ui/env.js +2 -0
  48. package/dist/components/ui/index.d.ts +13 -0
  49. package/dist/components/ui/index.js +12 -0
  50. package/dist/components/ui/popover/index.d.ts +2 -0
  51. package/dist/components/ui/popover/index.js +156 -0
  52. package/dist/components/ui/runtime.d.ts +20 -0
  53. package/dist/components/ui/runtime.js +421 -0
  54. package/dist/components/ui/tabs/index.d.ts +3 -0
  55. package/dist/components/ui/tabs/index.js +101 -0
  56. package/dist/components/ui/toast/index.d.ts +3 -0
  57. package/dist/components/ui/toast/index.js +115 -0
  58. package/dist/components/ui/ui-types.d.ts +175 -0
  59. package/dist/components/ui/ui-types.js +1 -0
  60. package/dist/components/ui/validate.d.ts +7 -0
  61. package/dist/components/ui/validate.js +71 -0
  62. package/dist/form/form-types.d.ts +181 -0
  63. package/dist/form/form-types.js +4 -0
  64. package/dist/form/form.d.ts +71 -0
  65. package/dist/form/form.js +1073 -0
  66. package/dist/form/index.d.ts +2 -0
  67. package/dist/form/index.js +2 -0
  68. package/dist/index.d.ts +1 -0
  69. package/dist/index.js +1 -0
  70. package/dist/runtime/bind.js +567 -9
  71. package/dist/ui/accordion.d.ts +2 -0
  72. package/dist/ui/accordion.js +114 -0
  73. package/dist/ui/calendar.d.ts +2 -0
  74. package/dist/ui/calendar.js +132 -0
  75. package/dist/ui/combobox.d.ts +2 -0
  76. package/dist/ui/combobox.js +161 -0
  77. package/dist/ui/dialog.d.ts +10 -0
  78. package/dist/ui/dialog.js +54 -0
  79. package/dist/ui/drawer.d.ts +2 -0
  80. package/dist/ui/drawer.js +41 -0
  81. package/dist/ui/dropdown.d.ts +2 -0
  82. package/dist/ui/dropdown.js +48 -0
  83. package/dist/ui/dropzone.d.ts +2 -0
  84. package/dist/ui/dropzone.js +92 -0
  85. package/dist/ui/env.d.ts +1 -0
  86. package/dist/ui/env.js +2 -0
  87. package/dist/ui/index.d.ts +13 -0
  88. package/dist/ui/index.js +12 -0
  89. package/dist/ui/popover.d.ts +2 -0
  90. package/dist/ui/popover.js +156 -0
  91. package/dist/ui/runtime.d.ts +20 -0
  92. package/dist/ui/runtime.js +421 -0
  93. package/dist/ui/tabs.d.ts +3 -0
  94. package/dist/ui/tabs.js +101 -0
  95. package/dist/ui/toast.d.ts +3 -0
  96. package/dist/ui/toast.js +115 -0
  97. package/dist/ui/ui-types.d.ts +175 -0
  98. package/dist/ui/ui-types.js +1 -0
  99. package/dist/ui/validate.d.ts +7 -0
  100. package/dist/ui/validate.js +71 -0
  101. package/package.json +60 -2
  102. package/src/components/ui/accordion/accordion.css +90 -0
  103. package/src/components/ui/alert/alert.css +78 -0
  104. package/src/components/ui/avatar/avatar.css +45 -0
  105. package/src/components/ui/badge/badge.css +71 -0
  106. package/src/components/ui/breadcrumb/breadcrumb.css +41 -0
  107. package/src/components/ui/button/button.css +135 -0
  108. package/src/components/ui/calendar/calendar.css +96 -0
  109. package/src/components/ui/card/card.css +93 -0
  110. package/src/components/ui/checkbox/checkbox.css +57 -0
  111. package/src/components/ui/chip/chip.css +62 -0
  112. package/src/components/ui/collapsible/collapsible.css +61 -0
  113. package/src/components/ui/combobox/combobox.css +85 -0
  114. package/src/components/ui/dalila/dalila.css +42 -0
  115. package/src/components/ui/dalila-core/dalila-core.css +14 -0
  116. package/src/components/ui/dialog/dialog.css +125 -0
  117. package/src/components/ui/drawer/drawer.css +122 -0
  118. package/src/components/ui/dropdown/dropdown.css +87 -0
  119. package/src/components/ui/dropzone/dropzone.css +47 -0
  120. package/src/components/ui/empty-state/empty-state.css +33 -0
  121. package/src/components/ui/form/form.css +44 -0
  122. package/src/components/ui/input/input.css +106 -0
  123. package/src/components/ui/layout/layout.css +62 -0
  124. package/src/components/ui/pagination/pagination.css +55 -0
  125. package/src/components/ui/popover/popover.css +55 -0
  126. package/src/components/ui/radio/radio.css +56 -0
  127. package/src/components/ui/separator/separator.css +38 -0
  128. package/src/components/ui/skeleton/skeleton.css +57 -0
  129. package/src/components/ui/slider/slider.css +60 -0
  130. package/src/components/ui/spinner/spinner.css +38 -0
  131. package/src/components/ui/table/table.css +54 -0
  132. package/src/components/ui/tabs/tabs.css +74 -0
  133. package/src/components/ui/toast/toast.css +100 -0
  134. package/src/components/ui/toggle/toggle.css +90 -0
  135. package/src/components/ui/tokens/tokens.css +161 -0
  136. package/src/components/ui/tooltip/tooltip.css +53 -0
  137. package/src/components/ui/typography/typography.css +81 -0
@@ -0,0 +1,61 @@
1
+ /* Dalila UI — Collapsible */
2
+
3
+ .d-collapsible {
4
+ border: 1px solid var(--d-border-color);
5
+ border-radius: var(--d-radius-md);
6
+ overflow: hidden;
7
+ }
8
+
9
+ .d-collapsible > summary,
10
+ .d-collapsible-trigger {
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: space-between;
14
+ padding: var(--d-space-3) var(--d-space-4);
15
+ font-family: var(--d-font-sans);
16
+ font-size: var(--d-text-sm);
17
+ font-weight: var(--d-font-medium);
18
+ color: var(--d-text-primary);
19
+ cursor: pointer;
20
+ list-style: none;
21
+ user-select: none;
22
+ transition: background var(--d-duration-fast) ease;
23
+ }
24
+
25
+ .d-collapsible > summary::-webkit-details-marker {
26
+ display: none;
27
+ }
28
+
29
+ .d-collapsible > summary:hover,
30
+ .d-collapsible-trigger:hover {
31
+ background: var(--d-surface-raised);
32
+ }
33
+
34
+ .d-collapsible > summary::after,
35
+ .d-collapsible-trigger::after {
36
+ content: "";
37
+ width: 0.4rem;
38
+ height: 0.4rem;
39
+ border-right: 2px solid var(--d-text-muted);
40
+ border-bottom: 2px solid var(--d-text-muted);
41
+ transform: rotate(45deg);
42
+ transition: transform var(--d-duration) var(--d-ease);
43
+ flex-shrink: 0;
44
+ }
45
+
46
+ .d-collapsible[open] > summary::after {
47
+ transform: rotate(-135deg);
48
+ }
49
+
50
+ .d-collapsible-body {
51
+ padding: 0 var(--d-space-4) var(--d-space-4);
52
+ font-family: var(--d-font-sans);
53
+ font-size: var(--d-text-sm);
54
+ color: var(--d-text-secondary);
55
+ line-height: var(--d-leading);
56
+ }
57
+
58
+ .d-collapsible[open] > .d-collapsible-body,
59
+ .d-collapsible.open .d-collapsible-body {
60
+ padding-top: var(--d-space-2);
61
+ }
@@ -0,0 +1,85 @@
1
+ /* Dalila UI — Combobox */
2
+
3
+ .d-combobox {
4
+ position: relative;
5
+ }
6
+
7
+ .d-combobox-input {
8
+ width: 100%;
9
+ padding-right: var(--d-space-8);
10
+ }
11
+
12
+ .d-combobox-trigger {
13
+ position: absolute;
14
+ right: var(--d-space-2);
15
+ top: 50%;
16
+ transform: translateY(-50%);
17
+ display: flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ width: 1.5rem;
21
+ height: 1.5rem;
22
+ background: none;
23
+ border: none;
24
+ color: var(--d-text-muted);
25
+ cursor: pointer;
26
+ border-radius: var(--d-radius-sm);
27
+ transition: color var(--d-duration-fast) ease;
28
+ }
29
+
30
+ .d-combobox-trigger:hover {
31
+ color: var(--d-text-primary);
32
+ }
33
+
34
+ .d-combobox-list {
35
+ position: absolute;
36
+ top: calc(100% + 4px);
37
+ left: 0;
38
+ right: 0;
39
+ z-index: var(--d-z-dropdown);
40
+ max-height: 12rem;
41
+ overflow-y: auto;
42
+ padding: var(--d-space-1) 0;
43
+ background: var(--d-surface-card);
44
+ border: 1px solid var(--d-border-color);
45
+ border-radius: var(--d-radius-md);
46
+ box-shadow: var(--d-shadow-md);
47
+ list-style: none;
48
+ margin: 0;
49
+
50
+ opacity: 0;
51
+ visibility: hidden;
52
+ transition: all var(--d-duration-fast) ease;
53
+ }
54
+
55
+ .d-combobox.open .d-combobox-list {
56
+ opacity: 1;
57
+ visibility: visible;
58
+ }
59
+
60
+ .d-combobox-option {
61
+ padding: var(--d-space-2) var(--d-space-3);
62
+ font-family: var(--d-font-sans);
63
+ font-size: var(--d-text-sm);
64
+ color: var(--d-text-primary);
65
+ cursor: pointer;
66
+ transition: background var(--d-duration-fast) ease;
67
+ }
68
+
69
+ .d-combobox-option:hover,
70
+ .d-combobox-option.highlighted {
71
+ background: var(--d-surface-raised);
72
+ }
73
+
74
+ .d-combobox-option.selected {
75
+ color: var(--d-accent);
76
+ font-weight: var(--d-font-medium);
77
+ }
78
+
79
+ .d-combobox-empty {
80
+ padding: var(--d-space-3);
81
+ font-family: var(--d-font-sans);
82
+ font-size: var(--d-text-sm);
83
+ color: var(--d-text-muted);
84
+ text-align: center;
85
+ }
@@ -0,0 +1,42 @@
1
+ /*
2
+ * Dalila UI — All components
3
+ * Import this single file to get everything.
4
+ *
5
+ * Usage:
6
+ * <link rel="stylesheet" href="dalila.css" />
7
+ */
8
+
9
+ @import "./tokens.css";
10
+ @import "./typography.css";
11
+ @import "./layout.css";
12
+ @import "./button.css";
13
+ @import "./input.css";
14
+ @import "./checkbox.css";
15
+ @import "./radio.css";
16
+ @import "./slider.css";
17
+ @import "./toggle.css";
18
+ @import "./form.css";
19
+ @import "./card.css";
20
+ @import "./badge.css";
21
+ @import "./chip.css";
22
+ @import "./avatar.css";
23
+ @import "./alert.css";
24
+ @import "./toast.css";
25
+ @import "./tooltip.css";
26
+ @import "./popover.css";
27
+ @import "./dropdown.css";
28
+ @import "./combobox.css";
29
+ @import "./tabs.css";
30
+ @import "./accordion.css";
31
+ @import "./collapsible.css";
32
+ @import "./dialog.css";
33
+ @import "./drawer.css";
34
+ @import "./table.css";
35
+ @import "./pagination.css";
36
+ @import "./breadcrumb.css";
37
+ @import "./separator.css";
38
+ @import "./skeleton.css";
39
+ @import "./spinner.css";
40
+ @import "./empty-state.css";
41
+ @import "./calendar.css";
42
+ @import "./dropzone.css";
@@ -0,0 +1,14 @@
1
+ /*
2
+ * Dalila UI — Core (minimal)
3
+ * Tokens + typography + layout + button + input + form.
4
+ *
5
+ * Usage:
6
+ * <link rel="stylesheet" href="dalila-core.css" />
7
+ */
8
+
9
+ @import "./tokens.css";
10
+ @import "./typography.css";
11
+ @import "./layout.css";
12
+ @import "./button.css";
13
+ @import "./input.css";
14
+ @import "./form.css";
@@ -0,0 +1,125 @@
1
+ /* Dalila UI — Dialog */
2
+
3
+ .d-dialog::backdrop {
4
+ background: var(--d-surface-overlay);
5
+ backdrop-filter: blur(4px);
6
+ -webkit-backdrop-filter: blur(4px);
7
+ }
8
+
9
+ .d-dialog {
10
+ position: fixed;
11
+ inset: 0;
12
+ margin: auto;
13
+ max-width: min(28rem, calc(100vw - var(--d-space-8)));
14
+ max-height: calc(100vh - var(--d-space-8));
15
+ width: 100%;
16
+
17
+ padding: 0;
18
+ border: 1px solid var(--d-border-color);
19
+ border-radius: var(--d-radius-lg);
20
+ background: var(--d-surface-card);
21
+ color: var(--d-text-primary);
22
+
23
+ box-shadow: var(--d-shadow-lg);
24
+ overflow: hidden;
25
+
26
+ opacity: 0;
27
+ transform: scale(0.97) translateY(8px);
28
+ transition:
29
+ opacity var(--d-duration-slow) var(--d-ease),
30
+ transform var(--d-duration-slow) var(--d-ease),
31
+ overlay var(--d-duration-slow) var(--d-ease) allow-discrete,
32
+ display var(--d-duration-slow) var(--d-ease) allow-discrete;
33
+ }
34
+
35
+ .d-dialog[open] {
36
+ opacity: 1;
37
+ transform: scale(1) translateY(0);
38
+ }
39
+
40
+ @starting-style {
41
+ .d-dialog[open] {
42
+ opacity: 0;
43
+ transform: scale(0.97) translateY(8px);
44
+ }
45
+ }
46
+
47
+ .d-dialog-header {
48
+ display: flex;
49
+ align-items: flex-start;
50
+ justify-content: space-between;
51
+ gap: var(--d-space-4);
52
+ padding: var(--d-space-6) var(--d-space-6) var(--d-space-3);
53
+ }
54
+
55
+ .d-dialog-title {
56
+ margin: 0;
57
+ font-family: var(--d-font-sans);
58
+ font-size: var(--d-text-xl);
59
+ font-weight: var(--d-font-semibold);
60
+ color: var(--d-text-primary);
61
+ line-height: 1.3;
62
+ }
63
+
64
+ .d-dialog-body {
65
+ padding: var(--d-space-3) var(--d-space-6);
66
+ font-size: var(--d-text-base);
67
+ color: var(--d-text-secondary);
68
+ line-height: var(--d-leading);
69
+ overflow-y: auto;
70
+ }
71
+
72
+ .d-dialog-footer {
73
+ display: flex;
74
+ justify-content: flex-end;
75
+ gap: var(--d-space-3);
76
+ padding: var(--d-space-4) var(--d-space-6) var(--d-space-6);
77
+ }
78
+
79
+ .d-dialog-close {
80
+ display: flex;
81
+ align-items: center;
82
+ justify-content: center;
83
+ flex-shrink: 0;
84
+
85
+ width: 2rem;
86
+ height: 2rem;
87
+
88
+ font-size: var(--d-text-xl);
89
+ color: var(--d-text-muted);
90
+
91
+ background: none;
92
+ border: 1px solid transparent;
93
+ border-radius: var(--d-radius-sm);
94
+ cursor: pointer;
95
+ transition: color var(--d-duration-fast) ease, border-color var(--d-duration-fast) ease;
96
+ }
97
+
98
+ .d-dialog-close:hover {
99
+ color: var(--d-text-primary);
100
+ border-color: var(--d-border-color);
101
+ }
102
+
103
+ .d-dialog-sm { max-width: min(22rem, calc(100vw - var(--d-space-8))); }
104
+ .d-dialog-lg { max-width: min(36rem, calc(100vw - var(--d-space-8))); }
105
+ .d-dialog-xl { max-width: min(48rem, calc(100vw - var(--d-space-8))); }
106
+
107
+ @media (max-width: 640px) {
108
+ .d-dialog {
109
+ margin: auto 0 0;
110
+ max-width: 100%;
111
+ max-height: 85vh;
112
+ border-radius: var(--d-radius-lg) var(--d-radius-lg) 0 0;
113
+ transform: translateY(100%);
114
+ }
115
+
116
+ .d-dialog[open] {
117
+ transform: translateY(0);
118
+ }
119
+
120
+ @starting-style {
121
+ .d-dialog[open] {
122
+ transform: translateY(100%);
123
+ }
124
+ }
125
+ }
@@ -0,0 +1,122 @@
1
+ /* Dalila UI — Drawer & Sheet */
2
+
3
+ .d-drawer::backdrop {
4
+ background: var(--d-surface-overlay);
5
+ backdrop-filter: blur(4px);
6
+ -webkit-backdrop-filter: blur(4px);
7
+ }
8
+
9
+ .d-drawer {
10
+ position: fixed;
11
+ margin: 0;
12
+ border: none;
13
+ padding: 0;
14
+ max-height: 100vh;
15
+ height: 100%;
16
+ background: var(--d-surface-card);
17
+ color: var(--d-text-primary);
18
+ box-shadow: var(--d-shadow-lg);
19
+ overflow: hidden;
20
+
21
+ inset: 0 0 0 auto;
22
+ width: min(24rem, 85vw);
23
+ border-left: 1px solid var(--d-border-color);
24
+
25
+ opacity: 0;
26
+ transform: translateX(1rem);
27
+ transition:
28
+ transform var(--d-duration-slow) var(--d-ease),
29
+ opacity var(--d-duration-slow) var(--d-ease),
30
+ overlay var(--d-duration-slow) var(--d-ease) allow-discrete,
31
+ display var(--d-duration-slow) var(--d-ease) allow-discrete;
32
+ }
33
+
34
+ .d-drawer[open] {
35
+ display: flex;
36
+ flex-direction: column;
37
+ opacity: 1;
38
+ transform: translateX(0);
39
+ }
40
+
41
+ @starting-style {
42
+ .d-drawer[open] {
43
+ opacity: 0;
44
+ transform: translateX(1rem);
45
+ }
46
+ }
47
+
48
+ /* Left variant */
49
+ .d-drawer-left {
50
+ inset: 0 auto 0 0;
51
+ border-left: none;
52
+ border-right: 1px solid var(--d-border-color);
53
+ transform: translateX(-1rem);
54
+ }
55
+
56
+ .d-drawer-left[open] {
57
+ transform: translateX(0);
58
+ }
59
+
60
+ @starting-style {
61
+ .d-drawer-left[open] {
62
+ opacity: 0;
63
+ transform: translateX(-1rem);
64
+ }
65
+ }
66
+
67
+ .d-drawer-header {
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: space-between;
71
+ gap: var(--d-space-4);
72
+ padding: var(--d-space-6);
73
+ border-bottom: 1px solid var(--d-border-color);
74
+ flex-shrink: 0;
75
+ }
76
+
77
+ .d-drawer-title {
78
+ margin: 0;
79
+ font-family: var(--d-font-sans);
80
+ font-size: var(--d-text-xl);
81
+ font-weight: var(--d-font-semibold);
82
+ color: var(--d-text-primary);
83
+ }
84
+
85
+ .d-drawer-body {
86
+ padding: var(--d-space-6);
87
+ overflow-y: auto;
88
+ flex: 1;
89
+ }
90
+
91
+ .d-drawer-footer {
92
+ display: flex;
93
+ justify-content: flex-end;
94
+ gap: var(--d-space-3);
95
+ padding: var(--d-space-4) var(--d-space-6);
96
+ border-top: 1px solid var(--d-border-color);
97
+ flex-shrink: 0;
98
+ }
99
+
100
+ /* Sheet variant (bottom) */
101
+ .d-sheet {
102
+ inset: auto 0 0 0;
103
+ width: 100%;
104
+ height: auto;
105
+ max-height: 85vh;
106
+ border-left: none;
107
+ border-top: 1px solid var(--d-border-color);
108
+ border-radius: var(--d-radius-lg) var(--d-radius-lg) 0 0;
109
+ transform: translateY(100%);
110
+ }
111
+
112
+ .d-sheet[open] {
113
+ display: flex;
114
+ flex-direction: column;
115
+ transform: translateY(0);
116
+ }
117
+
118
+ @starting-style {
119
+ .d-sheet[open] {
120
+ transform: translateY(100%);
121
+ }
122
+ }
@@ -0,0 +1,87 @@
1
+ /* Dalila UI — Dropdown & Menu */
2
+
3
+ .d-dropdown {
4
+ position: relative;
5
+ display: inline-flex;
6
+ }
7
+
8
+ .d-menu {
9
+ position: absolute;
10
+ top: calc(100% + 4px);
11
+ left: 0;
12
+ z-index: var(--d-z-dropdown);
13
+ min-width: 12rem;
14
+ padding: var(--d-space-1) 0;
15
+ background: var(--d-surface-card);
16
+ border: 1px solid var(--d-border-color);
17
+ border-radius: var(--d-radius-md);
18
+ box-shadow: var(--d-shadow-md);
19
+
20
+ opacity: 0;
21
+ visibility: hidden;
22
+ transform: translateY(-4px);
23
+ transition: all var(--d-duration-fast) ease;
24
+ }
25
+
26
+ .d-dropdown.open .d-menu,
27
+ .d-menu.open {
28
+ opacity: 1;
29
+ visibility: visible;
30
+ transform: translateY(0);
31
+ }
32
+
33
+ .d-menu-right {
34
+ left: auto;
35
+ right: 0;
36
+ }
37
+
38
+ .d-menu-item {
39
+ display: flex;
40
+ align-items: center;
41
+ gap: var(--d-space-2);
42
+ width: 100%;
43
+ padding: var(--d-space-2) var(--d-space-3);
44
+ font-family: var(--d-font-sans);
45
+ font-size: var(--d-text-sm);
46
+ color: var(--d-text-primary);
47
+ background: none;
48
+ border: none;
49
+ cursor: pointer;
50
+ transition: background var(--d-duration-fast) ease;
51
+ text-align: left;
52
+ text-decoration: none;
53
+ }
54
+
55
+ .d-menu-item:hover {
56
+ background: var(--d-surface-raised);
57
+ }
58
+
59
+ .d-menu-item-danger {
60
+ color: var(--d-error);
61
+ }
62
+
63
+ .d-menu-item-danger:hover {
64
+ background: var(--d-error-light);
65
+ }
66
+
67
+ .d-menu-item:disabled,
68
+ .d-menu-item[aria-disabled="true"] {
69
+ opacity: 0.5;
70
+ pointer-events: none;
71
+ }
72
+
73
+ .d-menu-separator {
74
+ height: 1px;
75
+ background: var(--d-border-color);
76
+ margin: var(--d-space-1) 0;
77
+ }
78
+
79
+ .d-menu-label {
80
+ padding: var(--d-space-2) var(--d-space-3);
81
+ font-family: var(--d-font-sans);
82
+ font-size: var(--d-text-xs);
83
+ font-weight: var(--d-font-semibold);
84
+ color: var(--d-text-muted);
85
+ text-transform: uppercase;
86
+ letter-spacing: 0.05em;
87
+ }
@@ -0,0 +1,47 @@
1
+ /* Dalila UI — Dropzone / File Upload */
2
+
3
+ .d-dropzone {
4
+ display: flex;
5
+ flex-direction: column;
6
+ align-items: center;
7
+ justify-content: center;
8
+ gap: var(--d-space-3);
9
+ padding: var(--d-space-8);
10
+ background: var(--d-surface-page);
11
+ border: 2px dashed var(--d-border-color);
12
+ border-radius: var(--d-radius-lg);
13
+ cursor: pointer;
14
+ transition: all var(--d-duration-fast) ease;
15
+ text-align: center;
16
+ font-family: var(--d-font-sans);
17
+ }
18
+
19
+ .d-dropzone:hover,
20
+ .d-dropzone.dragover {
21
+ border-color: var(--d-accent);
22
+ background: rgba(37, 99, 235, 0.04);
23
+ }
24
+
25
+ .d-dropzone-icon {
26
+ font-size: 2rem;
27
+ color: var(--d-text-muted);
28
+ }
29
+
30
+ .d-dropzone-text {
31
+ font-size: var(--d-text-sm);
32
+ color: var(--d-text-muted);
33
+ }
34
+
35
+ .d-dropzone-text strong {
36
+ color: var(--d-accent);
37
+ font-weight: var(--d-font-medium);
38
+ }
39
+
40
+ .d-dropzone-hint {
41
+ font-size: var(--d-text-xs);
42
+ color: var(--d-text-muted);
43
+ }
44
+
45
+ .d-dropzone input[type="file"] {
46
+ display: none;
47
+ }
@@ -0,0 +1,33 @@
1
+ /* Dalila UI — Empty State */
2
+
3
+ .d-empty {
4
+ display: flex;
5
+ flex-direction: column;
6
+ align-items: center;
7
+ justify-content: center;
8
+ text-align: center;
9
+ padding: var(--d-space-12) var(--d-space-6);
10
+ font-family: var(--d-font-sans);
11
+ }
12
+
13
+ .d-empty-icon {
14
+ font-size: 3rem;
15
+ color: var(--d-text-muted);
16
+ margin-bottom: var(--d-space-4);
17
+ opacity: 0.5;
18
+ }
19
+
20
+ .d-empty-title {
21
+ font-size: var(--d-text-lg);
22
+ font-weight: var(--d-font-semibold);
23
+ color: var(--d-text-primary);
24
+ margin: 0 0 var(--d-space-2);
25
+ }
26
+
27
+ .d-empty-text {
28
+ font-size: var(--d-text-sm);
29
+ color: var(--d-text-muted);
30
+ max-width: 24rem;
31
+ margin: 0 0 var(--d-space-6);
32
+ line-height: var(--d-leading);
33
+ }
@@ -0,0 +1,44 @@
1
+ /* Dalila UI — Form */
2
+
3
+ .d-form {
4
+ display: flex;
5
+ flex-direction: column;
6
+ gap: var(--d-space-5);
7
+ }
8
+
9
+ .d-form-section {
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: var(--d-space-4);
13
+ }
14
+
15
+ .d-form-section-title {
16
+ font-family: var(--d-font-sans);
17
+ font-size: var(--d-text-lg);
18
+ font-weight: var(--d-font-semibold);
19
+ color: var(--d-text-primary);
20
+ padding-bottom: var(--d-space-2);
21
+ border-bottom: 1px solid var(--d-border-color);
22
+ margin: 0;
23
+ }
24
+
25
+ .d-form-row {
26
+ display: grid;
27
+ grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
28
+ gap: var(--d-space-4);
29
+ }
30
+
31
+ .d-form-actions {
32
+ display: flex;
33
+ align-items: center;
34
+ gap: var(--d-space-3);
35
+ padding-top: var(--d-space-4);
36
+ }
37
+
38
+ .d-form-actions-end {
39
+ justify-content: flex-end;
40
+ }
41
+
42
+ .d-form-actions-between {
43
+ justify-content: space-between;
44
+ }